<?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>200054</bug_id>
          
          <creation_ts>2019-07-23 15:39:21 -0700</creation_ts>
          <short_desc>Remove WebsiteDataStore::legacyDefaultDataStoreConfiguration</short_desc>
          <delta_ts>2019-09-07 19:30: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555177</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-23 15:39:21 -0700</bug_when>
    <thetext>Remove WebsiteDataStore::legacyDefaultDataStoreConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555180</commentid>
    <comment_count>1</comment_count>
      <attachid>374722</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-23 15:44:41 -0700</bug_when>
    <thetext>Created attachment 374722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555182</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-23 15:47:05 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555184</commentid>
    <comment_count>3</comment_count>
      <attachid>374723</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-23 15:56:48 -0700</bug_when>
    <thetext>Created attachment 374723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555185</commentid>
    <comment_count>4</comment_count>
      <attachid>374724</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-23 15:59:11 -0700</bug_when>
    <thetext>Created attachment 374724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555188</commentid>
    <comment_count>5</comment_count>
      <attachid>374725</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-23 16:04:29 -0700</bug_when>
    <thetext>Created attachment 374725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555198</commentid>
    <comment_count>6</comment_count>
      <attachid>374730</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-23 16:22:26 -0700</bug_when>
    <thetext>Created attachment 374730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556601</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-29 10:12:39 -0700</bug_when>
    <thetext>Thanks for the review, Carlos. We&apos;re not quite ready to land this internally yet, but I&apos;m so excited for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568938</commentid>
    <comment_count>8</comment_count>
      <attachid>378302</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-07 16:17:49 -0700</bug_when>
    <thetext>Created attachment 378302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568941</commentid>
    <comment_count>9</comment_count>
      <attachid>378305</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-07 17:10:27 -0700</bug_when>
    <thetext>Created attachment 378305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568943</commentid>
    <comment_count>10</comment_count>
      <attachid>378307</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-07 17:18:34 -0700</bug_when>
    <thetext>Created attachment 378307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568954</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-07 19:29:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/r249622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568955</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-07 19:30:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/55153678&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374722</attachid>
            <date>2019-07-23 15:44:41 -0700</date>
            <delta_ts>2019-07-23 15:56:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190723154440.patch</filename>
            <type>text/plain</type>
            <size>28544</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YmEyYzRlNmI1MzQ3YWQz
OTVkNjUxMmJjYTRhZDllZGQwNGI5ZjEuLjAyYjM3NDM0NzAzYWRkNDNmYTdiZGZiZjVhZTVlMTYy
NTA2NDNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTktMDctMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0cyBsYXN0IG5lZWRl
ZCB1c2Ugd2FzIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEKKyAgICAgICAgVGhp
cyBjaGFuZ2VzIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyB0
byBiZSBlcXVhbCB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlLAorICAgICAgICBidXQg
aXQgaGFzIG5vIHJlbWFpbmluZyBjbGllbnRzIHNvIGl0IGlzIG9ubHkgYmVpbmcgcmV0YWluZWQg
Zm9yIGJpbmFyeSBjb21wYWJpYmlsaXR5LgorICAgICAgICBUaGlzIGFsc28gY2hhbmdlcyBXS0Nv
bnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGFuZCBXS0NvbnRleHRDcmVhdGUgdG8g
YmUgZXF1YWwgdG8gV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24sCisgICAgICAgIGFu
ZCBhZnRlciByZGFyOi8vcHJvYmxlbS80NzAzMDk4MSB0aGVyZSBhcmUgbm8gbWVhbmluZ2Z1bCBj
bGllbnRzIG9mIHRob3NlIGZ1bmN0aW9ucywgYWxzby4KKyAgICAgICAgVGhlcmUgaXMgb25lIGV4
aXN0aW5nIGNsaWVudCBvZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGlu
IHJkYXI6Ly9wcm9ibGVtLzUwMzIzOTY3IGJ1dCBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBpcyBjb21wYXRpYmxlIGVub3VnaCBmb3IgdGhlbSBiZWNhdXNlIGl0IHVzZXMgdGhl
aXIgaW5qZWN0ZWQgYnVuZGxlIHN0aWxsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlKToKKyAgICAgICAgKFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1By
b2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisKIDIwMTktMDctMjMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5IFNQSSBmcm9tIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBXS1Byb2Nlc3NQb29sUHJpdmF0ZSB0byBtYWtlIGl0IHJ1bnRpbWUgc3dpdGNoYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCA0Y2E5NGVhZTk5MDdmOGZmZTY4NGVjMDQwM2E1ZDU2
NTRjMTlkZTM2Li45MTczNjY0NzUwMjM3MjAxNmRlYjBkMmU0MDI1M2UwODBkMGRhZTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtMzYsMzQgKzM2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aExlZ2FjeU9wdGlvbnMoKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJLaXQ6OkNhY2hlTW9kZWw6OkRv
Y3VtZW50Vmlld2VyOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVE
aXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwotfQotCiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCmluZGV4IGI0NTQxMzFhMzdlOGQ2NzEyYTVmZjcxNzFkY2YwODQ0NWJmNzQ1YTYuLmM1
MWFlNjE5ZWUyZDAzYjY5OGU2NjI0ZjU0MjQ4ZjZjMTJkMjE0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgKQEAgLTQ1LDggKzQ1LDYgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24mKTsKIAog
ICAgIGV4cGxpY2l0IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDk0OTk3NDAyNDgwMGZiMjM3ZjUz
Y2FmOGRmOGRjMWIyYTY5OGM3NDQuLjNhNjFlYWM5YjYxYjkyZTJiYzkxMTM2ZGFmNTI4NjYyNzhi
OGI5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTE2NiwyMiArMTY2LDQgQEAgUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVD
b24KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lKCJBcHBsaWNhdGlvbkNhY2hlIik7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShsZWdhY3lEZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeShsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+
c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkobGVnYWN5RGVmYXVsdEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkpOwotICAgIAotICAgIHJldHVybiBjb25maWd1cmF0
aW9uOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDljOWE0M2I3M2M0M2RkNmQyYjMy
YjdlODYwZDg1ZTYxYmE4MTBiZjIuLjhlZDkxZTYzZmM5MmE5NjM1YjU1NTQyZGRkYjBiZWM3MmRj
OWQ5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVE
YXRhU3RvcmUuaApAQCAtNzEsMTggKzcxLDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpOwogCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVn
YWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAg
c3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVs
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KIHByaXZhdGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVE
aXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggZDBlYjMxYWUx
NjkwMDU3NzJhNmJlYzE0MzdjMmI0MzBkMGNiNGU2ZC4uYTc1ZGRhNDhlZGVhMjgyMzI5ZDI3ZTVj
MmE1Y2E2N2ViYThjZjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCkBAIC02OCwxMyArNjgsMTMgQEAgV0tUeXBlSUQgV0tDb250ZXh0R2V0VHlwZUlE
KCkKIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZSgpCiB7Ci0gICAgYXV0byBjb25maWd1
cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lP
cHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbikubGVha1JlZigpKTsKIH0KIAogV0tD
b250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoV0tTdHJpbmdS
ZWYgcGF0aFJlZikKIHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAg
Y29uZmlndXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYktpdDo6dG9XVEZTdHJpbmco
cGF0aFJlZikpOwogCiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKS5sZWFrUmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmNwcAppbmRleCAxNzY1MzE0MmRmNjdmNGYzYmVlMjkxMjU0NjVlNDE4ZGU2Njg3Mjc5Li42OGRm
ZDIyODlhMjM3YmQ5Yzg4YzJhZGQzYzI1ZjEzMGQxOGZiMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGUoKQogCiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9w
dGlvbnMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3Jl
YXRlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5RGlza0Nh
Y2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYuaAppbmRleCA5Mzk4NWFkODM3ZmNhOTZjM2M4YjNmZDlkNjU4Mjg5Yzg2N2Iy
NmEwLi5mYzAxNTk4NjcxNjZiNzI2YzdhNzAwMWZjOThhMDA2YmExY2Q2M2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIFdLX0VY
UE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVh
dGUoKTsKLVdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JUIFdLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdpdGhMZWdhY3lPcHRp
b25zKCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLQ29udGV4dENvbmZp
Z3VyYXRpb25DcmVhdGUpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tDb250ZXh0Q29uZmln
dXJhdGlvbkNvcHlBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0
aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElX
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggM2FlODg0NTExOTcyZWE3NWE2ZDM3ZTg1YzRk
ZWYzZTZhOGU4Njc1Ny4uYzg1YWE0NDRjMThiZjJkYTIyZDBkOGZkMmQ0MmI4NGI3YmI0MzAzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMDksMTE5ICsxMDksNiBAQCBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkoKQogICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7CiB9CiAKLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgaWYgKCFhcHBOYW1lKQotICAgICAgICBhcHBOYW1l
ID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07Ci0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBz
IHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2gg
dGhhdCBhbnkgbW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBt
aWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFw
cCgpKQotICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwotI2VuZGlm
Ci0gICAgCi0gICAgQVNTRVJUKGFwcE5hbWUpOwotICAgIAotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07Ci0jZWxzZQotICAgIGNo
YXIgY2FjaGVEaXJlY3RvcnlbTUFYUEFUSExFTl07Ci0gICAgc2l6ZV90IGNhY2hlRGlyZWN0b3J5
TGVuID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCBjYWNoZURpcmVjdG9yeSwg
TUFYUEFUSExFTik7Ci0gICAgaWYgKCFjYWNoZURpcmVjdG9yeUxlbikKLSAgICAgICAgcmV0dXJu
IFdURjo6U3RyaW5nKCk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
OmNhY2hlRGlyZWN0b3J5IGxlbmd0aDpjYWNoZURpcmVjdG9yeUxlbiAtIDFdOwotI2VuZGlmCi0g
ICAgTlNTdHJpbmcqIGNhY2hlUGF0aCA9IFtjYWNoZURpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6YXBwTmFtZV07Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0K
LQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENGQnJpZGdpbmdSZWxl
YXNlKF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxD
YWNoZV0gX0NGVVJMQ2FjaGVdKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgIGNhY2hl
UGF0aCA9IEAifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LldlYlByb2Nlc3MiOwot
ICAgIAotICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiV2ViS2l0Q2FjaGUiXTsKLSAgICAKLSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5n
UGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJl
Y3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JL
ZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFkYXRhYmFzZXNE
aXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0
L0RhdGFiYXNlcyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5r
c0luUGF0aChbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsK
LX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBJbmRleGVkIGRhdGFiYXNlcyBleGlzdCBp
biBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBwYXRoLiIKLSAgICAv
LyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50
aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgotICAgIC8vIFdlIHNob3VsZCBmaXgg
dGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCi0gICAgLy8gSW4gdGhlIG1lYW50aW1l
LCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90
IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIE5TU3Ry
aW5nICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5XTsK
LSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3RvcmFnZURpcmVjdG9y
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvTG9jYWxTdG9yYWdlIjsKLSAgICByZXR1cm4g
V2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAg
TlNTdHJpbmcgKm1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlE
ZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9yeSB8fCAhW21lZGlh
S2V5c0NhY2hlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAg
ICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwot
ICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewot
ICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmll
cikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJv
Y2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3Rv
cnkgPSBbbWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmJ1bmRsZUlkZW50aWZpZXJdOwotICAgICAgICB9Ci0gICAgICAgIG1lZGlhS2V5c0NhY2hl
RGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYktpdC9NZWRpYUNhY2hlIl07Ci0gICAgfQotICAgIHJldHVybiBXZWJL
aXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5c0NhY2hlRGlyZWN0
b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewot
ICAgIE5TU3RyaW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5IHx8ICFbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQotICAgICAgICBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gQCJ+L0xpYnJh
cnkvV2ViS2l0L01lZGlhS2V5cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZp
bmdTeW1saW5rc0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5k
YXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIC8vIE5v
dCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXVEY6OlN0cmluZyBwYXRo
ID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwotICAgIGlmIChwYXRoLmlzRW1w
dHkoKSkKLSAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwotICAgIAotICAgIHBhdGgg
PSBwYXRoICsgIi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVnIjsKLSAgICBwYXRo
ID0gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBhdGgpOwotICAgIAot
ICAgIHJldHVybiBwYXRoOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGphdmFTY3Jp
cHRDb25maWdQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRDb3JlRGVidWciOwot
ICAgIAotICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
W2phdmFTY3JpcHRDb25maWdQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLSNlbmRp
ZgotfQotCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91
bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewogICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCmluZGV4IDViMTc2MGI5ZDc5ZTcyNzVmMWEy
MzMyYmQ1YmYzNWY0OWJhMDMzZDguLjFkMDFmYzc5NTA5MGQ5YWM5MmVhZTA1OWJjZWY5ZTYxZmUy
NDBhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzR3JvdXAubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBzZXRVcEhpc3Rv
cnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250ZXh0UmVmIGNvbnRl
eAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5
T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRs
ZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKIAog
ICAgIF9wcm9jZXNzUG9vbCA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1
cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNjNWVjOWM0NGQ5Y2I5
YjI3NmRlZjY1MzYwNzkyNzg1NzdmLi5lZDBhNWFkNDU1OTkwYzFhZTZkM2U0MzNlMzRjOWRlODRi
YWQwMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC05OSw4MiArOTksNCBAQCBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAotV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAi
YXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0g
ICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNo
ZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUi
LCAiY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNlbmRp
ZgotICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFi
YXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3Bl
IiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0K
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNl
cl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJu
IGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsK
LSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0
b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17
Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5
KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNh
Y2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJl
dHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17
Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUi
LCAibWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0
KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRz
IiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRf
dXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRDb3JlRGVidWciLCBu
dWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCmluZGV4IDI4N2I3NTZhZmU2NGJj
YzE4OTQ4ZDA4OTYxYjg1NDYxMjE0MGYzZDIuLmQyZWY2ZjU2ZTNmZmFiZDBhNmEyY2ZiMDlkYjAw
NGY4YjE3M2FjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4v
QVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtODUsNTAgKzg1LDQgQEAgU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmkKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1TdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIp
OwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiV2ViU1FMIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFDYWNoZSIpOwot
fQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIC8vIE5v
dCBJbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
KQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2NyaXB0
Q29yZURlYnVnIik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKaW5kZXggZTViMTQzMzBiY2Vl
MjMwNmI2MTRjZmZhMmM0MTNmMWUyMjNlMTA2Zi4uY2ZlYTE1ZWU2NTdkM2U1YjI2NGJlYzhjYWY3
ZGI3YjdmNjUzNTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JVdGlsaXRpZXMuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFdlYlByb2Nlc3NQb29sJiBpbnNw
ZWN0b3JQcm9jZXNzUG9vbCh1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgLy8gZ3VhcmFu
dGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVyZmFjZS4KICAgICBXZWJQ
cm9jZXNzUG9vbComIHBvb2wgPSAoaW5zcGVjdGlvbkxldmVsID09IDEpID8gc19tYWluSW5zcGVj
dG9yUHJvY2Vzc1Bvb2wgOiBzX25lc3RlZEluc3BlY3RvclByb2Nlc3NQb29sOwogICAgIGlmICgh
cG9vbCkgewotICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAg
ICAgICBwb29sID0gJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbi5nZXQoKSku
bGVha1JlZigpOwogICAgICAgICAvLyBEbyBub3QgZGVsYXkgcHJvY2VzcyBsYXVuY2ggZm9yIGlu
c3BlY3RvciBwYWdlcyBhcyBpbnNwZWN0b3IgcGFnZXMgZG8gbm90IGtub3cgaG93IHRvIHRyYW5z
aXRpb24gZnJvbSBhIHRlcm1pbmF0ZWQgcHJvY2Vzcy4KICAgICAgICAgcG9vbC0+ZGlzYWJsZURl
bGF5ZWRXZWJQcm9jZXNzTGF1bmNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDAwYzdmZWIwZTM4
YjQ1MjRkYzIxOGExNTllZjcxNDk1NGQ0ZGZhZTYuLmJmZTYyYTQ1Yjc5YzZiYWFhNzU4NTA4ZWM4
YzNmMmE3OTc5YzNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNzQyLDcgKzE3NDIsNyBAQCBI
YXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQ
b29scyhzaXplX3QgY291bnQsIGJvbwogICAgIH0KIAogICAgIGlmIChwcm9jZXNzUG9vbHMuaXNF
bXB0eSgpICYmIGNvdW50ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAgICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1
cmF0aW9uKSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgIHBy
b2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374723</attachid>
            <date>2019-07-23 15:56:48 -0700</date>
            <delta_ts>2019-07-23 15:59:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190723155647.patch</filename>
            <type>text/plain</type>
            <size>33556</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YmEyYzRlNmI1MzQ3YWQz
OTVkNjUxMmJjYTRhZDllZGQwNGI5ZjEuLjAyYjM3NDM0NzAzYWRkNDNmYTdiZGZiZjVhZTVlMTYy
NTA2NDNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTktMDctMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0cyBsYXN0IG5lZWRl
ZCB1c2Ugd2FzIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEKKyAgICAgICAgVGhp
cyBjaGFuZ2VzIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyB0
byBiZSBlcXVhbCB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlLAorICAgICAgICBidXQg
aXQgaGFzIG5vIHJlbWFpbmluZyBjbGllbnRzIHNvIGl0IGlzIG9ubHkgYmVpbmcgcmV0YWluZWQg
Zm9yIGJpbmFyeSBjb21wYWJpYmlsaXR5LgorICAgICAgICBUaGlzIGFsc28gY2hhbmdlcyBXS0Nv
bnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGFuZCBXS0NvbnRleHRDcmVhdGUgdG8g
YmUgZXF1YWwgdG8gV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24sCisgICAgICAgIGFu
ZCBhZnRlciByZGFyOi8vcHJvYmxlbS80NzAzMDk4MSB0aGVyZSBhcmUgbm8gbWVhbmluZ2Z1bCBj
bGllbnRzIG9mIHRob3NlIGZ1bmN0aW9ucywgYWxzby4KKyAgICAgICAgVGhlcmUgaXMgb25lIGV4
aXN0aW5nIGNsaWVudCBvZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGlu
IHJkYXI6Ly9wcm9ibGVtLzUwMzIzOTY3IGJ1dCBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBpcyBjb21wYXRpYmxlIGVub3VnaCBmb3IgdGhlbSBiZWNhdXNlIGl0IHVzZXMgdGhl
aXIgaW5qZWN0ZWQgYnVuZGxlIHN0aWxsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlKToKKyAgICAgICAgKFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1By
b2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisKIDIwMTktMDctMjMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5IFNQSSBmcm9tIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBXS1Byb2Nlc3NQb29sUHJpdmF0ZSB0byBtYWtlIGl0IHJ1bnRpbWUgc3dpdGNoYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCA0Y2E5NGVhZTk5MDdmOGZmZTY4NGVjMDQwM2E1ZDU2
NTRjMTlkZTM2Li5mN2JiY2EyY2YxNjNkMzFhNGVjZDBiNTRjZDcyNzQxM2JhNTAyZGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtMzYsMzQgKzM2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aExlZ2FjeU9wdGlvbnMoKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJLaXQ6OkNhY2hlTW9kZWw6OkRv
Y3VtZW50Vmlld2VyOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVE
aXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwotfQotCiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKQpAQCAtODYsNyAr
NTgsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAg
Y29weS0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdGhpcy0+bV9zaG91bGRIYXZlTGVn
YWN5RGF0YVN0b3JlOwogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2Rl
bDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0NhY2hlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAppbmRleCBiNDU0MTMxYTM3ZThkNjcxMmE1ZmY3MTcxZGNmMDg0NDViZjc0NWE2
Li4zZGFiNTQ5NWNjM2QwODk1OTk1NjI4YjBlNTYwZDY0M2Y1ZWIyMTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCkBAIC00NSwxNyArNDUsMTIgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKLSAgICBzdGF0aWMg
UmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24m
KTsKIAogICAgIGV4cGxpY2l0IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1
YWwgflByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIAogICAgIFJlZjxQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IGNvcHkoKTsKIAotICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQotICAg
IHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lE
YXRhU3RvcmUpIHsgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsgfQotCiAgICAgYm9vbCB1c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc1NpbmdsZVdlYlByb2Nlc3M7IH0KICAgICB2b2lkIHNldFVzZXNTaW5nbGVX
ZWJQcm9jZXNzKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXNTaW5nbGVXZWJQcm9jZXNzID0gZW5hYmxl
ZDsgfQogCkBAIC0xODYsOCArMTgxLDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgeyBmYWxzZSB9OwotCiAgICAgYm9v
bCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlBy
aW1hcnlXZWJCcm93c2VyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NDk5NzQwMjQ4MDBmYjIzN2Y1M2NhZjhk
ZjhkYzFiMmE2OThjNzQ0Li4yZTI2ZDNjNzVjZGQzODUxNmY3MjFmMGYwODdhZjdhMGY2OTAzZmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC02NCwxMiArNjQsNiBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKLXsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFT
dG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7Ci19Ci0KIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQogICAg
IDogbV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9u
UGVyc2lzdGVudCgpKQogewpAQCAtMTY2LDIyICsxNjAsNCBAQCBSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUNvbgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCi1SZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURl
ZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5
RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOWM5YTQzYjczYzQzZGQ2ZDJi
MzJiN2U4NjBkODVlNjFiYTgxMGJmMi4uZTk5ZGRlNjA1NjU4MzQ0NmVhYzM3YzYyNDY3ODJmODZi
NDI5NjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogCiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0gICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTcxLDE4ICs3MCw2
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lE
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAg
c3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCiBw
cml2YXRlOgogICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5
LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCmluZGV4IGQwZWIzMWFlMTY5MDA1NzcyYTZiZWMxNDM3YzJiNDMwZDBj
YjRlNmQuLmE3NWRkYTQ4ZWRlYTI4MjMyOWQyN2U1YzJhNWNhNjdlYmE4Y2YwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjgsMTMgKzY4LDEz
IEBAIFdLVHlwZUlEIFdLQ29udGV4dEdldFR5cGVJRCgpCiAKIFdLQ29udGV4dFJlZiBXS0NvbnRl
eHRDcmVhdGUoKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZp
Z3VyYXRpb24pLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVX
aXRoSW5qZWN0ZWRCdW5kbGVQYXRoKFdLU3RyaW5nUmVmIHBhdGhSZWYpCiB7Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhM
ZWdhY3lPcHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluamVjdGVk
QnVuZGxlUGF0aChXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGhSZWYpKTsKIAogICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bikubGVha1JlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggMTc2NTMxNDJkZjY3ZjRm
M2JlZTI5MTI1NDY1ZTQxOGRlNjY4NzI3OS4uZDg5OGNhMTdiMzdiYWVhOTNiZTU5MTcwN2U0NGUy
YjQ1OGIwMGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTM1LDE3ICszNSwxMiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgCi0gICAgLy8gRklYTUU6
IEEgY29udGV4dCBjcmVhdGVkIGxpa2UgdGhpcyBzaG91bGRuJ3QgaGF2ZSBhIGRhdGEgc3RvcmUs
Ci0gICAgLy8gaW5zdGVhZCB0aGVyZSBzaG91bGQgYmUgYSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgZGF0YSBzdG9yZS4KLSAgICBjb25maWd1cmF0aW9u
LT5zZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKHRydWUpOwotICAgIAogICAgIHJldHVybiB0
b0FQSSgmY29uZmlndXJhdGlvbi5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
V2l0aExlZ2FjeU9wdGlvbnMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ3JlYXRlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25Db3B5RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA5Mzk4NWFkODM3ZmNhOTZjM2M4YjNmZDlk
NjU4Mjg5Yzg2N2IyNmEwLi5mYzAxNTk4NjcxNjZiNzI2YzdhNzAwMWZjOThhMDA2YmExY2Q2M2Qz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2Vu
ZGlmCiAKIFdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25DcmVhdGUoKTsKLVdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JU
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggM2FlODg0NTExOTcyZWE3
NWE2ZDM3ZTg1YzRkZWYzZTZhOGU4Njc1Ny4uYzg1YWE0NDRjMThiZjJkYTIyZDBkOGZkMmQ0MmI4
NGI3YmI0MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMDksMTE5ICsxMDks
NiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKQogICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7
CiB9CiAKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgaWYgKCFhcHBOYW1lKQotICAg
ICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFr
ZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0
IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0
aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKFdlYkNvcmU6
OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc1dlYkFwcCgpKQotICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2Fj
aGUiOwotI2VuZGlmCi0gICAgCi0gICAgQVNTRVJUKGFwcE5hbWUpOwotICAgIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW05TSG9tZURpcmVjdG9y
eSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07Ci0j
ZWxzZQotICAgIGNoYXIgY2FjaGVEaXJlY3RvcnlbTUFYUEFUSExFTl07Ci0gICAgc2l6ZV90IGNh
Y2hlRGlyZWN0b3J5TGVuID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCBjYWNo
ZURpcmVjdG9yeSwgTUFYUEFUSExFTik7Ci0gICAgaWYgKCFjYWNoZURpcmVjdG9yeUxlbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKmNhY2hlRGly
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOmNhY2hlRGlyZWN0b3J5IGxlbmd0aDpjYWNoZURpcmVjdG9yeUxlbiAtIDFd
OwotI2VuZGlmCi0gICAgTlNTdHJpbmcqIGNhY2hlUGF0aCA9IFtjYWNoZURpciBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6YXBwTmFtZV07Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5n
QnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemlu
Z1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENG
QnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNo
ZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0g
ICAgICAgIGNhY2hlUGF0aCA9IEAifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0Lldl
YlByb2Nlc3MiOwotICAgIAotICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0Q2FjaGUiXTsKLSAgICAKLSAgICByZXR1cm4gV2Vi
S2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlT
dGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpk
YXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYg
KCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xp
YnJhcnkvV2ViS2l0L0RhdGFiYXNlcyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNv
bHZpbmdTeW1saW5rc0luUGF0aChbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBJbmRleGVkIGRhdGFi
YXNlcyBleGlzdCBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBw
YXRoLiIKLSAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3Rvcnkg
Y29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgotICAgIC8vIFdl
IHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCi0gICAgLy8gSW4g
dGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2Nv
cmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIE5TU3RyaW5nICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURl
ZmF1bHRzS2V5XTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvTG9jYWxTdG9yYWdlIjsK
LSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpCi17Ci0gICAgTlNTdHJpbmcgKm1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9y
eSB8fCAhW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pIHsKLSAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURp
cmVjdG9yeSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250
YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVu
ZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbWVkaWFLZXlz
Q2FjaGVEaXJlY3RvcnkgPSBbbWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXJdOwotICAgICAgICB9Ci0gICAgICAgIG1l
ZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdC9NZWRpYUNhY2hlIl07Ci0gICAgfQotICAg
IHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQotewotICAgIE5TU3RyaW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5IHx8ICFbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L01lZGlhS2V5cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3Ry
aW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXVEY6
OlN0cmluZyBwYXRoID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwotICAgIGlm
IChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwotICAg
IAotICAgIHBhdGggPSBwYXRoICsgIi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVn
IjsKLSAgICBwYXRoID0gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBh
dGgpOwotICAgIAotICAgIHJldHVybiBwYXRoOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IGphdmFTY3JpcHRDb25maWdQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRD
b3JlRGVidWciOwotICAgIAotICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3lt
bGlua3NJblBhdGgoW2phdmFTY3JpcHRDb25maWdQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdKTsKLSNlbmRpZgotfQotCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3Rv
cnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCmluZGV4IDViMTc2MGI5
ZDc5ZTcyNzVmMWEyMzMyYmQ1YmYzNWY0OWJhMDMzZDguLjFkMDFmYzc5NTA5MGQ5YWM5MmVhZTA1
OWJjZWY5ZTYxZmUyNDBhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRVcEhpc3RvcnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250
ZXh0UmVmIGNvbnRleAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJ
bmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0
cmluZygpKTsKIAogICAgIF9wcm9jZXNzUG9vbCA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNj
NWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYwNzkyNzg1NzdmLi5lZDBhNWFkNDU1OTkwYzFhZTZkM2U0
MzNlMzRjOWRlODRiYWQwMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC05OSw4MiAr
OTksNCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0K
IAotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCksICJ3cGUiLCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNo
YXI+IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3cGUiLCAiY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Rv
cmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNh
Y2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndw
ZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNl
bmRpZgotICAgIHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShX
UEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmlj
ZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRD
b3JlRGVidWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0
KCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCmluZGV4IDI4
N2I3NTZhZmU2NGJjYzE4OTQ4ZDA4OTYxYjg1NDYxMjE0MGYzZDIuLmQyZWY2ZjU2ZTNmZmFiZDBh
NmEyY2ZiMDlkYjAwNGY4YjE3M2FjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtODUsNTAg
Kzg1LDQgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmkKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwot
fQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5l
dHdvcmtDYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsK
LX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVk
aWFDYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIC8vIE5vdCBJbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJKYXZhU2NyaXB0Q29yZURlYnVnIik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKaW5kZXgg
ZTViMTQzMzBiY2VlMjMwNmI2MTRjZmZhMmM0MTNmMWUyMjNlMTA2Zi4uY2ZlYTE1ZWU2NTdkM2U1
YjI2NGJlYzhjYWY3ZGI3YjdmNjUzNTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFdlYlByb2Nl
c3NQb29sJiBpbnNwZWN0b3JQcm9jZXNzUG9vbCh1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAg
ICAgLy8gZ3VhcmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVyZmFj
ZS4KICAgICBXZWJQcm9jZXNzUG9vbComIHBvb2wgPSAoaW5zcGVjdGlvbkxldmVsID09IDEpID8g
c19tYWluSW5zcGVjdG9yUHJvY2Vzc1Bvb2wgOiBzX25lc3RlZEluc3BlY3RvclByb2Nlc3NQb29s
OwogICAgIGlmICghcG9vbCkgewotICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOwogICAgICAgICBwb29sID0gJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJh
dGlvbi5nZXQoKSkubGVha1JlZigpOwogICAgICAgICAvLyBEbyBub3QgZGVsYXkgcHJvY2VzcyBs
YXVuY2ggZm9yIGluc3BlY3RvciBwYWdlcyBhcyBpbnNwZWN0b3IgcGFnZXMgZG8gbm90IGtub3cg
aG93IHRvIHRyYW5zaXRpb24gZnJvbSBhIHRlcm1pbmF0ZWQgcHJvY2Vzcy4KICAgICAgICAgcG9v
bC0+ZGlzYWJsZURlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZWU4NGFjZWI2MDI1MzdiODljYjhmNmYzYThl
NjEyYmFiMmQ0YTk4Ny4uNmRmMDY5NThjOTZhZDZlMzc4NWNmNTQ5NWViODQxNDkzZWQ1ZmQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjA1LDI1
ICsyMDUsNiBAQCBjb25zdCBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiYgV2ViUHJvY2Vzc1Bvb2w6
OmFsbFByb2Nlc3NQb29scygpCiAgICAgcmV0dXJuIHByb2Nlc3NQb29scygpOwogfQogCi1zdGF0
aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbihBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPnNldENh
Y2hlU3RvcmFnZURpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0cmluZyhBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKFN0cmluZyhwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkpKTsKLQotICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwotfQotCiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+PiBzZXQ7CkBAIC0yNjMsOSArMjQ0LDYgQEAgV2ViUHJvY2Vzc1Bvb2w6Oldl
YlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnNo
b3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoKSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3kobGVnYWN5V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7Ci0KICAgICBpZiAoIW1fd2Vic2l0ZURh
dGFTdG9yZSAmJiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMo
KSkKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDBjN2ZlYjBlMzhiNDUy
NGRjMjE4YTE1OWVmNzE0OTU0ZDRkZmFlNi4uYmZlNjJhNDViNzljNmJhYWE3NTg1MDhlYzhjM2Yy
YTc5NzljM2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3NDIsNyArMTc0Miw3IEBAIEhhc2hT
ZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xz
KHNpemVfdCBjb3VudCwgYm9vCiAgICAgfQogCiAgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5
KCkgJiYgY291bnQgJiYgZW5zdXJlQVBvb2xFeGlzdHMpIHsKLSAgICAgICAgYXV0byBwcm9jZXNz
UG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRp
b24pKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpKTsKICAgICAgICAgcHJvY2Vz
c1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374724</attachid>
            <date>2019-07-23 15:59:11 -0700</date>
            <delta_ts>2019-07-23 16:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190723155910.patch</filename>
            <type>text/plain</type>
            <size>35157</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YmEyYzRlNmI1MzQ3YWQz
OTVkNjUxMmJjYTRhZDllZGQwNGI5ZjEuLjAyYjM3NDM0NzAzYWRkNDNmYTdiZGZiZjVhZTVlMTYy
NTA2NDNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTktMDctMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0cyBsYXN0IG5lZWRl
ZCB1c2Ugd2FzIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEKKyAgICAgICAgVGhp
cyBjaGFuZ2VzIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyB0
byBiZSBlcXVhbCB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlLAorICAgICAgICBidXQg
aXQgaGFzIG5vIHJlbWFpbmluZyBjbGllbnRzIHNvIGl0IGlzIG9ubHkgYmVpbmcgcmV0YWluZWQg
Zm9yIGJpbmFyeSBjb21wYWJpYmlsaXR5LgorICAgICAgICBUaGlzIGFsc28gY2hhbmdlcyBXS0Nv
bnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGFuZCBXS0NvbnRleHRDcmVhdGUgdG8g
YmUgZXF1YWwgdG8gV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24sCisgICAgICAgIGFu
ZCBhZnRlciByZGFyOi8vcHJvYmxlbS80NzAzMDk4MSB0aGVyZSBhcmUgbm8gbWVhbmluZ2Z1bCBj
bGllbnRzIG9mIHRob3NlIGZ1bmN0aW9ucywgYWxzby4KKyAgICAgICAgVGhlcmUgaXMgb25lIGV4
aXN0aW5nIGNsaWVudCBvZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGlu
IHJkYXI6Ly9wcm9ibGVtLzUwMzIzOTY3IGJ1dCBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBpcyBjb21wYXRpYmxlIGVub3VnaCBmb3IgdGhlbSBiZWNhdXNlIGl0IHVzZXMgdGhl
aXIgaW5qZWN0ZWQgYnVuZGxlIHN0aWxsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlKToKKyAgICAgICAgKFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1By
b2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisKIDIwMTktMDctMjMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5IFNQSSBmcm9tIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBXS1Byb2Nlc3NQb29sUHJpdmF0ZSB0byBtYWtlIGl0IHJ1bnRpbWUgc3dpdGNoYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCA0Y2E5NGVhZTk5MDdmOGZmZTY4NGVjMDQwM2E1ZDU2
NTRjMTlkZTM2Li5mN2JiY2EyY2YxNjNkMzFhNGVjZDBiNTRjZDcyNzQxM2JhNTAyZGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtMzYsMzQgKzM2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aExlZ2FjeU9wdGlvbnMoKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJLaXQ6OkNhY2hlTW9kZWw6OkRv
Y3VtZW50Vmlld2VyOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVE
aXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwotfQotCiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKQpAQCAtODYsNyAr
NTgsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAg
Y29weS0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdGhpcy0+bV9zaG91bGRIYXZlTGVn
YWN5RGF0YVN0b3JlOwogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2Rl
bDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0NhY2hlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAppbmRleCBiNDU0MTMxYTM3ZThkNjcxMmE1ZmY3MTcxZGNmMDg0NDViZjc0NWE2
Li4zZGFiNTQ5NWNjM2QwODk1OTk1NjI4YjBlNTYwZDY0M2Y1ZWIyMTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCkBAIC00NSwxNyArNDUsMTIgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKLSAgICBzdGF0aWMg
UmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24m
KTsKIAogICAgIGV4cGxpY2l0IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1
YWwgflByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIAogICAgIFJlZjxQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IGNvcHkoKTsKIAotICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQotICAg
IHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lE
YXRhU3RvcmUpIHsgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsgfQotCiAgICAgYm9vbCB1c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc1NpbmdsZVdlYlByb2Nlc3M7IH0KICAgICB2b2lkIHNldFVzZXNTaW5nbGVX
ZWJQcm9jZXNzKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXNTaW5nbGVXZWJQcm9jZXNzID0gZW5hYmxl
ZDsgfQogCkBAIC0xODYsOCArMTgxLDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgeyBmYWxzZSB9OwotCiAgICAgYm9v
bCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlBy
aW1hcnlXZWJCcm93c2VyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NDk5NzQwMjQ4MDBmYjIzN2Y1M2NhZjhk
ZjhkYzFiMmE2OThjNzQ0Li4yZTI2ZDNjNzVjZGQzODUxNmY3MjFmMGYwODdhZjdhMGY2OTAzZmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC02NCwxMiArNjQsNiBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKLXsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFT
dG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7Ci19Ci0KIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQogICAg
IDogbV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9u
UGVyc2lzdGVudCgpKQogewpAQCAtMTY2LDIyICsxNjAsNCBAQCBSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUNvbgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCi1SZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURl
ZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5
RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOWM5YTQzYjczYzQzZGQ2ZDJi
MzJiN2U4NjBkODVlNjFiYTgxMGJmMi4uZTk5ZGRlNjA1NjU4MzQ0NmVhYzM3YzYyNDY3ODJmODZi
NDI5NjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogCiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0gICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTcxLDE4ICs3MCw2
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lE
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAg
c3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCiBw
cml2YXRlOgogICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5
LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCmluZGV4IGQwZWIzMWFlMTY5MDA1NzcyYTZiZWMxNDM3YzJiNDMwZDBj
YjRlNmQuLmE3NWRkYTQ4ZWRlYTI4MjMyOWQyN2U1YzJhNWNhNjdlYmE4Y2YwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjgsMTMgKzY4LDEz
IEBAIFdLVHlwZUlEIFdLQ29udGV4dEdldFR5cGVJRCgpCiAKIFdLQ29udGV4dFJlZiBXS0NvbnRl
eHRDcmVhdGUoKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZp
Z3VyYXRpb24pLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVX
aXRoSW5qZWN0ZWRCdW5kbGVQYXRoKFdLU3RyaW5nUmVmIHBhdGhSZWYpCiB7Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhM
ZWdhY3lPcHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluamVjdGVk
QnVuZGxlUGF0aChXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGhSZWYpKTsKIAogICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bikubGVha1JlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggMTc2NTMxNDJkZjY3ZjRm
M2JlZTI5MTI1NDY1ZTQxOGRlNjY4NzI3OS4uZDg5OGNhMTdiMzdiYWVhOTNiZTU5MTcwN2U0NGUy
YjQ1OGIwMGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTM1LDE3ICszNSwxMiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgCi0gICAgLy8gRklYTUU6
IEEgY29udGV4dCBjcmVhdGVkIGxpa2UgdGhpcyBzaG91bGRuJ3QgaGF2ZSBhIGRhdGEgc3RvcmUs
Ci0gICAgLy8gaW5zdGVhZCB0aGVyZSBzaG91bGQgYmUgYSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgZGF0YSBzdG9yZS4KLSAgICBjb25maWd1cmF0aW9u
LT5zZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKHRydWUpOwotICAgIAogICAgIHJldHVybiB0
b0FQSSgmY29uZmlndXJhdGlvbi5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
V2l0aExlZ2FjeU9wdGlvbnMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ3JlYXRlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25Db3B5RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA5Mzk4NWFkODM3ZmNhOTZjM2M4YjNmZDlk
NjU4Mjg5Yzg2N2IyNmEwLi5mYzAxNTk4NjcxNjZiNzI2YzdhNzAwMWZjOThhMDA2YmExY2Q2M2Qz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2Vu
ZGlmCiAKIFdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25DcmVhdGUoKTsKLVdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JU
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggM2FlODg0NTExOTcyZWE3
NWE2ZDM3ZTg1YzRkZWYzZTZhOGU4Njc1Ny4uYzg1YWE0NDRjMThiZjJkYTIyZDBkOGZkMmQ0MmI4
NGI3YmI0MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMDksMTE5ICsxMDks
NiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKQogICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7
CiB9CiAKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgaWYgKCFhcHBOYW1lKQotICAg
ICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFr
ZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0
IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0
aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKFdlYkNvcmU6
OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc1dlYkFwcCgpKQotICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2Fj
aGUiOwotI2VuZGlmCi0gICAgCi0gICAgQVNTRVJUKGFwcE5hbWUpOwotICAgIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW05TSG9tZURpcmVjdG9y
eSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07Ci0j
ZWxzZQotICAgIGNoYXIgY2FjaGVEaXJlY3RvcnlbTUFYUEFUSExFTl07Ci0gICAgc2l6ZV90IGNh
Y2hlRGlyZWN0b3J5TGVuID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCBjYWNo
ZURpcmVjdG9yeSwgTUFYUEFUSExFTik7Ci0gICAgaWYgKCFjYWNoZURpcmVjdG9yeUxlbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKmNhY2hlRGly
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOmNhY2hlRGlyZWN0b3J5IGxlbmd0aDpjYWNoZURpcmVjdG9yeUxlbiAtIDFd
OwotI2VuZGlmCi0gICAgTlNTdHJpbmcqIGNhY2hlUGF0aCA9IFtjYWNoZURpciBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6YXBwTmFtZV07Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5n
QnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemlu
Z1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENG
QnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNo
ZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0g
ICAgICAgIGNhY2hlUGF0aCA9IEAifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0Lldl
YlByb2Nlc3MiOwotICAgIAotICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0Q2FjaGUiXTsKLSAgICAKLSAgICByZXR1cm4gV2Vi
S2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlT
dGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpk
YXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYg
KCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xp
YnJhcnkvV2ViS2l0L0RhdGFiYXNlcyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNv
bHZpbmdTeW1saW5rc0luUGF0aChbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBJbmRleGVkIGRhdGFi
YXNlcyBleGlzdCBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBw
YXRoLiIKLSAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3Rvcnkg
Y29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgotICAgIC8vIFdl
IHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCi0gICAgLy8gSW4g
dGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2Nv
cmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIE5TU3RyaW5nICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURl
ZmF1bHRzS2V5XTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvTG9jYWxTdG9yYWdlIjsK
LSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpCi17Ci0gICAgTlNTdHJpbmcgKm1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9y
eSB8fCAhW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pIHsKLSAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURp
cmVjdG9yeSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250
YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVu
ZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbWVkaWFLZXlz
Q2FjaGVEaXJlY3RvcnkgPSBbbWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXJdOwotICAgICAgICB9Ci0gICAgICAgIG1l
ZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdC9NZWRpYUNhY2hlIl07Ci0gICAgfQotICAg
IHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQotewotICAgIE5TU3RyaW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5IHx8ICFbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L01lZGlhS2V5cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3Ry
aW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXVEY6
OlN0cmluZyBwYXRoID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwotICAgIGlm
IChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwotICAg
IAotICAgIHBhdGggPSBwYXRoICsgIi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVn
IjsKLSAgICBwYXRoID0gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBh
dGgpOwotICAgIAotICAgIHJldHVybiBwYXRoOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IGphdmFTY3JpcHRDb25maWdQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRD
b3JlRGVidWciOwotICAgIAotICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3lt
bGlua3NJblBhdGgoW2phdmFTY3JpcHRDb25maWdQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdKTsKLSNlbmRpZgotfQotCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3Rv
cnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCmluZGV4IDViMTc2MGI5
ZDc5ZTcyNzVmMWEyMzMyYmQ1YmYzNWY0OWJhMDMzZDguLjFkMDFmYzc5NTA5MGQ5YWM5MmVhZTA1
OWJjZWY5ZTYxZmUyNDBhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRVcEhpc3RvcnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250
ZXh0UmVmIGNvbnRleAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJ
bmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0
cmluZygpKTsKIAogICAgIF9wcm9jZXNzUG9vbCA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNj
NWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYwNzkyNzg1NzdmLi5lZDBhNWFkNDU1OTkwYzFhZTZkM2U0
MzNlMzRjOWRlODRiYWQwMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC05OSw4MiAr
OTksNCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0K
IAotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCksICJ3cGUiLCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNo
YXI+IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3cGUiLCAiY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Rv
cmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNh
Y2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndw
ZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNl
bmRpZgotICAgIHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShX
UEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmlj
ZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRD
b3JlRGVidWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0
KCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmlu
ZGV4IGMwZjkxY2M1NmVhNTI0NDg5YTI2YThhMTRlODU4NGIyYWI0OWU2NGUuLmRlYWVlNmJhYjcy
ZDljYTExMmQzZWEyOGNiOTMzYjNhMjI5OGQ1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNw
cApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9jbGFzc19pbml0KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlckNsYXNzCiBXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICBXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9NQU5BR0VSLCBudWxscHRyKSk7
Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIG1hbmFnZXIt
PnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHJldHVybiBtYW5hZ2VyOwogfQpAQCAtMzc1
LDcgKzM3NSw3IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgICAgIGNvbmZpZ3VyYXRp
b24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwog
ICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24t
PnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKaW5k
ZXggMjg3Yjc1NmFmZTY0YmNjMTg5NDhkMDg5NjFiODU0NjEyMTQwZjNkMi4uZDJlZjZmNTZlM2Zm
YWJkMGE2YTJjZmIwOWRiMDA0ZjhiMTczYWM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCkBAIC04
NSw1MCArODUsNCBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaQogICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwogfQogCi1TdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hl
Iik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiTmV0d29ya0NhY2hlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lE
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQotCi1TdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFn
ZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJNZWRpYUNhY2hlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSgpCi17Ci0gICAgLy8gTm90IEltcGxlbWVudGVkLgotICAgIHJldHVybiBTdHJpbmcoKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcApp
bmRleCBlNWIxNDMzMGJjZWUyMzA2YjYxNGNmZmEyYzQxM2YxZTIyM2UxMDZmLi5jZmVhMTVlZTY1
N2QzZTViMjY0YmVjOGNhZjdkYjdiN2Y2NTM1NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgV2Vi
UHJvY2Vzc1Bvb2wmIGluc3BlY3RvclByb2Nlc3NQb29sKHVuc2lnbmVkIGluc3BlY3Rpb25MZXZl
bCkKICAgICAvLyBndWFyYW50ZWVzIG5vIHByb2Nlc3Mgc2hhcmluZyBmb3Igb3VyIHVzZXIgaW50
ZXJmYWNlLgogICAgIFdlYlByb2Nlc3NQb29sKiYgcG9vbCA9IChpbnNwZWN0aW9uTGV2ZWwgPT0g
MSkgPyBzX21haW5JbnNwZWN0b3JQcm9jZXNzUG9vbCA6IHNfbmVzdGVkSW5zcGVjdG9yUHJvY2Vz
c1Bvb2w7CiAgICAgaWYgKCFwb29sKSB7Ci0gICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOwor
ICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y3JlYXRlKCk7CiAgICAgICAgIHBvb2wgPSAmV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25m
aWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAgICAgICAgIC8vIERvIG5vdCBkZWxheSBwcm9j
ZXNzIGxhdW5jaCBmb3IgaW5zcGVjdG9yIHBhZ2VzIGFzIGluc3BlY3RvciBwYWdlcyBkbyBub3Qg
a25vdyBob3cgdG8gdHJhbnNpdGlvbiBmcm9tIGEgdGVybWluYXRlZCBwcm9jZXNzLgogICAgICAg
ICBwb29sLT5kaXNhYmxlRGVsYXllZFdlYlByb2Nlc3NMYXVuY2goKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlZTg0YWNlYjYwMjUzN2I4OWNiOGY2
ZjNhOGU2MTJiYWIyZDRhOTg3Li42ZGYwNjk1OGM5NmFkNmUzNzg1Y2Y1NDk1ZWI4NDE0OTNlZDVm
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0y
MDUsMjUgKzIwNSw2IEBAIGNvbnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXNz
UG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkKICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xzKCk7CiB9CiAK
LXN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGxlZ2FjeVdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+
c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJh
dGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+
c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoU3RyaW5nKHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KFN0cmluZyhw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgpKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZp
Z3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoU3RyaW5nKHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5kaXNrQ2FjaGVEaXJlY3RvcnkoKSkpOwotCi0gICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247Ci19Ci0KIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJz
KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4+IHNldDsKQEAgLTI2Myw5ICsyNDQsNiBAQCBXZWJQcm9jZXNzUG9v
bDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24pCiAgICAgICAgIFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKG1fY29uZmlndXJhdGlv
bi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKLQogICAgIGlmICghbV93ZWJz
aXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4
aXN0cygpKQogICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwMGM3ZmViMGUz
OGI0NTI0ZGMyMThhMTU5ZWY3MTQ5NTRkNGRmYWU2Li5iZmU2MmE0NWI3OWM2YmFhYTc1ODUwOGVj
OGMzZjJhNzk3OWMzZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTc0Miw3ICsxNzQyLDcgQEAg
SGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNz
UG9vbHMoc2l6ZV90IGNvdW50LCBib28KICAgICB9CiAKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlz
RW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykgewotICAgICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmln
dXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICBw
cm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374725</attachid>
            <date>2019-07-23 16:04:29 -0700</date>
            <delta_ts>2019-07-23 16:22:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190723160429.patch</filename>
            <type>text/plain</type>
            <size>35486</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YmEyYzRlNmI1MzQ3YWQz
OTVkNjUxMmJjYTRhZDllZGQwNGI5ZjEuLjAyYjM3NDM0NzAzYWRkNDNmYTdiZGZiZjVhZTVlMTYy
NTA2NDNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTktMDctMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0cyBsYXN0IG5lZWRl
ZCB1c2Ugd2FzIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEKKyAgICAgICAgVGhp
cyBjaGFuZ2VzIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyB0
byBiZSBlcXVhbCB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlLAorICAgICAgICBidXQg
aXQgaGFzIG5vIHJlbWFpbmluZyBjbGllbnRzIHNvIGl0IGlzIG9ubHkgYmVpbmcgcmV0YWluZWQg
Zm9yIGJpbmFyeSBjb21wYWJpYmlsaXR5LgorICAgICAgICBUaGlzIGFsc28gY2hhbmdlcyBXS0Nv
bnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGFuZCBXS0NvbnRleHRDcmVhdGUgdG8g
YmUgZXF1YWwgdG8gV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24sCisgICAgICAgIGFu
ZCBhZnRlciByZGFyOi8vcHJvYmxlbS80NzAzMDk4MSB0aGVyZSBhcmUgbm8gbWVhbmluZ2Z1bCBj
bGllbnRzIG9mIHRob3NlIGZ1bmN0aW9ucywgYWxzby4KKyAgICAgICAgVGhlcmUgaXMgb25lIGV4
aXN0aW5nIGNsaWVudCBvZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGlu
IHJkYXI6Ly9wcm9ibGVtLzUwMzIzOTY3IGJ1dCBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBpcyBjb21wYXRpYmxlIGVub3VnaCBmb3IgdGhlbSBiZWNhdXNlIGl0IHVzZXMgdGhl
aXIgaW5qZWN0ZWQgYnVuZGxlIHN0aWxsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlKToKKyAgICAgICAgKFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1By
b2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisKIDIwMTktMDctMjMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5IFNQSSBmcm9tIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBXS1Byb2Nlc3NQb29sUHJpdmF0ZSB0byBtYWtlIGl0IHJ1bnRpbWUgc3dpdGNoYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCA0Y2E5NGVhZTk5MDdmOGZmZTY4NGVjMDQwM2E1ZDU2
NTRjMTlkZTM2Li5mN2JiY2EyY2YxNjNkMzFhNGVjZDBiNTRjZDcyNzQxM2JhNTAyZGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtMzYsMzQgKzM2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aExlZ2FjeU9wdGlvbnMoKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJLaXQ6OkNhY2hlTW9kZWw6OkRv
Y3VtZW50Vmlld2VyOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVE
aXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwotfQotCiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKQpAQCAtODYsNyAr
NTgsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAg
Y29weS0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdGhpcy0+bV9zaG91bGRIYXZlTGVn
YWN5RGF0YVN0b3JlOwogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2Rl
bDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0NhY2hlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAppbmRleCBiNDU0MTMxYTM3ZThkNjcxMmE1ZmY3MTcxZGNmMDg0NDViZjc0NWE2
Li4zZGFiNTQ5NWNjM2QwODk1OTk1NjI4YjBlNTYwZDY0M2Y1ZWIyMTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCkBAIC00NSwxNyArNDUsMTIgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKLSAgICBzdGF0aWMg
UmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24m
KTsKIAogICAgIGV4cGxpY2l0IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1
YWwgflByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIAogICAgIFJlZjxQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IGNvcHkoKTsKIAotICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQotICAg
IHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lE
YXRhU3RvcmUpIHsgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsgfQotCiAgICAgYm9vbCB1c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc1NpbmdsZVdlYlByb2Nlc3M7IH0KICAgICB2b2lkIHNldFVzZXNTaW5nbGVX
ZWJQcm9jZXNzKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXNTaW5nbGVXZWJQcm9jZXNzID0gZW5hYmxl
ZDsgfQogCkBAIC0xODYsOCArMTgxLDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgeyBmYWxzZSB9OwotCiAgICAgYm9v
bCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlBy
aW1hcnlXZWJCcm93c2VyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NDk5NzQwMjQ4MDBmYjIzN2Y1M2NhZjhk
ZjhkYzFiMmE2OThjNzQ0Li4yZTI2ZDNjNzVjZGQzODUxNmY3MjFmMGYwODdhZjdhMGY2OTAzZmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC02NCwxMiArNjQsNiBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKLXsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFT
dG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7Ci19Ci0KIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQogICAg
IDogbV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9u
UGVyc2lzdGVudCgpKQogewpAQCAtMTY2LDIyICsxNjAsNCBAQCBSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUNvbgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCi1SZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURl
ZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5
RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOWM5YTQzYjczYzQzZGQ2ZDJi
MzJiN2U4NjBkODVlNjFiYTgxMGJmMi4uZTk5ZGRlNjA1NjU4MzQ0NmVhYzM3YzYyNDY3ODJmODZi
NDI5NjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogCiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0gICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTcxLDE4ICs3MCw2
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lE
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAg
c3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCiBw
cml2YXRlOgogICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5
LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCmluZGV4IGQwZWIzMWFlMTY5MDA1NzcyYTZiZWMxNDM3YzJiNDMwZDBj
YjRlNmQuLmE3NWRkYTQ4ZWRlYTI4MjMyOWQyN2U1YzJhNWNhNjdlYmE4Y2YwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjgsMTMgKzY4LDEz
IEBAIFdLVHlwZUlEIFdLQ29udGV4dEdldFR5cGVJRCgpCiAKIFdLQ29udGV4dFJlZiBXS0NvbnRl
eHRDcmVhdGUoKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZp
Z3VyYXRpb24pLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVX
aXRoSW5qZWN0ZWRCdW5kbGVQYXRoKFdLU3RyaW5nUmVmIHBhdGhSZWYpCiB7Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhM
ZWdhY3lPcHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluamVjdGVk
QnVuZGxlUGF0aChXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGhSZWYpKTsKIAogICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bikubGVha1JlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggMTc2NTMxNDJkZjY3ZjRm
M2JlZTI5MTI1NDY1ZTQxOGRlNjY4NzI3OS4uZDg5OGNhMTdiMzdiYWVhOTNiZTU5MTcwN2U0NGUy
YjQ1OGIwMGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTM1LDE3ICszNSwxMiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgCi0gICAgLy8gRklYTUU6
IEEgY29udGV4dCBjcmVhdGVkIGxpa2UgdGhpcyBzaG91bGRuJ3QgaGF2ZSBhIGRhdGEgc3RvcmUs
Ci0gICAgLy8gaW5zdGVhZCB0aGVyZSBzaG91bGQgYmUgYSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgZGF0YSBzdG9yZS4KLSAgICBjb25maWd1cmF0aW9u
LT5zZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKHRydWUpOwotICAgIAogICAgIHJldHVybiB0
b0FQSSgmY29uZmlndXJhdGlvbi5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
V2l0aExlZ2FjeU9wdGlvbnMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ3JlYXRlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25Db3B5RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA5Mzk4NWFkODM3ZmNhOTZjM2M4YjNmZDlk
NjU4Mjg5Yzg2N2IyNmEwLi5mYzAxNTk4NjcxNjZiNzI2YzdhNzAwMWZjOThhMDA2YmExY2Q2M2Qz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2Vu
ZGlmCiAKIFdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25DcmVhdGUoKTsKLVdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JU
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggM2FlODg0NTExOTcyZWE3
NWE2ZDM3ZTg1YzRkZWYzZTZhOGU4Njc1Ny4uYzg1YWE0NDRjMThiZjJkYTIyZDBkOGZkMmQ0MmI4
NGI3YmI0MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMDksMTE5ICsxMDks
NiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKQogICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7
CiB9CiAKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgaWYgKCFhcHBOYW1lKQotICAg
ICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFr
ZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0
IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0
aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKFdlYkNvcmU6
OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc1dlYkFwcCgpKQotICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2Fj
aGUiOwotI2VuZGlmCi0gICAgCi0gICAgQVNTRVJUKGFwcE5hbWUpOwotICAgIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW05TSG9tZURpcmVjdG9y
eSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07Ci0j
ZWxzZQotICAgIGNoYXIgY2FjaGVEaXJlY3RvcnlbTUFYUEFUSExFTl07Ci0gICAgc2l6ZV90IGNh
Y2hlRGlyZWN0b3J5TGVuID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCBjYWNo
ZURpcmVjdG9yeSwgTUFYUEFUSExFTik7Ci0gICAgaWYgKCFjYWNoZURpcmVjdG9yeUxlbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKmNhY2hlRGly
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOmNhY2hlRGlyZWN0b3J5IGxlbmd0aDpjYWNoZURpcmVjdG9yeUxlbiAtIDFd
OwotI2VuZGlmCi0gICAgTlNTdHJpbmcqIGNhY2hlUGF0aCA9IFtjYWNoZURpciBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6YXBwTmFtZV07Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5n
QnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemlu
Z1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENG
QnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNo
ZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0g
ICAgICAgIGNhY2hlUGF0aCA9IEAifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0Lldl
YlByb2Nlc3MiOwotICAgIAotICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0Q2FjaGUiXTsKLSAgICAKLSAgICByZXR1cm4gV2Vi
S2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlT
dGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpk
YXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYg
KCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xp
YnJhcnkvV2ViS2l0L0RhdGFiYXNlcyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNv
bHZpbmdTeW1saW5rc0luUGF0aChbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBJbmRleGVkIGRhdGFi
YXNlcyBleGlzdCBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBw
YXRoLiIKLSAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3Rvcnkg
Y29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgotICAgIC8vIFdl
IHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCi0gICAgLy8gSW4g
dGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2Nv
cmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIE5TU3RyaW5nICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURl
ZmF1bHRzS2V5XTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvTG9jYWxTdG9yYWdlIjsK
LSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpCi17Ci0gICAgTlNTdHJpbmcgKm1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9y
eSB8fCAhW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pIHsKLSAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURp
cmVjdG9yeSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250
YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVu
ZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbWVkaWFLZXlz
Q2FjaGVEaXJlY3RvcnkgPSBbbWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXJdOwotICAgICAgICB9Ci0gICAgICAgIG1l
ZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdC9NZWRpYUNhY2hlIl07Ci0gICAgfQotICAg
IHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQotewotICAgIE5TU3RyaW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5IHx8ICFbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L01lZGlhS2V5cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3Ry
aW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXVEY6
OlN0cmluZyBwYXRoID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwotICAgIGlm
IChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwotICAg
IAotICAgIHBhdGggPSBwYXRoICsgIi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVn
IjsKLSAgICBwYXRoID0gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBh
dGgpOwotICAgIAotICAgIHJldHVybiBwYXRoOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IGphdmFTY3JpcHRDb25maWdQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRD
b3JlRGVidWciOwotICAgIAotICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3lt
bGlua3NJblBhdGgoW2phdmFTY3JpcHRDb25maWdQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdKTsKLSNlbmRpZgotfQotCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3Rv
cnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCmluZGV4IDViMTc2MGI5
ZDc5ZTcyNzVmMWEyMzMyYmQ1YmYzNWY0OWJhMDMzZDguLjFkMDFmYzc5NTA5MGQ5YWM5MmVhZTA1
OWJjZWY5ZTYxZmUyNDBhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRVcEhpc3RvcnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250
ZXh0UmVmIGNvbnRleAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJ
bmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0
cmluZygpKTsKIAogICAgIF9wcm9jZXNzUG9vbCA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNj
NWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYwNzkyNzg1NzdmLi5lZDBhNWFkNDU1OTkwYzFhZTZkM2U0
MzNlMzRjOWRlODRiYWQwMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC05OSw4MiAr
OTksNCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0K
IAotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCksICJ3cGUiLCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNo
YXI+IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3cGUiLCAiY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Rv
cmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNh
Y2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndw
ZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNl
bmRpZgotICAgIHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShX
UEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmlj
ZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRD
b3JlRGVidWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0
KCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmlu
ZGV4IGMwZjkxY2M1NmVhNTI0NDg5YTI2YThhMTRlODU4NGIyYWI0OWU2NGUuLjk3YzQ3OTUwYWRj
MzkyMDY1ODUzNjI2OTdlYTAzNzY1OGEzYTgxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMzU2LDggKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ckNsYXNzCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdl
ckNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlv
bikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfV0VC
U0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9N
QU5BR0VSLCBudWxscHRyKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwotCisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0UmVmKCpu
ZXcgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApA
QCAtMzc1LDcgKzM3NSw3IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3Rv
cnkgPwogICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1v
dmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gYWRv
cHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gKnBy
aXYtPndlYnNpdGVEYXRhU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAppbmRleCAyODdiNzU2YWZl
NjRiY2MxODk0OGQwODk2MWI4NTQ2MTIxNDBmM2QyLi5kMmVmNmY1NmUzZmZhYmQwYTZhMmNmYjA5
ZGIwMDRmOGIxNzNhYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKQEAgLTg1LDUwICs4NSw0IEBA
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2Fj
aGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUi
KTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICAv
LyBOb3QgSW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNj
cmlwdENvcmVEZWJ1ZyIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCmluZGV4IGU1YjE0MzMw
YmNlZTIzMDZiNjE0Y2ZmYTJjNDEzZjFlMjIzZTEwNmYuLmNmZWExNWVlNjU3ZDNlNWIyNjRiZWM4
Y2FmN2RiN2I3ZjY1MzU0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yVXRpbGl0aWVzLmNwcApAQCAtODAsNyArODAsNyBAQCBXZWJQcm9jZXNzUG9vbCYg
aW5zcGVjdG9yUHJvY2Vzc1Bvb2wodW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogICAgIC8vIGd1
YXJhbnRlZXMgbm8gcHJvY2VzcyBzaGFyaW5nIGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCiAgICAg
V2ViUHJvY2Vzc1Bvb2wqJiBwb29sID0gKGluc3BlY3Rpb25MZXZlbCA9PSAxKSA/IHNfbWFpbklu
c3BlY3RvclByb2Nlc3NQb29sIDogc19uZXN0ZWRJbnNwZWN0b3JQcm9jZXNzUG9vbDsKICAgICBp
ZiAoIXBvb2wpIHsKLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
ICAgICAgICAgcG9vbCA9ICZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uZ2V0
KCkpLmxlYWtSZWYoKTsKICAgICAgICAgLy8gRG8gbm90IGRlbGF5IHByb2Nlc3MgbGF1bmNoIGZv
ciBpbnNwZWN0b3IgcGFnZXMgYXMgaW5zcGVjdG9yIHBhZ2VzIGRvIG5vdCBrbm93IGhvdyB0byB0
cmFuc2l0aW9uIGZyb20gYSB0ZXJtaW5hdGVkIHByb2Nlc3MuCiAgICAgICAgIHBvb2wtPmRpc2Fi
bGVEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGVlODRhY2ViNjAyNTM3Yjg5Y2I4ZjZmM2E4ZTYxMmJhYjJk
NGE5ODcuLjZkZjA2OTU4Yzk2YWQ2ZTM3ODVjZjU0OTVlYjg0MTQ5M2VkNWZkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIwNSwyNSArMjA1LDYg
QEAgY29uc3QgVmVjdG9yPFdlYlByb2Nlc3NQb29sKj4mIFdlYlByb2Nlc3NQb29sOjphbGxQcm9j
ZXNzUG9vbHMoKQogICAgIHJldHVybiBwcm9jZXNzUG9vbHMoKTsKIH0KIAotc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3Rv
cmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlv
bi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKLX0KLQogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKQogewogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPj4gc2V0OwpAQCAtMjYzLDkgKzI0NCw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNz
UG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAg
ICAgUHJvY2Vzczo6c2V0SWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSk7CiAgICAgfSk7CiAKLSAgICBpZiAobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOwotCiAgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCiAgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDAwYzdmZWIwZTM4YjQ1MjRkYzIxOGEx
NTllZjcxNDk1NGQ0ZGZhZTYuLmJmZTYyYTQ1Yjc5YzZiYWFhNzU4NTA4ZWM4YzNmMmE3OTc5YzNl
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNzQyLDcgKzE3NDIsNyBAQCBIYXNoU2V0PFJlZlB0
cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyhzaXplX3Qg
Y291bnQsIGJvbwogICAgIH0KIAogICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNv
dW50ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7Cisg
ICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5h
ZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374730</attachid>
            <date>2019-07-23 16:22:26 -0700</date>
            <delta_ts>2019-09-07 16:17:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190723162224.patch</filename>
            <type>text/plain</type>
            <size>35491</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YmEyYzRlNmI1MzQ3YWQz
OTVkNjUxMmJjYTRhZDllZGQwNGI5ZjEuLjAyYjM3NDM0NzAzYWRkNDNmYTdiZGZiZjVhZTVlMTYy
NTA2NDNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTktMDctMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0cyBsYXN0IG5lZWRl
ZCB1c2Ugd2FzIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEKKyAgICAgICAgVGhp
cyBjaGFuZ2VzIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyB0
byBiZSBlcXVhbCB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlLAorICAgICAgICBidXQg
aXQgaGFzIG5vIHJlbWFpbmluZyBjbGllbnRzIHNvIGl0IGlzIG9ubHkgYmVpbmcgcmV0YWluZWQg
Zm9yIGJpbmFyeSBjb21wYWJpYmlsaXR5LgorICAgICAgICBUaGlzIGFsc28gY2hhbmdlcyBXS0Nv
bnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGFuZCBXS0NvbnRleHRDcmVhdGUgdG8g
YmUgZXF1YWwgdG8gV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24sCisgICAgICAgIGFu
ZCBhZnRlciByZGFyOi8vcHJvYmxlbS80NzAzMDk4MSB0aGVyZSBhcmUgbm8gbWVhbmluZ2Z1bCBj
bGllbnRzIG9mIHRob3NlIGZ1bmN0aW9ucywgYWxzby4KKyAgICAgICAgVGhlcmUgaXMgb25lIGV4
aXN0aW5nIGNsaWVudCBvZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGlu
IHJkYXI6Ly9wcm9ibGVtLzUwMzIzOTY3IGJ1dCBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBpcyBjb21wYXRpYmxlIGVub3VnaCBmb3IgdGhlbSBiZWNhdXNlIGl0IHVzZXMgdGhl
aXIgaW5qZWN0ZWQgYnVuZGxlIHN0aWxsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlKToKKyAgICAgICAgKFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1By
b2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisKIDIwMTktMDctMjMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5IFNQSSBmcm9tIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBXS1Byb2Nlc3NQb29sUHJpdmF0ZSB0byBtYWtlIGl0IHJ1bnRpbWUgc3dpdGNoYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcAppbmRleCA0Y2E5NGVhZTk5MDdmOGZmZTY4NGVjMDQwM2E1ZDU2
NTRjMTlkZTM2Li5mN2JiY2EyY2YxNjNkMzFhNGVjZDBiNTRjZDcyNzQxM2JhNTAyZGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcApAQCAtMzYsMzQgKzM2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aExlZ2FjeU9wdGlvbnMoKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJLaXQ6OkNhY2hlTW9kZWw6OkRv
Y3VtZW50Vmlld2VyOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLVJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVE
aXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwotfQotCiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKQpAQCAtODYsNyAr
NTgsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAg
Y29weS0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdGhpcy0+bV9zaG91bGRIYXZlTGVn
YWN5RGF0YVN0b3JlOwogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2Rl
bDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0NhY2hlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAppbmRleCBiNDU0MTMxYTM3ZThkNjcxMmE1ZmY3MTcxZGNmMDg0NDViZjc0NWE2
Li4zZGFiNTQ5NWNjM2QwODk1OTk1NjI4YjBlNTYwZDY0M2Y1ZWIyMTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCkBAIC00NSwxNyArNDUsMTIgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKLSAgICBzdGF0aWMg
UmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24m
KTsKIAogICAgIGV4cGxpY2l0IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1
YWwgflByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIAogICAgIFJlZjxQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IGNvcHkoKTsKIAotICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQotICAg
IHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lE
YXRhU3RvcmUpIHsgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsgfQotCiAgICAgYm9vbCB1c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc1NpbmdsZVdlYlByb2Nlc3M7IH0KICAgICB2b2lkIHNldFVzZXNTaW5nbGVX
ZWJQcm9jZXNzKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXNTaW5nbGVXZWJQcm9jZXNzID0gZW5hYmxl
ZDsgfQogCkBAIC0xODYsOCArMTgxLDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgeyBmYWxzZSB9OwotCiAgICAgYm9v
bCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlBy
aW1hcnlXZWJCcm93c2VyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NDk5NzQwMjQ4MDBmYjIzN2Y1M2NhZjhk
ZjhkYzFiMmE2OThjNzQ0Li4yZTI2ZDNjNzVjZGQzODUxNmY3MjFmMGYwODdhZjdhMGY2OTAzZmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC02NCwxMiArNjQsNiBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKLXsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFT
dG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7Ci19Ci0KIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQogICAg
IDogbV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9u
UGVyc2lzdGVudCgpKQogewpAQCAtMTY2LDIyICsxNjAsNCBAQCBSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUNvbgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCi1SZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURl
ZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5
RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOWM5YTQzYjczYzQzZGQ2ZDJi
MzJiN2U4NjBkODVlNjFiYTgxMGJmMi4uZTk5ZGRlNjA1NjU4MzQ0NmVhYzM3YzYyNDY3ODJmODZi
NDI5NjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogCiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0gICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVMZWdhY3koUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTcxLDE4ICs3MCw2
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lE
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAg
c3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCiBw
cml2YXRlOgogICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5
LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCmluZGV4IGQwZWIzMWFlMTY5MDA1NzcyYTZiZWMxNDM3YzJiNDMwZDBj
YjRlNmQuLmE3NWRkYTQ4ZWRlYTI4MjMyOWQyN2U1YzJhNWNhNjdlYmE4Y2YwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjgsMTMgKzY4LDEz
IEBAIFdLVHlwZUlEIFdLQ29udGV4dEdldFR5cGVJRCgpCiAKIFdLQ29udGV4dFJlZiBXS0NvbnRl
eHRDcmVhdGUoKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZp
Z3VyYXRpb24pLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVX
aXRoSW5qZWN0ZWRCdW5kbGVQYXRoKFdLU3RyaW5nUmVmIHBhdGhSZWYpCiB7Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhM
ZWdhY3lPcHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluamVjdGVk
QnVuZGxlUGF0aChXZWJLaXQ6OnRvV1RGU3RyaW5nKHBhdGhSZWYpKTsKIAogICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bikubGVha1JlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXggMTc2NTMxNDJkZjY3ZjRm
M2JlZTI5MTI1NDY1ZTQxOGRlNjY4NzI3OS4uZDg5OGNhMTdiMzdiYWVhOTNiZTU5MTcwN2U0NGUy
YjQ1OGIwMGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKQEAgLTM1LDE3ICszNSwxMiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgCi0gICAgLy8gRklYTUU6
IEEgY29udGV4dCBjcmVhdGVkIGxpa2UgdGhpcyBzaG91bGRuJ3QgaGF2ZSBhIGRhdGEgc3RvcmUs
Ci0gICAgLy8gaW5zdGVhZCB0aGVyZSBzaG91bGQgYmUgYSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgZGF0YSBzdG9yZS4KLSAgICBjb25maWd1cmF0aW9u
LT5zZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKHRydWUpOwotICAgIAogICAgIHJldHVybiB0
b0FQSSgmY29uZmlndXJhdGlvbi5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
V2l0aExlZ2FjeU9wdGlvbnMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ3JlYXRlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25Db3B5RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA5Mzk4NWFkODM3ZmNhOTZjM2M4YjNmZDlk
NjU4Mjg5Yzg2N2IyNmEwLi5mYzAxNTk4NjcxNjZiNzI2YzdhNzAwMWZjOThhMDA2YmExY2Q2M2Qz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2Vu
ZGlmCiAKIFdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25DcmVhdGUoKTsKLVdLX0VYUE9SVCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JU
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdL
Q29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNvcHlBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggM2FlODg0NTExOTcyZWE3
NWE2ZDM3ZTg1YzRkZWYzZTZhOGU4Njc1Ny4uYzg1YWE0NDRjMThiZjJkYTIyZDBkOGZkMmQ0MmI4
NGI3YmI0MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMDksMTE5ICsxMDks
NiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKQogICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7
CiB9CiAKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgaWYgKCFhcHBOYW1lKQotICAg
ICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFr
ZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0
IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0
aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKFdlYkNvcmU6
OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc1dlYkFwcCgpKQotICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2Fj
aGUiOwotI2VuZGlmCi0gICAgCi0gICAgQVNTRVJUKGFwcE5hbWUpOwotICAgIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW05TSG9tZURpcmVjdG9y
eSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07Ci0j
ZWxzZQotICAgIGNoYXIgY2FjaGVEaXJlY3RvcnlbTUFYUEFUSExFTl07Ci0gICAgc2l6ZV90IGNh
Y2hlRGlyZWN0b3J5TGVuID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCBjYWNo
ZURpcmVjdG9yeSwgTUFYUEFUSExFTik7Ci0gICAgaWYgKCFjYWNoZURpcmVjdG9yeUxlbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKmNhY2hlRGly
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOmNhY2hlRGlyZWN0b3J5IGxlbmd0aDpjYWNoZURpcmVjdG9yeUxlbiAtIDFd
OwotI2VuZGlmCi0gICAgTlNTdHJpbmcqIGNhY2hlUGF0aCA9IFtjYWNoZURpciBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6YXBwTmFtZV07Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5n
QnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemlu
Z1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENG
QnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNo
ZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0g
ICAgICAgIGNhY2hlUGF0aCA9IEAifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0Lldl
YlByb2Nlc3MiOwotICAgIAotICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0Q2FjaGUiXTsKLSAgICAKLSAgICByZXR1cm4gV2Vi
S2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlT
dGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpk
YXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYg
KCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xp
YnJhcnkvV2ViS2l0L0RhdGFiYXNlcyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNv
bHZpbmdTeW1saW5rc0luUGF0aChbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBJbmRleGVkIGRhdGFi
YXNlcyBleGlzdCBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBw
YXRoLiIKLSAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3Rvcnkg
Y29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgotICAgIC8vIFdl
IHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCi0gICAgLy8gSW4g
dGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2Nv
cmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIE5TU3RyaW5nICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURl
ZmF1bHRzS2V5XTsKLSAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvTG9jYWxTdG9yYWdlIjsK
LSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpCi17Ci0gICAgTlNTdHJpbmcgKm1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9y
eSB8fCAhW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pIHsKLSAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURp
cmVjdG9yeSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250
YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVu
ZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbWVkaWFLZXlz
Q2FjaGVEaXJlY3RvcnkgPSBbbWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXJdOwotICAgICAgICB9Ci0gICAgICAgIG1l
ZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdC9NZWRpYUNhY2hlIl07Ci0gICAgfQotICAg
IHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQotewotICAgIE5TU3RyaW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5IHx8ICFbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L01lZGlhS2V5cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3Ry
aW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXVEY6
OlN0cmluZyBwYXRoID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwotICAgIGlm
IChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwotICAg
IAotICAgIHBhdGggPSBwYXRoICsgIi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVn
IjsKLSAgICBwYXRoID0gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBh
dGgpOwotICAgIAotICAgIHJldHVybiBwYXRoOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IGphdmFTY3JpcHRDb25maWdQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRD
b3JlRGVidWciOwotICAgIAotICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3lt
bGlua3NJblBhdGgoW2phdmFTY3JpcHRDb25maWdQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdKTsKLSNlbmRpZgotfQotCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3Rv
cnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCmluZGV4IDViMTc2MGI5
ZDc5ZTcyNzVmMWEyMzMyYmQ1YmYzNWY0OWJhMDMzZDguLjFkMDFmYzc5NTA5MGQ5YWM5MmVhZTA1
OWJjZWY5ZTYxZmUyNDBhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRVcEhpc3RvcnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250
ZXh0UmVmIGNvbnRleAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJ
bmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0
cmluZygpKTsKIAogICAgIF9wcm9jZXNzUG9vbCA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNj
NWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYwNzkyNzg1NzdmLi5lZDBhNWFkNDU1OTkwYzFhZTZkM2U0
MzNlMzRjOWRlODRiYWQwMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC05OSw4MiAr
OTksNCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0K
IAotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCksICJ3cGUiLCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNo
YXI+IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3cGUiLCAiY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Rv
cmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndw
ZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNh
Y2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndw
ZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNl
bmRpZgotICAgIHJldHVybiBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShX
UEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmlj
ZWlkaGFzaHNhbHRzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRD
b3JlRGVidWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0
KCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmlu
ZGV4IGMwZjkxY2M1NmVhNTI0NDg5YTI2YThhMTRlODU4NGIyYWI0OWU2NGUuLjE5MDJlZmFkNTA0
NGI0ZWMzYzhjMTkwNTU0ODZhOTAyMmUxNTZmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMzU2LDggKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ckNsYXNzCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdl
ckNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlv
bikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfV0VC
U0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9N
QU5BR0VSLCBudWxscHRyKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwotCisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0UmVmKCpu
ZXcgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApA
QCAtMzc1LDcgKzM3NSw3IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3Rv
cnkgPwogICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1v
dmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gYWRv
cHRSZWYoKm5ldyBBUEk6OldlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwg
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogICAgIH0KIAogICAgIHJldHVy
biAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCmluZGV4IDI4N2I3
NTZhZmU2NGJjYzE4OTQ4ZDA4OTYxYjg1NDYxMjE0MGYzZDIuLmQyZWY2ZjU2ZTNmZmFiZDBhNmEy
Y2ZiMDlkYjAwNGY4YjE3M2FjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtODUsNTAgKzg1
LDQgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmkKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwotfQot
Ci1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdv
cmtDYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiV2ViU1FMIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdh
Y3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKLX0KLQotU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFD
YWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewot
ICAgIC8vIE5vdCBJbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJK
YXZhU2NyaXB0Q29yZURlYnVnIik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKaW5kZXggZTVi
MTQzMzBiY2VlMjMwNmI2MTRjZmZhMmM0MTNmMWUyMjNlMTA2Zi4uY2ZlYTE1ZWU2NTdkM2U1YjI2
NGJlYzhjYWY3ZGI3YjdmNjUzNTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFdlYlByb2Nlc3NQ
b29sJiBpbnNwZWN0b3JQcm9jZXNzUG9vbCh1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAg
Ly8gZ3VhcmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVyZmFjZS4K
ICAgICBXZWJQcm9jZXNzUG9vbComIHBvb2wgPSAoaW5zcGVjdGlvbkxldmVsID09IDEpID8gc19t
YWluSW5zcGVjdG9yUHJvY2Vzc1Bvb2wgOiBzX25lc3RlZEluc3BlY3RvclByb2Nlc3NQb29sOwog
ICAgIGlmICghcG9vbCkgewotICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwogICAgICAgICBwb29sID0gJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bi5nZXQoKSkubGVha1JlZigpOwogICAgICAgICAvLyBEbyBub3QgZGVsYXkgcHJvY2VzcyBsYXVu
Y2ggZm9yIGluc3BlY3RvciBwYWdlcyBhcyBpbnNwZWN0b3IgcGFnZXMgZG8gbm90IGtub3cgaG93
IHRvIHRyYW5zaXRpb24gZnJvbSBhIHRlcm1pbmF0ZWQgcHJvY2Vzcy4KICAgICAgICAgcG9vbC0+
ZGlzYWJsZURlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZWU4NGFjZWI2MDI1MzdiODljYjhmNmYzYThlNjEy
YmFiMmQ0YTk4Ny4uNmRmMDY5NThjOTZhZDZlMzc4NWNmNTQ5NWViODQxNDkzZWQ1ZmQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjA1LDI1ICsy
MDUsNiBAQCBjb25zdCBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiYgV2ViUHJvY2Vzc1Bvb2w6OmFs
bFByb2Nlc3NQb29scygpCiAgICAgcmV0dXJuIHByb2Nlc3NQb29scygpOwogfQogCi1zdGF0aWMg
UmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbihBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hl
U3RvcmFnZURpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0cmluZyhBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKFN0cmluZyhwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkpKTsKLQotICAgIHJldHVybiBjb25maWd1
cmF0aW9uOwotfQotCiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+PiBzZXQ7CkBAIC0yNjMsOSArMjQ0LDYgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlBy
b2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnNob3Vs
ZEhhdmVMZWdhY3lEYXRhU3RvcmUoKSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3kobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7Ci0KICAgICBpZiAoIW1fd2Vic2l0ZURhdGFT
dG9yZSAmJiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSkK
ICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDBjN2ZlYjBlMzhiNDUyNGRj
MjE4YTE1OWVmNzE0OTU0ZDRkZmFlNi4uYmZlNjJhNDViNzljNmJhYWE3NTg1MDhlYzhjM2YyYTc5
NzljM2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3NDIsNyArMTc0Miw3IEBAIEhhc2hTZXQ8
UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKHNp
emVfdCBjb3VudCwgYm9vCiAgICAgfQogCiAgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkg
JiYgY291bnQgJiYgZW5zdXJlQVBvb2xFeGlzdHMpIHsKLSAgICAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24p
KTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJ
OjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpKTsKICAgICAgICAgcHJvY2Vzc1Bv
b2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378302</attachid>
            <date>2019-09-07 16:17:49 -0700</date>
            <delta_ts>2019-09-07 17:10:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190907161748.patch</filename>
            <type>text/plain</type>
            <size>33512</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE5LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwNTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBJdHMgbGFzdCBu
ZWVkZWQgdXNlIHdhcyByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzQ3MDMwOTgxCisgICAgICAg
IFRoaXMgY2hhbmdlcyBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMgdG8gYmUgZXF1YWwgdG8gV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSwKKyAgICAgICAg
YnV0IGl0IGhhcyBubyByZW1haW5pbmcgY2xpZW50cyBzbyBpdCBpcyBvbmx5IGJlaW5nIHJldGFp
bmVkIGZvciBiaW5hcnkgY29tcGFiaWJpbGl0eS4KKyAgICAgICAgVGhpcyBhbHNvIGNoYW5nZXMg
V0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCBhbmQgV0tDb250ZXh0Q3JlYXRl
IHRvIGJlIGVxdWFsIHRvIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uLAorICAgICAg
ICBhbmQgYWZ0ZXIgcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEgdGhlcmUgYXJlIG5vIG1lYW5pbmdm
dWwgY2xpZW50cyBvZiB0aG9zZSBmdW5jdGlvbnMsIGFsc28uCisgICAgICAgIFRoZXJlIGlzIG9u
ZSBleGlzdGluZyBjbGllbnQgb2YgV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0
aCBpbiByZGFyOi8vcHJvYmxlbS81MDMyMzk2NyBidXQgb3VyIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaXMgY29tcGF0aWJsZSBlbm91Z2ggZm9yIHRoZW0gYmVjYXVzZSBpdCB1c2Vz
IHRoZWlyIGluamVjdGVkIGJ1bmRsZSBzdGlsbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGVMZWdhY3kpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDcmVh
dGUpOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6Cisg
ICAgICAgIChXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA6CisgICAgICAgIChXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKToKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25D
cmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0
V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9B
UElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlbGV0
ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3Rv
clByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Omxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAxOS0wOS0wNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxk
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxp
dGllcy5jcHAJKHJldmlzaW9uIDI0OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAg
V2ViUHJvY2Vzc1Bvb2wmIGluc3BlY3RvclByb2Nlc3NQb29sKHVucwogICAgIC8vIGd1YXJhbnRl
ZXMgbm8gcHJvY2VzcyBzaGFyaW5nIGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wqJiBwb29sID0gKGluc3BlY3Rpb25MZXZlbCA9PSAxKSA/IHNfbWFpbkluc3BlY3Rv
clByb2Nlc3NQb29sIDogc19uZXN0ZWRJbnNwZWN0b3JQcm9jZXNzUG9vbDsKICAgICBpZiAoIXBv
b2wpIHsKLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICAg
ICAgcG9vbCA9ICZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uZ2V0KCkpLmxl
YWtSZWYoKTsKICAgICAgICAgLy8gRG8gbm90IGRlbGF5IHByb2Nlc3MgbGF1bmNoIGZvciBpbnNw
ZWN0b3IgcGFnZXMgYXMgaW5zcGVjdG9yIHBhZ2VzIGRvIG5vdCBrbm93IGhvdyB0byB0cmFuc2l0
aW9uIGZyb20gYSB0ZXJtaW5hdGVkIHByb2Nlc3MuCiAgICAgICAgIHBvb2wtPmRpc2FibGVEZWxh
eWVkV2ViUHJvY2Vzc0xhdW5jaCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMjUgKzIwNSw2
IEBAIGNvbnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4g
cHJvY2Vzc1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+IGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3Ry
aW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5kaXNrQ2FjaGVEaXJlY3Rv
cnkoKSkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhD
dXN0b21Qcm90b2NvbEhhbmRsZXJzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHNldDsKQEAgLTI2Myw5ICsy
NDQsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgICAg
IFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI6OmdlbmVy
YXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKLQogICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYm
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQogICAgICAg
ICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDYgQEAgcHVibGljOgogICAgIHZv
aWQgZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICBBUEk6OldlYnNp
dGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFByaW1hcnlEYXRhU3RvcmUoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsgbV93ZWJzaXRlRGF0YVN0b3JlID0gJmRhdGFTdG9y
ZTsgfQogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50Jiwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE2ICsz
Niw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1SZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKCkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpKTsK
LQotICAgIGNvbmZpZ3VyYXRpb24tPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9jYWNoZU1vZGVsID0gV2ViS2l0OjpDYWNoZU1vZGVsOjpE
b2N1bWVudFZpZXdlcjsKLQotICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdp
dGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQogewogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CkBAIC04Niw3
ICs3Niw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KIHsKICAg
ICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAotICAgIGNvcHktPm1fc2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSA9IHRoaXMtPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsKICAgICBj
b3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7CiAgICAgY29weS0+bV9kaXNr
Q2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5t
X2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0aGlzLT5tX2Rpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShy
ZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVi
bGljOgogICAgIAogICAgIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNvcHkoKTsKIAot
ICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hv
dWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQotICAgIHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2FjeURh
dGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUpIHsgbV9zaG91bGRIYXZlTGVn
YWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQotCiAgICAgYm9vbCB1
c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1NpbmdsZVdlYlByb2Nl
c3M7IH0KICAgICB2b2lkIHNldFVzZXNTaW5nbGVXZWJQcm9jZXNzKGJvb2wgZW5hYmxlZCkgeyBt
X3VzZXNTaW5nbGVXZWJQcm9jZXNzID0gZW5hYmxlZDsgfQogCkBAIC0xODYsOCArMTgzLDYgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lE
YXRhU3RvcmUgeyBmYWxzZSB9OwotCiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFs
aWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hl
TW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHJldmlzaW9uIDI0OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTIgKzY0LDYgQEAg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OgogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCi17Ci0gICAgY29uZmlndXJhdGlvbi0+
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3Rv
cmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSkpOwotfQotCiBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3Vy
YXRpb24sIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNz
aW9uSUQpKTsKQEAgLTE3MSwyMiArMTY1LDQgQEAgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpbwogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCi1SZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KLSAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5
KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZp
Z3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZh
dWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0gICAgCi0gICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lv
biAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwogICAgIHN0YXRp
YyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGV4cGxpY2l0IFdlYnNp
dGVEYXRhU3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYs
IFBBTDo6U2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC03
NSwxOCArNzQsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAK
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdh
Y3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVj
dG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oKTsKLQogcHJpdmF0ZToKICAgICBlbnVtIFNob3VsZENyZWF0ZURpcmVjdG9yeSB7IENyZWF0
ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0OTYxNCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDEzICs2OSwxMyBAQCBXS1R5cGVJRCBXS0NvbnRleHRHZXRUeXBlSUQoKQogCiBXS0Nv
bnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlKCkKIHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKS5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRSZWYg
V0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChXS1N0cmluZ1JlZiBwYXRoUmVm
KQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0
aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViS2l0Ojp0b1dURlN0cmluZyhwYXRoUmVmKSk7
CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlKGNvbmZpZ3VyYXRpb24pLmxlYWtSZWYoKSk7CkBAIC00NDMsMTYgKzQ0Myw5IEBAIFdLQ29v
a2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW4KICAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSShXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eT4oKSk7CiB9CiAKLVdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS0NvbnRl
eHRHZXRXZWJzaXRlRGF0YVN0b3JlKFdLQ29udGV4dFJlZiBjb250ZXh0KQorV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoV0tDb250ZXh0UmVmKQogewot
ICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7Ci0gICAgaWYgKCFkYXRhU3RvcmUpIHsKLSAgICAgICAgYXV0byBkZWZhdWx0RGF0
YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCk7Ci0gICAg
ICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT5zZXRQcmltYXJ5RGF0YVN0b3JlKGRlZmF1bHRE
YXRhU3RvcmUuZ2V0KCkpOwotICAgICAgICBkYXRhU3RvcmUgPSBkZWZhdWx0RGF0YVN0b3JlLnB0
cigpOwotICAgIH0KLQotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKGRhdGFTdG9yZSk7CisgICAg
cmV0dXJuIFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKTsKIH0KIAogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCShy
ZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTggKzM0LDEyIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSgpCiB7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0g
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwotICAgIAotICAgIC8vIEZJ
WE1FOiBBIGNvbnRleHQgY3JlYXRlZCBsaWtlIHRoaXMgc2hvdWxkbid0IGhhdmUgYSBkYXRhIHN0
b3JlLAotICAgIC8vIGluc3RlYWQgdGhlcmUgc2hvdWxkIGJlIGEgV0tQYWdlQ29uZmlndXJhdGlv
blJlZiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgdGhlIGRhdGEgc3RvcmUuCi0gICAgY29uZmlndXJh
dGlvbi0+c2V0U2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSh0cnVlKTsKLSAgICAKLSAgICByZXR1
cm4gdG9BUEkoJmNvbmZpZ3VyYXRpb24ubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJkFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5sZWFrUmVmKCkpOwogfQogCiBX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVXaXRo
TGVnYWN5T3B0aW9ucygpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25Db3B5RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAyNDk2MTQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYK
IAogV0tfRVhQT1JUIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJh
dGlvbkNyZWF0ZSgpOwotV0tfRVhQT1JUIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgV0tDb250
ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CitXS19FWFBPUlQgV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlV2l0aExl
Z2FjeU9wdGlvbnMoKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tDb250
ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSk7CiAKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ29weUFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkNvcHlBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbiwgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgV0tfQ19BUElf
REVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b25TZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbQkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDExOSArMTA5LDYgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdgog
ICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2Ny
aXB0Q29yZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7CiB9CiAKLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07Ci0gICAgaWYgKCFhcHBOYW1lKQotICAgICAgICBhcHBOYW1lID0gW1tOU1By
b2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNoYXJlIGFw
cGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhhdCBhbnkg
bW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdyYXRlIGRh
dGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01v
YmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpKQotICAg
ICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwotI2VuZGlmCi0gICAgCi0g
ICAgQVNTRVJUKGFwcE5hbWUpOwotICAgIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
TlNTdHJpbmcgKmNhY2hlRGlyID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07Ci0jZWxzZQotICAgIGNoYXIgY2FjaGVE
aXJlY3RvcnlbTUFYUEFUSExFTl07Ci0gICAgc2l6ZV90IGNhY2hlRGlyZWN0b3J5TGVuID0gY29u
ZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCBjYWNoZURpcmVjdG9yeSwgTUFYUEFUSExF
Tik7Ci0gICAgaWYgKCFjYWNoZURpcmVjdG9yeUxlbikKLSAgICAgICAgcmV0dXJuIFdURjo6U3Ry
aW5nKCk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKmNhY2hlRGlyID0gW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOmNhY2hlRGly
ZWN0b3J5IGxlbmd0aDpjYWNoZURpcmVjdG9yeUxlbiAtIDFdOwotI2VuZGlmCi0gICAgTlNTdHJp
bmcqIGNhY2hlUGF0aCA9IFtjYWNoZURpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
YXBwTmFtZV07Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCi17Ci0gICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENGQnJpZGdpbmdSZWxlYXNlKF9DRlVS
TENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NG
VVJMQ2FjaGVdKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgIGNhY2hlUGF0aCA9IEAi
fi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LldlYlByb2Nlc3MiOwotICAgIAotICAg
IGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
V2ViS2l0Q2FjaGUiXTsKLSAgICAKLSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmlu
Z1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViRGF0
YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFkYXRhYmFzZXNEaXJlY3Rvcnkg
fHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkK
LSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNl
cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChb
ZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCkKLXsKLSAgICAvLyBJbmRleGVkIGRhdGFiYXNlcyBleGlzdCBpbiBhIHN1YmRp
cmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBwYXRoLiIKLSAgICAvLyBDdXJyZW50
bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRpZXMgcmVs
YXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgotICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcywgYW5k
IG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCi0gICAgLy8gSW4gdGhlIG1lYW50aW1lLCBhbiBlbnRp
dHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNvbmZsaWN0
IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
LCAiX19fSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKLSAgICBpZiAo
IWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBAIn4vTGlicmFyeS9XZWJLaXQvTG9jYWxTdG9yYWdlIjsKLSAgICByZXR1cm4gV2ViS2l0Ojpz
dHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkgc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcg
Km1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tl
eV07Ci0gICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9yeSB8fCAhW21lZGlhS2V5c0NhY2hl
RGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgbWVk
aWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgICAgICAK
LSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAg
ICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVu
ZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAg
ICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9d
LnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBbbWVk
aWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRs
ZUlkZW50aWZpZXJdOwotICAgICAgICB9Ci0gICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5
ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIldlYktpdC9NZWRpYUNhY2hlIl07Ci0gICAgfQotICAgIHJldHVybiBXZWJLaXQ6OnN0cmlu
Z0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIE5TU3Ry
aW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IHx8ICFb
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KQotICAgICAgICBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0
L01lZGlhS2V5cyI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5r
c0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQ
YXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRE
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIC8vIE5vdCBpbXBsZW1l
bnRlZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXVEY6OlN0cmluZyBwYXRoID0gV2ViS2l0
OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwotICAgIAotICAgIHBhdGggPSBwYXRoICsg
Ii9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVnIjsKLSAgICBwYXRoID0gV2ViS2l0
OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBhdGgpOwotICAgIAotICAgIHJldHVy
biBwYXRoOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGphdmFTY3JpcHRDb25maWdQ
YXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRDb3JlRGVidWciOwotICAgIAotICAg
IHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2phdmFTY3Jp
cHRDb25maWdQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLSNlbmRpZgotfQotCiBX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVE
aXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZVRva2VuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc0dyb3VwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTUsNyArMTk1LDcgQEAgLSAoaWQpaW5pdFdpdGhJbmplY3RlZEJ1bmRsZVVSTDoo
TlNVUkwgKgogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRo
TGVnYWN5T3B0aW9ucygpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3Rl
ZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygp
KTsKIAogICAgIF9wcm9jZXNzUG9vbCA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShj
b25maWd1cmF0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0
OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDgyICsxMDQsNCBAQCBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwog
fQogCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9k
aXIoKSwgIndwZSIsICJhcHBjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQo
KSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSwgIndwZSIsICJjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Rh
dGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0
b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAg
R1VuaXF1ZVB0cjxnY2hhcj4gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgImluZGV4ZWRk
YiIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5k
aWYKLSAgICByZXR1cm4gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0K
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBz
dG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAi
d3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgp
KTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci19
Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
Y2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAi
d3BlIiwgIm1lZGlhY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwot
I2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0
YV9kaXIoKSwgIndwZSIsICJtZWRpYWtleXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JN
KFdQRSkKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGV2
aWNlaWRoYXNoc2FsdHMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZhdWx0RGV2aWNlSWRIYXNoU2Fs
dHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAg
R1VuaXF1ZVB0cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksIEJBU0VfRElSRUNUT1JZLCAiSmF2YVNjcmlw
dENvcmVEZWJ1ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5n
ZXQoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3Bw
CShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQ
SVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw1MCArODUsNCBA
QCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlCiAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKLVN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9u
Q2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Omxl
Z2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxT
dG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVk
aWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIk1lZGlhQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICAvLyBOb3QgSW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFN0cmluZygp
OwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBB
UEkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI0OTYyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDE5LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3Mg
R2FyY2lhIENhbXBvcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICBUaGlzIHRlc3QgcmVsaWVkIG9uIHRo
ZSBkZWZhdWx0IGRhdGEgc3RvcmUgaGF2aW5nIGJlZW4gaW5zdGFudGlhdGVkLgorCiAyMDE5LTA5
LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIGNhbGxzIHRvIFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUgbWlzc2VkIGlu
IHIyNDk2MTQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCShyZXZpc2lvbiAyNDk2MTQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcyLDkgKzk3Miw2IEBAIHZvaWQgc2V0Q29uZmlndXJh
dGlvbkluamVjdGVkQnVuZGxlUGF0aCgKICAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0g
KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOwogICAgIGF1dG8gcG9vbCA9IGNvbmZpZ3Vy
YXRpb24ucHJvY2Vzc1Bvb2w7CiAgICAgW3Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdv
cmtlcnNDYW5IYW5kbGU6QCJzdyJdOwotCi0gICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGFuZCBy
ZW1vdmUgdGhpcyBsYXN0IHVzZSBvZiBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlLgotICAg
IGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IChXS1dlYnNpdGVEYXRhU3RvcmUgKilX
S0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQuZ2V0KCkpOwogfQogCiBAaW50ZXJm
YWNlIFJlZ3VsYXJQYWdlTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4KQEAgLTE0MjUsNiArMTQyMiw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZp
Y2VXb3JrZXJBbmRDYWMKICAgICBBU1NFUlQobWFpbkJ5dGVzKTsKICAgICBBU1NFUlQoc2NyaXB0
Qnl0ZXMpOwogCisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnNdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378305</attachid>
            <date>2019-09-07 17:10:27 -0700</date>
            <delta_ts>2019-09-07 17:18:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190907171027.patch</filename>
            <type>text/plain</type>
            <size>34691</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE5LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwNTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBJdHMgbGFzdCBu
ZWVkZWQgdXNlIHdhcyByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzQ3MDMwOTgxCisgICAgICAg
IFRoaXMgY2hhbmdlcyBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMgdG8gYmUgZXF1YWwgdG8gV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSwKKyAgICAgICAg
YnV0IGl0IGhhcyBubyByZW1haW5pbmcgY2xpZW50cyBzbyBpdCBpcyBvbmx5IGJlaW5nIHJldGFp
bmVkIGZvciBiaW5hcnkgY29tcGFiaWJpbGl0eS4KKyAgICAgICAgVGhpcyBhbHNvIGNoYW5nZXMg
V0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCBhbmQgV0tDb250ZXh0Q3JlYXRl
IHRvIGJlIGVxdWFsIHRvIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uLAorICAgICAg
ICBhbmQgYWZ0ZXIgcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEgdGhlcmUgYXJlIG5vIG1lYW5pbmdm
dWwgY2xpZW50cyBvZiB0aG9zZSBmdW5jdGlvbnMsIGFsc28uCisgICAgICAgIFRoZXJlIGlzIG9u
ZSBleGlzdGluZyBjbGllbnQgb2YgV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0
aCBpbiByZGFyOi8vcHJvYmxlbS81MDMyMzk2NyBidXQgb3VyIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaXMgY29tcGF0aWJsZSBlbm91Z2ggZm9yIHRoZW0gYmVjYXVzZSBpdCB1c2Vz
IHRoZWlyIGluamVjdGVkIGJ1bmRsZSBzdGlsbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGVMZWdhY3kpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDcmVh
dGUpOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6Cisg
ICAgICAgIChXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA6CisgICAgICAgIChXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKToKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25D
cmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0
V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9B
UElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlbGV0
ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3Rv
clByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Omxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAxOS0wOS0wNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxk
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxp
dGllcy5jcHAJKHJldmlzaW9uIDI0OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAg
V2ViUHJvY2Vzc1Bvb2wmIGluc3BlY3RvclByb2Nlc3NQb29sKHVucwogICAgIC8vIGd1YXJhbnRl
ZXMgbm8gcHJvY2VzcyBzaGFyaW5nIGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wqJiBwb29sID0gKGluc3BlY3Rpb25MZXZlbCA9PSAxKSA/IHNfbWFpbkluc3BlY3Rv
clByb2Nlc3NQb29sIDogc19uZXN0ZWRJbnNwZWN0b3JQcm9jZXNzUG9vbDsKICAgICBpZiAoIXBv
b2wpIHsKLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICAg
ICAgcG9vbCA9ICZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uZ2V0KCkpLmxl
YWtSZWYoKTsKICAgICAgICAgLy8gRG8gbm90IGRlbGF5IHByb2Nlc3MgbGF1bmNoIGZvciBpbnNw
ZWN0b3IgcGFnZXMgYXMgaW5zcGVjdG9yIHBhZ2VzIGRvIG5vdCBrbm93IGhvdyB0byB0cmFuc2l0
aW9uIGZyb20gYSB0ZXJtaW5hdGVkIHByb2Nlc3MuCiAgICAgICAgIHBvb2wtPmRpc2FibGVEZWxh
eWVkV2ViUHJvY2Vzc0xhdW5jaCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMjUgKzIwNSw2
IEBAIGNvbnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4g
cHJvY2Vzc1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+IGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3Ry
aW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5kaXNrQ2FjaGVEaXJlY3Rv
cnkoKSkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhD
dXN0b21Qcm90b2NvbEhhbmRsZXJzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHNldDsKQEAgLTI2Myw5ICsy
NDQsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgICAg
IFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI6OmdlbmVy
YXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKLQogICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYm
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQogICAgICAg
ICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI0OTYxNCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKTsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4g
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCi17Ci0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVX
aXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5t
X3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0cnVlOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
Y2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7Ci0KLSAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4g
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVn
YWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwpAQCAtODYsNyArNzYsNiBAQCBSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiB7CiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKLSAgICBjb3B5LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0aGlzLT5t
X3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7CiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0gdGhp
cy0+bV9jYWNoZU1vZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZh
bGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25F
bmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICAKICAgICBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjb3B5KCk7CiAKLSAgICBib29sIHNob3VsZEhhdmVMZWdh
Y3lEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7
IH0KLSAgICB2b2lkIHNldFNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoYm9vbCBzaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKSB7IG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHNob3VsZEhh
dmVMZWdhY3lEYXRhU3RvcmU7IH0KLQogICAgIGJvb2wgdXNlc1NpbmdsZVdlYlByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNTaW5nbGVXZWJQcm9jZXNzOyB9CiAgICAgdm9pZCBzZXRVc2Vz
U2luZ2xlV2ViUHJvY2Vzcyhib29sIGVuYWJsZWQpIHsgbV91c2VzU2luZ2xlV2ViUHJvY2VzcyA9
IGVuYWJsZWQ7IH0KIApAQCAtMTg2LDggKzE4Myw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFsc2UgfTsKLQog
ICAgIGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1v
ZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk2MTQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCw2IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBX
ZWJzaXRlRGF0YVN0b3JlOjoKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0
b3JlKTsKIH0KIAotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0
ZUxlZ2FjeShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQotewotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlv
biksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKLX0KLQogUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRh
U3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7CkBAIC0xNzEsMjIgKzE2
NSw0IEBAIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW8KICAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBkZWZhdWx0RGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeShsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBj
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KCJBcHBsaWNhdGlvbkNhY2hlIik7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0TWVkaWFDYWNo
ZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShsZWdhY3lE
ZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkobGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5KCkpOwotICAgIAotICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJik7CiAKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAg
dmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtNzUsMTggKzc0LDYgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBk
ZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCi0gICAgc3RhdGljIFdURjo6U3RyaW5n
IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAg
IHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgbGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgbGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7
Ci0KLSAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KIHByaXZhdGU6CiAgICAg
ZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVE
aXJlY3RvcnkgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMyArNjksMTMgQEAgV0tU
eXBlSUQgV0tDb250ZXh0R2V0VHlwZUlEKCkKIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0
ZSgpCiB7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bikubGVha1JlZigpKTsKIH0KIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmpl
Y3RlZEJ1bmRsZVBhdGgoV0tTdHJpbmdSZWYgcGF0aFJlZikKIHsKLSAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9w
dGlvbnMoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQ
YXRoKFdlYktpdDo6dG9XVEZTdHJpbmcocGF0aFJlZikpOwogCiAgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoJldlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKS5sZWFr
UmVmKCkpOwpAQCAtNDQzLDE2ICs0NDMsOSBAQCBXS0Nvb2tpZU1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0Q29va2llTWFuCiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29u
dGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCkpOwog
fQogCi1XS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShX
S0NvbnRleHRSZWYgY29udGV4dCkKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS0NvbnRleHRHZXRX
ZWJzaXRlRGF0YVN0b3JlKFdLQ29udGV4dFJlZikKIHsKLSAgICBhdXRvKiBkYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGlmICghZGF0
YVN0b3JlKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdERhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpOwotICAgICAgICBXZWJLaXQ6OnRvSW1wbChjb250
ZXh0KS0+c2V0UHJpbWFyeURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlLmdldCgpKTsKLSAgICAg
ICAgZGF0YVN0b3JlID0gZGVmYXVsdERhdGFTdG9yZS5wdHIoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSShkYXRhU3RvcmUpOworICAgIHJldHVybiBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXREZWZhdWx0RGF0YVN0b3JlKCk7CiB9CiAKIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJS
ZWYgV0tDb250ZXh0R2V0QXBwbGljYXRpb25DYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVh
dGUoKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKLSAgICAKLSAgICAvLyBGSVhNRTogQSBjb250ZXh0IGNyZWF0ZWQg
bGlrZSB0aGlzIHNob3VsZG4ndCBoYXZlIGEgZGF0YSBzdG9yZSwKLSAgICAvLyBpbnN0ZWFkIHRo
ZXJlIHNob3VsZCBiZSBhIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgb2JqZWN0IHRoYXQgc3BlY2lm
aWVzIHRoZSBkYXRhIHN0b3JlLgotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNob3VsZEhhdmVMZWdh
Y3lEYXRhU3RvcmUodHJ1ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHRvQVBJKCZjb25maWd1cmF0aW9u
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCkubGVha1JlZigpKTsKIH0KIAogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
ZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKQogewotICAg
IHJldHVybiB0b0FQSSgmQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhM
ZWdhY3lPcHRpb25zKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV0tDb250ZXh0Q29uZmlndXJh
dGlvbkNyZWF0ZSgpOwogfQogCiBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29w
eURpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYuaAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIFdLX0VYUE9SVCBXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUoKTsKLVdLX0VYUE9S
VCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVX
aXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JUIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
V0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCkgV0tfQ19BUElf
REVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUp
OwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbikgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25Db3B5QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI0OTYx
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMTkgKzEwOSw2IEBAIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYKICAgICByZXR1cm4gdGVtcERpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVh
dGVEaXJlY3RvcnkpOwogfQogCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lE
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmFwcE5h
bWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwotICAgIGlmICgh
YXBwTmFtZSkKLSAgICAgICAgYXBwTmFtZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10g
cHJvY2Vzc05hbWVdOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhpcyBxdWly
ayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdl
LCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCi0gICAgLy8gUHJlc2Vydmlu
ZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgotICAg
IGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkKLSAgICAgICAgYXBwTmFtZSA9IEAiY29tLmFw
cGxlLldlYkFwcENhY2hlIjsKLSNlbmRpZgotICAgIAotICAgIEFTU0VSVChhcHBOYW1lKTsKLSAg
ICAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE5TU3RyaW5nICpjYWNoZURpciA9IFtO
U0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5
L0NhY2hlcyJdOwotI2Vsc2UKLSAgICBjaGFyIGNhY2hlRGlyZWN0b3J5W01BWFBBVEhMRU5dOwot
ICAgIHNpemVfdCBjYWNoZURpcmVjdG9yeUxlbiA9IGNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX0NB
Q0hFX0RJUiwgY2FjaGVEaXJlY3RvcnksIE1BWFBBVEhMRU4pOwotICAgIGlmICghY2FjaGVEaXJl
Y3RvcnlMZW4pCi0gICAgICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotICAgIAotICAgIE5TU3Ry
aW5nICpjYWNoZURpciA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0
aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpjYWNoZURpcmVjdG9yeSBsZW5ndGg6Y2FjaGVEaXJl
Y3RvcnlMZW4gLSAxXTsKLSNlbmRpZgotICAgIE5TU3RyaW5nKiBjYWNoZVBhdGggPSBbY2FjaGVE
aXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmFwcE5hbWVdOwotICAgIHJldHVybiBX
ZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2NhY2hlUGF0aCBzdHJpbmdC
eVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpj
YWNoZVBhdGggPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9y
eShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwotICAgIGlmICgh
Y2FjaGVQYXRoKQotICAgICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFw
cGxlLldlYktpdC5XZWJQcm9jZXNzIjsKLSAgICAKLSAgICBjYWNoZVBhdGggPSBbY2FjaGVQYXRo
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdENhY2hlIl07Ci0gICAgCi0g
ICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQ
YXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAg
ICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNL
ZXldOwotICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFbZGF0YWJhc2VzRGlyZWN0b3J5
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGRhdGFiYXNlc0RpcmVj
dG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMiOwotICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJp
bmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgLy8g
SW5kZXhlZCBkYXRhYmFzZXMgZXhpc3QgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlICJkYXRhYmFz
ZSBkaXJlY3RvcnkgcGF0aC4iCi0gICAgLy8gQ3VycmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRo
YXQgZGlyZWN0b3J5IGNvbnRhaW5zIGVudGl0aWVzIHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNl
cy4KLSAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMsIGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3Vi
ZGlyZWN0b3J5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3
KQotICAgIC8vIEluIHRoZSBtZWFudGltZSwgYW4gZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0
aHJlZSB1bmRlcnNjb3JlcyB3aWxsIG5vdCBjb25mbGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRp
ZXMuCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdh
Y3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYlN0b3Jh
Z2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
fHwgIVtsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKLSAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0xv
Y2FsU3RvcmFnZSI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5r
c0luUGF0aChbbG9jYWxTdG9yYWdlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhd
KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICptZWRpYUtleXNDYWNoZURpcmVjdG9y
eSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpX
ZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgIGlmICghbWVkaWFLZXlz
Q2FjaGVEaXJlY3RvcnkgfHwgIVttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0g
TlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpw
cm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVu
dGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRp
ZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAg
ICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyXTsKLSAgICAgICAg
fQotICAgICAgICBtZWRpYUtleXNDYWNoZURpcmVjdG9yeSA9IFttZWRpYUtleXNDYWNoZURpcmVj
dG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQvTWVkaWFDYWNoZSJd
OwotICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5Q
YXRoKFttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZv
cktleTpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgIGlm
ICghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSB8fCAhW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9NZWRpYUtleXMiOwotICAgIHJldHVy
biBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYktpdDo6cGF0aEZvclByb2Nlc3NDb250YWlu
ZXIoKTsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHBhdGggPSBOU0hvbWVEaXJl
Y3RvcnkoKTsKLSAgICAKLSAgICBwYXRoID0gcGF0aCArICIvTGlicmFyeS9XZWJLaXQvSmF2YVNj
cmlwdENvcmVEZWJ1ZyI7Ci0gICAgcGF0aCA9IFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aChwYXRoKTsKLSAgICAKLSAgICByZXR1cm4gcGF0aDsKLSNlbHNlCi0gICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBqYXZhU2NyaXB0Q29uZmlnUGF0aCA9IEAifi9MaWJyYXJ5L1dlYktp
dC9KYXZhU2NyaXB0Q29yZURlYnVnIjsKLSAgICAKLSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtqYXZhU2NyaXB0Q29uZmlnUGF0aCBzdHJpbmdCeVN0
YW5kYXJkaXppbmdQYXRoXSk7Ci0jZW5kaWYKLX0KLQogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURp
cmVjdG9yeSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3Jv
dXAubW0JKHJldmlzaW9uIDI0OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBA
IC0gKGlkKWluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
KCk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVVSTCA/
IFN0cmluZyhidW5kbGVVUkwucGF0aCkgOiBTdHJpbmcoKSk7CiAKICAgICBfcHJvY2Vzc1Bvb2wg
PSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNCw4MiArMTA0LDQgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
d2Vic2l0ZURhdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91
c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewot
I2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiYXBwY2FjaGUi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJu
IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewot
I2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiY2FjaGUi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJl
dHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17
Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFi
YXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFU
Rk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2UiLCBu
dWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExB
VEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwgbnVs
bHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0jaWYgUExB
VEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibWVkaWFr
ZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRzIiwgbnVsbHB0
cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGphdmFT
Y3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRDb3JlRGVidWciLCBudWxscHRyKSk7
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NjE0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRp
b24uaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMzgzLDcgKzM4
NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl8KIFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdF
UihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIp
KTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgbWFuYWdl
ci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0UmVmKCpuZXcgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpKTsKIAogICAgIHJldHVybiBtYW5hZ2VyOwogfQpAQCAtNDA0LDcgKzQwNSw3IEBA
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGEKICAgICAgICAgY29uZmln
dXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmhzdHNDYWNoZURpcmVjdG9y
eSA/CiAgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0
b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBy
aXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5z
ZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgICAgIHByaXYtPndlYnNpdGVEYXRh
U3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKTsKKyAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0UmVmKCpu
ZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJz
aXRlRGF0YVN0b3JlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk2MTQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw1MCArODUsNCBAQCBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2Fj
aGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUi
KTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICAv
LyBOb3QgSW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNj
cmlwdENvcmVEZWJ1ZyIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYyMCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVtb3ZlIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDAwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tOgorICAgICAgICBUaGlzIHRlc3QgcmVsaWVkIG9uIHRoZSBkZWZhdWx0IGRhdGEgc3Rv
cmUgaGF2aW5nIGJlZW4gaW5zdGFudGlhdGVkLgorCiAyMDE5LTA5LTA3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGNhbGxzIHRv
IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUgbWlzc2VkIGluIHIyNDk2MTQKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCShyZXZpc2lvbiAyNDk2MTQpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtOTcyLDkgKzk3Miw2IEBAIHZvaWQgc2V0Q29uZmlndXJhdGlvbkluamVjdGVkQnVuZGxl
UGF0aCgKICAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKilj
b250ZXh0LmdldCgpOwogICAgIGF1dG8gcG9vbCA9IGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7
CiAgICAgW3Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJz
dyJdOwotCi0gICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGFuZCByZW1vdmUgdGhpcyBsYXN0IHVz
ZSBvZiBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlLgotICAgIGNvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSA9IChXS1dlYnNpdGVEYXRhU3RvcmUgKilXS0NvbnRleHRHZXRXZWJzaXRl
RGF0YVN0b3JlKGNvbnRleHQuZ2V0KCkpOwogfQogCiBAaW50ZXJmYWNlIFJlZ3VsYXJQYWdlTWVz
c2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KQEAgLTE0MjUs
NiArMTQyMiw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJBbmRDYWMKICAg
ICBBU1NFUlQobWFpbkJ5dGVzKTsKICAgICBBU1NFUlQoc2NyaXB0Qnl0ZXMpOwogCisgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKICAgICBbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCiAgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378307</attachid>
            <date>2019-09-07 17:18:34 -0700</date>
            <delta_ts>2019-09-07 18:04:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200054-20190907171834.patch</filename>
            <type>text/plain</type>
            <size>34682</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE5LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwNTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBJdHMgbGFzdCBu
ZWVkZWQgdXNlIHdhcyByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzQ3MDMwOTgxCisgICAgICAg
IFRoaXMgY2hhbmdlcyBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMgdG8gYmUgZXF1YWwgdG8gV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSwKKyAgICAgICAg
YnV0IGl0IGhhcyBubyByZW1haW5pbmcgY2xpZW50cyBzbyBpdCBpcyBvbmx5IGJlaW5nIHJldGFp
bmVkIGZvciBiaW5hcnkgY29tcGFiaWJpbGl0eS4KKyAgICAgICAgVGhpcyBhbHNvIGNoYW5nZXMg
V0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCBhbmQgV0tDb250ZXh0Q3JlYXRl
IHRvIGJlIGVxdWFsIHRvIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uLAorICAgICAg
ICBhbmQgYWZ0ZXIgcmRhcjovL3Byb2JsZW0vNDcwMzA5ODEgdGhlcmUgYXJlIG5vIG1lYW5pbmdm
dWwgY2xpZW50cyBvZiB0aG9zZSBmdW5jdGlvbnMsIGFsc28uCisgICAgICAgIFRoZXJlIGlzIG9u
ZSBleGlzdGluZyBjbGllbnQgb2YgV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0
aCBpbiByZGFyOi8vcHJvYmxlbS81MDMyMzk2NyBidXQgb3VyIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaXMgY29tcGF0aWJsZSBlbm91Z2ggZm9yIHRoZW0gYmVjYXVzZSBpdCB1c2Vz
IHRoZWlyIGluamVjdGVkIGJ1bmRsZSBzdGlsbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGVMZWdhY3kpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDcmVh
dGUpOgorICAgICAgICAoV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6Cisg
ICAgICAgIChXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA6CisgICAgICAgIChXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ3JlYXRlKToKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25D
cmVhdGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0
V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9B
UElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2Fj
eURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlbGV0
ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3Rv
clByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Omxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAxOS0wOS0wNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxk
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclV0aWxp
dGllcy5jcHAJKHJldmlzaW9uIDI0OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAg
V2ViUHJvY2Vzc1Bvb2wmIGluc3BlY3RvclByb2Nlc3NQb29sKHVucwogICAgIC8vIGd1YXJhbnRl
ZXMgbm8gcHJvY2VzcyBzaGFyaW5nIGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wqJiBwb29sID0gKGluc3BlY3Rpb25MZXZlbCA9PSAxKSA/IHNfbWFpbkluc3BlY3Rv
clByb2Nlc3NQb29sIDogc19uZXN0ZWRJbnNwZWN0b3JQcm9jZXNzUG9vbDsKICAgICBpZiAoIXBv
b2wpIHsKLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICAg
ICAgcG9vbCA9ICZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uZ2V0KCkpLmxl
YWtSZWYoKTsKICAgICAgICAgLy8gRG8gbm90IGRlbGF5IHByb2Nlc3MgbGF1bmNoIGZvciBpbnNw
ZWN0b3IgcGFnZXMgYXMgaW5zcGVjdG9yIHBhZ2VzIGRvIG5vdCBrbm93IGhvdyB0byB0cmFuc2l0
aW9uIGZyb20gYSB0ZXJtaW5hdGVkIHByb2Nlc3MuCiAgICAgICAgIHBvb2wtPmRpc2FibGVEZWxh
eWVkV2ViUHJvY2Vzc0xhdW5jaCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMjUgKzIwNSw2
IEBAIGNvbnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4g
cHJvY2Vzc1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+IGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3Ry
aW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5kaXNrQ2FjaGVEaXJlY3Rv
cnkoKSkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhD
dXN0b21Qcm90b2NvbEhhbmRsZXJzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHNldDsKQEAgLTI2Myw5ICsy
NDQsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgICAg
IFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI6OmdlbmVy
YXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKLQogICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYm
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQogICAgICAg
ICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI0OTYxNCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKTsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4g
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpCi17Ci0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVX
aXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5
RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5t
X3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0cnVlOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
Y2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7Ci0KLSAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4g
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVn
YWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwpAQCAtODYsNyArNzYsNiBAQCBSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiB7CiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKLSAgICBjb3B5LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0aGlzLT5t
X3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7CiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0gdGhp
cy0+bV9jYWNoZU1vZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZh
bGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25F
bmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICAKICAgICBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjb3B5KCk7CiAKLSAgICBib29sIHNob3VsZEhhdmVMZWdh
Y3lEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7
IH0KLSAgICB2b2lkIHNldFNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoYm9vbCBzaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKSB7IG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHNob3VsZEhh
dmVMZWdhY3lEYXRhU3RvcmU7IH0KLQogICAgIGJvb2wgdXNlc1NpbmdsZVdlYlByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNTaW5nbGVXZWJQcm9jZXNzOyB9CiAgICAgdm9pZCBzZXRVc2Vz
U2luZ2xlV2ViUHJvY2Vzcyhib29sIGVuYWJsZWQpIHsgbV91c2VzU2luZ2xlV2ViUHJvY2VzcyA9
IGVuYWJsZWQ7IH0KIApAQCAtMTg2LDggKzE4Myw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFsc2UgfTsKLQog
ICAgIGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1v
ZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk2MTQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCw2IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBX
ZWJzaXRlRGF0YVN0b3JlOjoKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0
b3JlKTsKIH0KIAotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0
ZUxlZ2FjeShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQotewotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlv
biksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKLX0KLQogUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRh
U3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7CkBAIC0xNzEsMjIgKzE2
NSw0IEBAIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW8KICAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBkZWZhdWx0RGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeShsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBj
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KCJBcHBsaWNhdGlvbkNhY2hlIik7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0TWVkaWFDYWNo
ZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShsZWdhY3lE
ZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkobGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5KCkpOwotICAgIAotICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJik7CiAKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAg
dmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtNzUsMTggKzc0LDYgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBk
ZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCi0gICAgc3RhdGljIFdURjo6U3RyaW5n
IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAg
IHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgbGVnYWN5RGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgbGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7
Ci0KLSAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KIHByaXZhdGU6CiAgICAg
ZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVE
aXJlY3RvcnkgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMyArNjksMTMgQEAgV0tU
eXBlSUQgV0tDb250ZXh0R2V0VHlwZUlEKCkKIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0
ZSgpCiB7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bikubGVha1JlZigpKTsKIH0KIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmpl
Y3RlZEJ1bmRsZVBhdGgoV0tTdHJpbmdSZWYgcGF0aFJlZikKIHsKLSAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9w
dGlvbnMoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQ
YXRoKFdlYktpdDo6dG9XVEZTdHJpbmcocGF0aFJlZikpOwogCiAgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoJldlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKS5sZWFr
UmVmKCkpOwpAQCAtNDQzLDE2ICs0NDMsOSBAQCBXS0Nvb2tpZU1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0Q29va2llTWFuCiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29u
dGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCkpOwog
fQogCi1XS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShX
S0NvbnRleHRSZWYgY29udGV4dCkKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS0NvbnRleHRHZXRX
ZWJzaXRlRGF0YVN0b3JlKFdLQ29udGV4dFJlZikKIHsKLSAgICBhdXRvKiBkYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGlmICghZGF0
YVN0b3JlKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdERhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpOwotICAgICAgICBXZWJLaXQ6OnRvSW1wbChjb250
ZXh0KS0+c2V0UHJpbWFyeURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlLmdldCgpKTsKLSAgICAg
ICAgZGF0YVN0b3JlID0gZGVmYXVsdERhdGFTdG9yZS5wdHIoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSShkYXRhU3RvcmUpOworICAgIHJldHVybiBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXREZWZhdWx0RGF0YVN0b3JlKCk7CiB9CiAKIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJS
ZWYgV0tDb250ZXh0R2V0QXBwbGljYXRpb25DYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVh
dGUoKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKLSAgICAKLSAgICAvLyBGSVhNRTogQSBjb250ZXh0IGNyZWF0ZWQg
bGlrZSB0aGlzIHNob3VsZG4ndCBoYXZlIGEgZGF0YSBzdG9yZSwKLSAgICAvLyBpbnN0ZWFkIHRo
ZXJlIHNob3VsZCBiZSBhIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgb2JqZWN0IHRoYXQgc3BlY2lm
aWVzIHRoZSBkYXRhIHN0b3JlLgotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNob3VsZEhhdmVMZWdh
Y3lEYXRhU3RvcmUodHJ1ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHRvQVBJKCZjb25maWd1cmF0aW9u
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCkubGVha1JlZigpKTsKIH0KIAogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
ZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKQogewotICAg
IHJldHVybiB0b0FQSSgmQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhM
ZWdhY3lPcHRpb25zKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV0tDb250ZXh0Q29uZmlndXJh
dGlvbkNyZWF0ZSgpOwogfQogCiBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29w
eURpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYuaAkocmV2aXNpb24gMjQ5NjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIFdLX0VYUE9SVCBXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUoKTsKLVdLX0VYUE9S
VCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGVX
aXRoTGVnYWN5T3B0aW9ucygpOworV0tfRVhQT1JUIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
V0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCkgV0tfQ19BUElf
REVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUp
OwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbikgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25Db3B5QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI0OTYx
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMTkgKzEwOSw2IEBAIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYKICAgICByZXR1cm4gdGVtcERpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVh
dGVEaXJlY3RvcnkpOwogfQogCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lE
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKmFwcE5h
bWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwotICAgIGlmICgh
YXBwTmFtZSkKLSAgICAgICAgYXBwTmFtZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10g
cHJvY2Vzc05hbWVdOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhpcyBxdWly
ayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdl
LCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCi0gICAgLy8gUHJlc2Vydmlu
ZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgotICAg
IGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkKLSAgICAgICAgYXBwTmFtZSA9IEAiY29tLmFw
cGxlLldlYkFwcENhY2hlIjsKLSNlbmRpZgotICAgIAotICAgIEFTU0VSVChhcHBOYW1lKTsKLSAg
ICAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE5TU3RyaW5nICpjYWNoZURpciA9IFtO
U0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5
L0NhY2hlcyJdOwotI2Vsc2UKLSAgICBjaGFyIGNhY2hlRGlyZWN0b3J5W01BWFBBVEhMRU5dOwot
ICAgIHNpemVfdCBjYWNoZURpcmVjdG9yeUxlbiA9IGNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX0NB
Q0hFX0RJUiwgY2FjaGVEaXJlY3RvcnksIE1BWFBBVEhMRU4pOwotICAgIGlmICghY2FjaGVEaXJl
Y3RvcnlMZW4pCi0gICAgICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotICAgIAotICAgIE5TU3Ry
aW5nICpjYWNoZURpciA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0
aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpjYWNoZURpcmVjdG9yeSBsZW5ndGg6Y2FjaGVEaXJl
Y3RvcnlMZW4gLSAxXTsKLSNlbmRpZgotICAgIE5TU3RyaW5nKiBjYWNoZVBhdGggPSBbY2FjaGVE
aXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmFwcE5hbWVdOwotICAgIHJldHVybiBX
ZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2NhY2hlUGF0aCBzdHJpbmdC
eVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICpj
YWNoZVBhdGggPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9y
eShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwotICAgIGlmICgh
Y2FjaGVQYXRoKQotICAgICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFw
cGxlLldlYktpdC5XZWJQcm9jZXNzIjsKLSAgICAKLSAgICBjYWNoZVBhdGggPSBbY2FjaGVQYXRo
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdENhY2hlIl07Ci0gICAgCi0g
ICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQ
YXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAg
ICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNL
ZXldOwotICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFbZGF0YWJhc2VzRGlyZWN0b3J5
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGRhdGFiYXNlc0RpcmVj
dG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMiOwotICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJp
bmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgLy8g
SW5kZXhlZCBkYXRhYmFzZXMgZXhpc3QgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlICJkYXRhYmFz
ZSBkaXJlY3RvcnkgcGF0aC4iCi0gICAgLy8gQ3VycmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRo
YXQgZGlyZWN0b3J5IGNvbnRhaW5zIGVudGl0aWVzIHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNl
cy4KLSAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMsIGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3Vi
ZGlyZWN0b3J5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3
KQotICAgIC8vIEluIHRoZSBtZWFudGltZSwgYW4gZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0
aHJlZSB1bmRlcnNjb3JlcyB3aWxsIG5vdCBjb25mbGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRp
ZXMuCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdh
Y3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYlN0b3Jh
Z2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
fHwgIVtsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKLSAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0xv
Y2FsU3RvcmFnZSI7Ci0gICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5r
c0luUGF0aChbbG9jYWxTdG9yYWdlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhd
KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIE5TU3RyaW5nICptZWRpYUtleXNDYWNoZURpcmVjdG9y
eSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpX
ZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgIGlmICghbWVkaWFLZXlz
Q2FjaGVEaXJlY3RvcnkgfHwgIVttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0g
TlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpw
cm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVu
dGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRp
ZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAg
ICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyXTsKLSAgICAgICAg
fQotICAgICAgICBtZWRpYUtleXNDYWNoZURpcmVjdG9yeSA9IFttZWRpYUtleXNDYWNoZURpcmVj
dG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQvTWVkaWFDYWNoZSJd
OwotICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5Q
YXRoKFttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmluZyAqbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZv
cktleTpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgIGlm
ICghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSB8fCAhW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9NZWRpYUtleXMiOwotICAgIHJldHVy
biBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYktpdDo6cGF0aEZvclByb2Nlc3NDb250YWlu
ZXIoKTsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHBhdGggPSBOU0hvbWVEaXJl
Y3RvcnkoKTsKLSAgICAKLSAgICBwYXRoID0gcGF0aCArICIvTGlicmFyeS9XZWJLaXQvSmF2YVNj
cmlwdENvcmVEZWJ1ZyI7Ci0gICAgcGF0aCA9IFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aChwYXRoKTsKLSAgICAKLSAgICByZXR1cm4gcGF0aDsKLSNlbHNlCi0gICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBqYXZhU2NyaXB0Q29uZmlnUGF0aCA9IEAifi9MaWJyYXJ5L1dlYktp
dC9KYXZhU2NyaXB0Q29yZURlYnVnIjsKLSAgICAKLSAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtqYXZhU2NyaXB0Q29uZmlnUGF0aCBzdHJpbmdCeVN0
YW5kYXJkaXppbmdQYXRoXSk7Ci0jZW5kaWYKLX0KLQogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURp
cmVjdG9yeSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3Jv
dXAubW0JKHJldmlzaW9uIDI0OTYxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBA
IC0gKGlkKWluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
KCk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVVSTCA/
IFN0cmluZyhidW5kbGVVUkwucGF0aCkgOiBTdHJpbmcoKSk7CiAKICAgICBfcHJvY2Vzc1Bvb2wg
PSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNCw4MiArMTA0LDQgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
d2Vic2l0ZURhdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91
c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewot
I2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiYXBwY2FjaGUi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJu
IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewot
I2lmIFBMQVRGT1JNKFdQRSkKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiY2FjaGUi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJl
dHVybiBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17
Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFi
YXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFU
Rk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2UiLCBu
dWxscHRyKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExB
VEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwgbnVs
bHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0jaWYgUExB
VEZPUk0oV1BFKQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibWVkaWFr
ZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShXUEUpCi0gICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRldmljZWlkaGFzaHNhbHRzIiwgbnVsbHB0
cikpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGphdmFT
Y3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCBCQVNFX0RJUkVDVE9SWSwgIkphdmFTY3JpcHRDb3JlRGVidWciLCBudWxscHRyKSk7
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NjE0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRp
b24uaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMzgzLDcgKzM4
NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl8KIFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdF
UihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIp
KTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgbWFuYWdl
ci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRl
KFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogCiAgICAgcmV0dXJuIG1hbmFnZXI7CiB9CkBAIC00MDQsNyArNDA1LDcgQEAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YQogICAgICAgICBjb25maWd1cmF0aW9u
LT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8KICAg
ICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0
c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlv
bikpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0
b3JlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0
YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk2MTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NSw1MCArODUsNCBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
d2Vic2l0ZURhdGFEaXJlCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
ZGlyZWN0b3J5TmFtZSk7CiB9CiAKLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldl
YlNRTCIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjps
ZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhQ2FjaGUiKTsKLX0KLQot
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVk
aWFLZXlTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBOb3QgSW1w
bGVtZW50ZWQuCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVE
ZWJ1ZyIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTYyMCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA5LTA3ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwNTQK
KworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgor
ICAgICAgICBUaGlzIHRlc3QgcmVsaWVkIG9uIHRoZSBkZWZhdWx0IGRhdGEgc3RvcmUgaGF2aW5n
IGJlZW4gaW5zdGFudGlhdGVkLgorCiAyMDE5LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGNhbGxzIHRvIFdLQ29udGV4
dEdldFdlYnNpdGVEYXRhU3RvcmUgbWlzc2VkIGluIHIyNDk2MTQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCShyZXZpc2lvbiAyNDk2MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcy
LDkgKzk3Miw2IEBAIHZvaWQgc2V0Q29uZmlndXJhdGlvbkluamVjdGVkQnVuZGxlUGF0aCgKICAg
ICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0Lmdl
dCgpOwogICAgIGF1dG8gcG9vbCA9IGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CiAgICAgW3Bv
b2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdyJdOwotCi0g
ICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGFuZCByZW1vdmUgdGhpcyBsYXN0IHVzZSBvZiBXS0Nv
bnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlLgotICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSA9IChXS1dlYnNpdGVEYXRhU3RvcmUgKilXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3Jl
KGNvbnRleHQuZ2V0KCkpOwogfQogCiBAaW50ZXJmYWNlIFJlZ3VsYXJQYWdlTWVzc2FnZUhhbmRs
ZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KQEAgLTE0MjUsNiArMTQyMiw3
IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJBbmRDYWMKICAgICBBU1NFUlQo
bWFpbkJ5dGVzKTsKICAgICBBU1NFUlQoc2NyaXB0Qnl0ZXMpOwogCisgICAgW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxv
d1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>