<?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>192380</bug_id>
          
          <creation_ts>2018-12-04 14:24:38 -0800</creation_ts>
          <short_desc>Make WebsiteDataStoreConfiguration a proper API object</short_desc>
          <delta_ts>2018-12-05 10:43:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1485005</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 14:24:38 -0800</bug_when>
    <thetext>Make WebsiteDataStoreConfiguration a proper API object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485006</commentid>
    <comment_count>1</comment_count>
      <attachid>356533</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 14:27:09 -0800</bug_when>
    <thetext>Created attachment 356533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485043</commentid>
    <comment_count>2</comment_count>
      <attachid>356546</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 15:36:01 -0800</bug_when>
    <thetext>Created attachment 356546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485044</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-04 15:38:23 -0800</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>1485050</commentid>
    <comment_count>4</comment_count>
      <attachid>356549</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 16:07:30 -0800</bug_when>
    <thetext>Created attachment 356549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485078</commentid>
    <comment_count>5</comment_count>
      <attachid>356556</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 17:03:04 -0800</bug_when>
    <thetext>Created attachment 356556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485081</commentid>
    <comment_count>6</comment_count>
      <attachid>356559</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 17:09:13 -0800</bug_when>
    <thetext>Created attachment 356559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485087</commentid>
    <comment_count>7</comment_count>
      <attachid>356561</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 17:28:24 -0800</bug_when>
    <thetext>Created attachment 356561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485088</commentid>
    <comment_count>8</comment_count>
      <attachid>356562</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 17:33:56 -0800</bug_when>
    <thetext>Created attachment 356562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485249</commentid>
    <comment_count>9</comment_count>
      <attachid>356562</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-05 08:45:40 -0800</bug_when>
    <thetext>Comment on attachment 356562
Patch

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

&gt; Source/WebKit/ChangeLog:3
&gt; +        Make WebsiteDataStoreConfiguration a proper API object

Could you please document in the changeling WHY you are making this change? What are the benefits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485251</commentid>
    <comment_count>10</comment_count>
      <attachid>356562</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-05 08:52:55 -0800</bug_when>
    <thetext>Comment on attachment 356562
Patch

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

&gt; Source/WebKit/ChangeLog:3
&gt; +        Make WebsiteDataStoreConfiguration a proper API object

Is the idea to have a cleaner/easier to use API or are we expecting to expose additional functionality?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:93
&gt; +    , m_configuration(m_resolvedConfiguration.copyRef())

Previously m_configuration and m_resolvedConfiguration were two separate objects but they are now more or less the same thing in this code path.
Should we deep copy configuration in m_configuration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485284</commentid>
    <comment_count>11</comment_count>
      <attachid>356616</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-05 10:19:37 -0800</bug_when>
    <thetext>Created attachment 356616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485298</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-05 10:42:34 -0800</bug_when>
    <thetext>http://trac.webkit.org/r238900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485299</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-05 10:43:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/46492185&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356533</attachid>
            <date>2018-12-04 14:27:09 -0800</date>
            <delta_ts>2018-12-04 15:36:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204142708.patch</filename>
            <type>text/plain</type>
            <size>74442</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDcgKzY1
Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVMKIAogICAgIGlm
ICghc3RvcmUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHVuYWJsZSB0byByZXRyaWV2ZSBDYWNoZVN0b3JhZ2Ug
cGFyYW1ldGVycyBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uIElEICUiIFBSSXU2NCwgdGhpcywgc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgYXV0byBxdW90YSA9IG1fcHJvY2Vzc1Bvb2wu
d2Vic2l0ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOworICAgICAgICBhdXRv
IHF1b3RhID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkgPyBtX3Byb2Nlc3NQb29s
LndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhKCkgOiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6ZGVmYXVsdENhY2hl
U3RvcmFnZVBlck9yaWdpblF1b3RhOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCwgcXVvdGEsIHsgfSwg
eyB9IH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwyMCArODIsMTYgQEAg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OgogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1l
cmFsU2Vzc2lvbklEKCkpKTsKIH0KIAotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRh
U3RvcmU6OmNyZWF0ZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKK1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVh
dGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJz
aXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkpOwogfQogCi1X
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKCkKLSAgICA6IHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1XZWJzaXRlRGF0
YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9y
ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAg
ICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCi0gICAgLCBtX3N0b3Jh
Z2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSkpCisgICAgLCBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKQorICAgICwgbV9jb25maWd1cmF0aW9uKG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLmNvcHlSZWYoKSkKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZShtX2NvbmZpZ3VyYXRpb24tPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkKICAgICAsIG1f
ZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNyZWF0ZSgp
KQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJz
aXRlRGF0YVN0b3JlIikpCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKQEAgLTExMSw3ICsxMDcsOCBA
QCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpCiAKIFdlYnNpdGVEYXRh
U3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDog
bV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9jb25maWd1cmF0aW9uKCkKKyAgICAsIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVh
dGUoKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb3B5
UmVmKCkpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LldlYnNpdGVEYXRhU3RvcmUiKSkKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwgbV9hdXRo
ZW50aWNhdG9yTWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigpKQpA
QCAtMTY3LDI5ICsxNjQsMjkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0
b3JpZQogICAgIG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcyA9IHRydWU7CiAKICAgICAvLyBSZXNv
bHZlIGRpcmVjdG9yeSBwYXRocy4KLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFDYWNo
ZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94
RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKLSAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9
IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1f
Y29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29u
ZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0
ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLmlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc29sdmVB
bmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmln
dXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSAmJiBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkgPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVh
dGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24t
Pm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNo
ZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0
ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHJlc29sdmVB
bmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJh
dGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2Nv
bmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5
KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5z
ZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+c2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24tPmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAg
ICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+amF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0
aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0
aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKSkpOwogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRocy4KLSAg
ICBpZiAoIW1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSByZXNvbHZl
QW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSkpOwotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOworICAgIGlm
ICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgeworICAg
ICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUocmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VG
aWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9y
YWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxl
KCkpKSk7CiAgICAgfQogfQogCkBAIC0zOTUsNyArMzkyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpmZXRjaERhdGFBbmRBcHBseQogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24t
Pm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5z
SW5NZWRpYUNhY2hlIHJldHVybiBhIGNvbGxlY3Rpb24gb2YgU2VjdXJpdHlPcmlnaW5EYXRhcy4K
ICAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2lucyA9IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUobWVk
aWFDYWNoZURpcmVjdG9yeSk7CiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsK
QEAgLTUwMyw3ICs1MDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFw
cGx5CiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29weSgpLCBjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9u
cywgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRv
cl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAgICAgICAgICAgV2Vic2l0ZURhdGEg
d2Vic2l0ZURhdGE7CkBAIC01MjcsNyArNTI0LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpm
ZXRjaERhdGFBbmRBcHBseQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpXZWJTUUxEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsK
KyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9j
b25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gb3JpZ2lucyA9IFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpLT5vcmlnaW5zKCk7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC01NDEs
NyArNTM4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseQogICAg
IGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMpICYmIGlz
UGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0Nh
bGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc29s
YXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0g
ewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0gbWVkaWFLZXlPcmlnaW5zKG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyldKCkgbXV0YWJs
ZSB7CkBAIC03NDAsNyArNzM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KE9wdGlvbgogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbW9kaWZp
ZWRTaW5jZSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBt
X2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpjbGVhck1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeSwgbW9kaWZpZWRTaW5jZSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKQEAgLTgyNiw3ICs4MjMsNyBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBpc1BlcnNpc3RlbnQo
KSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwog
Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFthcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCks
IGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRp
b24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHko
KSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFthcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAg
ICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogCiAgICAgICAgICAgICBzdG9yYWdlLT5kZWxldGVBbGxD
YWNoZXMoKTsKQEAgLTg0MCw3ICs4MzcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92
ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OldlYlNRTERhdGFiYXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZp
ZWRTaW5jZV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkuaXNvbGF0
ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5jZV0gewogICAgICAgICAg
ICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aCh3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSktPmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZp
ZWRTaW5jZSk7CiAKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7CkBAIC04NTIsNyArODQ5LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZW1vdmVEYXRhKE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpNZWRpYUtleXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBt
b2RpZmllZFNpbmNlXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5jZV0gewog
ICAgICAgICAgICAgcmVtb3ZlTWVkaWFLZXlzKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG1v
ZGlmaWVkU2luY2UpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nh
bGxiYWNrQWdncmVnYXRvcl0gewpAQCAtMTAwNiw3ICsxMDAzLDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICAKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAg
IG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgbWVkaWFDYWNo
ZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVk
Q29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNr
QWdncmVnYXRvcl0gewogCiAgICAgICAgICAgICAvLyBGSVhNRTogTW92ZSBTZWN1cml0eU9yaWdp
bjo6dG9SYXdTdHJpbmcgdG8gU2VjdXJpdHlPcmlnaW5EYXRhIGFuZAogICAgICAgICAgICAgLy8g
bWFrZSBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIHRha2UgU2Vj
dXJpdHlPcmlnaW5EYXRhLgpAQCAtMTExMyw3ICsxMTEwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCks
IGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRp
b24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHko
KSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmln
aW5zID0gV1RGTW92ZShvcmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBh
cHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9u
LT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0ZWRDb3B5
KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQpAQCAtMTEzMyw3ICsx
MTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAg
ICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsK
LSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBj
YWxsYmFja0FnZ3JlZ2F0b3IsIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIG1f
cXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yLCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICAgICAgYXV0byBk
YXRhYmFzZVRyYWNrZXIgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0
YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgICAgICAgICBkYXRhYmFzZVRyYWNrZXItPmRl
bGV0ZU9yaWdpbihvcmlnaW4pOwpAQCAtMTE1MSw3ICsxMTQ4LDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmln
aW5zID0gV1RGTW92ZShvcmlnaW5zKV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMg
PSBXVEZNb3ZlKG9yaWdpbnMpXSB7CiAKICAgICAgICAgICAgIHJlbW92ZU1lZGlhS2V5cyhtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5zKTsKIApAQCAtMTY2Myw3ICsxNjYwLDcgQEAg
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSA9IHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwot
ICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICBpZiAoIXBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lv
biAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
Ik5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c0xpZmV0aW1lT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFz
aC5oPgpAQCAtODAsMzIgKzgxLDggQEAgc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJzaXRlRGF0YVN0b3JlPiwg
cHVibGljIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJz
aXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7
CiBwdWJsaWM6Ci0gICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRfdCBkZWZhdWx0Q2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEgPSA1MCAqIDEwMjQgKiAxMDI0OwotCi0gICAgc3RydWN0IENvbmZp
Z3VyYXRpb24gewotICAgICAgICBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgICAg
ICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB7IGRlZmF1bHRDYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSB9OwotICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3Ry
aW5nIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0KLSAgICAgICAg
U3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICAg
ICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5OwotICAgICAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7Ci0g
ICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdlRmlsZTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKLQotICAgICAgICBleHBsaWNpdCBDb25maWd1cmF0aW9u
KCk7Ci0gICAgfTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBl
cnNpc3RlbnQoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShDb25m
aWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0
b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNl
c3Npb25JRCk7CiAgICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgc3RhdGlj
IFdlYnNpdGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25J
RChQQUw6OlNlc3Npb25JRCk7CkBAIC0xMTksMTIgKzk2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCk7CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKLSAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhOyB9Ci0gICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1aW50NjRf
dCBxdW90YSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5R
dW90YSA9IHF1b3RhOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk7IH0KLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9
IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3Rv
cmFnZVBlck9yaWdpblF1b3RhKCk7IH0KKyAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhKHVpbnQ2NF90IHF1b3RhKSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YShxdW90YSk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGNhY2hl
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0
Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUoZGlyZWN0b3J5KSk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOyB9CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXVEZNb3ZlKGRpcmVjdG9yeSkpOyB9CiAKICAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2
b2lkIGNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNTMsMTUgKzEzMCwxNSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKLSAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJp
bmcmIHJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcm
IHJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5n
JiByZXNvbHZlZEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQ29va2llU3RvcmFnZUZpbGUoKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZTsgfQot
ICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVz
b2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJl
Y3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZERhdGFiYXNlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSmF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0
cmluZyYgcmVzb2x2ZWRDb29raWVTdG9yYWdlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpOyB9CisgICAgY29uc3QgU3RyaW5n
JiByZXNvbHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOyB9CisgICAg
Y29uc3QgU3RyaW5nJiByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOyB9CiAKICAgICBT
dG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2Vy
LmdldCgpOyB9CiAKQEAgLTIxMSw3ICsxODgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7Ci0gICAgZXhwbGljaXQg
V2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAgZXhw
bGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
JiYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwg
UmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNv
cmQ+KT4mJiBhcHBseSk7CiAKQEAgLTI0NCw4ICsyMjEsOCBAQCBwcml2YXRlOgogCiAgICAgY29u
c3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKLSAgICBjb25zdCBDb25maWd1cmF0aW9u
IG1fY29uZmlndXJhdGlvbjsKLSAgICBDb25maWd1cmF0aW9uIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uOworICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb247CisgICAgUmVmPGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiBtX2NvbmZpZ3VyYXRpb247CiAgICAgYm9vbCBtX2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMgeyBm
YWxzZSB9OwogCiAgICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5h
Z2VyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKKyAg
ICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCit7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24pOyB9CisKKyAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSgpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7IH0KKyAgICB2b2lkIHNl
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKSB7IG1fY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEgPSBxdW90YTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVj
dG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlh
Q2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURpcmVjdG9y
eSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcm
JiBkaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJl
Y3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBqYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3Rvcnk7IH0KKyAgICB2b2lkIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiB3ZWJTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAg
dm9pZCBzZXRXZWJTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3dlYlN0
b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9
IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAgY29uc3QgU3RyaW5nJiB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0K
KyAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkg
eyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAg
ICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92
ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBjb29raWVTdG9yYWdlRmls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llU3RvcmFnZUZpbGU7IH0KKyAgICB2b2lkIHNldENv
b2tpZVN0b3JhZ2VGaWxlKFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2Nvb2tpZVN0b3JhZ2VGaWxl
ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgbmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrQ2FjaGVEaXJlY3Rv
cnk7IH0KKyAgICB2b2lkIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3Rv
cnkpIHsgbV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAg
ICAKKyAgICBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOyB9CisgICAgdm9pZCBzZXRBcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKFN0cmluZyYmIGRpcmVjdG9yeSkgeyBt
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBXVEZNb3ZlKGRpcmVj
dG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldFNvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVyKSB7IG1fc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorCisgICAgY29u
c3QgU3RyaW5nJiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsgfQorICAgIHZv
aWQgc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50
aWZpZXIpIHsgbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBXVEZNb3Zl
KGlkZW50aWZpZXIpOyB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ2NF90IGRlZmF1bHRD
YWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IDUwICogMTAyNCAqIDEwMjQ7CisKK3ByaXZhdGU6
CisgICAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKworICAgIFN0cmluZyBtX2Nh
Y2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICB1aW50NjRfdCBtX2NhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhIHsgZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIH07CisgICAgU3RyaW5n
IG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVE
aXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZTsKKyAgICAKKyAgICBTdHJpbmcgbV93ZWJTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0
cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeTsKKyAgICBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKKyAgICBTdHJpbmcg
bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsKKyAgICBTdHJpbmcgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAgICBTdHJp
bmcgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9jb29r
aWVTdG9yYWdlRmlsZTsKKyAgICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXI7CisgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3Myw4
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICAgICAgbV9i
b3VuZEludGVyZmFjZUlkZW50aWZpZXIsCiAgICAgICAgIG1fYWxsb3dzQ2VsbHVsYXJBY2Nlc3Ms
CiAgICAgICAgIG1fcHJveHlDb25maWd1cmF0aW9uLAotICAgICAgICBtX2NvbmZpZ3VyYXRpb24u
c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLAotICAgICAgICBtX2NvbmZpZ3VyYXRp
b24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLAorICAgICAgICBtX2NvbmZp
Z3VyYXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLAorICAgICAgICBt
X2NvbmZpZ3VyYXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLAog
ICAgICAgICBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiwKICAgICAgICAgU2Vjb25kcyB7IFtk
ZWZhdWx0cyBpbnRlZ2VyRm9yS2V5OldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRlbmN5TWls
bGlzZWNvbmRzRGVmYXVsdHNLZXldIC8gMTAwMC4gfQogICAgIH07CkBAIC04OSw4ICs4OSw4IEBA
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICB9CiAKICAgICBw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyID0gbV91aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcjsKLSAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRp
b24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwotICAgIHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
ciA9IG1fY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7
CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKTsKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24t
PnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogCiAgICAgcGFyYW1ldGVy
cy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMyLDYgKzM0MzIsOSBAQAogCQk1QzI5OEQ5
RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBlbmRpbmdEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGlj
aWVzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRl
UG9saWNpZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0NkMwQUMy
MUI3MTk4QjAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0NkMwQUQyMUI3MTk4
QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjlEOEEyMTBBOEM0NjAwOEYx
NEQxIC8qIFVuZG9PclJlZG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5k
b09yUmVkby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYyRkRGODFFRkMyNjND
MDBDRTA3MkUgLyogV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VS
TFNjaGVtZVRhc2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkNF
NkQwMUY1OUJDNDYwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUNsaWVudEltcGxDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4NTUsNiArNDg1OCw4IEBACiAJCQkJMUE0ODMy
Q0YxQTlCRDgyMTAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggKi8sCiAJCQkJMUE1M0My
QTQxQTMyNTY5RjAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuY3BwICovLAogCQkJCTFBNTND
MkE1MUEzMjU2OUYwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmggKi8sCisJCQkJNUM0NkMw
QUMyMUI3MTk4QjAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCAq
LywKKwkJCQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2Vic2l0ZURhdGE7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNjA1Miw2ICs2MDU3LDcgQEAKIAkJCQkxQUUyODY3RjFDN0Y5
MkJGMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplSW50ZXJuYWwuaCAqLywKIAkJCQk1MTIw
QzgzMzFFNUI3MTU3MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aCAqLywKIAkJCQk1MTIwQzgzNDFFNUI3MTU3MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0gKi8sCisJCQkJNUM0NkMwQUUyMUI3MUFFMjAwQkM1OTkxIC8qIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0IyMzc4
OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJNUNCMjM3
OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSAqLywKIAkJCQk1Q0Iy
Mzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356546</attachid>
            <date>2018-12-04 15:36:01 -0800</date>
            <delta_ts>2018-12-04 16:07:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204153600.patch</filename>
            <type>text/plain</type>
            <size>78506</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAko
cmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE2ICsxMjUsMTYg
QEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRKYQogICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJKYXZhU2NyaXB0
Q29yZURlYnVnIik7CiB9CiAKLVdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlv
biBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwog
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAg
ICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9u
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXRyaWV2
ZUNhY2hlUwogCiAgICAgaWYgKCFzdG9yZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihD
YWNoZVN0b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdW5hYmxlIHRvIHJldHJp
ZXZlIENhY2hlU3RvcmFnZSBwYXJhbWV0ZXJzIGZyb20gdGhlIGdpdmVuIHNlc3Npb24gSUQgJSIg
UFJJdTY0LCB0aGlzLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwotICAgICAgICBhdXRvIHF1b3Rh
ID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkgPyBtX3Byb2Nlc3NQb29sLndlYnNp
dGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1
b3RhKCkgOiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVv
dGE7CisgICAgICAgIGF1dG8gcXVvdGEgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUo
KSA/IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCku
Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSA6IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzIHsgc2Vzc2lv
bklELCBxdW90YSwgeyB9LCB7IH0gfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDIwICs4MiwxNiBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25J
RDo6Z2VuZXJhdGVFcGhlbWVyYWxTZXNzaW9uSUQoKSkpOwogfQogCi1SZWY8V2Vic2l0ZURhdGFT
dG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vz
c2lvbklEKSk7CiB9CiAKLVdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb246OkNvbmZpZ3Vy
YXRpb24oKQotICAgIDogcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCi17
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBj
b25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25J
RChzZXNzaW9uSUQpCi0gICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9u
KSkKLSAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShtX2NvbmZp
Z3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAsIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24obV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24uY29weVJlZigpKQorICAgICwgbV9zdG9yYWdlTWFuYWdlcihT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkpKQogICAgICwgbV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZShEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20u
YXBwbGUuV2ViS2l0LldlYnNpdGVEYXRhU3RvcmUiKSkKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQpA
QCAtMTExLDcgKzEwNyw4IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoQ29u
ZmkKIAogV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2NvbmZpZ3Vy
YXRpb24oKQorICAgICwgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24oV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpKQorICAgICwgbV9jb25maWd1cmF0aW9uKG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLmNvcHlSZWYoKSkKICAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURhdGFTdG9yZSIpKQogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGlj
YXRvck1hbmFnZXI+KCkpCkBAIC0xNjcsMjkgKzE2NCwyOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3RvcmllCiAgICAgbV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzID0gdHJ1
ZTsKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3J5IHBhdGhzLgotICAgIGlmICghbV9jb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9u
Lm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkp
OwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVu
c2lvbihtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIGlmICgh
bV9jb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkg
PSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbiht
X2NvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOwotICAgIGlmICghbV9j
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQot
ICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwot
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0
ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0
aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnkg
PSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNh
Y2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbihtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
bV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlv
bi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShyZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlv
bi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShyZXNvbHZl
QW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3Vy
YXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmln
dXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkp
KTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkocmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICBp
ZiAoIW1fY29uZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKS5p
c0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9j
b25maWd1cmF0aW9uLT5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAg
aWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSAm
JiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0
eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZv
ciBmaWxlIHBhdGhzLgotICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxl
LmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9y
YWdlRmlsZSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9u
LmNvb2tpZVN0b3JhZ2VGaWxlKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNv
b2tpZVN0b3JhZ2VGaWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3Jh
Z2VGaWxlKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCku
aXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29raWVT
dG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlv
bi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi0+
Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKICAgICB9CiB9CiAKQEAgLTM5NSw3ICszOTIsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUp
KSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0g
ICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1
cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVn
YXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFDYWNoZURpcmVjdG9yeSA9
IG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIEhUTUxNZWRp
YUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgcmV0dXJuIGEgY29sbGVjdGlvbiBvZiBTZWN1
cml0eU9yaWdpbkRhdGFzLgogICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+PiBvcmlnaW5zID0gV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6b3JpZ2lu
c0luTWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5KTsKICAgICAgICAgICAgIFdlYnNpdGVE
YXRhIHdlYnNpdGVEYXRhOwpAQCAtNTAzLDcgKzUwMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhQW5kQXBwbHkKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUpICYmIGlzUGVyc2lzdGVudCgpKSB7
CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xh
dGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9j
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNv
bGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1
cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGFwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENvcHkoKSwg
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogCiAgICAgICAg
ICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTUyNyw3ICs1MjQsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5CiAgICAgaWYgKGRhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlcykgJiYgaXNQZXJzaXN0ZW50KCkp
IHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAot
ICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2Nv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxi
YWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbd2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCku
aXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBv
cmlnaW5zID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0
aCh3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSktPm9yaWdpbnMoKTsKICAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92
ZShvcmlnaW5zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJz
aXRlRGF0YTsKQEAgLTU0MSw3ICs1MzgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNo
RGF0YUFuZEFwcGx5CiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
Ok1lZGlhS2V5cykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZp
Z3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBtZWRpYUtleU9y
aWdpbnMobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7CiAKICAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShv
cmlnaW5zKV0oKSBtdXRhYmxlIHsKQEAgLTc0MCw3ICs3MzcsNyBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChkYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CiAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUt
PmRpc3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1
cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVn
YXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbW9kaWZpZWRTaW5jZSwgbWVkaWFD
YWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpLmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5LCBt
b2RpZmllZFNpbmNlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0gewpAQCAtODI2LDcgKzgyMyw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUp
ICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVu
ZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24t
PmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAgICAgIHN0
b3JhZ2UtPmRlbGV0ZUFsbENhY2hlcygpOwpAQCAtODQwLDcgKzgzNyw3IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewog
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmln
dXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tB
Z2dyZWdhdG9yLCBtb2RpZmllZFNpbmNlXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBtb2RpZmllZFNp
bmNlXSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRo
RGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KS0+ZGVsZXRlRGF0YWJhc2VzTW9k
aWZpZWRTaW5jZShtb2RpZmllZFNpbmNlKTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKQEAgLTg1Miw3ICs4NDksNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lZGlhS2V5cykgJiYgaXNQZXJzaXN0ZW50KCkpIHsK
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAg
ICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxs
YmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBt
b2RpZmllZFNpbmNlXSB7CiAgICAgICAgICAgICByZW1vdmVNZWRpYUtleXMobWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwgbW9kaWZpZWRTaW5jZSk7CiAKICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CkBAIC0xMDA2LDcgKzEwMDMsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgICAgIAogI2lm
IEVOQUJMRShWSURFTykKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2Fs
bGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9y
aWdpbnMpLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVE
aXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIG1lZGlhQ2FjaGVE
aXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRl
ZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBN
b3ZlIFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZyB0byBTZWN1cml0eU9yaWdpbkRhdGEgYW5k
CiAgICAgICAgICAgICAvLyBtYWtlIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMgdGFrZSBTZWN1cml0eU9yaWdpbkRhdGEuCkBAIC0xMTEzLDcgKzExMTAsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgICAgIH0KIAogICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCku
aXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUg
PSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBh
dXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdp
bnMpCkBAIC0xMTMzLDcgKzExMzAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURh
dGEoT3B0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBl
bmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdU
Rk1vdmUob3JpZ2lucyksIGNhbGxiYWNrQWdncmVnYXRvciwgd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSBtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5
KCldIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdp
bnMpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpXSB7CiAg
ICAgICAgICAgICBhdXRvIGRhdGFiYXNlVHJhY2tlciA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOwogICAg
ICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAgICAgICAgICAgIGRh
dGFiYXNlVHJhY2tlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbik7CkBAIC0xMTUxLDcgKzExNDgsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgICAgIH0KIAog
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSB7CisgICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9u
LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdn
cmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyldIHsKIAogICAgICAgICAgICAgcmVt
b3ZlTWVkaWFLZXlzKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbnMpOwogCkBAIC0x
NjYzLDcgKzE2NjAsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5oIgorI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5IYXNoLmg+CkBAIC04MCwzMiArODEsOCBAQCBzdHJ1Y3QgUGx1Z2luTW9k
dWxlSW5mbzsKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIsIHB1Ymxp
YyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vi
c2l0ZURhdGFTdG9yZT4gIHsKIHB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ2NF90
IGRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IDUwICogMTAyNCAqIDEwMjQ7Ci0K
LSAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7Ci0gICAgICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7Ci0gICAgICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIHsg
ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIH07Ci0gICAgICAgIFN0cmluZyBuZXR3
b3JrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5OwotICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsKLQotICAgICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3Ry
aW5nIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgICAg
ICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGRldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VGaWxlOwotICAgICAg
ICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwotICAgICAgICBTdHJp
bmcgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwotCi0gICAgICAgIGV4cGxp
Y2l0IENvbmZpZ3VyYXRpb24oKTsKLSAgICB9OwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gY3JlYXRlKENvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3Jl
KCk7CiAKICAgICBzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0
YVN0b3JlRm9yU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKQEAgLTExOSwxMiArOTYsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29s
KTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7IH0KLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hl
U3RvcmFnZVBlck9yaWdpblF1b3RhID0gcXVvdGE7IH0KLSAgICBjb25zdCBTdHJpbmcmIGNhY2hl
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LmNhY2hlU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KLSAgICBjb25zdCBTdHJpbmcm
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OyB9
Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgdWludDY0X3QgY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKTsgfQorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpIHsgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPnNldENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHF1b3RhKTsgfQorICAgIGNv
bnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOyB9CisgICAgdm9pZCBz
ZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShkaXJlY3Rvcnkp
KTsgfQorICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7IH0KKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdURk1vdmUoZGly
ZWN0b3J5KSk7IH0KIAogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQcm9j
ZXNzZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE1MywxNSArMTMwLDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwotICAgIGNv
bnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsg
fQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsgfQot
ICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9
Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0K
LSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRDb29raWVT
dG9yYWdlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tp
ZVN0b3JhZ2VGaWxlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiByZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5OyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+YXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1l
ZGlhS2V5c0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVz
b2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLT5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgp
OyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCk7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJp
bmcmIHJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KCk7IH0KIAogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJu
IG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KIApAQCAtMjExLDcgKzE4OCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklE
KTsKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24sIFBBTDo6U2Vz
c2lvbklEKTsKKyAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBmZXRjaERh
dGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3Rv
cjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIApAQCAtMjQ0LDggKzIyMSw4IEBAIHBy
aXZhdGU6CiAKICAgICBjb25zdCBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAotICAgIGNv
bnN0IENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwotICAgIENvbmZpZ3VyYXRpb24gbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb247CisgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uPiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbjsKKyAgICBSZWY8Y29uc3QgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKICAgICBib29sIG1faGFzUmVzb2x2
ZWREaXJlY3RvcmllcyB7IGZhbHNlIH07CiAKICAgICBjb25zdCBSZWZQdHI8U3RvcmFnZU1hbmFn
ZXI+IG1fc3RvcmFnZU1hbmFnZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oKQorICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik7IH0KKworICAgIHVpbnQ2NF90IGNhY2hlU3Rv
cmFnZVBlck9yaWdpblF1b3RhKCkgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVv
dGEpIHsgbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IHF1b3RhOyB9CisKKyAgICBjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Fw
cGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFD
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsgfQor
ICAgIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9t
ZWRpYUNhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29u
c3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1famF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBT
dHJpbmcmIHdlYlN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlN0b3JhZ2VE
aXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFdlYlN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGly
ZWN0b3J5KSB7IG1fd2ViU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQor
CisgICAgY29uc3QgU3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBTdHJp
bmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nJiYgZGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRp
cmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0b3JhZ2VGaWxlKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVTdG9yYWdlRmlsZTsg
fQorICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZUZpbGUoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1f
Y29va2llU3RvcmFnZUZpbGUgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAg
Y29uc3QgU3RyaW5nJiBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX25l
dHdvcmtDYWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeSA9IFdURk1vdmUo
ZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lk
IHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KKyAg
ICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAg
Y29uc3QgU3RyaW5nJiBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsgfQorICAgIHZvaWQg
c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIp
IHsgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyOyB9CisgICAgdm9pZCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZp
ZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMg
dWludDY0X3QgZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhID0gNTAgKiAxMDI0ICog
MTAyNDsKKworcHJpdmF0ZToKKyAgICBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwor
CisgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OworICAgIHVpbnQ2NF90IG1fY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVv
dGEgfTsKKyAgICBTdHJpbmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1f
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOworICAgIAorICAgIFN0cmluZyBtX3dlYlN0b3JhZ2VE
aXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcg
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5OworICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OworICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2RldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5OworICAgIFN0cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5Owor
ICAgIFN0cmluZyBtX2Nvb2tpZVN0b3JhZ2VGaWxlOworICAgIFN0cmluZyBtX3NvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKKyAgICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXI7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTczLDggKzczLDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURh
dGFTdAogICAgICAgICBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllciwKICAgICAgICAgbV9hbGxv
d3NDZWxsdWxhckFjY2VzcywKICAgICAgICAgbV9wcm94eUNvbmZpZ3VyYXRpb24sCi0gICAgICAg
IG1fY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIsCi0gICAg
ICAgIG1fY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIs
CisgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCksCisgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCksCiAgICAgICAgIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uLAogICAg
ICAgICBTZWNvbmRzIHsgW2RlZmF1bHRzIGludGVnZXJGb3JLZXk6V2ViS2l0TmV0d29ya0xvYWRU
aHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleV0gLyAxMDAwLiB9CiAgICAgfTsK
QEAgLTg5LDggKzg5LDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dAogICAgIH0KIAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZp
ZXIgPSBtX3VpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwotICAgIHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
ciA9IG1fY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7Ci0g
ICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcjsKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOworICAgIHBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9
IG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7
CiAKICAgICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGlu
Z0Nvb2tpZXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MzIsNiArMzQz
Miw5IEBACiAJCTVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVuZGluZ0Rvd25sb2FkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0Rl
cHJlY2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEZXByZWNhdGVk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDM0FFQThFMUZFMUYxREYwMDIzMThE
MyAvKiBXZWJzaXRlUG9saWNpZXNEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzQ2QzBBQzIxQjcxOThCMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0NkMwQUUyMUI3
MUFFMjAwQkM1OTkxIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRC
OUQ4QTIxMEE4QzQ2MDA4RjE0RDEgLyogVW5kb09yUmVkby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVbmRvT3JSZWRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNjJGREY4MUVGQzI2M0MwMENFMDcyRSAvKiBXS1VSTFNjaGVtZVRhc2tQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM2Q0U2RDAxRjU5QkM0NjAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlQ2xpZW50
SW1wbENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg1NSw2ICs0ODU4
LDggQEAKIAkJCQkxQTQ4MzJDRjFBOUJEODIxMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQu
aCAqLywKIAkJCQkxQTUzQzJBNDFBMzI1NjlGMDA0RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5j
cHAgKi8sCiAJCQkJMUE1M0MyQTUxQTMyNTY5RjAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUu
aCAqLywKKwkJCQk1QzQ2QzBBQzIxQjcxOThCMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwICovLAorCQkJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBXZWJzaXRl
RGF0YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02MDUyLDYgKzYwNTcsNyBAQAog
CQkJCTFBRTI4NjdGMUM3RjkyQkYwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNpemVJbnRlcm5h
bC5oICovLAogCQkJCTUxMjBDODMzMUU1QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTUxMjBDODM0MUU1QjcxNTcwMDI1QjI1MCAvKiBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk1QzQ2QzBBRTIxQjcx
QUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
ICovLAogCQkJCTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMu
aCAqLywKIAkJCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tICovLAogCQkJCTVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNp
ZXNJbnRlcm5hbC5oICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356549</attachid>
            <date>2018-12-04 16:07:30 -0800</date>
            <delta_ts>2018-12-04 17:03:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204160729.patch</filename>
            <type>text/plain</type>
            <size>82132</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg3OSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg3OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODc5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg3OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAy
Mzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0ICszMTQsMTQgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbnN0IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24pCitzdGF0aWMgaW5saW5lIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKIHsKLSAgICBXZWJzaXRl
RGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kaXNrQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkocHJv
Y2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDksNyArMzQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogfQogCi1XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlOjpD
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5w
cml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdh
Y3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiYpOworV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJDcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
JiYpOwogQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRE
YXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3Zl
UHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRl
RGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyMzg4NzkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTYgKzEyNSwxNiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdEphCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKIH0KIAotV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZh
dWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAg
Y29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KCkpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAJKHJldmlzaW9uIDIzODg3OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTCiAKICAgICBpZiAoIXN0
b3JlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKENhY2hlU3RvcmFnZSwgIiVwIC0gTmV0
d29ya1Byb2Nlc3NQcm94eSBpcyB1bmFibGUgdG8gcmV0cmlldmUgQ2FjaGVTdG9yYWdlIHBhcmFt
ZXRlcnMgZnJvbSB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCAlIiBQUkl1NjQsIHRoaXMsIHNlc3Npb25J
RC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIGF1dG8gcXVvdGEgPSBtX3Byb2Nlc3NQb29sLndlYnNp
dGVEYXRhU3RvcmUoKSA/IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRl
RGF0YVN0b3JlKCkuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSA6IFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsKKyAgICAgICAgYXV0byBxdW90
YSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJz
aXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5R
dW90YSgpIDogV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmRlZmF1bHRDYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQsIHF1b3RhLCB7IH0sIHsgfSB9
LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZp
c2lvbiAyMzg4NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMjAgKzgyLDE2IEBAIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjoKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNl
c3Npb25JRCgpKSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURh
dGFTdG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKIH0KIAotV2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCi0gICAgOiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9y
ZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK1dlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUmVm
PFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1f
Y29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQotICAgICwgbV9zdG9yYWdlTWFu
YWdlcihTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpKQorICAgICwgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5j
b3B5UmVmKCkpCisgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUo
bV9jb25maWd1cmF0aW9uLT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpCiAgICAgLCBtX2Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlKERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGUoKSkKICAg
ICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURh
dGFTdG9yZSIpKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCkBAIC0xMTEsNyArMTA3LDggQEAgV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maQogCiBXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fY29uZmlndXJhdGlvbigpCisgICAgLCBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkp
CisgICAgLCBtX2NvbmZpZ3VyYXRpb24obV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29weVJlZigp
KQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJz
aXRlRGF0YVN0b3JlIikpCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGlj
YXRvck1hbmFnZXIobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yTWFuYWdlcj4oKSkKQEAgLTE2
NywyOSArMTY0LDI5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWUK
ICAgICBtX2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMgPSB0cnVlOwogCiAgICAgLy8gUmVzb2x2ZSBk
aXJlY3RvcnkgcGF0aHMuCi0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVu
c2lvbihtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2Nv
bmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAg
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSByZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZp
Z3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVh
dGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi53
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24u
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkgJiYgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVQYXRoRm9yU2FuZGJv
eEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGly
ZWN0b3J5ID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGly
ZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJl
Y3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNl
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJl
Y3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShyZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1
cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYm
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkp
KTsKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCi0gICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsK
LSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKKyAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRD
cmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgp
KSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZp
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLCBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkp
OwogICAgIH0KIH0KIApAQCAtMzk1LDcgKzM5Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
ZmV0Y2hEYXRhQW5kQXBwbHkKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVj
dG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFttZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewog
ICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVk
aWFDYWNoZSByZXR1cm4gYSBjb2xsZWN0aW9uIG9mIFNlY3VyaXR5T3JpZ2luRGF0YXMuCiAgICAg
ICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMg
PSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2Fj
aGVEaXJlY3RvcnkpOwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC01
MDMsNyArNTAwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseQog
ICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsK
ICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNp
dGVEYXRhOwpAQCAtNTI3LDcgKzUyNCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhQW5kQXBwbHkKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
V2ViU1FMRGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmln
dXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KS0+b3JpZ2lucygpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
YWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwpAQCAtNTQxLDcgKzUz
OCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkKICAgICBpZiAo
ZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzKSAmJiBpc1BlcnNp
c3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFj
aygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAg
ICAgICAgICAgIGF1dG8gb3JpZ2lucyA9IG1lZGlhS2V5T3JpZ2lucyhtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxs
YmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgewpA
QCAtNzQwLDcgKzczNyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRp
b24KICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQ
ZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2lu
Y2UsIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVj
dG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNr
QWdncmVnYXRvcl0gewogICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3RvcnksIG1vZGlmaWVkU2luY2UpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7CkBAIC04MjYsNyArODIzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZW1vdmVEYXRhKE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsK
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAg
ICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNh
bGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpLmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAg
ICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNy
ZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lKTsKIAogICAgICAgICAgICAgc3RvcmFnZS0+ZGVsZXRlQWxsQ2FjaGVz
KCk7CkBAIC04NDAsNyArODM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJT
UUxEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2lu
Y2VdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29w
eSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKICAgICAgICAgICAgIFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpLT5kZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2lu
Y2UpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdn
cmVnYXRvcl0gewpAQCAtODUyLDcgKzg0OSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb24KICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6TWVkaWFLZXlzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZp
ZWRTaW5jZV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpLmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKICAgICAg
ICAgICAgIHJlbW92ZU1lZGlhS2V5cyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBtb2RpZmll
ZFNpbmNlKTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKQEAgLTEwMDYsNyArMTAwMyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIG1lZGlhQ2FjaGVEaXJl
Y3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHko
KSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmln
aW5zID0gV1RGTW92ZShvcmlnaW5zKSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsKIAogICAgICAgICAgICAgLy8gRklYTUU6IE1vdmUgU2VjdXJpdHlPcmlnaW46OnRv
UmF3U3RyaW5nIHRvIFNlY3VyaXR5T3JpZ2luRGF0YSBhbmQKICAgICAgICAgICAgIC8vIG1ha2Ug
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyB0YWtlIFNlY3VyaXR5
T3JpZ2luRGF0YS4KQEAgLTExMTMsNyArMTExMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVtb3ZlRGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmln
aW5zID0gV1RGTW92ZShvcmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNh
bGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9
IFdURk1vdmUob3JpZ2lucyksIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3Vy
YXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykKQEAgLTExMzMsNyArMTEzMCw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICAgICAgfQog
CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yLCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNhbGxiYWNrQWdncmVnYXRv
ciwgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGF1dG8gZGF0YWJh
c2VUcmFja2VyID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNl
UGF0aCh3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IG9yaWdpbnMpCiAgICAgICAgICAgICAgICAgZGF0YWJhc2VUcmFja2VyLT5kZWxldGVP
cmlnaW4ob3JpZ2luKTsKQEAgLTExNTEsNyArMTE0OCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9
IFdURk1vdmUob3JpZ2lucyldIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RG
TW92ZShvcmlnaW5zKV0gewogCiAgICAgICAgICAgICByZW1vdmVNZWRpYUtleXMobWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSwgb3JpZ2lucyk7CiAKQEAgLTE2NjMsNyArMTY2MCw3IEBAIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkgPSByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBp
ZiAoIXBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5
KCkpCisgICAgaWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjM4
ODc5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZl
dGltZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4K
QEAgLTgwLDMyICs4MSw4IEBAIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogCiBjbGFzcyBXZWJz
aXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1Ymxp
YyBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlciwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURh
dGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgewogcHVi
bGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgdWludDY0X3QgZGVmYXVsdENhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhID0gNTAgKiAxMDI0ICogMTAyNDsKLQotICAgIHN0cnVjdCBDb25maWd1cmF0
aW9uIHsKLSAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgdWlu
dDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEgfTsKLSAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKLSAg
ICAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBh
cHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotCi0gICAgICAgIFN0cmlu
ZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5OwotICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0
cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5OwotICAgICAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsK
LSAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwotICAgICAg
ICBTdHJpbmcgY29va2llU3RvcmFnZUZpbGU7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXI7Ci0KLSAgICAgICAgZXhwbGljaXQgQ29uZmlndXJhdGlvbigpOwot
ICAgIH07CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0
ZW50KCk7Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJh
dGlvbiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
Y3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIHN0YXRpYyBXZWJz
aXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoUEFM
OjpTZXNzaW9uSUQpOwpAQCAtMTE5LDEyICs5NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCi0gICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdCB7
IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YTsgfQotICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVv
dGEpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEg
PSBxdW90YTsgfQotICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5
KSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1v
dmUoZGlyZWN0b3J5KTsgfQotICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXVEZN
b3ZlKGRpcmVjdG9yeSk7IH0KKyAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VQ
ZXJPcmlnaW5RdW90YSgpOyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSh1aW50NjRfdCBxdW90YSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEocXVvdGEpOyB9CisgICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCk7IH0KKyAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9y
eShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hl
U3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGRpcmVjdG9yeSkpOyB9CisgICAgY29uc3QgU3RyaW5n
JiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsgfQorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV1RGTW92ZShkaXJlY3RvcnkpKTsgfQogCiAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdldCgpOyB9CiAgICAgdm9pZCBj
bGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpAQCAtMTUzLDE1ICsxMzAsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc29s
dmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNv
bHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJl
c29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVz
b2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OyB9
Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGU7IH0KLSAgICBj
b25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24t
PmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHJlc29sdmVkQ29va2llU3RvcmFnZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVz
b2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0
IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsgfQogCiAgICAgU3RvcmFn
ZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQo
KTsgfQogCkBAIC0yMTEsNyArMTg4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwotICAgIGV4cGxpY2l0IFdlYnNp
dGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQpOworICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0
cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+
JiYgYXBwbHkpOwogCkBAIC0yNDQsOCArMjIxLDggQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFBB
TDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCi0gICAgY29uc3QgQ29uZmlndXJhdGlvbiBtX2Nv
bmZpZ3VyYXRpb247Ci0gICAgQ29uZmlndXJhdGlvbiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbjsK
KyAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uOworICAgIFJlZjxjb25zdCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9j
b25maWd1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzIHsgZmFsc2Ug
fTsKIAogICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCisgICAgOiBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKTsgfQorCisgICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSB7
IHJldHVybiBtX2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOyB9CisgICAgdm9pZCBzZXRDYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyBtX2NhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhID0gcXVvdGE7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eTsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3Rvcnkp
OyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBX
VEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGly
ZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5
KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
OyB9CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShTdHJpbmcm
JiBkaXJlY3RvcnkpIHsgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IFdURk1v
dmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgd2ViU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQg
c2V0V2ViU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93ZWJTdG9yYWdl
RGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
U3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZN
b3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9CisgICAg
dm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAgY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGly
ZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgY29va2llU3RvcmFnZUZpbGUoKSBj
b25zdCB7IHJldHVybiBtX2Nvb2tpZVN0b3JhZ2VGaWxlOyB9CisgICAgdm9pZCBzZXRDb29raWVT
dG9yYWdlRmlsZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9jb29raWVTdG9yYWdlRmlsZSA9IFdU
Rk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIG5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OyB9
CisgICAgdm9pZCBzZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7
IG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisg
ICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1v
dmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gV1RGTW92ZShkaXJlY3Rvcnkp
OyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5OyB9CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkg
PSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3NvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0KKworICAgIGNvbnN0IFN0
cmluZyYgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNl
dFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVy
KSB7IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKTsgfQorCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRfdCBkZWZhdWx0Q2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEgPSA1MCAqIDEwMjQgKiAxMDI0OworCitwcml2YXRlOgorICAg
IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKKyAgICBTdHJpbmcgbV9jYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk7CisgICAgdWludDY0X3QgbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSB7IGRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB9OworICAgIFN0cmluZyBtX25l
dHdvcmtDYWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5OworICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWU7CisgICAgCisgICAgU3RyaW5nIG1fd2ViU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcg
bV9tZWRpYUNhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5OworICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7
CisgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7CisgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OworICAg
IFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1f
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fY29va2llU3Rv
cmFnZUZpbGU7CisgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
OworICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKK307
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9u
IDIzODg3OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsOCBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgICAgIG1fYm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyLAogICAgICAgICBtX2FsbG93c0NlbGx1bGFyQWNjZXNzLAogICAg
ICAgICBtX3Byb3h5Q29uZmlndXJhdGlvbiwKLSAgICAgICAgbV9jb25maWd1cmF0aW9uLnNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwKLSAgICAgICAgbV9jb25maWd1cmF0aW9uLnNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwKKyAgICAgICAgbV9jb25maWd1cmF0
aW9uLT5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgbV9jb25m
aWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwKICAgICAg
ICAgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24sCiAgICAgICAgIFNlY29uZHMgeyBbZGVmYXVs
dHMgaW50ZWdlckZvcktleTpXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5jeU1pbGxpc2Vj
b25kc0RlZmF1bHRzS2V5XSAvIDEwMDAuIH0KICAgICB9OwpAQCAtODksOCArODksOCBAQCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgfQogCiAgICAgcGFyYW1l
dGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciA9IG1fdWlQcm9jZXNzQ29va2ll
U3RvcmFnZUlkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKLSAgICBwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBt
X2NvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOworICAg
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCk7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLT5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIAogICAgIHBhcmFtZXRlcnMucGVu
ZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjM4ODc5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQzMiw2ICszNDMyLDkgQEAKIAkJNUMyOThEOUUxQzNE
RUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQZW5kaW5nRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMzQUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0Rh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGlj
aWVzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFDMjFCNzE5
OEIwMEJDNTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFEMjFCNzE5OEMwMEJD
NTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAv
KiBVbmRvT3JSZWRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJl
ZG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2MkZERjgxRUZDMjYzQzAwQ0Uw
NzJFIC8qIFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hl
bWVUYXNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZDRTZEMDFG
NTlCQzQ2MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODU1LDYgKzQ4NTgsOCBAQAogCQkJCTFBNDgzMkNGMUE5
QkQ4MjEwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBNTNDMkE0MUEz
MjU2OUYwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTUzQzJBNTFB
MzI1NjlGMDA0RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5oICovLAorCQkJCTVDNDZDMEFDMjFC
NzE5OEIwMEJDNTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJ
CQkJNUM0NkMwQUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYnNpdGVEYXRhOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTYwNTIsNiArNjA1Nyw3IEBACiAJCQkJMUFFMjg2N0YxQzdGOTJCRjAw
NjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggKi8sCiAJCQkJNTEyMEM4MzMx
RTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8s
CiAJCQkJNTEyMEM4MzQxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLm1tICovLAorCQkJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJNUNCMjM3ODkxREYw
REQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTVDQjIzNzhBMURG
MERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJNUNCMjM3OEQx
REYwRTBDMjAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356556</attachid>
            <date>2018-12-04 17:03:04 -0800</date>
            <delta_ts>2018-12-04 17:09:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204170303.patch</filename>
            <type>text/plain</type>
            <size>84822</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0ICszMTQsMTQgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbnN0IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24pCitzdGF0aWMgaW5saW5lIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKIHsKLSAgICBXZWJzaXRl
RGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kaXNrQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkocHJv
Y2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDksNyArMzQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogfQogCi1XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlOjpD
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5w
cml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdh
Y3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CkBAIC0zNjEsMTYgKzM2MSwxNiBAQCBBUEk6Oldl
YnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IG1hbmFnZXItPnByaXY7CiAgICAgaWYgKCFwcml2LT53
ZWJzaXRlRGF0YVN0b3JlKSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbjsKLSAgICAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSAhcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwotICAgICAgICBjb25maWd1cmF0aW9uLm5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9ICFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAg
ICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSAhcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkuZ2V0KCkpOwotICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53
ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpOwotICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwor
ICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRpc2tDYWNoZURp
cmVjdG9yeSA/CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1
YmRpcmVjdG9yeSkpOworICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KKyAgICAgICAgICAg
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBjb25m
aWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0
b3J5ID8KKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAg
ICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAg
IHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxl
Z2FjeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCi1XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OkNvbmZpZ3VyYXRpb24mJik7CitXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJik7CiBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKIHZvaWQgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJldmlzaW9uIDIz
ODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFT
dG9yZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxNiArMTI1LDE2IEBAIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmEKICAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIp
OwogfQogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVmPFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAotICAgIGNvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnkg
PSBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwot
ICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSA9IGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKSk7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3
LDcgKzY1Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVMKIAog
ICAgIGlmICghc3RvcmUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdl
LCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHVuYWJsZSB0byByZXRyaWV2ZSBDYWNoZVN0
b3JhZ2UgcGFyYW1ldGVycyBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uIElEICUiIFBSSXU2NCwgdGhp
cywgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgYXV0byBxdW90YSA9IG1fcHJvY2Vz
c1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3Jl
KCktPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOworICAgICAg
ICBhdXRvIHF1b3RhID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkgPyBtX3Byb2Nl
c3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFn
ZVBlck9yaWdpblF1b3RhKCkgOiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6ZGVmYXVs
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCwgcXVvdGEs
IHsgfSwgeyB9IH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwyMCArODIs
MTYgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OgogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRl
RXBoZW1lcmFsU2Vzc2lvbklEKCkpKTsKIH0KIAotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkpOwog
fQogCi1XZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKCkKLSAg
ICA6IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1XZWJz
aXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURh
dGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQotICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCi0gICAgLCBt
X3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkpCisgICAgLCBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQorICAgICwgbV9jb25maWd1cmF0aW9uKG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLmNvcHlSZWYoKSkKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24tPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkKICAg
ICAsIG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNy
ZWF0ZSgpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktp
dC5XZWJzaXRlRGF0YVN0b3JlIikpCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKQEAgLTExMSw3ICsx
MDcsOCBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpCiAKIFdlYnNp
dGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9jb25maWd1cmF0aW9uKCkKKyAg
ICAsIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
OjpjcmVhdGUoKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5jb3B5UmVmKCkpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0LldlYnNpdGVEYXRhU3RvcmUiKSkKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwg
bV9hdXRoZW50aWNhdG9yTWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
PigpKQpAQCAtMTY3LDI5ICsxNjQsMjkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZl
RGlyZWN0b3JpZQogICAgIG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcyA9IHRydWU7CiAKICAgICAv
LyBSZXNvbHZlIGRpcmVjdG9yeSBwYXRocy4KLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVk
aWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JT
YW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKLSAg
ICBpZiAoIW1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTsKLSAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlv
bi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHko
KSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5qYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZVBh
dGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KHJlc29sdmVB
bmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJh
dGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7CisgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5p
c0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVh
dGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZp
Z3VyYXRpb24tPmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQor
ICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlv
bi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShyZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKSkpOwogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRo
cy4KLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBy
ZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9y
YWdlRmlsZSkpOwotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdl
RmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSwgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwor
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkg
eworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUo
cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0
b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29r
aWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3Jh
Z2VGaWxlKCkpKSk7CiAgICAgfQogfQogCkBAIC0zOTUsNyArMzkyLDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseQogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAo
ZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRp
YUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3Vy
YXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSBIVE1MTWVkaWFFbGVtZW50Ojpv
cmlnaW5zSW5NZWRpYUNhY2hlIHJldHVybiBhIGNvbGxlY3Rpb24gb2YgU2VjdXJpdHlPcmlnaW5E
YXRhcy4KICAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
Pj4gb3JpZ2lucyA9IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2Fj
aGUobWVkaWFDYWNoZURpcmVjdG9yeSk7CiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRl
RGF0YTsKQEAgLTUwMyw3ICs1MDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUFuZEFwcGx5CiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBt
X2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwg
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29weSgp
LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNo
T3B0aW9ucywgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdn
cmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAgICAgICAgICAgV2Vic2l0
ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC01MjcsNyArNTI0LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpmZXRjaERhdGFBbmRBcHBseQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29w
eSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gb3JpZ2lucyA9IFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpLT5vcmlnaW5zKCk7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBA
IC01NDEsNyArNTM4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBs
eQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMp
ICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVu
ZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUt
PmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVn
YXRvcl0gewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0gbWVkaWFLZXlPcmlnaW5zKG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyldKCkg
bXV0YWJsZSB7CkBAIC03NDAsNyArNzM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKE9wdGlvbgogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
bW9kaWZpZWRTaW5jZSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRp
YUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1lZGlhQ2FjaGVEaXJlY3Rv
cnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHko
KSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeSwgbW9kaWZpZWRTaW5j
ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKQEAgLTgyNiw3ICs4MjMsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBpc1BlcnNp
c3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFj
aygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFthcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRl
ZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFthcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogCiAgICAgICAgICAgICBzdG9yYWdlLT5kZWxl
dGVBbGxDYWNoZXMoKTsKQEAgLTg0MCw3ICs4MzcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OldlYlNRTERhdGFiYXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ud2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwg
bW9kaWZpZWRTaW5jZV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbd2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCku
aXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5jZV0gewogICAg
ICAgICAgICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0
aCh3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSktPmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
bW9kaWZpZWRTaW5jZSk7CiAKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7CkBAIC04NTIsNyArODQ5LDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpNZWRpYUtleXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdh
dG9yLCBtb2RpZmllZFNpbmNlXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5j
ZV0gewogICAgICAgICAgICAgcmVtb3ZlTWVkaWFLZXlzKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksIG1vZGlmaWVkU2luY2UpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0gewpAQCAtMTAwNiw3ICsxMDAzLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICAKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0g
ICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgbWVk
aWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNh
bGxiYWNrQWdncmVnYXRvcl0gewogCiAgICAgICAgICAgICAvLyBGSVhNRTogTW92ZSBTZWN1cml0
eU9yaWdpbjo6dG9SYXdTdHJpbmcgdG8gU2VjdXJpdHlPcmlnaW5EYXRhIGFuZAogICAgICAgICAg
ICAgLy8gbWFrZSBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIHRh
a2UgU2VjdXJpdHlPcmlnaW5EYXRhLgpAQCAtMTExMyw3ICsxMTEwLDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRl
ZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29w
eSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1
cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0
ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdl
ID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsK
IAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQpAQCAtMTEz
Myw3ICsxMTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgog
ICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJh
Y2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdp
bnMpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpXSB7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yLCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICAgICAg
YXV0byBkYXRhYmFzZVRyYWNrZXIgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJX
aXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgICAgICAgICBkYXRhYmFzZVRyYWNr
ZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pOwpAQCAtMTE1MSw3ICsxMTQ4LDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICB9CiAKICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
LCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG9y
aWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSB7CiAKICAgICAgICAgICAgIHJlbW92ZU1lZGlhS2V5
cyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5zKTsKIApAQCAtMTY2Myw3ICsxNjYw
LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpOwotICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICBpZiAoIXBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShy
ZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oPgpAQCAtODAsMzIgKzgxLDggQEAgc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAK
IGNsYXNzIFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJzaXRlRGF0YVN0
b3JlPiwgcHVibGljIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLCBwdWJsaWMgSWRlbnRpZmll
ZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3Rv
cmU+ICB7CiBwdWJsaWM6Ci0gICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRfdCBkZWZhdWx0Q2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSA1MCAqIDEwMjQgKiAxMDI0OwotCi0gICAgc3RydWN0
IENvbmZpZ3VyYXRpb24gewotICAgICAgICBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5Owot
ICAgICAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB7IGRlZmF1bHRDYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB9OwotICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGly
ZWN0b3J5OwotICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICAg
ICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0KLSAg
ICAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBpbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
LSAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnk7Ci0gICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdlRmlsZTsKLSAgICAgICAgU3RyaW5nIHNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKLQotICAgICAgICBleHBsaWNpdCBDb25maWd1
cmF0aW9uKCk7Ci0gICAgfTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0
ZU5vblBlcnNpc3RlbnQoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0
ZShDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAg
c3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNl
c3Npb25JRChQQUw6OlNlc3Npb25JRCk7CkBAIC0xMTksMTIgKzk2LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCk7CiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKLSAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhOyB9Ci0gICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1
aW50NjRfdCBxdW90YSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VQZXJP
cmlnaW5RdW90YSA9IHF1b3RhOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3Jh
Z2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShTdHJpbmcm
JiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsgfQotICAgIHZvaWQg
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3Rvcnkp
IHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNh
Y2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCk7IH0KKyAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5z
ZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YShxdW90YSk7IH0KKyAgICBjb25zdCBTdHJpbmcm
IGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUoZGlyZWN0b3J5KSk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOyB9CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXVEZNb3ZlKGRpcmVjdG9yeSkpOyB9
CiAKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0K
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNTMsMTUgKzEzMCwxNSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKLSAgICBjb25zdCBTdHJpbmcm
IHJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICBjb25z
dCBTdHJpbmcmIHJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIGNvbnN0
IFN0cmluZyYgcmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3Qg
U3RyaW5nJiByZXNvbHZlZEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQ29va2llU3RvcmFnZUZpbGUo
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+bWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZERhdGFiYXNl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsgfQorICAgIGNv
bnN0IFN0cmluZyYgcmVzb2x2ZWRDb29raWVTdG9yYWdlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpOyB9CisgICAgY29uc3Qg
U3RyaW5nJiByZXNvbHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOyB9
CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZl
ZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOyB9CiAK
ICAgICBTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VN
YW5hZ2VyLmdldCgpOyB9CiAKQEAgLTIxMSw3ICsxODgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7Ci0gICAgZXhw
bGljaXQgV2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7Cisg
ICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgZmV0Y2hEYXRhQW5kQXBwbHko
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiwgUmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURh
dGFSZWNvcmQ+KT4mJiBhcHBseSk7CiAKQEAgLTI0NCw4ICsyMjEsOCBAQCBwcml2YXRlOgogCiAg
ICAgY29uc3QgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKLSAgICBjb25zdCBDb25maWd1
cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKLSAgICBDb25maWd1cmF0aW9uIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uOworICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb247CisgICAgUmVmPGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CiAgICAgYm9vbCBtX2hhc1Jlc29sdmVkRGlyZWN0b3Jp
ZXMgeyBmYWxzZSB9OwogCiAgICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3Jh
Z2VNYW5hZ2VyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
KCkKKyAgICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24pOyB9CisKKyAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YSgpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7IH0KKyAgICB2
b2lkIHNldENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKSB7IG1fY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSBxdW90YTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNl
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYg
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShT
dHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92
ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBqYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiB3ZWJT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTdG9yYWdlRGlyZWN0b3J5OyB9
CisgICAgdm9pZCBzZXRXZWJTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBt
X3dlYlN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0
IFN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAgY29uc3QgU3RyaW5nJiB3ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnk7IH0KKyAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVj
dG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9
CisKKyAgICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBjb29raWVTdG9y
YWdlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llU3RvcmFnZUZpbGU7IH0KKyAgICB2b2lk
IHNldENvb2tpZVN0b3JhZ2VGaWxlKFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2Nvb2tpZVN0b3Jh
Z2VGaWxlID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgbmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrQ2FjaGVE
aXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcmJiBk
aXJlY3RvcnkpIHsgbV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7
IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fY2FjaGVTdG9yYWdlRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBhcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9h
cHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOyB9CisgICAgdm9pZCBzZXRB
cHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKFN0cmluZyYmIGRpcmVjdG9y
eSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmlu
ZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldFNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVyKSB7IG1fc291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorCisg
ICAgY29uc3QgU3RyaW5nJiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsgfQor
ICAgIHZvaWQgc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKFN0cmluZyYm
IGlkZW50aWZpZXIpIHsgbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpOyB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ2NF90IGRl
ZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IDUwICogMTAyNCAqIDEwMjQ7CisKK3By
aXZhdGU6CisgICAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKworICAgIFN0cmlu
ZyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICB1aW50NjRfdCBtX2NhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhIHsgZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIH07CisgICAg
U3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZTsKKyAgICAKKyAgICBTdHJpbmcgbV93ZWJTdG9yYWdlRGlyZWN0b3J5Owor
ICAgIFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1faW5kZXhlZERC
RGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKKyAgICBT
dHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAg
ICBTdHJpbmcgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKKyAgICBTdHJpbmcg
bV9jb29raWVTdG9yYWdlRmlsZTsKKyAgICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXI7CisgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4
ICs3Myw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICAg
ICAgbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIsCiAgICAgICAgIG1fYWxsb3dzQ2VsbHVsYXJB
Y2Nlc3MsCiAgICAgICAgIG1fcHJveHlDb25maWd1cmF0aW9uLAotICAgICAgICBtX2NvbmZpZ3Vy
YXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLAotICAgICAgICBtX2NvbmZp
Z3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLAorICAgICAgICBt
X2NvbmZpZ3VyYXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLAorICAg
ICAgICBtX2NvbmZpZ3VyYXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cigpLAogICAgICAgICBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiwKICAgICAgICAgU2Vjb25k
cyB7IFtkZWZhdWx0cyBpbnRlZ2VyRm9yS2V5OldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRl
bmN5TWlsbGlzZWNvbmRzRGVmYXVsdHNLZXldIC8gMTAwMC4gfQogICAgIH07CkBAIC04OSw4ICs4
OSw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICB9CiAK
ICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyID0gbV91aVBy
b2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKLSAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX2NvbmZp
Z3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwotICAgIHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciA9IG1fY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NvbmZpZ3Vy
YXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogCiAgICAgcGFy
YW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMyLDYgKzM0MzIsOSBAQAogCQk1
QzI5OEQ5RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlbmRpbmdEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0
ZVBvbGljaWVzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJzaXRlUG9saWNpZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0
NkMwQUMyMUI3MTk4QjAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0NkMwQUQy
MUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5
MSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjlEOEEyMTBBOEM0
NjAwOEYxNEQxIC8qIFVuZG9PclJlZG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVW5kb09yUmVkby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYyRkRGODFF
RkMyNjNDMDBDRTA3MkUgLyogV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNkNFNkQwMUY1OUJDNDYwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUNsaWVudEltcGxDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4NTUsNiArNDg1OCw4IEBACiAJCQkJ
MUE0ODMyQ0YxQTlCRDgyMTAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggKi8sCiAJCQkJ
MUE1M0MyQTQxQTMyNTY5RjAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuY3BwICovLAogCQkJ
CTFBNTNDMkE1MUEzMjU2OUYwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmggKi8sCisJCQkJ
NUM0NkMwQUMyMUI3MTk4QjAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcCAqLywKKwkJCQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2Vic2l0ZURhdGE7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjA1Miw2ICs2MDU3LDcgQEAKIAkJCQkxQUUyODY3
RjFDN0Y5MkJGMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplSW50ZXJuYWwuaCAqLywKIAkJ
CQk1MTIwQzgzMzFFNUI3MTU3MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaCAqLywKIAkJCQk1MTIwQzgzNDFFNUI3MTU3MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0gKi8sCisJCQkJNUM0NkMwQUUyMUI3MUFFMjAwQkM1OTkx
IC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk1
Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJ
NUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSAqLywKIAkJ
CQk1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwu
aCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356559</attachid>
            <date>2018-12-04 17:09:13 -0800</date>
            <delta_ts>2018-12-04 17:28:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204170912.patch</filename>
            <type>text/plain</type>
            <size>84862</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0ICszMTQsMTQgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbnN0IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24pCitzdGF0aWMgaW5saW5lIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKIHsKLSAgICBXZWJzaXRl
RGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kaXNrQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgp
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5n
KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7Cisg
ICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNz
UG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNv
bmZpZ3VyYXJpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl8KICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05T
VFJVQ1RfT05MWSkpKTsKIH0KIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJDcmVhdGUoV2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCitXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJL
SVRfV0VCU0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVf
REFUQV9NQU5BR0VSLCBudWxscHRyKSk7CiAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFT
dG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmln
dXJhdGlvbikpOwpAQCAtMzYxLDE2ICszNjEsMTYgQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJraXRXZWJzaXRlRGF0YQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUq
IHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkg
ewotICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gIXByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5LmdldCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnkg
PSAhcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgp
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9ICFwcml2
LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5Lmdl
dCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
OworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURp
cmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KKyAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPworICAgICAg
ICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAg
ICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/CisgICAgICAgICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+
c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBwcml2LT53ZWJzaXRlRGF0
YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25m
aWd1cmF0aW9uKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0
aW9uJiYpOworV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwog
QVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckFkZFByb2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vz
c1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0
b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsMTYgKzEyNSwxNiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEphCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKIH0KIAotV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwot
ICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
LSAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsK
KyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkp
OwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTCiAKICAgICBpZiAoIXN0b3JlKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKENhY2hlU3RvcmFnZSwgIiVwIC0gTmV0d29ya1By
b2Nlc3NQcm94eSBpcyB1bmFibGUgdG8gcmV0cmlldmUgQ2FjaGVTdG9yYWdlIHBhcmFtZXRlcnMg
ZnJvbSB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCAlIiBQUkl1NjQsIHRoaXMsIHNlc3Npb25JRC5zZXNz
aW9uSUQoKSk7Ci0gICAgICAgIGF1dG8gcXVvdGEgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRh
U3RvcmUoKSA/IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSA6IFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsKKyAgICAgICAgYXV0byBxdW90YSA9IG1f
cHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0
YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgp
IDogV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJP
cmlnaW5RdW90YTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENh
Y2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQsIHF1b3RhLCB7IH0sIHsgfSB9LCAwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMjAgKzgyLDE2IEBAIFJlZjxXZWJzaXRl
RGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjoKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25J
RCgpKSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVh
dGUoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9y
ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKIH0KIAotV2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCi0gICAgOiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKK1dlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fY29uZmln
dXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQotICAgICwgbV9zdG9yYWdlTWFuYWdlcihT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpKQorICAgICwgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9u
KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb3B5UmVm
KCkpCisgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUobV9jb25m
aWd1cmF0aW9uLT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpCiAgICAgLCBtX2RldmljZUlkSGFz
aFNhbHRTdG9yYWdlKERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGUoKSkKICAgICAsIG1f
cXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURhdGFTdG9y
ZSIpKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCkBAIC0xMTEsNyArMTA3LDggQEAgV2Vic2l0ZURh
dGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maQogCiBXZWJzaXRlRGF0YVN0b3JlOjpXZWJz
aXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKLSAgICAsIG1fY29uZmlndXJhdGlvbigpCisgICAgLCBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbihXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb24obV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29weVJlZigpKQogICAg
ICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJzaXRlRGF0
YVN0b3JlIikpCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGljYXRvck1h
bmFnZXIobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yTWFuYWdlcj4oKSkKQEAgLTE2NywyOSAr
MTY0LDI5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWUKICAgICBt
X2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMgPSB0cnVlOwogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3Rv
cnkgcGF0aHMuCi0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbiht
X2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24u
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24ucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5qYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbihtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOwot
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkg
JiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hl
RGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+
c2V0TWVkaWFDYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3Rvcnko
KSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JT
YW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9u
LT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCku
aXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5qYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KHJlc29s
dmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+Y2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94
RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpKTsKIAog
ICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCi0gICAgaWYgKCFtX2Nv
bmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKLSAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24uY29va2llU3RvcmFnZUZpbGUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKKyAgICBpZiAoIW1fY29uZmln
dXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwor
ICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwogICAg
IH0KIH0KIApAQCAtMzk1LDcgKzM5Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhQW5kQXBwbHkKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5p
c29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFttZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hl
RGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAg
ICAgICAgLy8gRklYTUU6IE1ha2UgSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNo
ZSByZXR1cm4gYSBjb2xsZWN0aW9uIG9mIFNlY3VyaXR5T3JpZ2luRGF0YXMuCiAgICAgICAgICAg
ICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJl
Y3RvcnkpOwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC01MDMsNyAr
NTAwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseQogICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0
Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAg
ICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
cmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRh
OwpAQCAtNTI3LDcgKzUyNCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5k
QXBwbHkKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FM
RGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlv
bi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KS0+
b3JpZ2lucygpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwpAQCAtNTQxLDcgKzUzOCw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkKICAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzKSAmJiBpc1BlcnNpc3RlbnQo
KSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwog
Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCks
IGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAg
ICAgIGF1dG8gb3JpZ2lucyA9IG1lZGlhS2V5T3JpZ2lucyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgewpAQCAtNzQw
LDcgKzczNyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5n
Q2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5p
c29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0
aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVn
YXRvcl0gewogICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRp
YUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3RvcnksIG1vZGlmaWVkU2luY2UpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7CkBAIC04MjYsNyArODIzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNr
QWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAg
YXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKTsKIAogICAgICAgICAgICAgc3RvcmFnZS0+ZGVsZXRlQWxsQ2FjaGVzKCk7CkBA
IC04NDAsNyArODM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlv
bgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRh
YmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsK
KyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9j
b25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBj
YWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKICAgICAgICAgICAgIFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpLT5kZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UpOwog
CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRv
cl0gewpAQCAtODUyLDcgKzg0OSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0
YShPcHRpb24KICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVk
aWFLZXlzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5j
ZV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpLmlzb2xhdGVk
Q29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKICAgICAgICAgICAg
IHJlbW92ZU1lZGlhS2V5cyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBtb2RpZmllZFNpbmNl
KTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsKQEAgLTEwMDYsNyArMTAwMyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb24KICAgICAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIG1lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0g
V1RGTW92ZShvcmlnaW5zKSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
bWVkaWFDYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsKIAogICAgICAgICAgICAgLy8gRklYTUU6IE1vdmUgU2VjdXJpdHlPcmlnaW46OnRvUmF3U3Ry
aW5nIHRvIFNlY3VyaXR5T3JpZ2luRGF0YSBhbmQKICAgICAgICAgICAgIC8vIG1ha2UgSFRNTE1l
ZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyB0YWtlIFNlY3VyaXR5T3JpZ2lu
RGF0YS4KQEAgLTExMTMsNyArMTExMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRk
UGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0g
V1RGTW92ZShvcmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNr
QWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1v
dmUob3JpZ2lucyksIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24t
PmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykKQEAgLTExMzMsNyArMTEzMCw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1f
cXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yLCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNhbGxiYWNrQWdncmVnYXRvciwgd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGF1dG8gZGF0YWJhc2VUcmFj
a2VyID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aCh3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpCiAgICAgICAgICAgICAgICAgZGF0YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4o
b3JpZ2luKTsKQEAgLTExNTEsNyArMTE0OCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1v
dmUob3JpZ2lucyldIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShv
cmlnaW5zKV0gewogCiAgICAgICAgICAgICByZW1vdmVNZWRpYUtleXMobWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSwgb3JpZ2lucyk7CiAKQEAgLTE2NjMsNyArMTY2MCw3IEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBy
ZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBpZiAoIXBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCisg
ICAgaWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5p
c0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjM4ODU2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZldGltZU9i
c2VydmVyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KQEAgLTgw
LDMyICs4MSw4IEBAIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogCiBjbGFzcyBXZWJzaXRlRGF0
YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlciwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9y
ZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgewogcHVibGljOgot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgdWludDY0X3QgZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhID0gNTAgKiAxMDI0ICogMTAyNDsKLQotICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsK
LSAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgdWludDY0X3Qg
Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2lu
UXVvdGEgfTsKLSAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKLSAgICAgICAg
U3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBhcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotCi0gICAgICAgIFN0cmluZyBtZWRp
YUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5Owot
ICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OwotICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
OwotICAgICAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICAg
ICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwotICAgICAgICBTdHJp
bmcgY29va2llU3RvcmFnZUZpbGU7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXI7Ci0KLSAgICAgICAgZXhwbGljaXQgQ29uZmlndXJhdGlvbigpOwotICAgIH07
CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7
Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbiwg
UEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRl
KFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIHN0YXRpYyBXZWJzaXRlRGF0
YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoUEFMOjpTZXNz
aW9uSUQpOwpAQCAtMTE5LDEyICs5NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
Ci0gICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsgfQot
ICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpIHsg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSBxdW90
YTsgfQotICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5OyB9Ci0g
ICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGly
ZWN0b3J5KTsgfQotICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXVEZNb3ZlKGRp
cmVjdG9yeSk7IH0KKyAgICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YSgpOyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1aW50
NjRfdCBxdW90YSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEocXVvdGEpOyB9CisgICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2FjaGVTdG9y
YWdlRGlyZWN0b3J5KCk7IH0KKyAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFn
ZURpcmVjdG9yeShXVEZNb3ZlKGRpcmVjdG9yeSkpOyB9CisgICAgY29uc3QgU3RyaW5nJiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsgfQor
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShTdHJpbmcmJiBk
aXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoV1RGTW92ZShkaXJlY3RvcnkpKTsgfQogCiAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclJl
c291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpAQCAtMTUzLDE1ICsxMzAsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc29sdmVEaXJl
Y3Rvcmllc0lmTmVjZXNzYXJ5KCk7Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZl
ZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1l
ZGlhS2V5c0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
Lm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVk
RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiByZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGU7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkQ29va2llU3RvcmFnZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRJ
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsgfQogCiAgICAgU3RvcmFnZU1hbmFn
ZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQog
CkBAIC0yMTEsNyArMTg4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRh
U3RvcmUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQpOworICAgIGV4cGxpY2l0IFdlYnNp
dGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNl
c3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3Jr
UXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBw
bHkpOwogCkBAIC0yNDQsOCArMjIxLDggQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwogCi0gICAgY29uc3QgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3Vy
YXRpb247Ci0gICAgQ29uZmlndXJhdGlvbiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbjsKKyAgICBS
ZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
OworICAgIFJlZjxjb25zdCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOwogICAgIGJvb2wgbV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzIHsgZmFsc2UgfTsKIAog
ICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCisgICAgOiBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQoreworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
KTsgfQorCisgICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSB7IHJldHVy
biBtX2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyBtX2NhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhID0gcXVvdGE7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQor
ICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3Rvcnkp
IHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Cisg
ICAgCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRNZWRpYUNhY2hlRGlyZWN0
b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0K
KyAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQor
ICAgIAorICAgIGNvbnN0IFN0cmluZyYgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OyB9Cisg
ICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IFdURk1vdmUoZGly
ZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgd2ViU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0V2Vi
U3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93ZWJTdG9yYWdlRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsgfQorICAgIHZvaWQgc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRp
cmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBz
ZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAgY29uc3QgU3Ry
aW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5
KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgY29va2llU3RvcmFnZUZpbGUoKSBjb25zdCB7
IHJldHVybiBtX2Nvb2tpZVN0b3JhZ2VGaWxlOyB9CisgICAgdm9pZCBzZXRDb29raWVTdG9yYWdl
RmlsZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9jb29raWVTdG9yYWdlRmlsZSA9IFdURk1vdmUo
ZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeTsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShT
dHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIG5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OyB9CisgICAg
dm9pZCBzZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29u
c3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
U3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGly
ZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Cisg
ICAgCisgICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OyB9
CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXVEZN
b3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0KKworICAgIGNvbnN0IFN0cmluZyYg
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldFNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVyKSB7IG1f
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVy
KTsgfQorCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRfdCBkZWZhdWx0Q2FjaGVTdG9yYWdl
UGVyT3JpZ2luUXVvdGEgPSA1MCAqIDEwMjQgKiAxMDI0OworCitwcml2YXRlOgorICAgIFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKKyAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7CisgICAgdWludDY0X3QgbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB7IGRl
ZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB9OworICAgIFN0cmluZyBtX25ldHdvcmtD
YWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Owor
ICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Cisg
ICAgCisgICAgU3RyaW5nIG1fd2ViU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9tZWRp
YUNhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
OworICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAg
U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7Cisg
ICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmlu
ZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1famF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fY29va2llU3RvcmFnZUZp
bGU7CisgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOworICAg
IFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKK307CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDIzODg1
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsOCBAQCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgICAgIG1fYm91bmRJbnRlcmZh
Y2VJZGVudGlmaWVyLAogICAgICAgICBtX2FsbG93c0NlbGx1bGFyQWNjZXNzLAogICAgICAgICBt
X3Byb3h5Q29uZmlndXJhdGlvbiwKLSAgICAgICAgbV9jb25maWd1cmF0aW9uLnNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllciwKLSAgICAgICAgbV9jb25maWd1cmF0aW9uLnNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwKKyAgICAgICAgbV9jb25maWd1cmF0aW9uLT5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgbV9jb25maWd1cmF0
aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwKICAgICAgICAgc2hv
dWxkTG9nQ29va2llSW5mb3JtYXRpb24sCiAgICAgICAgIFNlY29uZHMgeyBbZGVmYXVsdHMgaW50
ZWdlckZvcktleTpXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5jeU1pbGxpc2Vjb25kc0Rl
ZmF1bHRzS2V5XSAvIDEwMDAuIH0KICAgICB9OwpAQCAtODksOCArODksOCBAQCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy51
aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciA9IG1fdWlQcm9jZXNzQ29va2llU3RvcmFn
ZUlkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLnNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKLSAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NvbmZp
Z3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOworICAgIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCk7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIAogICAgIHBhcmFtZXRlcnMucGVuZGluZ0Nv
b2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM4
ODU2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzQzMiw2ICszNDMyLDkgQEAKIAkJNUMyOThEOUUxQzNERUYyOTAw
NDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQZW5kaW5nRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMz
NTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMzQUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFDMjFCNzE5OEIwMEJD
NTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAv
KiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAvKiBVbmRv
T3JSZWRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJlZG8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2MkZERjgxRUZDMjYzQzAwQ0UwNzJFIC8q
IFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVUYXNr
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZDRTZEMDFGNTlCQzQ2
MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00ODU1LDYgKzQ4NTgsOCBAQAogCQkJCTFBNDgzMkNGMUE5QkQ4MjEw
MDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBNTNDMkE0MUEzMjU2OUYw
MDRFOEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTUzQzJBNTFBMzI1NjlG
MDA0RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5oICovLAorCQkJCTVDNDZDMEFDMjFCNzE5OEIw
MEJDNTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNUM0
NkMwQUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYnNpdGVEYXRhOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTYwNTIsNiArNjA1Nyw3IEBACiAJCQkJMUFFMjg2N0YxQzdGOTJCRjAwNjlBQzRG
IC8qIF9XS1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggKi8sCiAJCQkJNTEyMEM4MzMxRTVCNzE1
NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJ
NTEyMEM4MzQxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLm1tICovLAorCQkJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJNUNCMjM3ODkxREYwREQ0MzAw
MTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTVDQjIzNzhBMURGMERENDMw
MDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJNUNCMjM3OEQxREYwRTBD
MjAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356561</attachid>
            <date>2018-12-04 17:28:24 -0800</date>
            <delta_ts>2018-12-04 17:33:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204172823.patch</filename>
            <type>text/plain</type>
            <size>84859</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0ICszMTQsMTQgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbnN0IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24pCitzdGF0aWMgaW5saW5lIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKIHsKLSAgICBXZWJzaXRl
RGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kaXNrQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkocHJv
Y2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDksNyArMzQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogfQogCi1XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlOjpD
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5w
cml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdh
Y3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CkBAIC0zNjEsMTYgKzM2MSwxNiBAQCBBUEk6Oldl
YnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IG1hbmFnZXItPnByaXY7CiAgICAgaWYgKCFwcml2LT53
ZWJzaXRlRGF0YVN0b3JlKSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbjsKLSAgICAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSAhcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwotICAgICAgICBjb25maWd1cmF0aW9uLm5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9ICFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAg
ICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSAhcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkuZ2V0KCkpOwotICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53
ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpOwotICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwor
ICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRpc2tDYWNoZURp
cmVjdG9yeSA/CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1
YmRpcmVjdG9yeSkpOworICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KKyAgICAgICAgICAg
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBjb25m
aWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0
b3J5ID8KKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAg
ICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAg
IHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxl
Z2FjeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCi1XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OkNvbmZpZ3VyYXRpb24mJik7CitXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJik7CiBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKIHZvaWQgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJldmlzaW9uIDIz
ODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFT
dG9yZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxNiArMTI1LDE2IEBAIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0SmEKICAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIp
OwogfQogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVmPFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAotICAgIGNvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnkg
PSBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwot
ICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSA9IGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKSk7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3
LDcgKzY1Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVMKIAog
ICAgIGlmICghc3RvcmUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdl
LCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHVuYWJsZSB0byByZXRyaWV2ZSBDYWNoZVN0
b3JhZ2UgcGFyYW1ldGVycyBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uIElEICUiIFBSSXU2NCwgdGhp
cywgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgYXV0byBxdW90YSA9IG1fcHJvY2Vz
c1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3Jl
KCktPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOworICAgICAg
ICBhdXRvIHF1b3RhID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkgPyBtX3Byb2Nl
c3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFn
ZVBlck9yaWdpblF1b3RhKCkgOiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6ZGVmYXVs
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCwgcXVvdGEs
IHsgfSwgeyB9IH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwyMCArODIs
MTYgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OgogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRl
RXBoZW1lcmFsU2Vzc2lvbklEKCkpKTsKIH0KIAotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkpOwog
fQogCi1XZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKCkKLSAg
ICA6IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1XZWJz
aXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURh
dGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQotICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCi0gICAgLCBt
X3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkpCisgICAgLCBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQorICAgICwgbV9jb25maWd1cmF0aW9uKG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLmNvcHlSZWYoKSkKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24tPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkKICAg
ICAsIG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNy
ZWF0ZSgpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktp
dC5XZWJzaXRlRGF0YVN0b3JlIikpCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKQEAgLTExMSw3ICsx
MDcsOCBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpCiAKIFdlYnNp
dGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9jb25maWd1cmF0aW9uKCkKKyAg
ICAsIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
OjpjcmVhdGUoKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5jb3B5UmVmKCkpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0LldlYnNpdGVEYXRhU3RvcmUiKSkKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwg
bV9hdXRoZW50aWNhdG9yTWFuYWdlcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
PigpKQpAQCAtMTY3LDI5ICsxNjQsMjkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZl
RGlyZWN0b3JpZQogICAgIG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcyA9IHRydWU7CiAKICAgICAv
LyBSZXNvbHZlIGRpcmVjdG9yeSBwYXRocy4KLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVk
aWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JT
YW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKLSAg
ICBpZiAoIW1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTsKLSAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlv
bi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHko
KSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5qYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZVBh
dGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KHJlc29sdmVB
bmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJh
dGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2
ZWRDb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7CisgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKS5p
c0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVh
dGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZp
Z3VyYXRpb24tPmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQor
ICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlv
bi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShyZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKSkpOwogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRo
cy4KLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBy
ZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9y
YWdlRmlsZSkpOwotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdl
RmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSwgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwor
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkg
eworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUo
cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0
b3JhZ2VGaWxlKCkpKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDb29r
aWVTdG9yYWdlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCksIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3Jh
Z2VGaWxlKCkpKSk7CiAgICAgfQogfQogCkBAIC0zOTUsNyArMzkyLDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseQogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAo
ZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRp
YUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3Vy
YXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSBIVE1MTWVkaWFFbGVtZW50Ojpv
cmlnaW5zSW5NZWRpYUNhY2hlIHJldHVybiBhIGNvbGxlY3Rpb24gb2YgU2VjdXJpdHlPcmlnaW5E
YXRhcy4KICAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
Pj4gb3JpZ2lucyA9IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2Fj
aGUobWVkaWFDYWNoZURpcmVjdG9yeSk7CiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRl
RGF0YTsKQEAgLTUwMyw3ICs1MDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUFuZEFwcGx5CiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBt
X2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwg
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29weSgp
LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNo
T3B0aW9ucywgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdn
cmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAgICAgICAgICAgV2Vic2l0
ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC01MjcsNyArNTI0LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpmZXRjaERhdGFBbmRBcHBseQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29w
eSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gb3JpZ2lucyA9IFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpLT5vcmlnaW5zKCk7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBA
IC01NDEsNyArNTM4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBs
eQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMp
ICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVu
ZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUt
PmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVn
YXRvcl0gewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0gbWVkaWFLZXlPcmlnaW5zKG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyldKCkg
bXV0YWJsZSB7CkBAIC03NDAsNyArNzM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKE9wdGlvbgogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
bW9kaWZpZWRTaW5jZSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRp
YUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1lZGlhQ2FjaGVEaXJlY3Rv
cnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHko
KSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeSwgbW9kaWZpZWRTaW5j
ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKQEAgLTgyNiw3ICs4MjMsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBpc1BlcnNp
c3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFj
aygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFthcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRl
ZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFthcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogCiAgICAgICAgICAgICBzdG9yYWdlLT5kZWxl
dGVBbGxDYWNoZXMoKTsKQEAgLTg0MCw3ICs4MzcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OldlYlNRTERhdGFiYXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ud2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwg
bW9kaWZpZWRTaW5jZV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbd2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCku
aXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5jZV0gewogICAg
ICAgICAgICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0
aCh3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSktPmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
bW9kaWZpZWRTaW5jZSk7CiAKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7CkBAIC04NTIsNyArODQ5LDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpNZWRpYUtleXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdh
dG9yLCBtb2RpZmllZFNpbmNlXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5j
ZV0gewogICAgICAgICAgICAgcmVtb3ZlTWVkaWFLZXlzKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksIG1vZGlmaWVkU2luY2UpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0gewpAQCAtMTAwNiw3ICsxMDAzLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICAKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0g
ICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgbWVk
aWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNh
bGxiYWNrQWdncmVnYXRvcl0gewogCiAgICAgICAgICAgICAvLyBGSVhNRTogTW92ZSBTZWN1cml0
eU9yaWdpbjo6dG9SYXdTdHJpbmcgdG8gU2VjdXJpdHlPcmlnaW5EYXRhIGFuZAogICAgICAgICAg
ICAgLy8gbWFrZSBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIHRh
a2UgU2VjdXJpdHlPcmlnaW5EYXRhLgpAQCAtMTExMyw3ICsxMTEwLDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRl
ZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29w
eSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1
cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0
ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdl
ID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsK
IAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQpAQCAtMTEz
Myw3ICsxMTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgog
ICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJh
Y2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdp
bnMpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpXSB7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yLCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICAgICAg
YXV0byBkYXRhYmFzZVRyYWNrZXIgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJX
aXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgICAgICAgICBkYXRhYmFzZVRyYWNr
ZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pOwpAQCAtMTE1MSw3ICsxMTQ4LDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAgICAgICB9CiAKICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
LCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG9y
aWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSB7CiAKICAgICAgICAgICAgIHJlbW92ZU1lZGlhS2V5
cyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5zKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkhhc2guaD4KQEAgLTgwLDMyICs4MSw4IEBAIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZv
OwogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURh
dGFTdG9yZT4sIHB1YmxpYyBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlciwgcHVibGljIElkZW50
aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0
YVN0b3JlPiAgewogcHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgdWludDY0X3QgZGVmYXVs
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhID0gNTAgKiAxMDI0ICogMTAyNDsKLQotICAgIHN0
cnVjdCBDb25maWd1cmF0aW9uIHsKLSAgICAgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9y
eTsKLSAgICAgICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyBkZWZhdWx0
Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgfTsKLSAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNo
ZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0g
ICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwot
Ci0gICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmlu
ZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5OwotICAgICAgICBTdHJpbmcgY29va2llU3RvcmFnZUZpbGU7Ci0gICAgICAgIFN0cmlu
ZyBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7Ci0KLSAgICAgICAgZXhwbGljaXQgQ29u
ZmlndXJhdGlvbigpOwotICAgIH07CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBj
cmVhdGVOb25QZXJzaXN0ZW50KCk7Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBj
cmVhdGUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAog
ICAgIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVG
b3JTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwpAQCAtMTE5LDEyICs5NiwxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAg
IHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2lu
UXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YTsgfQotICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVv
dGEodWludDY0X3QgcXVvdGEpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdl
UGVyT3JpZ2luUXVvdGEgPSBxdW90YTsgfQotICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVT
dG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoU3Ry
aW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQotICAgIGNvbnN0IFN0cmluZyYgc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0
b3J5KSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICB1aW50NjRfdCBjYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpOyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEocXVvdGEpOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7IH0KKyAgICB2b2lkIHNldENhY2hl
U3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGRpcmVjdG9yeSkpOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsgfQorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24t
PnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV1RGTW92ZShkaXJlY3Rvcnkp
KTsgfQogCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdldCgp
OyB9CiAgICAgdm9pZCBjbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTUzLDE1ICsxMzAsMTUgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7Ci0gICAgY29uc3QgU3Ry
aW5nJiByZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgY29u
c3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICBj
b25zdCBTdHJpbmcmIHJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQotICAgIGNv
bnN0IFN0cmluZyYgcmVzb2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZENvb2tpZVN0b3JhZ2VG
aWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFn
ZUZpbGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3Rvcnk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFDYWNo
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFLZXlz
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWREYXRh
YmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT53
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQ29va2llU3RvcmFnZUZpbGUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKTsgfQorICAgIGNv
bnN0IFN0cmluZyYgcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVz
b2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsg
fQogCiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9y
YWdlTWFuYWdlci5nZXQoKTsgfQogCkBAIC0yMTEsNyArMTg4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwotICAg
IGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQp
OworICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNoRGF0YUFuZEFw
cGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNp
dGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCkBAIC0yNDQsOCArMjIxLDggQEAgcHJpdmF0ZToK
IAogICAgIGNvbnN0IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCi0gICAgY29uc3QgQ29u
ZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Ci0gICAgQ29uZmlndXJhdGlvbiBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbjsKKyAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uOworICAgIFJlZjxjb25zdCBXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNSZXNvbHZlZERpcmVj
dG9yaWVzIHsgZmFsc2UgfTsKIAogICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gbV9z
dG9yYWdlTWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbigpCisgICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQor
eworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uKTsgfQorCisgICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEoKSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOyB9Cisg
ICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyBt
X2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhID0gcXVvdGE7IH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV1RG
TW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9CisgICAgdm9p
ZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJp
bmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5
c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdU
Rk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgamF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYg
d2ViU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU3RvcmFnZURpcmVjdG9y
eTsgfQorICAgIHZvaWQgc2V0V2ViU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3Rvcnkp
IHsgbV93ZWJTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBj
b25zdCBTdHJpbmcmIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGly
ZWN0b3J5OyB9CisgICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBk
aXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5
KTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgY29va2ll
U3RvcmFnZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVN0b3JhZ2VGaWxlOyB9CisgICAg
dm9pZCBzZXRDb29raWVTdG9yYWdlRmlsZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9jb29raWVT
dG9yYWdlRmlsZSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBT
dHJpbmcmIG5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0Nh
Y2hlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3Rv
cnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2NhY2hlU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQorICAgIHZvaWQg
c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gV1RG
TW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3Nv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0K
KworICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7
IH0KKyAgICB2b2lkIHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihTdHJp
bmcmJiBpZGVudGlmaWVyKSB7IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRf
dCBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSA1MCAqIDEwMjQgKiAxMDI0Owor
Citwcml2YXRlOgorICAgIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKKyAgICBT
dHJpbmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgdWludDY0X3QgbV9jYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSB7IGRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB9Owor
ICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWU7CisgICAgCisgICAgU3RyaW5nIG1fd2ViU3RvcmFnZURpcmVjdG9y
eTsKKyAgICBTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2luZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Cisg
ICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX21lZGlhS2V5
c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5OworICAgIFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
CisgICAgU3RyaW5nIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CisgICAgU3Ry
aW5nIG1fY29va2llU3RvcmFnZUZpbGU7CisgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyOworICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcjsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzMsOCArNzMsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAg
ICAgICAgIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyLAogICAgICAgICBtX2FsbG93c0NlbGx1
bGFyQWNjZXNzLAogICAgICAgICBtX3Byb3h5Q29uZmlndXJhdGlvbiwKLSAgICAgICAgbV9jb25m
aWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwKLSAgICAgICAgbV9j
b25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwKKyAgICAg
ICAgbV9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSwK
KyAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKSwKICAgICAgICAgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24sCiAgICAgICAgIFNl
Y29uZHMgeyBbZGVmYXVsdHMgaW50ZWdlckZvcktleTpXZWJLaXROZXR3b3JrTG9hZFRocm90dGxl
TGF0ZW5jeU1pbGxpc2Vjb25kc0RlZmF1bHRzS2V5XSAvIDEwMDAuIH0KICAgICB9OwpAQCAtODks
OCArODksOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAg
fQogCiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciA9IG1f
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gbV9j
b25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKLSAgICBwYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25m
aWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIAogICAg
IHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2ll
cyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJJbnNwZWN0b3JQcm94
eVdQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYklu
c3BlY3RvclByb3h5V1BFLmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd3BlL1dlYkluc3BlY3RvclByb3h5V1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1TaG93Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJikKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM4ODU2
KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQzMiw2ICszNDMyLDkgQEAKIAkJNUMyOThEOUUxQzNERUYyOTAwNDcw
QUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQZW5kaW5nRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzNTlD
MEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMzQUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFDMjFCNzE5OEIwMEJDNTk5
MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAvKiBVbmRvT3JS
ZWRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJlZG8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2MkZERjgxRUZDMjYzQzAwQ0UwNzJFIC8qIFdL
VVJMU2NoZW1lVGFza1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVUYXNrUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZDRTZEMDFGNTlCQzQ2MDAw
N0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00ODU1LDYgKzQ4NTgsOCBAQAogCQkJCTFBNDgzMkNGMUE5QkQ4MjEwMDhC
NERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBNTNDMkE0MUEzMjU2OUYwMDRF
OEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTUzQzJBNTFBMzI1NjlGMDA0
RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5oICovLAorCQkJCTVDNDZDMEFDMjFCNzE5OEIwMEJD
NTk5MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNUM0NkMw
QUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IFdlYnNpdGVEYXRhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTYwNTIsNiArNjA1Nyw3IEBACiAJCQkJMUFFMjg2N0YxQzdGOTJCRjAwNjlBQzRGIC8q
IF9XS1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggKi8sCiAJCQkJNTEyMEM4MzMxRTVCNzE1NzAw
MjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTEy
MEM4MzQxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Lm1tICovLAorCQkJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJNUNCMjM3ODkxREYwREQ0MzAwMTE3
QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTVDQjIzNzhBMURGMERENDMwMDEx
N0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJNUNCMjM3OEQxREYwRTBDMjAw
MTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356562</attachid>
            <date>2018-12-04 17:33:56 -0800</date>
            <delta_ts>2018-12-05 10:19:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181204173356.patch</filename>
            <type>text/plain</type>
            <size>84899</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0xMi0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OndyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpP
YmplY3Q6OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gX3dlYlN0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gX3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9jb29raWVTdG9yYWdlRmlsZV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBfc2V0Q29va2llU3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgt
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNv
bmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpyZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjp3ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdl
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6bmV0d29ya0NhY2hlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBnZXRVc2VyTWVkaWEgaW4gYSBsaW5rIHRo
YXQgd2FzIG9wZW5lZCB3aXRoIHRhcmdldD0iX2JsYW5rIiBkb2VzIG5vdCB3b3JrIHRoZSBzZWNv
bmQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNiArMzk2LDcgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhcwogCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisgICAg
TlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotICAgIHZv
aWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERFTEVHQVRFX1JFRl9DT1VOVElOR19UT19D
T0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJOjpPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDIzODg1NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC05NCwxMiArOTUsMTIg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvcgogCiBuYW1lc3BhY2Ug
QVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lkIE9iamVjdDo6cmVmKCkgY29uc3QKIHsK
ICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQg
T2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVyZWYoKSBjb25zdAogewogICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CkBAIC0zMzYsNiArMzM3LDEw
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICBjYXNlIFR5
cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgVHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAgICB3cmFwcGVyID0gW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwyMSArMTk5LDIxIEBAIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxl
Z2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQog
ewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQorUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsK
ICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3Jl
YXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29u
c3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGlj
aXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwogfQogCi1S
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNzQsNyAr
NzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vi
c2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEz
MCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYK
IH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKLSAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVn
YWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3Rv
cmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRh
U3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERv
bnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAyLDI0ICszMDIsMjQg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdAogICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9CiAKLVdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAgY29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7
CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAgICAgCi0gICAgY29uZmlndXJhdGlvbi5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjUgKzE5NywyNSBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgYXV0byBjb25m
aWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeSkKLSAgICAg
ICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVjdG9yeS5wYXRoKTsKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWctPnNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LnBhdGgpOwog
ICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZSkKLSAgICAgICAgY29uZmln
LmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlvbi5fY29va2llU3RvcmFnZUZpbGUucGF0
aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9yYWdlRmlsZShjb25maWd1cmF0aW9uLl9j
b29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBh
dGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlm
IChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKKyAgICAgICAg
Y29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aCk7CiAgICAgaWYgKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICBj
b25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgIGNvbmZpZy0+c2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAgICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZpZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVy
YXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBQQUw6
OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC0zNiw1
NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxBcmd1bWVudChOU1VSTCAqdXJsKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwogfQogCi1AaW1wbGVtZW50YXRpb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewotICAgIFJldGFpblB0cjxOU1VSTD4gX3dl
YlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfY29va2llU3RvcmFnZUZpbGVVUkw7
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVy
bAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU3RvcmFnZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0
b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlV
UkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAg
ICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNo
ZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBh
ZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxl
CiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmlsZVVSTC5nZXQoKTsKKyAgICByZXR1cm4g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUo
KSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihO
U1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0gKHZvaWQpX3NldENvb2tpZVN0b3JhZ2VG
aWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNEaXJlY3RvcnlQYXRoXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQgdG8gYSBmaWxlLCBub3QgYSBkaXJlY3Rv
cnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0p
OworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9
CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkKIHsKLSAgICBy
ZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0
dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNr
VVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeVVS
TCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAtIChOU1VSTCAqKV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX2NhY2hlU3RvcmFnZURpcmVjdG9yeVVS
TC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlv
bi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJM
QXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdlRGlyZWN0b3J5VVJMID0gYWRvcHROUyhb
dXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6
KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1
cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdldCgpOworICAgIHJldHVybiBfY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0
dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0
dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVn
YWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0ICszMTQsMTQgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbnN0IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24pCitzdGF0aWMgaW5saW5lIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKIHsKLSAgICBXZWJzaXRl
RGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kaXNrQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgp
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5n
KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7Cisg
ICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNz
UG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNv
bmZpZ3VyYXJpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl8KICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05T
VFJVQ1RfT05MWSkpKTsKIH0KIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJDcmVhdGUoV2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCitXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJL
SVRfV0VCU0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVf
REFUQV9NQU5BR0VSLCBudWxscHRyKSk7CiAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFT
dG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmln
dXJhdGlvbikpOwpAQCAtMzYxLDE2ICszNjEsMTYgQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJraXRXZWJzaXRlRGF0YQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUq
IHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkg
ewotICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gIXByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5LmdldCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnkg
PSAhcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgp
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9ICFwcml2
LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5Lmdl
dCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
OworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURp
cmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KKyAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPworICAgICAg
ICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAg
ICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/CisgICAgICAgICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+
c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBwcml2LT53ZWJzaXRlRGF0
YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25m
aWd1cmF0aW9uKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0
aW9uJiYpOworV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwog
QVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckFkZFByb2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vz
c1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0
b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsMTYgKzEyNSwxNiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEphCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3JlRGVidWciKTsKIH0KIAotV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwot
ICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
LSAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsK
KyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkp
OwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTCiAKICAgICBpZiAoIXN0b3JlKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKENhY2hlU3RvcmFnZSwgIiVwIC0gTmV0d29ya1By
b2Nlc3NQcm94eSBpcyB1bmFibGUgdG8gcmV0cmlldmUgQ2FjaGVTdG9yYWdlIHBhcmFtZXRlcnMg
ZnJvbSB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCAlIiBQUkl1NjQsIHRoaXMsIHNlc3Npb25JRC5zZXNz
aW9uSUQoKSk7Ci0gICAgICAgIGF1dG8gcXVvdGEgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRh
U3RvcmUoKSA/IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSA6IFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsKKyAgICAgICAgYXV0byBxdW90YSA9IG1f
cHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0
YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgp
IDogV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJP
cmlnaW5RdW90YTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENh
Y2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQsIHF1b3RhLCB7IH0sIHsgfSB9LCAwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMjAgKzgyLDE2IEBAIFJlZjxXZWJzaXRl
RGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjoKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25J
RCgpKSk7CiB9CiAKLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVh
dGUoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9y
ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKIH0KIAotV2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCi0gICAgOiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKK1dlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fY29uZmln
dXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQotICAgICwgbV9zdG9yYWdlTWFuYWdlcihT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpKQorICAgICwgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9u
KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb3B5UmVm
KCkpCisgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUobV9jb25m
aWd1cmF0aW9uLT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpCiAgICAgLCBtX2RldmljZUlkSGFz
aFNhbHRTdG9yYWdlKERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGUoKSkKICAgICAsIG1f
cXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURhdGFTdG9y
ZSIpKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCkBAIC0xMTEsNyArMTA3LDggQEAgV2Vic2l0ZURh
dGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maQogCiBXZWJzaXRlRGF0YVN0b3JlOjpXZWJz
aXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKLSAgICAsIG1fY29uZmlndXJhdGlvbigpCisgICAgLCBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbihXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb24obV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29weVJlZigpKQogICAg
ICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJzaXRlRGF0
YVN0b3JlIikpCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGljYXRvck1h
bmFnZXIobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yTWFuYWdlcj4oKSkKQEAgLTE2NywyOSAr
MTY0LDI5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWUKICAgICBt
X2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMgPSB0cnVlOwogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3Rv
cnkgcGF0aHMuCi0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbiht
X2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24u
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24ucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSk7Ci0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5qYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbihtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOwot
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkg
JiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5
ID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hl
RGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+
c2V0TWVkaWFDYWNoZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3Rvcnko
KSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JT
YW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9u
LT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCku
aXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5qYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KHJlc29s
dmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+Y2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94
RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpKTsKIAog
ICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCi0gICAgaWYgKCFtX2Nv
bmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKLSAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24uY29va2llU3RvcmFnZUZpbGUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKKyAgICBpZiAoIW1fY29uZmln
dXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwor
ICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q29va2llU3RvcmFnZUZpbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpKSkpOwogICAg
IH0KIH0KIApAQCAtMzk1LDcgKzM5Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhQW5kQXBwbHkKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5p
c29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFttZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hl
RGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAg
ICAgICAgLy8gRklYTUU6IE1ha2UgSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNo
ZSByZXR1cm4gYSBjb2xsZWN0aW9uIG9mIFNlY3VyaXR5T3JpZ2luRGF0YXMuCiAgICAgICAgICAg
ICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJl
Y3RvcnkpOwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC01MDMsNyAr
NTAwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseQogICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0
Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAg
ICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
cmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRh
OwpAQCAtNTI3LDcgKzUyNCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5k
QXBwbHkKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FM
RGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlv
bi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KS0+
b3JpZ2lucygpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwpAQCAtNTQxLDcgKzUzOCw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkKICAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzKSAmJiBpc1BlcnNpc3RlbnQo
KSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwog
Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCks
IGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAg
ICAgIGF1dG8gb3JpZ2lucyA9IG1lZGlhS2V5T3JpZ2lucyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgewpAQCAtNzQw
LDcgKzczNyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5n
Q2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5p
c29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0
aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVn
YXRvcl0gewogICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRp
YUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3RvcnksIG1vZGlmaWVkU2luY2UpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7CkBAIC04MjYsNyArODIzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKE9wdGlvbgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNr
QWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAg
YXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKTsKIAogICAgICAgICAgICAgc3RvcmFnZS0+ZGVsZXRlQWxsQ2FjaGVzKCk7CkBA
IC04NDAsNyArODM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlv
bgogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRh
YmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsK
KyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9j
b25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBj
YWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKICAgICAgICAgICAgIFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpLT5kZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UpOwog
CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRv
cl0gewpAQCAtODUyLDcgKzg0OSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0
YShPcHRpb24KICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVk
aWFLZXlzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PmFkZFBlbmRpbmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgbW9kaWZpZWRTaW5j
ZV0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpLmlzb2xhdGVk
Q29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKICAgICAgICAgICAg
IHJlbW92ZU1lZGlhS2V5cyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBtb2RpZmllZFNpbmNl
KTsKIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsKQEAgLTEwMDYsNyArMTAwMyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb24KICAgICAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIG1lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0g
V1RGTW92ZShvcmlnaW5zKSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
bWVkaWFDYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsKIAogICAgICAgICAgICAgLy8gRklYTUU6IE1vdmUgU2VjdXJpdHlPcmlnaW46OnRvUmF3U3Ry
aW5nIHRvIFNlY3VyaXR5T3JpZ2luRGF0YSBhbmQKICAgICAgICAgICAgIC8vIG1ha2UgSFRNTE1l
ZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyB0YWtlIFNlY3VyaXR5T3JpZ2lu
RGF0YS4KQEAgLTExMTMsNyArMTExMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRk
UGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0g
V1RGTW92ZShvcmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNr
QWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1v
dmUob3JpZ2lucyksIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24t
PmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykKQEAgLTExMzMsNyArMTEzMCw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1f
cXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yLCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNhbGxiYWNrQWdncmVnYXRvciwgd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGF1dG8gZGF0YWJhc2VUcmFj
a2VyID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aCh3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpCiAgICAgICAgICAgICAgICAgZGF0YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4o
b3JpZ2luKTsKQEAgLTExNTEsNyArMTE0OCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb24KICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1v
dmUob3JpZ2lucyldIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShv
cmlnaW5zKV0gewogCiAgICAgICAgICAgICByZW1vdmVNZWRpYUtleXMobWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSwgb3JpZ2lucyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIzODg1
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CkBA
IC04MCwzMiArODEsOCBAQCBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5mbzsKIAogY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMg
V2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIsIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRh
U3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKIHB1Ymxp
YzoKLSAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ2NF90IGRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJP
cmlnaW5RdW90YSA9IDUwICogMTAyNCAqIDEwMjQ7Ci0KLSAgICBzdHJ1Y3QgQ29uZmlndXJhdGlv
biB7Ci0gICAgICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIHVpbnQ2
NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhIHsgZGVmYXVsdENhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhIH07Ci0gICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAg
ICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLQotICAgICAgICBTdHJpbmcg
bWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5OwotICAgICAgICBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eTsKLSAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgICAgICBTdHJp
bmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeTsKLSAgICAgICAgU3RyaW5nIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0g
ICAgICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKLSAgICAgICAg
U3RyaW5nIGNvb2tpZVN0b3JhZ2VGaWxlOwotICAgICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyOwotCi0gICAgICAgIGV4cGxpY2l0IENvbmZpZ3VyYXRpb24oKTsKLSAg
ICB9OwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVu
dCgpOwotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKENvbmZpZ3VyYXRp
b24sIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNy
ZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklE
KTsKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBzdGF0aWMgV2Vic2l0
ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKFBBTDo6
U2Vzc2lvbklEKTsKQEAgLTExOSwxMiArOTYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsKICAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIAotICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7
IH0KLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3Rh
KSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhID0g
cXVvdGE7IH0KLSAgICBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsg
fQotICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkg
eyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gV1RGTW92
ZShkaXJlY3RvcnkpOyB9CisgICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEoKTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEo
dWludDY0X3QgcXVvdGEpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFn
ZVBlck9yaWdpblF1b3RhKHF1b3RhKTsgfQorICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hl
U3RvcmFnZURpcmVjdG9yeSgpOyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
U3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShkaXJlY3RvcnkpKTsgfQorICAgIGNvbnN0IFN0cmluZyYg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7
IH0KKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdURk1vdmUoZGlyZWN0b3J5KSk7IH0KIAogICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQcm9jZXNzZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTE1MywxNSArMTMwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNvbHZl
RGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVz
b2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2
ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNv
bHZlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsgfQot
ICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRDb29raWVTdG9yYWdlRmlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlOyB9Ci0gICAgY29u
c3QgU3RyaW5nJiByZXNvbHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9
Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9CisgICAgY29u
c3QgU3RyaW5nJiByZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgp
OyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7IH0KIAogICAgIFN0b3JhZ2VN
YW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7
IH0KIApAQCAtMjExLDcgKzE4OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBleHBsaWNpdCBXZWJzaXRl
RGF0YVN0b3JlKENvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBleHBsaWNpdCBX
ZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFM
OjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8
V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYm
IGFwcGx5KTsKIApAQCAtMjQ0LDggKzIyMSw4IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAotICAgIGNvbnN0IENvbmZpZ3VyYXRpb24gbV9jb25m
aWd1cmF0aW9uOwotICAgIENvbmZpZ3VyYXRpb24gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb247Cisg
ICAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbjsKKyAgICBSZWY8Y29uc3QgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IG1fY29u
ZmlndXJhdGlvbjsKICAgICBib29sIG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcyB7IGZhbHNlIH07
CiAKICAgICBjb25zdCBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQorICAgIDogbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbik7IH0KKworICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgeyBy
ZXR1cm4gbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsgfQorICAgIHZvaWQgc2V0Q2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpIHsgbV9jYWNoZVN0b3JhZ2VQZXJP
cmlnaW5RdW90YSA9IHF1b3RhOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
IH0KKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0
b3J5KSB7IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsg
fQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TWVkaWFDYWNoZURp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gV1RG
TW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
OyB9CisgICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVj
dG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7
IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsg
fQorICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nJiYg
ZGlyZWN0b3J5KSB7IG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHdlYlN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNl
dFdlYlN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fd2ViU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92
ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQorICAgIHZv
aWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVjdG9yeShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVj
dG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGNvb2tpZVN0b3JhZ2VGaWxlKCkgY29u
c3QgeyByZXR1cm4gbV9jb29raWVTdG9yYWdlRmlsZTsgfQorICAgIHZvaWQgc2V0Q29va2llU3Rv
cmFnZUZpbGUoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fY29va2llU3RvcmFnZUZpbGUgPSBXVEZN
b3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBuZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsgfQor
ICAgIHZvaWQgc2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBt
X25ldHdvcmtDYWNoZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAg
IGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9j
YWNoZVN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9y
eShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IFdURk1vdmUoZGlyZWN0b3J5KTsg
fQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eTsgfQorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0U291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpOyB9CisKKyAgICBjb25zdCBTdHJp
bmcmIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRT
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikg
eyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
Zmllcik7IH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgdWludDY0X3QgZGVmYXVsdENhY2hlU3Rv
cmFnZVBlck9yaWdpblF1b3RhID0gNTAgKiAxMDI0ICogMTAyNDsKKworcHJpdmF0ZToKKyAgICBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCisgICAgU3RyaW5nIG1fY2FjaGVTdG9y
YWdlRGlyZWN0b3J5OworICAgIHVpbnQ2NF90IG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEg
eyBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgfTsKKyAgICBTdHJpbmcgbV9uZXR3
b3JrQ2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
OworICAgIAorICAgIFN0cmluZyBtX3dlYlN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1f
bWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeTsKKyAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5Owor
ICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
OworICAgIFN0cmluZyBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBT
dHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2ph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2Nvb2tpZVN0b3Jh
Z2VGaWxlOworICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsK
KyAgICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7Cit9Owor
Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAy
Mzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgICAgICBtX2JvdW5kSW50
ZXJmYWNlSWRlbnRpZmllciwKICAgICAgICAgbV9hbGxvd3NDZWxsdWxhckFjY2VzcywKICAgICAg
ICAgbV9wcm94eUNvbmZpZ3VyYXRpb24sCi0gICAgICAgIG1fY29uZmlndXJhdGlvbi5zb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIsCi0gICAgICAgIG1fY29uZmlndXJhdGlvbi5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsCisgICAgICAgIG1fY29uZmlndXJhdGlv
bi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCksCisgICAgICAgIG1fY29uZmln
dXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCksCiAgICAgICAg
IHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uLAogICAgICAgICBTZWNvbmRzIHsgW2RlZmF1bHRz
IGludGVnZXJGb3JLZXk6V2ViS2l0TmV0d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29u
ZHNEZWZhdWx0c0tleV0gLyAxMDAwLiB9CiAgICAgfTsKQEAgLTg5LDggKzg5LDggQEAgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgIH0KIAogICAgIHBhcmFtZXRl
cnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIgPSBtX3VpUHJvY2Vzc0Nvb2tpZVN0
b3JhZ2VJZGVudGlmaWVyOwotICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi5zb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9j
b25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICBw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigpOworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+c291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CiAKICAgICBwYXJhbWV0ZXJzLnBlbmRp
bmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tpZXMpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViSW5zcGVjdG9yUHJveHlXUEUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJJbnNwZWN0b3JQcm94eVdQRS5j
cHAJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJJ
bnNwZWN0b3JQcm94eVdQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2hvd0NlcnRpZmljYXRl
KGNvbnN0IENlcnRpZmljYXRlSW5mbyYpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0
MzIsNiArMzQzMiw5IEBACiAJCTVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93
bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVuZGluZ0Rvd25sb2Fk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDczMjEwMDlFNzk0
OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tE
ZXByZWNhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDM0FFQThFMUZFMUYx
REYwMDIzMThEMyAvKiBXZWJzaXRlUG9saWNpZXNEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzQ2QzBBQzIxQjcxOThCMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QzQ2QzBBRDIxQjcxOThDMDBCQzU5OTEgLyogV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0
NkMwQUUyMUI3MUFFMjAwQkM1OTkxIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzRCOUQ4QTIxMEE4QzQ2MDA4RjE0RDEgLyogVW5kb09yUmVkby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvT3JSZWRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNjJGREY4MUVGQzI2M0MwMENFMDcyRSAvKiBXS1VSTFNjaGVtZVRhc2tQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2Q0U2RDAxRjU5QkM0NjAwMDdDNkNCIC8qIFBhZ2VDbGll
bnRJbXBsQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
YWdlQ2xpZW50SW1wbENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg1
NSw2ICs0ODU4LDggQEAKIAkJCQkxQTQ4MzJDRjFBOUJEODIxMDA4QjRERkUgLyogV2Vic2l0ZURh
dGFSZWNvcmQuaCAqLywKIAkJCQkxQTUzQzJBNDFBMzI1NjlGMDA0RThDNzAgLyogV2Vic2l0ZURh
dGFTdG9yZS5jcHAgKi8sCiAJCQkJMUE1M0MyQTUxQTMyNTY5RjAwNEU4QzcwIC8qIFdlYnNpdGVE
YXRhU3RvcmUuaCAqLywKKwkJCQk1QzQ2QzBBQzIxQjcxOThCMDBCQzU5OTEgLyogV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwICovLAorCQkJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5
MSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBXZWJzaXRlRGF0YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02MDUyLDYgKzYw
NTcsNyBAQAogCQkJCTFBRTI4NjdGMUM3RjkyQkYwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNp
emVJbnRlcm5hbC5oICovLAogCQkJCTUxMjBDODMzMUU1QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTUxMjBDODM0MUU1QjcxNTcwMDI1
QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk1QzQ2
QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oICovLAogCQkJCTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRl
UG9saWNpZXMuaCAqLywKIAkJCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0
ZVBvbGljaWVzLm1tICovLAogCQkJCTVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXNJbnRlcm5hbC5oICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356616</attachid>
            <date>2018-12-05 10:19:37 -0800</date>
            <delta_ts>2018-12-05 10:39:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192380-20181205101936.patch</filename>
            <type>text/plain</type>
            <size>89983</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBAQAorMjAxOC0xMi0wNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYSBwcm9wZXIgQVBJIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIGltbWVkaWF0ZSBmdXR1
cmUgSSdsbCBuZWVkIHRvIGFkZCB0aGluZ3MgdG8gX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uCisgICAgICAgIEluc3RlYWQgb2YgbWFraW5nIGl2YXJzLCBzZXR0aW5nIHRoZW0sIGNv
cHlpbmcgdGhlbSB0byBhIGxvY2FsIG9iamVjdCwgbWFrZSB0aGlzIGEgd3JhcHBlciBvZiBhbiBB
UEk6Ok9iamVjdAorICAgICAgICBsaWtlIGFsbCBvdXIgb3RoZXIgT2JqQyBBUEkgb2JqZWN0cyBh
cmUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAoQVBJOjpP
YmplY3Q6OndyYXBwZXIgY29uc3QpOgorICAgICAgICAoQVBJOjpPYmplY3Q6OndyYXBwZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChB
UEk6Ok9iamVjdDo6cmVmIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpkZXJlZiBjb25z
dCk6CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKEFQSTo6T2Jq
ZWN0OjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpPYmplY3Q6OmRlcmVmKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeSk6CisgICAgICAgIChBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9pbml0V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbToK
KyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gX3dlYlN0b3JhZ2VE
aXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
X3NldFdlYlN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAgICAo
LVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBfc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9jb29raWVTdG9yYWdlRmlsZV0p
OgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfc2V0Q29va2ll
U3RvcmFnZUZpbGU6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5Ol0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBf
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIF9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIF9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IF9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5Ol0pOgorICAgICAgICAoLVtf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBfYXBpT2JqZWN0XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXRyaWV2
ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3Rl
cmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmll
c0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb246OkNvbmZpZ3Vy
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlU3Rv
cmFnZVBlck9yaWdpblF1b3RhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6c2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkTWVkaWFDYWNoZURp
cmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29s
dmVkTWVkaWFLZXlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6cmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZl
ZENvb2tpZVN0b3JhZ2VGaWxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VQZXJP
cmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNl
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6bWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRNZWRpYUNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246
Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjp3
ZWJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OnNldFdlYlN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6aW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldExvY2FsU3RvcmFnZURp
cmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb29raWVTdG9yYWdlRmlsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpzZXRDb29raWVTdG9yYWdlRmlsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6bmV0d29ya0NhY2hlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb246OmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0QXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb246OnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxOC0xMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBzb3VyY2UgYXBwbGljYXRpb24gaWRlbnRpZmllcnMgZnJvbSBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwpJbmRleDogU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lv
biAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0zOTYsNiArMzk2LDcgQEAgVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
cwogCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKIAogV2ViUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2
ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLAogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9y
ZSwKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFdlYnNp
dGVQb2xpY2llcywKICAgICAgICAgV2luZG93RmVhdHVyZXMsCiAKQEAgLTIxNSwxMCArMjE2LDEw
IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIE5TT2JqZWN0ICp3cmFwcGVyKCkgeyBy
ZXR1cm4gbV93cmFwcGVyOyB9CisgICAgTlNPYmplY3QgKndyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX3dyYXBwZXI7IH0KIAotICAgIHZvaWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOworICAg
IHZvaWQgcmVmKCkgY29uc3Q7CisgICAgdm9pZCBkZXJlZigpIGNvbnN0OwogI2VuZGlmIC8vIERF
TEVHQVRFX1JFRl9DT1VOVElOR19UT19DT0NPQQogCiAgICAgc3RhdGljIHZvaWQqIHdyYXAoQVBJ
OjpPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0J
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQAogI2ltcG9ydCAiX1dLVXNlcklu
aXRpYXRlZEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKKyNpbXBvcnQg
Il9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9X
S1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgiCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCkBAIC05NCwxMiArOTUsMTIgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0
cmFTcGFjZUZvcgogCiBuYW1lc3BhY2UgQVBJIHsKIAotdm9pZCBPYmplY3Q6OnJlZigpCit2b2lk
IE9iamVjdDo6cmVmKCkgY29uc3QKIHsKICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVm
KXdyYXBwZXIoKSk7CiB9CiAKLXZvaWQgT2JqZWN0OjpkZXJlZigpCit2b2lkIE9iamVjdDo6ZGVy
ZWYoKSBjb25zdAogewogICAgIENGUmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIo
KSk7CiB9CkBAIC0zMzYsNiArMzM3LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVf
dCBzaXplLCBUeXAKICAgICBjYXNlIFR5cGU6OldlYnNpdGVEYXRhU3RvcmU6CiAgICAgICAgIHdy
YXBwZXIgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CisgICAg
ICAgIAorICAgIGNhc2UgVHlwZTo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246CisgICAg
ICAgIHdyYXBwZXIgPSBbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdOwor
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6V2Vic2l0ZVBvbGljaWVzOgogICAgICAg
ICB3cmFwcGVyID0gW19XS1dlYnNpdGVQb2xpY2llcyBhbGxvY107CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5OSwyMSArMTk5LDIxIEBAIGNvbnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQ
cm9jZXMKICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xzKCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24p
CitzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBsZWdhY3lXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbihBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKQogewotICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmNhY2hl
U3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmln
dXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3Vy
YXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShTdHJpbmcoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmco
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUoKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3Rvcnko
U3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsK
KyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKSk7Cisg
ICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShTdHJp
bmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJp
bmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAg
Y29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5n
KHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpKSk7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KQEAgLTExNjcsNyArMTE2Nyw3
IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7Cisg
ICAgICAgIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKIAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVk
U2VydmljZVdvcmtlcnMuZW5zdXJlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IFsmXSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNr
Z3JvdW5kIHRocmVhZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzg4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjAgKzQ3LDIwIEBAIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
IH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQor
UmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpj
cmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29uZmlndXJhdGlvbikKIHsKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwog
Ci0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRp
b24tPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAg
ICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRp
b24ubmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNo
ZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsKKyAg
ICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25m
aWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9u
LT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25m
aWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRp
b24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNh
Y2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7
CiAgICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1
cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0
aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
CisgICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9u
LT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzg4ODYpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGZpbmFsIDogcAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKLSAgICBzdGF0aWMgUmVmPFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYpOworICAg
IHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiYpOwogCiAgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZp
c2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YnNpdGVEYXRhU3RvcmUpOwogfQogCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFT
dG9yZTo6Y3JlYXRlTGVnYWN5KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uKQorUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZUxlZ2FjeShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiBjb25maWd1cmF0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRh
U3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkpOwogfQpAQCAtNzQsNyArNzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRl
RGF0YVN0b3JlKCkKIHsKIH0KIAotV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9y
ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwg
c2Vzc2lvbklEKSkKIHsKIH0KQEAgLTEzMCwxOSArMTMwLDE5IEBAIFdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRKYXYKIH0KICNlbmRpZgogCi1XZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKQorUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0
aW9uKCkKIHsKLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbiA9IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGNv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwotICAgIGNv
bmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9
IGxlZ2FjeURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmln
dXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSBsZWdhY3lEZWZhdWx0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoIkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2FjeURl
ZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
bGVnYWN5RGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGxlZ2FjeURlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkobGVnYWN5RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShsZWdhY3lEZWZhdWx0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7CiAgICAgCiAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRh
U3RvcmVGb3JUZXN0aW5nKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNy
ZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGNyZWF0ZUxlZ2FjeShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOworICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTGVnYWN5KFJlZjxX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmKTsKIAotICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9u
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIGJvb2wgaXNQZXJzaXN0ZW50
KCk7CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKLSAgICBz
dGF0aWMgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwogCiAg
ICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0
cmluZyBsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBsZWdhY3lEZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsK
IAotICAgIHN0YXRpYyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVn
YWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGxlZ2FjeURlZmF1bHREYXRhU3RvcmVD
b25maWd1cmF0aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3Rv
cnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzAyLDI0ICszMDIsMjQgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
d2Vic2l0ZURhdAogICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVw
cmVzZW50YXRpb247CiB9CiAKLVdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlv
biBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCitSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQogewotICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwog
Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSAiRmlsZXMiOwotICAgIGNvbmZpZ3VyYXRp
b24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
OwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9y
eSA9IGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lKCJGaWxlcyIpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFn
ZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVs
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAg
ICAgCi0gICAgY29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9
IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9u
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTcsMjUgKzE5NywyNSBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmln
dXJhdGlvbjooCiAgICAgYXV0byBjb25maWcgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CiAKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2Vi
U3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgY29uZmlnLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9
IGNvbmZpZ3VyYXRpb24uX3dlYlN0b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmln
LT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5fd2ViU3RvcmFnZURpcmVj
dG9yeS5wYXRoKTsKICAgICBpZiAoY29uZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkpCi0gICAgICAgIGNvbmZpZy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRp
b24uX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkucGF0aCk7CiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KQotICAgICAgICBjb25maWcuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBjb25maWd1
cmF0aW9uLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5wYXRoOworICAgICAgICBjb25maWct
PnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24uX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5LnBhdGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jb29raWVTdG9y
YWdlRmlsZSkKLSAgICAgICAgY29uZmlnLmNvb2tpZVN0b3JhZ2VGaWxlID0gY29uZmlndXJhdGlv
bi5fY29va2llU3RvcmFnZUZpbGUucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRDb29raWVTdG9y
YWdlRmlsZShjb25maWd1cmF0aW9uLl9jb29raWVTdG9yYWdlRmlsZS5wYXRoKTsKICAgICBpZiAo
Y29uZmlndXJhdGlvbi5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKLSAgICAgICAg
Y29uZmlnLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLl9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBhdGg7CisgICAgICAgIGNvbmZpZy0+c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LnBhdGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZy5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnkg
PSBjb25maWd1cmF0aW9uLl9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29u
ZmlnLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5fY2FjaGVTdG9yYWdl
RGlyZWN0b3J5LnBhdGgpOwogICAgIGlmIChjb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KQotICAgICAgICBjb25maWcuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkucGF0aDsKKyAgICAgICAgY29uZmlnLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkucGF0aCk7CiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKQotICAgICAgICBjb25maWcuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyID0gY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7
CisgICAgICAgIGNvbmZpZy0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNv
bmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBpZiAo
Y29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCi0gICAg
ICAgIGNvbmZpZy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBjb25maWd1
cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKKyAgICAgICAgY29u
ZmlnLT5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uZmlndXJhdGlv
bi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIGNvbmZp
ZywgUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKKyAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2Vs
ZiwgV1RGTW92ZShjb25maWcpLCBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vz
c2lvbklEKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1w
b3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAKICNpZiBX
S19BUElfRU5BQkxFRAogCkBAIC0zNiw1NCArMzYsNDQgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxB
cmd1bWVudChOU1VSTCAqdXJsKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCB1cmxdOwog
fQogCi1AaW1wbGVtZW50YXRpb24gX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gewot
ICAgIFJldGFpblB0cjxOU1VSTD4gX3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWlu
UHRyPE5TVVJMPiBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRy
PE5TVVJMPiBfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJM
PiBfY29va2llU3RvcmFnZUZpbGVVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeVVSTDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9jYWNoZVN0
b3JhZ2VEaXJlY3RvcnlVUkw7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeVVSTDsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9zb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwotfQorQGltcGxlbWVudGF0aW9uIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCiAKIC0gKE5TVVJMICopX3dlYlN0b3JhZ2VE
aXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYlN0b3JhZ2VEaXJlY3RvcnlVUkwuZ2V0KCk7Cisg
ICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPndlYlN0b3Jh
Z2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9zZXRXZWJTdG9y
YWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsK
LSAgICBfd2ViU3RvcmFnZURpcmVjdG9yeVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAg
X2NvbmZpZ3VyYXRpb24tPnNldFdlYlN0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCiAt
IChOU1VSTCAqKV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeQogewotICAgIHJldHVybiBfaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkg
aXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3Rvcnk6KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOwotICAgIF9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAg
X2NvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHVybC5wYXRoKTsK
IH0KIAogLSAoTlNVUkwgKilfd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5VVJMLmdldCgpOworICAgIHJldHVybiBbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGlz
RGlyZWN0b3J5OllFU107CiB9CiAKIC0gKHZvaWQpX3NldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
OihOU1VSTCAqKXVybAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnlVUkwgPSBhZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKE5T
VVJMICopX2Nvb2tpZVN0b3JhZ2VGaWxlCiB7Ci0gICAgcmV0dXJuIF9jb29raWVTdG9yYWdlRmls
ZVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJh
dGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSBpc0RpcmVjdG9yeTpOT107CiB9CiAKIC0gKHZvaWQp
X3NldENvb2tpZVN0b3JhZ2VGaWxlOihOU1VSTCAqKXVybApAQCAtOTIsNjAgKzgyLDY1IEBAIC0g
KHZvaWQpX3NldENvb2tpZVN0b3JhZ2VGaWxlOihOU1VSTCAqKXUKICAgICBpZiAoW3VybCBoYXNE
aXJlY3RvcnlQYXRoXSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3Vt
ZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBjb29raWUgc3RvcmFnZSBwYXRoIG11c3QgcG9pbnQg
dG8gYSBmaWxlLCBub3QgYSBkaXJlY3RvcnkuIl07CiAKLSAgICBfY29va2llU3RvcmFnZUZpbGVV
UkwgPSBhZG9wdE5TKFt1cmwgY29weV0pOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRDb29raWVT
dG9yYWdlRmlsZSh1cmwucGF0aCk7CiB9CiAKIC0gKE5TVVJMICopX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnlVUkwuZ2V0KCk7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZp
Z3VyYXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZ
RVNdOwogfQogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OihO
U1VSTCAqKXVybAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeVVSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2Nv
bmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkodXJsLnBhdGgp
OwogfQogCiAtIChOU1VSTCAqKV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4g
X2NhY2hlU3RvcmFnZURpcmVjdG9yeVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJl
Y3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1VS
TCAqKXVybAogewogICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKLSAgICBfY2FjaGVTdG9yYWdl
RGlyZWN0b3J5VVJMID0gYWRvcHROUyhbdXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+
c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAogLSAoTlNVUkwgKilfc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeQogewotICAgIHJldHVybiBfc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeVVSTC5nZXQoKTsKKyAgICByZXR1cm4gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KE5TVVJMICopdXJsCiB7CiAgICAgY2hlY2tVUkxBcmd1
bWVudCh1cmwpOwotICAgIF9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5VVJMID0g
YWRvcHROUyhbdXJsIGNvcHldKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKIC0gKHZvaWQpc2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAg
ICBfc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBf
Y29uZmlndXJhdGlvbi0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50
aWZpZXIpOwogfQogCiAtIChOU1N0cmluZyAqKXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcgogewotICAgIHJldHVybiBfc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmdl
dCgpOworICAgIHJldHVybiBfY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIuZ2V0KCk7CisgICAgcmV0dXJuIF9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClzZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIF9z
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9j
b25maWd1cmF0aW9uLT5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRl
bnRpZmllcik7Cit9CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJu
ICpfY29uZmlndXJhdGlvbjsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbkludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHsK
KyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjsKK307CisKK30KKworQGludGVyZmFjZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorQGVu
ZAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDIzODg1
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDE5ICsxNjMsMTkgQEAgV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3Jl
Q29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpD
b25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0
aW9uKCkKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkg
PSBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24u
bmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CiAKLSAgICBj
b25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSk7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0
ICszMTQsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KAogICAg
IH0KIH0KIAotc3RhdGljIGlubGluZSBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KGNvbnN0IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbGNvbmZpZ3Vy
YXJpb24pCitzdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oY29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmln
dXJhcmlvbikKIHsKLSAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247Ci0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJv
Y2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBj
b25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sY29uZmlndXJh
cmlvbi5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9j
ZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFy
aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25m
aWd1cmFyaW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFy
aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpKSk7CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl8KICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIH0KIAotV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9NQU5BR0VSLCBudWxscHRyKSk7CiAgICAgbWFu
YWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAtMzYxLDE2ICszNjEsMTYgQEAg
QVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YQogewogICAgIFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICgh
cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlv
bi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSAhcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAg
ICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJp
di0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KTsK
LSAgICAgICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gIXByaXYt
PmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9ICFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAg
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID8KKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAg
ICAgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkgPworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/CisgICAg
ICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNR
TERpcmVjdG9yeSA/CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwog
ICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpj
cmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzg4NTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAotV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uJiYpOworV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
KiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+JiYpOwogQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2
b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKFdlYktpdFdlYnNpdGVE
YXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwg
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZp
c2lvbiAyMzg4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTYgKzEyNSwxNiBAQCBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphCiAgICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkphdmFTY3JpcHRDb3Jl
RGVidWciKTsKIH0KIAotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK1JlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCiB7Ci0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAg
ICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGly
ZWN0b3J5ID0gZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29u
ZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0J
KHJldmlzaW9uIDIzODg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2NCw3ICsyNjQsNyBAQCBib29sIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
CiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50
c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgUEtDYW5NYWtlUGF5bWVu
dHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hh
bnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBtX3dlYlBhZ2VQcm94eS53ZWJzaXRlRGF0YVN0b3Jl
KCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwg
QmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50
cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRp
ZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZp
Z3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQ
dHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBM
T0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFp
biBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtNTA4LDExICs1MDgsMTEgQEAgUmV0YWluUHRyPFBL
UGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UgogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHVz
aW5nIHJlc3BvbmRzVG9TZWxlY3RvciwgdGhpcyBzaG91bGQgdXNlIGEgcHJvcGVyICNpZiB2ZXJz
aW9uIGNoZWNrLgogICAgIGF1dG8mIGNvbmZpZ3VyYXRpb24gPSB3ZWJQYWdlUHJveHkud2Vic2l0
ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKTsKIAotICAgIGlmICghY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXI6KV0pCi0gICAgICAgIFtyZXN1bHQgc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyOmNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyXTsK
KyAgICBpZiAoIWNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KV0pCisgICAgICAgIFtyZXN1bHQgc2V0
U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOmNvbmZpZ3VyYXRpb24uc291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCldOwogCi0gICAgaWYgKCFjb25maWd1cmF0aW9uLnNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcjopXSkKLSAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXI6Y29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXJdOworICAgIGlmICghY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjopXSkKKyAg
ICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6Y29u
ZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKV07CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUo
KS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldENU
RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNp
b24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVMKIAogICAgIGlmICghc3RvcmUpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vz
c1Byb3h5IGlzIHVuYWJsZSB0byByZXRyaWV2ZSBDYWNoZVN0b3JhZ2UgcGFyYW1ldGVycyBmcm9t
IHRoZSBnaXZlbiBzZXNzaW9uIElEICUiIFBSSXU2NCwgdGhpcywgc2Vzc2lvbklELnNlc3Npb25J
RCgpKTsKLSAgICAgICAgYXV0byBxdW90YSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9y
ZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUo
KS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOworICAgICAgICBhdXRvIHF1b3RhID0gbV9wcm9j
ZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkgPyBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3Rv
cmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgOiBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVT
dG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCwgcXVvdGEsIHsgfSwgeyB9IH0sIDApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIzODg1
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwyMCArODIsMTYgQEAgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNp
dGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklEKCkp
KTsKIH0KIAotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1Jl
ZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoUmVmPFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdU
Rk1vdmUoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkpOwogfQogCi1XZWJzaXRlRGF0YVN0b3Jl
OjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKCkKLSAgICA6IHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRl
RGF0YVN0b3JlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQorV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCi0gICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSkp
CisgICAgLCBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQor
ICAgICwgbV9jb25maWd1cmF0aW9uKG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jb3B5KCkpCisg
ICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUobV9jb25maWd1cmF0
aW9uLT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpCiAgICAgLCBtX2RldmljZUlkSGFzaFNhbHRT
dG9yYWdlKERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGUoKSkKICAgICAsIG1fcXVldWUo
V29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURhdGFTdG9yZSIpKQog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCkBAIC0xMTEsNyArMTA3LDggQEAgV2Vic2l0ZURhdGFTdG9y
ZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maQogCiBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0
YVN0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkKLSAgICAsIG1fY29uZmlndXJhdGlvbigpCisgICAgLCBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbihXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpCisgICAgLCBtX2Nv
bmZpZ3VyYXRpb24obV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNvcHkoKSkKICAgICAsIG1fcXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURhdGFTdG9yZSIp
KQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKG1h
a2VVbmlxdWVSZWY8QXV0aGVudGljYXRvck1hbmFnZXI+KCkpCkBAIC0xNjcsMjkgKzE2NCwyOSBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3RvcmllCiAgICAgbV9oYXNSZXNv
bHZlZERpcmVjdG9yaWVzID0gdHJ1ZTsKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3J5IHBhdGhz
LgotICAgIGlmICghbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwotICAg
IGlmICghbV9jb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLm1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGly
ZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpOwotICAgIGlmICghbV9jb25maWd1cmF0aW9uLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAg
ICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNp
b24obV9jb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOwot
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkgPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9j
b25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTsKLSAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpICYmIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHJlc29s
dmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGly
ZWN0b3J5KTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9y
eUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldE1lZGlh
Q2FjaGVEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRi
b3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKTsKKyAg
ICBpZiAoIW1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpKTsK
KyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc0Vt
cHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAg
ICBpZiAoIW1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKS5pc0Vt
cHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkp
KTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+c2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpLmlzRW1wdHko
KSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShyZXNvbHZlUGF0aEZv
clNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURp
cmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2FjaGVTdG9y
YWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lv
bihtX2NvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAKICAgICAvLyBS
ZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgotICAgIGlmICghbV9jb25maWd1cmF0
aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7Ci0gICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tp
ZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25m
aWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24t
PmNvb2tpZVN0b3JhZ2VGaWxlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRDb29raWVTdG9yYWdlRmlsZShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKKyAgICAgICAg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENvb2tpZVN0b3JhZ2VGaWxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+Y29va2llU3RvcmFnZUZpbGUoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKG1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKSkpKTsKICAgICB9CiB9CiAK
QEAgLTM5NSw3ICszOTIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFw
cGx5CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRk
UGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUNhY2hl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
bWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9y
eSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBNYWtlIEhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgcmV0dXJu
IGEgY29sbGVjdGlvbiBvZiBTZWN1cml0eU9yaWdpbkRhdGFzLgogICAgICAgICAgICAgSGFzaFNl
dDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zID0gV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5KTsK
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwpAQCAtNTAzLDcgKzUwMCw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkKICAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUp
ICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVu
ZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9u
cywgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewor
ICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCku
aXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUg
PSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBh
dXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUpOwogCiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTUy
Nyw3ICs1MjQsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5CiAg
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNl
cykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQ
ZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbd2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnku
aXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0g
ewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyV2l0aERhdGFiYXNlUGF0aCh3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSktPm9yaWdpbnMo
KTsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdh
dG9yLCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTU0MSw3ICs1MzgsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5CiAgICAgaWYgKGRhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lZGlhS2V5cykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAotICAgICAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRv
IG9yaWdpbnMgPSBtZWRpYUtleU9yaWdpbnMobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7CiAK
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9y
LCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKV0oKSBtdXRhYmxlIHsKQEAgLTc0MCw3ICs3Mzcs
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNr
Q2FjaGUpKSB7CiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNr
KCk7Ci0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRD
b3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
bW9kaWZpZWRTaW5jZSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsK
ICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZSht
ZWRpYUNhY2hlRGlyZWN0b3J5LCBtb2RpZmllZFNpbmNlKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0g
ewpAQCAtODI2LDcgKzgyMyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShP
cHRpb24KICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGUpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKLSAgICAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24uYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRl
ZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29u
ZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3Rv
cmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CiAKICAgICAgICAgICAgIHN0b3JhZ2UtPmRlbGV0ZUFsbENhY2hlcygpOwpAQCAtODQwLDcg
KzgzNyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICAgICBp
ZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzKSAm
JiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwogCi0gICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc29s
YXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBtb2RpZmllZFNpbmNlXSB7CisgICAgICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tB
Z2dyZWdhdG9yLCBtb2RpZmllZFNpbmNlXSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KS0+ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlKTsKIAogICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKQEAg
LTg1Miw3ICs4NDksNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9u
CiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lZGlhS2V5cykg
JiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5k
aW5nQ2FsbGJhY2soKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX2Nv
bmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwg
Y2FsbGJhY2tBZ2dyZWdhdG9yLCBtb2RpZmllZFNpbmNlXSB7CiAgICAgICAgICAgICByZW1vdmVN
ZWRpYUtleXMobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgbW9kaWZpZWRTaW5jZSk7CiAKICAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
CkBAIC0xMDA2LDcgKzEwMDMsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
T3B0aW9uCiAgICAgICAgIAogI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdn
cmVnYXRvcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUo
b3JpZ2lucyksIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBNb3ZlIFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZyB0byBT
ZWN1cml0eU9yaWdpbkRhdGEgYW5kCiAgICAgICAgICAgICAvLyBtYWtlIEhUTUxNZWRpYUVsZW1l
bnQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMgdGFrZSBTZWN1cml0eU9yaWdpbkRhdGEuCkBA
IC0xMTEzLDcgKzExMTAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0
aW9uCiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdD
YWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUo
b3JpZ2lucyksIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24uYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdp
bnMpLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCkBAIC0xMTMzLDcgKzExMzAsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIGNhbGxiYWNrQWdncmVnYXRvciwg
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29y
aWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
Lmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgICAgICBhdXRvIGRhdGFiYXNlVHJhY2tlciA9IFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpOwogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5z
KQogICAgICAgICAgICAgICAgIGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbik7
CkBAIC0xMTUxLDcgKzExNDgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
T3B0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdp
bnMpXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkuaXNvbGF0
ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyld
IHsKIAogICAgICAgICAgICAgcmVtb3ZlTWVkaWFLZXlzKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksIG9yaWdpbnMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMzg4ODYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2
ZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgpAQCAtODAsMzIg
KzgxLDggQEAgc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIFdlYlByb2Nl
c3NMaWZldGltZU9ic2VydmVyLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CiBwdWJsaWM6Ci0gICAg
Y29uc3RleHByIHN0YXRpYyB1aW50NjRfdCBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVv
dGEgPSA1MCAqIDEwMjQgKiAxMDI0OwotCi0gICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewotICAg
ICAgICBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgICAgICB1aW50NjRfdCBjYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB7IGRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSB9OwotICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJp
bmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGFwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0KLSAgICAgICAgU3RyaW5nIG1lZGlhQ2Fj
aGVEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsK
LSAgICAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7Ci0gICAg
ICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7Ci0gICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0g
ICAgICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwotICAgICAgICBT
dHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBj
b29raWVTdG9yYWdlRmlsZTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcjsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllcjsKLQotICAgICAgICBleHBsaWNpdCBDb25maWd1cmF0aW9uKCk7Ci0gICAgfTsKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKLSAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShDb25maWd1cmF0aW9uLCBQQUw6
OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVm
PFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAg
dmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3Rv
cmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25JRChQQUw6OlNlc3Npb25J
RCk7CkBAIC0xMTksMTIgKzk2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAg
ICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOyB9Ci0gICAg
dm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IHF1b3RhOyB9
Ci0gICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3Rv
cnkpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24uc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0
b3J5KTsgfQorICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZVBlck9yaWdpblF1
b3RhKCk7IH0KKyAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHVpbnQ2NF90
IHF1b3RhKSB7IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YShxdW90YSk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKTsgfQorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KFdURk1vdmUoZGlyZWN0b3J5KSk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29u
ZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOyB9CisgICAg
dm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVj
dG9yeSkgeyBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeShXVEZNb3ZlKGRpcmVjdG9yeSkpOyB9CiAKICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0xNTMsMTUgKzEzMCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzb2x2ZURpcmVjdG9y
aWVzSWZOZWNlc3NhcnkoKTsKLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVk
aWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
Lm1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFL
ZXlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWREYXRh
YmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7IH0KLSAgICBjb25z
dCBTdHJpbmcmIHJlc29sdmVkQ29va2llU3RvcmFnZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsgfQotICAgIGNv
bnN0IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsgfQorICAg
IGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsgfQorICAg
IGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOyB9
CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7
IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+amF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRD
b29raWVTdG9yYWdlRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5jb29raWVTdG9yYWdlRmlsZSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOyB9CiAKICAgICBTdG9yYWdlTWFuYWdlciog
c3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9CiAKQEAg
LTIwOSwxMSArMTg2LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29ya1By
b2Nlc3MoKTsKIAotICAgIGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSB7IHJl
dHVybiBtX2NvbmZpZ3VyYXRpb247IH0KKyAgICBjb25zdCBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbigpIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsg
fQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9u
SUQpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiwgUEFMOjpT
ZXNzaW9uSUQpOworICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNo
RGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCkBAIC0yNDYsOCArMjIzLDggQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCi0gICAg
Y29uc3QgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Ci0gICAgQ29uZmlndXJhdGlvbiBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbjsKKyAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uOworICAgIFJlZjxjb25zdCBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNSZXNv
bHZlZERpcmVjdG9yaWVzIHsgZmFsc2UgfTsKIAogICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlTWFu
YWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbigpCisgICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpKQoreworfQorCitSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkKK3sKKyAgICBhdXRvIGNvcHkgPSBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBjb3B5LT5tX2NhY2hl
U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OworICAgIGNv
cHktPm1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSB0aGlzLT5tX2NhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhOworICAgIGNvcHktPm1fbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+
bV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CisgICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OworICAgIGNvcHktPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHRoaXMtPm1fYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKKyAgICBjb3B5LT5tX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dlYlN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgY29weS0+bV9t
ZWRpYUNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OworICAgIGNv
cHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5OworICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9IHRoaXMtPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKKyAgICBj
b3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeTsKKyAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBjb3B5LT5tX2Rldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKKyAgICBjb3B5
LT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+bV9qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKKyAgICBjb3B5LT5tX2Nvb2tpZVN0b3JhZ2VGaWxlID0g
dGhpcy0+bV9jb29raWVTdG9yYWdlRmlsZTsKKyAgICBjb3B5LT5tX3NvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllciA9IHRoaXMtPm1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyOworICAgIGNvcHktPm1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0g
dGhpcy0+bV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7CisKKyAgICByZXR1
cm4gY29weTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik7IH0KKworICAgIFJlZjxXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4gY29weSgpOworCisgICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEoKSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOyB9Cisg
ICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyBt
X2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhID0gcXVvdGE7IH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV1RG
TW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9CisgICAgdm9p
ZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBTdHJp
bmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5
c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdU
Rk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgamF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYg
d2ViU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU3RvcmFnZURpcmVjdG9y
eTsgfQorICAgIHZvaWQgc2V0V2ViU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3Rvcnkp
IHsgbV93ZWJTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBj
b25zdCBTdHJpbmcmIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGly
ZWN0b3J5OyB9CisgICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBk
aXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5
KTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgY29va2ll
U3RvcmFnZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVN0b3JhZ2VGaWxlOyB9CisgICAg
dm9pZCBzZXRDb29raWVTdG9yYWdlRmlsZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9jb29raWVT
dG9yYWdlRmlsZSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKKyAgICBjb25zdCBT
dHJpbmcmIG5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0Nh
Y2hlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3Rv
cnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2NhY2hlU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQorICAgIHZvaWQg
c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gV1RG
TW92ZShkaXJlY3RvcnkpOyB9CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KKyAgICAKKyAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3Nv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0K
KworICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7
IH0KKyAgICB2b2lkIHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihTdHJp
bmcmJiBpZGVudGlmaWVyKSB7IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRf
dCBkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSA1MCAqIDEwMjQgKiAxMDI0Owor
Citwcml2YXRlOgorICAgIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKKyAgICBT
dHJpbmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgdWludDY0X3QgbV9jYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSB7IGRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB9Owor
ICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWU7CisgICAgU3RyaW5nIG1fd2ViU3RvcmFnZURpcmVjdG9yeTsKKyAg
ICBTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgU3Ry
aW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5OworICAgIFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAg
U3RyaW5nIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1f
Y29va2llU3RvcmFnZUZpbGU7CisgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyOworICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmllcjsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHJldmlzaW9uIDIzODg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsOCAr
NzMsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgICAg
IG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyLAogICAgICAgICBtX2FsbG93c0NlbGx1bGFyQWNj
ZXNzLAogICAgICAgICBtX3Byb3h5Q29uZmlndXJhdGlvbiwKLSAgICAgICAgbV9jb25maWd1cmF0
aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwKLSAgICAgICAgbV9jb25maWd1
cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwKKyAgICAgICAgbV9j
b25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSwKKyAgICAg
ICAgbV9jb25maWd1cmF0aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KSwKICAgICAgICAgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24sCiAgICAgICAgIFNlY29uZHMg
eyBbZGVmYXVsdHMgaW50ZWdlckZvcktleTpXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5j
eU1pbGxpc2Vjb25kc0RlZmF1bHRzS2V5XSAvIDEwMDAuIH0KICAgICB9OwpAQCAtODksOCArODks
OCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgfQogCiAg
ICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciA9IG1fdWlQcm9j
ZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gbV9jb25maWd1
cmF0aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKLSAgICBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyOworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25maWd1cmF0
aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIAogICAgIHBhcmFt
ZXRlcnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJJbnNwZWN0b3JQcm94eVdQRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkluc3BlY3Rv
clByb3h5V1BFLmNwcAkocmV2aXNpb24gMjM4ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd3BlL1dlYkluc3BlY3RvclByb3h5V1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TaG93
Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJikKK3ZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM4ODU2KQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzQzMiw2ICszNDMyLDkgQEAKIAkJNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8q
IFBlbmRpbmdEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5k
aW5nRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzNTlDMEMyMTU0
NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMz
QUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFDMjFCNzE5OEIwMEJDNTk5MSAvKiBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDNEI5RDhBMjEwQThDNDYwMDhGMTREMSAvKiBVbmRvT3JSZWRvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9PclJlZG8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2MkZERjgxRUZDMjYzQzAwQ0UwNzJFIC8qIFdLVVJMU2No
ZW1lVGFza1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZDRTZEMDFGNTlCQzQ2MDAwN0M2Q0Ig
LyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00ODU1LDYgKzQ4NTgsOCBAQAogCQkJCTFBNDgzMkNGMUE5QkQ4MjEwMDhCNERGRSAv
KiBXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBNTNDMkE0MUEzMjU2OUYwMDRFOEM3MCAv
KiBXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTUzQzJBNTFBMzI1NjlGMDA0RThDNzAg
LyogV2Vic2l0ZURhdGFTdG9yZS5oICovLAorCQkJCTVDNDZDMEFDMjFCNzE5OEIwMEJDNTk5MSAv
KiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJNUM0NkMwQUQyMUI3
MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFdlYnNpdGVEYXRhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTYwNTIsNiArNjA1Nyw3IEBACiAJCQkJMUFFMjg2N0YxQzdGOTJCRjAwNjlBQzRGIC8qIF9XS1dl
YnNpdGVEYXRhU2l6ZUludGVybmFsLmggKi8sCiAJCQkJNTEyMEM4MzMxRTVCNzE1NzAwMjVCMjUw
IC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTEyMEM4MzQx
RTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tICov
LAorCQkJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJNUNCMjM3ODkxREYwREQ0MzAwMTE3QUEzIC8q
IF9XS1dlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTVDQjIzNzhBMURGMERENDMwMDExN0FBMyAv
KiBfV0tXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEz
IC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8sCg==
</data>
<flag name="review"
          id="373577"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>