<?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>202028</bug_id>
          
          <creation_ts>2019-09-19 22:22:49 -0700</creation_ts>
          <short_desc>Remove unused storage paths on APIProcessPoolConfiguration</short_desc>
          <delta_ts>2019-09-20 13:13:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572642</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 22:22:49 -0700</bug_when>
    <thetext>Remove unused storage paths on APIProcessPoolConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572644</commentid>
    <comment_count>1</comment_count>
      <attachid>379205</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 22:24:32 -0700</bug_when>
    <thetext>Created attachment 379205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572651</commentid>
    <comment_count>2</comment_count>
      <attachid>379208</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 22:38:33 -0700</bug_when>
    <thetext>Created attachment 379208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572652</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-19 22:39:22 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572659</commentid>
    <comment_count>4</comment_count>
      <attachid>379211</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 22:48:58 -0700</bug_when>
    <thetext>Created attachment 379211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572668</commentid>
    <comment_count>5</comment_count>
      <attachid>379214</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 23:38:39 -0700</bug_when>
    <thetext>Created attachment 379214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572670</commentid>
    <comment_count>6</comment_count>
      <attachid>379216</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 23:54:04 -0700</bug_when>
    <thetext>Created attachment 379216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572671</commentid>
    <comment_count>7</comment_count>
      <attachid>379217</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 23:55:45 -0700</bug_when>
    <thetext>Created attachment 379217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572724</commentid>
    <comment_count>8</comment_count>
      <attachid>379232</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 05:24:11 -0700</bug_when>
    <thetext>Created attachment 379232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572752</commentid>
    <comment_count>9</comment_count>
      <attachid>379232</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-20 07:54:50 -0700</bug_when>
    <thetext>Comment on attachment 379232
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.h:173
&gt; +    const String&amp; storageDirectory() { return m_storageDirectory; }

Why isn’t this const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572834</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 13:12:07 -0700</bug_when>
    <thetext>It should be!
http://trac.webkit.org/r250143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572837</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-20 13:13:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55569594&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379205</attachid>
            <date>2019-09-19 22:24:32 -0700</date>
            <delta_ts>2019-09-19 22:38:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190919222432.patch</filename>
            <type>text/plain</type>
            <size>32520</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAwMTkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE1IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICBh
dXRvIGRlZmF1bHRTZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CisgICAgaWYgKCFkZWZhdWx0U2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gY2FjaGUgPSBkZWZhdWx0U2Vzc2lvbi0+Y2FjaGUoKTsKKyAgICBpZiAoIWNh
Y2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJl
ZVNwYWNlKGNhY2hlLT5zdG9yYWdlRGlyZWN0b3J5KCksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4m
Jik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQogICAgIGNvbnN0IE9wdGlvblNldDxOZXR3b3JrQ2Fj
aGU6OkNhY2hlT3B0aW9uPiYgY2FjaGVPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU9w
dGlvbnM7IH0KIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcikgY29uc3Q7CkBAIC00NzgsNyAr
NDc3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUmVmPE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBTdHJpbmcg
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9kZWwgeyBmYWxz
ZSB9OwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6RG9jdW1lbnRW
aWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1
MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLU5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCi17Ci19CitOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNh
Y2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb247Ci0gICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgZW5jb2RlciA8
PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5h
YmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CiAjZW5kaWYKQEAgLTEwMywx
NSArOTksNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKLQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6
RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uIHsgdHJ1ZSB9OwogCi0gICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsg
ZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5
ICs4Nyw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAg
ICAgICBpZiAobmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICAgICAgbmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gbmV0d29ya1Byb2Nlc3MuZGlza0NhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNOdWxs
KCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgICAg
IG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKG5ldHdvcmtQcm9jZXNzLCBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtQcm9jZXNzLmNhY2hlT3B0aW9ucygpLCBtX3Nlc3Np
b25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgUmVmUHRyPENhY2hlPiBDYWNoZTo6b3BlbihOZXR3b3JrUHJvY2VzcwogICAg
IGlmICghc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDYWNoZShuZXR3b3JrUHJvY2Vzcywgc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgp
LCBvcHRpb25zLCBzZXNzaW9uSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZShu
ZXR3b3JrUHJvY2VzcywgY2FjaGVQYXRoLCBzdG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlv
bnMsIHNlc3Npb25JRCkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
CkBAIC03OCwxMCArNzgsMTEgQEAgc3RhdGljIHZvaWQgZHVtcEZpbGVDaGFuZ2VkKENhY2hlKiBj
YWNoZQogfQogI2VuZGlmCiAKLUNhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4gb3B0
aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8
U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8Q2FjaGVPcHRpb24+IG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKHN0b3JhZ2UpKQog
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKKyAgICAsIG1fc3RvcmFnZURpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5KQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMSAr
MTcwLDEyIEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcygp
IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkoKSB7IHJldHVybiBtX3N0b3JhZ2VEaXJlY3Rvcnk7
IH0KIAogICAgIH5DYWNoZSgpOwogCiBwcml2YXRlOgotICAgIENhY2hlKE5ldHdvcmtQcm9jZXNz
JiwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICBDYWNoZShOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVj
dG9yeSwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIEtleSBtYWtlQ2FjaGVLZXkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV90
cmF2ZXJzZUNvdW50IHsgMCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAg
IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlVGVtcEJs
b2JEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAjZW5kaWYKLSAgICBtX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgX0NG
TmV0d29ya1NldEFUU0NvbnRleHQocGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dC5nZXQoKSk7
CiAKQEAgLTExNiwxMCArMTE1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTgogCiAgICAgQVNTRVJUKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsK
IAotICAgIGlmIChtX2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2NhY2hlT3B0aW9ucyA9
IHsgTmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIG1fY2Fj
aGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uOjpUZXN0aW5nTW9kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lv
biAyNTAwMTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwMiw5ICs1MDIsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNS
ZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURp
cmVjdG9yeSgpOwotICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0Nh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0Nh
Y2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01NDUsOSArNTQy
LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIC8vICoq
KioqKioqKgogICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0
cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1
bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQog
ICAgIC8vICoqKioqKioqKgotICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAgIHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIAog
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVT
eW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwpAQCAtNzY5LDExICs3NjQsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpy
ZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZlZFBhdGhz
LmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihpbmpl
Y3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0g
ICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9u
LT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFD
YWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5k
Ym94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9u
LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkpOwogCiAgICAgbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2Fu
ZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBh
dGhzKCkpCkBAIC04NTAsMzcgKzg0MCwyMyBAQCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJQcm9jZXNzCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlRGlyZWN0b3JpZXNJZk5l
Y2Vzc2FyeSgpOwogCiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGlm
IChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gd2Vic2l0ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCk7Ci0gICAgaWYgKGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUuaXNFbXB0eSgpKQotICAgICAgICBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCk7CiAKICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YVN0b3JlLnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBpZiAod2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICB3ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLQogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBpZiAoIXdlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgod2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgU3RyaW5nIG1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURp
cmVjdG9yeSgpOwotICAgIGlmIChtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAg
ICAgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0
b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgobWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRl
LCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBtZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFLZXlz
RGlyZWN0b3J5KCk7Ci0gICAgaWYgKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRp
YUtleVN0b3JhZ2VEaXJlY3Rvcnk7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1OSwxMiArNzU5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0cnVjdCBQYXRocyB7CiAgICAgICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBh
dGg7Ci0gICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgICAgICBT
dHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUNhY2hl
RGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAg
ICAgICBTdHJpbmcgdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwotICAgICAgICBTdHJpbmcg
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcAkocmV2aXNpb24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDU5
ICszNiwxNiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsKIH0KIAotUmVm
PFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29uZmlndXJhdGlvbikKLXsKLSAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwotCi0g
ICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0
aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgp
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdh
Y3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmln
dXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVn
YWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotCi0gICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247Ci19Ci0KLVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCkKLSAgICA6IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKQotICAgICwg
bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpCi0gICAg
LCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1faW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2RldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQot
ICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKSkKLXsKLX0KLQotUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjp+UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKLXsKLX0KK1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OwogCiBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQog
ewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+bV9jYWNoZU1v
ZGVsID0gdGhpcy0+bV9jYWNoZU1vZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5
ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZh
bGlkYXRpb25FbmFibGVkOwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2FwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1faW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBh
dGg7Ci0gICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNv
cHktPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnkg
PSB0aGlzLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
CiAgICAgY29weS0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fY2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMgPSB0aGlzLT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5t
X2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzID0gdGhpcy0+bV9hZGRpdGlvbmFsUmVh
ZEFjY2Vzc0FsbG93ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1
MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgQVBJ
IHsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpOwotICAgIHN0
YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoTGVnYWN5T3B0aW9u
cygpOwotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRo
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC03OSwz
OCArNzcsOSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KICAgICB2b2lkIHNldENhY2hlTW9kZWwoV2Vi
S2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwpIHsgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsg
fQogCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNl
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KLQotICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZURpcmVj
dG9yeTsgfQotICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBkaXNrQ2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVE
aXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRN
ZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5
KSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICAK
LSAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRC
dW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KICAgICB2
b2lkIHNldEluamVjdGVkQnVuZGxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5k
bGVQYXRoKSB7IG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoOyB9CiAK
LSAgICBjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldExvY2FsU3RvcmFn
ZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KSB7IG1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5KSB7IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gZGly
ZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9p
ZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsg
fQotICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmlu
ZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgPSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1fY2FjaGVQYXJ0
aXRpb25lZFVSTFNjaGVtZXM7IH0KICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hl
bWVzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykgeyBt
X2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RGTW92ZShjYWNoZVBhcnRpdGlvbmVkVVJM
U2NoZW1lcyk7IH0KIApAQCAtMTg4LDE3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
aXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1vZGVsOjpQcmltYXJ5
V2ViQnJvd3NlciB9OwogCi0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5OwotICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZTsKLSAgICBXVEY6OlN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6
OlN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0
aDsKLSAgICBXVEY6OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0
cmluZyBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmlu
ZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3Rvcnk7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2NhY2hlUGFydGl0aW9uZWRV
UkxTY2hlbWVzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9hbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6Q1N0cmluZz4gbV9hZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzExLDE4ICszMTEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0
U2V0UHJvcGVydHkoCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24m
IHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgY29uZmlndXJhdGlv
bi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1
cmFyaW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9u
LmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogc3Rh
dGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsK
ICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+Y29u
c3RydWN0ZWQob2JqZWN0KTsKQEAgLTMzNSwyMiArMzIzLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYkNvbnRleHRDb25zdHJ1Y3RlZCgKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRl
eHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7Ci0gICAgaWYgKHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdl
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlv
bi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5k
ZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAg
aWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCisgICAgICAgIHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJsb2Nh
bC1zdG9yYWdlLWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCks
IG51bGxwdHIpKTsKKworICAgIGlmICghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2Vw
aGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKQogICAgICAgICBjb25maWd1
cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3Rz
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBjb25maWd1cmF0aW9uLnNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGly
ZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAotICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURp
cmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
cml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNz
UG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7Ci0KLSAgICBpZiAo
IXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyID0gYWRvcHRHUmVmKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSh3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKSkpOwogICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdl
YmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29s
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29sKTsKQEAg
LTE0NzQsMTIgKzE0NTMsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVu
c2lvCiAgKgogICogRGVwcmVjYXRlZDogMi4xMC4gVXNlIHdlYmtpdF93ZWJfY29udGV4dF9uZXdf
d2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcigpIGluc3RlYWQuCiAgKi8KLXZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBjaGFyKiBkaXJlY3RvcnkpCit2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
ZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqKQogewot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7Ci0KLSAgICBjb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsK
KyAgICBnX3dhcm5pbmcoIndlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3Rv
cnkgaXMgZGVwcmVjYXRlZCBhbmQgZG9lcyBub3RoaW5nLCB1c2UgV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyIGluc3RlYWQiKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2
aXNpb24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NTQsNyArMTc1NCw3IEBAIEhh
c2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAgICBpZiAo
cHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykgewot
ICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
KCkpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24g
MjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3Jl
OjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIFN0cmluZyBtX25l
dHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5OwotICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWU7CisgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSB7ICJGaWxlcyJfcyB9OwogICAgIFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAg
U3RyaW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379208</attachid>
            <date>2019-09-19 22:38:33 -0700</date>
            <delta_ts>2019-09-19 22:48:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190919223832.patch</filename>
            <type>text/plain</type>
            <size>32603</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE1IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICBh
dXRvIGRlZmF1bHRTZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CisgICAgaWYgKCFkZWZhdWx0U2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gY2FjaGUgPSBkZWZhdWx0U2Vzc2lvbi0+Y2FjaGUoKTsKKyAgICBpZiAoIWNh
Y2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJl
ZVNwYWNlKGNhY2hlLT5zdG9yYWdlRGlyZWN0b3J5KCksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4m
Jik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQogICAgIGNvbnN0IE9wdGlvblNldDxOZXR3b3JrQ2Fj
aGU6OkNhY2hlT3B0aW9uPiYgY2FjaGVPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU9w
dGlvbnM7IH0KIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcikgY29uc3Q7CkBAIC00NzcsNyAr
NDc2LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUmVmPE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBTdHJpbmcg
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9kZWwgeyBmYWxz
ZSB9OwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6RG9jdW1lbnRW
aWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLU5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCi17Ci19CitOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNh
Y2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb247Ci0gICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgZW5jb2RlciA8
PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5h
YmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CiAjZW5kaWYKQEAgLTEwMywx
NSArOTksNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKLQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6
RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uIHsgdHJ1ZSB9OwogCi0gICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsg
ZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5
ICs4Nyw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAg
ICAgICBpZiAobmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICAgICAgbmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gbmV0d29ya1Byb2Nlc3MuZGlza0NhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNOdWxs
KCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgICAg
IG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKG5ldHdvcmtQcm9jZXNzLCBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtQcm9jZXNzLmNhY2hlT3B0aW9ucygpLCBtX3Nlc3Np
b25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgUmVmUHRyPENhY2hlPiBDYWNoZTo6b3BlbihOZXR3b3JrUHJvY2VzcwogICAg
IGlmICghc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDYWNoZShuZXR3b3JrUHJvY2Vzcywgc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgp
LCBvcHRpb25zLCBzZXNzaW9uSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZShu
ZXR3b3JrUHJvY2VzcywgY2FjaGVQYXRoLCBzdG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlv
bnMsIHNlc3Npb25JRCkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
CkBAIC03OCwxMCArNzgsMTEgQEAgc3RhdGljIHZvaWQgZHVtcEZpbGVDaGFuZ2VkKENhY2hlKiBj
YWNoZQogfQogI2VuZGlmCiAKLUNhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4gb3B0
aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8
U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8Q2FjaGVPcHRpb24+IG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKHN0b3JhZ2UpKQog
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKKyAgICAsIG1fc3RvcmFnZURpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5KQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMSAr
MTcwLDEyIEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcygp
IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkoKSB7IHJldHVybiBtX3N0b3JhZ2VEaXJlY3Rvcnk7
IH0KIAogICAgIH5DYWNoZSgpOwogCiBwcml2YXRlOgotICAgIENhY2hlKE5ldHdvcmtQcm9jZXNz
JiwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICBDYWNoZShOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVj
dG9yeSwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIEtleSBtYWtlQ2FjaGVLZXkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV90
cmF2ZXJzZUNvdW50IHsgMCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAg
IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlVGVtcEJs
b2JEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAjZW5kaWYKLSAgICBtX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgX0NG
TmV0d29ya1NldEFUU0NvbnRleHQocGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dC5nZXQoKSk7
CiAKQEAgLTExNiwxMCArMTE1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTgogCiAgICAgQVNTRVJUKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsK
IAotICAgIGlmIChtX2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2NhY2hlT3B0aW9ucyA9
IHsgTmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIG1fY2Fj
aGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uOjpUZXN0aW5nTW9kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwMiw5ICs1MDIsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNS
ZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURp
cmVjdG9yeSgpOwotICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0Nh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0Nh
Y2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01NDUsOSArNTQy
LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIC8vICoq
KioqKioqKgogICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0
cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1
bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQog
ICAgIC8vICoqKioqKioqKgotICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAgIHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIAog
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVT
eW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwpAQCAtNzY5LDExICs3NjQsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpy
ZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZlZFBhdGhz
LmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihpbmpl
Y3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0g
ICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9u
LT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFD
YWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5k
Ym94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9u
LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkpOwogCiAgICAgbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2Fu
ZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBh
dGhzKCkpCkBAIC04NTAsMzcgKzg0MCwyMyBAQCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJQcm9jZXNzCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlRGlyZWN0b3JpZXNJZk5l
Y2Vzc2FyeSgpOwogCiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGlm
IChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gd2Vic2l0ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCk7Ci0gICAgaWYgKGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUuaXNFbXB0eSgpKQotICAgICAgICBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCk7CiAKICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YVN0b3JlLnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBpZiAod2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICB3ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLQogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBpZiAoIXdlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgod2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgU3RyaW5nIG1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURp
cmVjdG9yeSgpOwotICAgIGlmIChtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAg
ICAgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0
b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgobWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRl
LCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBtZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFLZXlz
RGlyZWN0b3J5KCk7Ci0gICAgaWYgKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRp
YUtleVN0b3JhZ2VEaXJlY3Rvcnk7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2NCwxMiArNzY0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0cnVjdCBQYXRocyB7CiAgICAgICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBh
dGg7Ci0gICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgICAgICBT
dHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUNhY2hl
RGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAg
ICAgICBTdHJpbmcgdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwotICAgICAgICBTdHJpbmcg
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYw
ICszNiwxOCBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsKIH0KIAotUmVm
PFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29uZmlndXJhdGlvbikKLXsKLSAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwotCi0g
ICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlv
bi0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0
aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFD
YWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgp
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdh
Y3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmln
dXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVn
YWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQotUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVz
IikKLSAgICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkpCi0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246On5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotewotfQorUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OwogCiBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQog
ewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+bV9jYWNoZU1v
ZGVsID0gdGhpcy0+bV9jYWNoZU1vZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5
ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZh
bGlkYXRpb25FbmFibGVkOwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2FwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1faW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBh
dGg7CiAgICAgY29weS0+bV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIgPSB0aGlzLT5t
X2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGN1c3RvbUNsYXNzZXNGb3JQYXJh
bWV0ZXJDb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNv
ZGVyOyB9CiAgICAgdm9pZCBzZXRDdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIoVmVjdG9y
PFdURjo6U3RyaW5nPiYmIGNsYXNzZXNGb3JDb2RlcikgeyBtX2N1c3RvbUNsYXNzZXNGb3JQYXJh
bWV0ZXJDb2RlciA9IFdURk1vdmUoY2xhc3Nlc0ZvckNvZGVyKTsgfQogCkBAIC0xOTEsMTcgKzE2
MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyOwogICAgIFZlY3RvcjxX
VEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMxMSw2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25zdCBBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uKQotewot
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpj
cmVhdGUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmlu
Zyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBj
b25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmln
dXJhcmlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNl
dERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25m
aWd1cmFyaW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bv
b2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIHJldHVy
biBjb25maWd1cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJf
Y29udGV4dF9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAtMzM1LDIyICsz
MjMsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKAogCiAgICAg
V2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3Qp
OwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsK
LSAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpIHsK
LSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9h
cHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikK
KyAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9uZXcoImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSwgbnVsbHB0cikpOworCisgICAgaWYgKCF3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSkpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgfSBlbHNl
IGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICBjb25m
aWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRh
KCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShj
b25maWd1cmF0aW9uKTsKLQotICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQotICAg
ICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAgICAgcHJpdi0+cHJvY2Vzc1Bv
b2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0
b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOwogCiAgICAgd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
LCAqcHJpdi0+cHJvY2Vzc1Bvb2wpOwpAQCAtMTQ3NCwxMiArMTQ1Myw5IEBAIHZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW8KICAqCiAgKiBEZXByZWNhdGVkOiAyLjEwLiBV
c2Ugd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKCkgaW5z
dGVhZC4KICAqLwotdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0
b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGRpcmVjdG9yeSkKK3Zv
aWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJD
b250ZXh0KiwgY29uc3QgY2hhciopCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsK
LQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlz
a0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSksIG5l
dHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGdfd2FybmluZygid2Via2l0X3dlYl9jb250
ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSBpcyBkZXByZWNhdGVkIGFuZCBkb2VzIG5vdGhp
bmcsIHVzZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaW5zdGVhZCIpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBX
ZWJzaXRlRAogICAgIH0KIAogICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50
ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVX
aXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7CisgICAg
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQo
cHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3Blck9y
aWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRR
dW90YSgpIH07CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFN0cmlu
ZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CiAgICAgU3RyaW5nIG1f
bWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379211</attachid>
            <date>2019-09-19 22:48:58 -0700</date>
            <delta_ts>2019-09-19 23:38:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190919224858.patch</filename>
            <type>text/plain</type>
            <size>33665</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE1IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICBh
dXRvIGRlZmF1bHRTZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CisgICAgaWYgKCFkZWZhdWx0U2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gY2FjaGUgPSBkZWZhdWx0U2Vzc2lvbi0+Y2FjaGUoKTsKKyAgICBpZiAoIWNh
Y2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJl
ZVNwYWNlKGNhY2hlLT5zdG9yYWdlRGlyZWN0b3J5KCksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4m
Jik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQogICAgIGNvbnN0IE9wdGlvblNldDxOZXR3b3JrQ2Fj
aGU6OkNhY2hlT3B0aW9uPiYgY2FjaGVPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU9w
dGlvbnM7IH0KIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcikgY29uc3Q7CkBAIC00NzcsNyAr
NDc2LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUmVmPE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBTdHJpbmcg
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9kZWwgeyBmYWxz
ZSB9OwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6RG9jdW1lbnRW
aWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLU5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCi17Ci19CitOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNh
Y2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb247Ci0gICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgZW5jb2RlciA8
PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5h
YmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CiAjZW5kaWYKQEAgLTEwMywx
NSArOTksNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKLQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6
RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uIHsgdHJ1ZSB9OwogCi0gICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsg
ZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5
ICs4Nyw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAg
ICAgICBpZiAobmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICAgICAgbmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gbmV0d29ya1Byb2Nlc3MuZGlza0NhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNOdWxs
KCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgICAg
IG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKG5ldHdvcmtQcm9jZXNzLCBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtQcm9jZXNzLmNhY2hlT3B0aW9ucygpLCBtX3Nlc3Np
b25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgUmVmUHRyPENhY2hlPiBDYWNoZTo6b3BlbihOZXR3b3JrUHJvY2VzcwogICAg
IGlmICghc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDYWNoZShuZXR3b3JrUHJvY2Vzcywgc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgp
LCBvcHRpb25zLCBzZXNzaW9uSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZShu
ZXR3b3JrUHJvY2VzcywgY2FjaGVQYXRoLCBzdG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlv
bnMsIHNlc3Npb25JRCkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
CkBAIC03OCwxMCArNzgsMTEgQEAgc3RhdGljIHZvaWQgZHVtcEZpbGVDaGFuZ2VkKENhY2hlKiBj
YWNoZQogfQogI2VuZGlmCiAKLUNhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4gb3B0
aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8
U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8Q2FjaGVPcHRpb24+IG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKHN0b3JhZ2UpKQog
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKKyAgICAsIG1fc3RvcmFnZURpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5KQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMSAr
MTcwLDEyIEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcygp
IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkoKSB7IHJldHVybiBtX3N0b3JhZ2VEaXJlY3Rvcnk7
IH0KIAogICAgIH5DYWNoZSgpOwogCiBwcml2YXRlOgotICAgIENhY2hlKE5ldHdvcmtQcm9jZXNz
JiwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICBDYWNoZShOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVj
dG9yeSwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIEtleSBtYWtlQ2FjaGVLZXkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV90
cmF2ZXJzZUNvdW50IHsgMCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAg
IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlVGVtcEJs
b2JEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAjZW5kaWYKLSAgICBtX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgX0NG
TmV0d29ya1NldEFUU0NvbnRleHQocGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dC5nZXQoKSk7
CiAKQEAgLTExNiwxMCArMTE1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTgogCiAgICAgQVNTRVJUKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsK
IAotICAgIGlmIChtX2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2NhY2hlT3B0aW9ucyA9
IHsgTmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIG1fY2Fj
aGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uOjpUZXN0aW5nTW9kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNywxNCArMTI3LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTgogICAgIGlmIChwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MubW9kZSAhPSBTb3VwTmV0d29y
a1Byb3h5U2V0dGluZ3M6Ok1vZGU6OkRlZmF1bHQpCiAgICAgICAgIHNldE5ldHdvcmtQcm94eVNl
dHRpbmdzKHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyk7CiAKLSAgICBBU1NFUlQoIXBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7Ci0gICAgbV9kaXNrQ2FjaGVEaXJlY3Rv
cnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKLQogICAgIEdSZWZQdHI8R1Jlc29s
dmVyPiBjYWNoZWRSZXNvbHZlciA9IGFkb3B0R1JlZih3ZWJraXRDYWNoZWRSZXNvbHZlck5ldyhh
ZG9wdEdSZWYoZ19yZXNvbHZlcl9nZXRfZGVmYXVsdCgpKSkpOwogICAgIGdfcmVzb2x2ZXJfc2V0
X2RlZmF1bHQoY2FjaGVkUmVzb2x2ZXIuZ2V0KCkpOwogCi0gICAgU291cE5ldHdvcmtTZXNzaW9u
OjpjbGVhck9sZFNvdXBDYWNoZShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hl
RGlyZWN0b3J5KSk7Ci0KICAgICBtX2NhY2hlT3B0aW9ucyA9IHsgTmV0d29ya0NhY2hlOjpDYWNo
ZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVD
VUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
Miw5ICs1MDIsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAg
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmICgh
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01NDUsOSArNTQyLDcgQEAgTmV0d29ya1Byb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIC8vICoqKioqKioqKgogICAgIC8vIElNUE9S
VEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBk
YXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9t
IEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQogICAgIC8vICoqKioqKioqKgotICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwot
ICAgIGlmIChwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJz
KCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJz
KCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIAogICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUo
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJl
Y3RvcnkpOwpAQCAtNzY5LDExICs3NjQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
RGlkQ2FjaGVQYWdlCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94
RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9
IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0g
ICAgbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9y
eUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29s
dmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmln
dXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9y
eUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnkg
PSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbiht
X2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwogCiAgICAgbV9y
ZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJl
c2VydmVDYXBhY2l0eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFBhdGhzKCkuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3Vy
YXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCkBAIC04NTAsMzcgKzg0
MCwyMyBAQCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzCiAgICAgd2Vi
c2l0ZURhdGFTdG9yZS5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogCiAgICAgU3Ry
aW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChhcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1f
cmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBh
cHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0ZURhdGFTdG9y
ZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0gICAgaWYgKGFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0
aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAKICAgICBT
dHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBpZiAod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNF
bXB0eSgpKQotICAgICAgICB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRo
cy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIXdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgod2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3
ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmICht
ZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgbWVkaWFDYWNoZURpcmVjdG9y
eSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
aWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFDYWNoZURpcmVjdG9y
eSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBtZWRpYUNhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBtZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnkg
PSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCk7Ci0gICAgaWYg
KG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7
Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkV3JpdGUsIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2NCwxMiArNzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQYXRo
cyB7CiAgICAgICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGg7Ci0gICAgICAgIFN0cmluZyBh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBT
dHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgdWlQcm9jZXNz
QnVuZGxlUmVzb3VyY2VQYXRoOwotICAgICAgICBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgU3RyaW5nIGNvb2tpZVN0
b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjUw
MTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYwICszNiwxOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biYgbGVnYWN5Q29uZmlndXJhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+bV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9k
aXNrQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2Fj
eUNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24t
Pm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgp
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdh
Y3lDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpOworUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKLX0KLQotUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2FwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAgICAsIG1fZGlza0NhY2hl
RGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkK
LSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSgpKQotewotfQotCi1Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246On5Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKQotewotfQorUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OwogCiBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
PiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRo
aXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0gdGhpcy0+bV9jYWNoZU1v
ZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFi
bGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOwotICAg
IGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNh
Y2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0
aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1faW5qZWN0ZWRC
dW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgY29weS0+bV9jdXN0
b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIgPSB0aGlzLT5tX2N1c3RvbUNsYXNzZXNGb3JQYXJh
bWV0ZXJDb2RlcjsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7
Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBj
b3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+
bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAg
IGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMgPSB0aGlzLT5tX2FkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2
aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7
Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhMZWdh
Y3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBleHBsaWNpdCBQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
QEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVN
b2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVN
b2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNo
ZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotICAg
IHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQotCi0gICAgY29uc3Qg
V1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0Nh
Y2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRp
c2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVE
aXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsg
fQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0g
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBp
bmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsg
fQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmpl
Y3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBh
dGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0K
LQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsg
fQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rv
cnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0K
LSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiB3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2Vi
U1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGN1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyOyB9CiAgICAgdm9pZCBzZXRD
dXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNsYXNz
ZXNGb3JDb2RlcikgeyBtX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlciA9IFdURk1vdmUo
Y2xhc3Nlc0ZvckNvZGVyKTsgfQogCkBAIC0xOTEsMTcgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9Owog
ICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6
OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5Owot
ICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRC
dW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdU
Rjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY3VzdG9tQ2xh
c3Nlc0ZvclBhcmFtZXRlckNvZGVyOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBh
cnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2
YWxpZGF0ZWRVUkxTY2hlbWVzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMxMSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNv
bnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldl
YlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25zdCBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNv
bmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJh
dGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3Vy
YXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQot
CiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0
KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3Mp
LT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAtMzM1LDIyICszMjMsMTMgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKAogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRl
eHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKLSAgICBpZiAocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFs
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlv
bi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0
b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVj
dG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJl
Y3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1
cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsK
KyAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKKyAgICAgICAgcHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXco
ImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRh
dGEoKSwgbnVsbHB0cikpOworCisgICAgaWYgKCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
aXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpCiAgICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2hzdHNfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsK
LUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNx
bF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3Rv
cmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnBy
b2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKLQotICAg
IGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQotICAgICAgICBwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKHdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24pKSk7CiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldFByaW1hcnlEYXRhU3Rv
cmUod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpOwogCiAgICAgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vz
c1Bvb2wocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpLCAqcHJpdi0+cHJvY2Vzc1Bvb2wp
OwpAQCAtMTQ3NCwxMiArMTQ1Myw5IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJf
ZXh0ZW5zaW8KICAqCiAgKiBEZXByZWNhdGVkOiAyLjEwLiBVc2Ugd2Via2l0X3dlYl9jb250ZXh0
X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKCkgaW5zdGVhZC4KICAqLwotdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IGNoYXIqIGRpcmVjdG9yeSkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciop
CiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkp
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsKLQotICAgIGNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOworICAgIGdfd2FybmluZygid2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2Rp
cmVjdG9yeSBpcyBkZXByZWNhdGVkIGFuZCBkb2VzIG5vdGhpbmcsIHVzZSBXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIgaW5zdGVhZCIpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1NCw3ICsxNzU0LDcg
QEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRAogICAgIH0KIAogICAg
IGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50ICYmIGVuc3VyZUFQb29sRXhpc3Rz
KSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wg
PSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpj
cmVhdGUoKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZp
c2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2
LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YSB7IFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07CiAgICAgU3RyaW5n
IG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVE
aXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lIHsgIkZpbGVzIl9zIH07CiAgICAgU3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsK
ICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379214</attachid>
            <date>2019-09-19 23:38:39 -0700</date>
            <delta_ts>2019-09-19 23:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190919233838.patch</filename>
            <type>text/plain</type>
            <size>33438</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE1IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICBh
dXRvIGRlZmF1bHRTZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CisgICAgaWYgKCFkZWZhdWx0U2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gY2FjaGUgPSBkZWZhdWx0U2Vzc2lvbi0+Y2FjaGUoKTsKKyAgICBpZiAoIWNh
Y2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJl
ZVNwYWNlKGNhY2hlLT5zdG9yYWdlRGlyZWN0b3J5KCksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4m
Jik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYp
OwogCi0gICAgY29uc3QgU3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQogICAgIGNvbnN0IE9wdGlvblNldDxOZXR3b3JrQ2Fj
aGU6OkNhY2hlT3B0aW9uPiYgY2FjaGVPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU9w
dGlvbnM7IH0KIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcikgY29uc3Q7CkBAIC00NzcsNyAr
NDc2LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUmVmPE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBTdHJpbmcg
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9kZWwgeyBmYWxz
ZSB9OwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6RG9jdW1lbnRW
aWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLU5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCi17Ci19CitOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNh
Y2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb247Ci0gICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgZW5jb2RlciA8
PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5h
YmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CiAjZW5kaWYKQEAgLTEwMywx
NSArOTksNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKLQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6
RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uIHsgdHJ1ZSB9OwogCi0gICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsg
ZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5
ICs4Nyw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAg
ICAgICBpZiAobmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICAgICAgbmV0
d29ya0NhY2hlRGlyZWN0b3J5ID0gbmV0d29ya1Byb2Nlc3MuZGlza0NhY2hlRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNOdWxs
KCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgICAg
IG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKG5ldHdvcmtQcm9jZXNzLCBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtQcm9jZXNzLmNhY2hlT3B0aW9ucygpLCBtX3Nlc3Np
b25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgUmVmUHRyPENhY2hlPiBDYWNoZTo6b3BlbihOZXR3b3JrUHJvY2VzcwogICAg
IGlmICghc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDYWNoZShuZXR3b3JrUHJvY2Vzcywgc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgp
LCBvcHRpb25zLCBzZXNzaW9uSUQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZShu
ZXR3b3JrUHJvY2VzcywgY2FjaGVQYXRoLCBzdG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlv
bnMsIHNlc3Npb25JRCkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
CkBAIC03OCwxMCArNzgsMTEgQEAgc3RhdGljIHZvaWQgZHVtcEZpbGVDaGFuZ2VkKENhY2hlKiBj
YWNoZQogfQogI2VuZGlmCiAKLUNhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4gb3B0
aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8
U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8Q2FjaGVPcHRpb24+IG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKHN0b3JhZ2UpKQog
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKKyAgICAsIG1fc3RvcmFnZURpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5KQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMSAr
MTcwLDEyIEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcygp
IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkoKSB7IHJldHVybiBtX3N0b3JhZ2VEaXJlY3Rvcnk7
IH0KIAogICAgIH5DYWNoZSgpOwogCiBwcml2YXRlOgotICAgIENhY2hlKE5ldHdvcmtQcm9jZXNz
JiwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICBDYWNoZShOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVj
dG9yeSwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIEtleSBtYWtlQ2FjaGVLZXkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV90
cmF2ZXJzZUNvdW50IHsgMCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAg
IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlVGVtcEJs
b2JEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAjZW5kaWYKLSAgICBtX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgX0NG
TmV0d29ya1NldEFUU0NvbnRleHQocGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dC5nZXQoKSk7
CiAKQEAgLTExNiwxMCArMTE1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTgogCiAgICAgQVNTRVJUKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsK
IAotICAgIGlmIChtX2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBtX2NhY2hlT3B0aW9ucyA9
IHsgTmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIG1fY2Fj
aGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uOjpUZXN0aW5nTW9kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNywxNCArMTI3LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTgogICAgIGlmIChwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MubW9kZSAhPSBTb3VwTmV0d29y
a1Byb3h5U2V0dGluZ3M6Ok1vZGU6OkRlZmF1bHQpCiAgICAgICAgIHNldE5ldHdvcmtQcm94eVNl
dHRpbmdzKHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyk7CiAKLSAgICBBU1NFUlQoIXBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7Ci0gICAgbV9kaXNrQ2FjaGVEaXJlY3Rv
cnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKLQogICAgIEdSZWZQdHI8R1Jlc29s
dmVyPiBjYWNoZWRSZXNvbHZlciA9IGFkb3B0R1JlZih3ZWJraXRDYWNoZWRSZXNvbHZlck5ldyhh
ZG9wdEdSZWYoZ19yZXNvbHZlcl9nZXRfZGVmYXVsdCgpKSkpOwogICAgIGdfcmVzb2x2ZXJfc2V0
X2RlZmF1bHQoY2FjaGVkUmVzb2x2ZXIuZ2V0KCkpOwogCi0gICAgU291cE5ldHdvcmtTZXNzaW9u
OjpjbGVhck9sZFNvdXBDYWNoZShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hl
RGlyZWN0b3J5KSk7Ci0KICAgICBtX2NhY2hlT3B0aW9ucyA9IHsgTmV0d29ya0NhY2hlOjpDYWNo
ZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVD
VUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
Miw5ICs1MDIsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAg
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmICgh
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01NDUsOCArNTQyLDcgQEAgTmV0d29ya1Byb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIC8vICoqKioqKioqKgogICAgIC8vIElNUE9S
VEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBk
YXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9t
IEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQogICAgIC8vICoqKioqKioqKgotICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwot
ICAgIGlmIChwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgaWYgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQogICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVy
cygpLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKICAgICAKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0
YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKQEAgLTc2OSwxMSArNzY1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0RpZENhY2hlUGFnZQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJv
eEV4dGVuc2lvbnMoKQogewogICAgIG1fcmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGgg
PSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oaW5qZWN0ZWRCdW5kbGVQYXRoKCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy53
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSByZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZp
Z3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLm1l
ZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
bV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKIAogICAgIG1f
cmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5y
ZXNlcnZlQ2FwYWNpdHkobV9jb25maWd1cmF0aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRQYXRocygpLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogbV9jb25maWd1
cmF0aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocygpKQpAQCAtODUwLDM3ICs4
NDEsMjMgQEAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgV2ViUHJvY2VzcwogICAgIHdl
YnNpdGVEYXRhU3RvcmUucmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKIAogICAgIFN0
cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZl
ZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBpZiAoYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBt
X3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLQogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogICAgIGlmICghYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBTdHJpbmcg
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHdlYnNpdGVEYXRhU3Rv
cmUuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGlmIChh
cHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJh
dGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAg
U3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZl
ZERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0
aHMud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCF3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5ID0g
d2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBpZiAo
bWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIG1lZGlhQ2FjaGVEaXJlY3Rv
cnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeTsKLQogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAg
IGlmICghbWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1lZGlhQ2FjaGVEaXJlY3Rv
cnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgbWVkaWFDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpOwotICAgIGlm
IChtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBtZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAy
NTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NjQsMTIgKzc2NCw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGF0
aHMgewogICAgICAgICBTdHJpbmcgaW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgICAgICBTdHJpbmcg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAg
U3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIHVpUHJvY2Vz
c0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICAgICAgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFN0cmluZyBjb29raWVT
dG9yYWdlRGlyZWN0b3J5OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2MCArMzYsMTggQEAgUmVmPFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPm1f
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
ZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBsZWdh
Y3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVn
YWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmln
dXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKK1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OwogCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRp
b247Ci19Ci0KLVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCkKLSAgICA6IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9hcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpCi0gICAgLCBtX2Rpc2tDYWNo
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkpCi0gICAgLCBtX21lZGlhQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQotICAgICwgbV9tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKSkKLXsKLX0KLQotUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCkKLXsKLX0KK1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6flByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKIAogUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKIHsKICAgICBhdXRvIGNvcHkgPSB0
aGlzLT5jcmVhdGUoKTsKIAogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVN
b2RlbDsKLSAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0NhY2hl
RGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5h
YmxlZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKLSAg
ICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lOwotICAgIGNvcHktPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFD
YWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0g
dGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2luamVjdGVk
QnVuZGxlUGF0aCA9IHRoaXMtPm1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIGNvcHktPm1fY3Vz
dG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyID0gdGhpcy0+bV9jdXN0b21DbGFzc2VzRm9yUGFy
YW1ldGVyQ29kZXI7Ci0gICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
OwotICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkgPSB0aGlzLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0gICAg
Y29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHRoaXMt
Pm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMgPSB0aGlzLT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAg
ICBjb3B5LT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzID0gdGhpcy0+bV9hZGRp
dGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZSgp
OwotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoTGVn
YWN5T3B0aW9ucygpOwotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBj
cmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CkBAIC03OSwzOCArNzcsOSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hl
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KICAgICB2b2lkIHNldENhY2hl
TW9kZWwoV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwpIHsgbV9jYWNoZU1vZGVsID0gY2Fj
aGVNb2RlbDsgfQogCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAg
ICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tD
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBk
aXNrQ2FjaGVEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAg
dm9pZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hl
RGlyZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7
IH0KLSAgICAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAg
dm9pZCBzZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9
IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBXVEY6OlN0cmluZyYg
aW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7
IH0KICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgaW5q
ZWN0ZWRCdW5kbGVQYXRoKSB7IG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQ
YXRoOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9
Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7
IH0KLSAgICB2b2lkIHNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5KSB7IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5ID0gZGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9
Ci0gICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYg
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25zdCBX
VEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBX
VEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBjdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsgfQogICAgIHZvaWQgc2V0
Q3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjbGFz
c2VzRm9yQ29kZXIpIHsgbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIgPSBXVEZNb3Zl
KGNsYXNzZXNGb3JDb2Rlcik7IH0KIApAQCAtMTkxLDE3ICsxNjAsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsK
ICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1vZGVs
OjpQcmltYXJ5V2ViQnJvd3NlciB9OwogCi0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZTsKLSAgICBXVEY6OlN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsK
LSAgICBXVEY6OlN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcg
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVk
QnVuZGxlUGF0aDsKLSAgICBXVEY6OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAg
ICBXVEY6OlN0cmluZyBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBX
VEY6OlN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2N1c3RvbUNs
YXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1Jl
dmFsaWRhdGVkVVJMU2NoZW1lczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzExLDE4ICszMTEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0U2V0UHJvcGVydHkoCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JX
ZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJhcmlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgY29uZmln
dXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xj
b25maWd1cmFyaW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1
cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0K
LQogc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKIHsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNz
KS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKQEAgLTMzNSwyMiArMzIzLDEzIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCgKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdl
YkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7Ci0gICAgaWYgKHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJh
bChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9z
dG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRp
cmVjdG9yeSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGly
ZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmln
dXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7
CisgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCisgICAgICAgIHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3
KCJsb2NhbC1zdG9yYWdlLWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5k
YXRhKCksIG51bGxwdHIpKTsKKworICAgIGlmICghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKQogICAgICAgICBj
b25maWd1cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9oc3RzX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7
Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBjb25maWd1cmF0
aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJz
cWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5w
cm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7Ci0KLSAg
ICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSh3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkpOwogICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0
b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nl
c3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29s
KTsKQEAgLTE0NzQsMTIgKzE0NTMsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2Vi
X2V4dGVuc2lvCiAgKgogICogRGVwcmVjYXRlZDogMi4xMC4gVXNlIHdlYmtpdF93ZWJfY29udGV4
dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcigpIGluc3RlYWQuCiAgKi8KLXZvaWQgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBjaGFyKiBkaXJlY3RvcnkpCit2b2lkIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIq
KQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQp
KTsKLSAgICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7Ci0KLSAgICBjb250ZXh0LT5wcml2
LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICBnX3dhcm5pbmcoIndlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9k
aXJlY3RvcnkgaXMgZGVwcmVjYXRlZCBhbmQgZG9lcyBub3RoaW5nLCB1c2UgV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyIGluc3RlYWQiKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NTQsNyArMTc1NCw3
IEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAg
ICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0
cykgewotICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCkpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2
aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzEx
Niw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBX
ZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIFN0cmlu
ZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5OwotICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWU7CisgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZSB7ICJGaWxlcyJfcyB9OwogICAgIFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgU3RyaW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379216</attachid>
            <date>2019-09-19 23:54:04 -0700</date>
            <delta_ts>2019-09-19 23:55:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190919235404.patch</filename>
            <type>text/plain</type>
            <size>33639</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICAv
LyBGSVhNRTogTW92ZSB0aGUgY2FjaGUgbW9kZWwgdG8gV2Vic2l0ZURhdGFTdG9yZSBzbyB3ZSBk
b24ndCBuZWVkIHRvIGFzc3VtZSB0aGUgZmlyc3QgY2FjaGUgaXMgb24gdGhlIHNhbWUgdm9sdW1l
IGFzIGFsbCBjYWNoZXMuCisgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKCFj
YWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChhdXRvKiBjYWNoZSA9IHNlc3Npb24uY2FjaGUoKSkKKyAgICAgICAgICAgIGNhY2hl
U3RvcmFnZURpcmVjdG9vcnkgPSBjYWNoZS0+c3RvcmFnZURpcmVjdG9yeSgpOworICAgIH0pOwor
CisgICAgaWYgKEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAgICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVz
ZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAg
ICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4K
ICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICogMTAwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI1MDEyMikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMzM5LDcgKzMzOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxv
YWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxp
dmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBkaXNr
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQog
ICAgIGNvbnN0IE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiYgY2FjaGVPcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU9wdGlvbnM7IH0KIAogICAgIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcikgY29uc3Q7CkBAIC00NzcsNyArNDc2LDYgQEAgcHJpdmF0ZToKICAgICAvLyBD
b25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBTdHJpbmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAg
Ym9vbCBtX2hhc1NldENhY2hlTW9kZWwgeyBmYWxzZSB9OwogICAgIENhY2hlTW9kZWwgbV9jYWNo
ZU1vZGVsIHsgQ2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxNiArMzUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycygpCi17Ci19CitOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNhY2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwg
Y2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247Ci0gICAgZW5jb2RlciA8PCBkaXNr
Q2FjaGVEaXJlY3Rvcnk7Ci0gICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFU
SU9OKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb247CiAjZW5kaWYKQEAgLTEwMywxNSArOTksNiBAQCBib29sIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
Y2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3Rvcnkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgZGVj
b2RlciA+PiBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFkaXNr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqZGlz
a0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLQogI2lmIEVOQUJMRShORVRXT1JLX0NB
Q0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQs
NiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29s
IGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uIHsgdHJ1ZSB9OwogCi0gICAgU3Ry
aW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlz
a0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
X1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlz
aW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw3IEBAIE5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKIHsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRl
cnMubmV0d29ya0NhY2hlRGlyZWN0b3J5OwotICAgICAgICBpZiAobmV0d29ya0NhY2hlRGlyZWN0
b3J5LmlzTnVsbCgpKQotICAgICAgICAgICAgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gbmV0d29y
a1Byb2Nlc3MuZGlza0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYg
KCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgICAgIG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjpvcGVuKG5ldHdvcmtQcm9jZXNzLCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtQ
cm9jZXNzLmNhY2hlT3B0aW9ucygpLCBtX3Nlc3Npb25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgUmVmUHRyPENhY2hlPiBD
YWNoZTo6b3BlbihOZXR3b3JrUHJvY2VzcwogICAgIGlmICghc3RvcmFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZShuZXR3b3JrUHJv
Y2Vzcywgc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgpLCBvcHRpb25zLCBzZXNzaW9uSUQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZShuZXR3b3JrUHJvY2VzcywgY2FjaGVQYXRoLCBz
dG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlvbnMsIHNlc3Npb25JRCkpOwogfQogCiAjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCkBAIC03OCwxMCArNzgsMTEgQEAgc3RhdGlj
IHZvaWQgZHVtcEZpbGVDaGFuZ2VkKENhY2hlKiBjYWNoZQogfQogI2VuZGlmCiAKLUNhY2hlOjpD
YWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3Jh
Z2UsIE9wdGlvblNldDxDYWNoZU9wdGlvbj4gb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQorQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3Qg
U3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25T
ZXQ8Q2FjaGVPcHRpb24+IG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6
IG1fc3RvcmFnZShXVEZNb3ZlKHN0b3JhZ2UpKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3
b3JrUHJvY2VzcykKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fc3RvcmFn
ZURpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5KQogewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
X1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNo
ZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMSArMTcwLDEyIEBAIHB1YmxpYzoKIAogICAgIE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCk7IH0KICAgICBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3Rvcnko
KSB7IHJldHVybiBtX3N0b3JhZ2VEaXJlY3Rvcnk7IH0KIAogICAgIH5DYWNoZSgpOwogCiBwcml2
YXRlOgotICAgIENhY2hlKE5ldHdvcmtQcm9jZXNzJiwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlvblNl
dDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBDYWNoZShOZXR3b3JrUHJvY2Vz
cyYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSwgUmVmPFN0b3JhZ2U+JiYsIE9wdGlv
blNldDxDYWNoZU9wdGlvbj4sIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIEtleSBtYWtlQ2FjaGVL
ZXkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTE5NSw2ICsxOTYsNyBA
QCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV90cmF2ZXJzZUNvdW50IHsgMCB9OwogICAgIFBB
TDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIFN0cmluZyBtX3N0b3JhZ2VEaXJlY3Rvcnk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlVGVtcEJsb2JEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogI2VuZGlmCiAjZW5kaWYKLSAgICBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgX0NGTmV0d29ya1NldEFUU0NvbnRleHQocGFyYW1l
dGVycy5uZXR3b3JrQVRTQ29udGV4dC5nZXQoKSk7CiAKQEAgLTExNiwxMCArMTE1LDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgQVNTRVJUKCFtX2Rp
c2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsKIAotICAgIGlmIChtX2Rpc2tDYWNoZURpcmVj
dG9yeS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBtX2NhY2hlT3B0aW9ucyA9IHsgTmV0d29ya0NhY2hlOjpDYWNoZU9wdGlv
bjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24pCiAgICAgICAgIG1fY2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6
OkNhY2hlT3B0aW9uOjpUZXN0aW5nTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNp
b24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3LDkgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogICAgIGlmIChwYXJhbWV0ZXJzLnBy
b3h5U2V0dGluZ3MubW9kZSAhPSBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3M6Ok1vZGU6OkRlZmF1
bHQpCiAgICAgICAgIHNldE5ldHdvcmtQcm94eVNldHRpbmdzKHBhcmFtZXRlcnMucHJveHlTZXR0
aW5ncyk7CiAKLSAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSk7Ci0gICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeTsKLQogICAgIEdSZWZQdHI8R1Jlc29sdmVyPiBjYWNoZWRSZXNvbHZlciA9IGFkb3B0
R1JlZih3ZWJraXRDYWNoZWRSZXNvbHZlck5ldyhhZG9wdEdSZWYoZ19yZXNvbHZlcl9nZXRfZGVm
YXVsdCgpKSkpOwogICAgIGdfcmVzb2x2ZXJfc2V0X2RlZmF1bHQoY2FjaGVkUmVzb2x2ZXIuZ2V0
KCkpOwogCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7Ci0KICAgICBtX2NhY2hl
T3B0aW9ucyA9IHsgTmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsK
ICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAg
aWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlk
YXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw5ICs1MDIsNiBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3Vy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwog
Ci0gICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRp
c2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JS
ZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlv
bi0+ZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01
NDUsOCArNTQyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwog
ICAgIC8vICoqKioqKioqKgogICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGly
ZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZp
cnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0
NTQ3MTI+KQogICAgIC8vICoqKioqKioqKgotICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCisg
ICAgaWYgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQog
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpLmluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eTsKICAgICAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTc2OSwxMSArNzY1LDYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZENhY2hlUGFnZQogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogewogICAgIG1fcmVz
b2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRl
bnNpb24oaW5qZWN0ZWRCdW5kbGVQYXRoKCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZv
clNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBh
dGhzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVk
UGF0aHMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0
ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpKTsKIAogICAgIG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2Vi
UHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5yZXNlcnZlQ2FwYWNpdHkobV9jb25maWd1cmF0
aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocygpLnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBwYXRoIDogbV9jb25maWd1cmF0aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRQYXRocygpKQpAQCAtODUwLDM3ICs4NDEsMjMgQEAgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMgV2ViUHJvY2VzcwogICAgIHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZURpcmVj
dG9yaWVzSWZOZWNlc3NhcnkoKTsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKLSAgICBpZiAoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAg
IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSA9IHdlYnNpdGVEYXRhU3RvcmUuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSgpOwotICAgIGlmIChhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAg
aWYgKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgd2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCF3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5
KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZp
bmdQYXRoKHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUsIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAg
IFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBpZiAobWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFD
YWNoZURpcmVjdG9yeTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUNhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRS
ZXNvbHZpbmdQYXRoKG1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBT
dHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZl
ZE1lZGlhS2V5c0RpcmVjdG9yeSgpOwotICAgIGlmIChtZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKQotICAgICAgICBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVk
UGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1lZGlhS2V5U3RvcmFnZURp
cmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBtZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjQsMTIgKzc2NCw3
IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGF0aHMgewogICAgICAgICBTdHJpbmcgaW5qZWN0
ZWRCdW5kbGVQYXRoOwotICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsK
LSAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcg
bWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVj
dG9yeTsKICAgICAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICAg
ICAgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2MCArMzYsMTggQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vz
c1BvbwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7
CiB9CiAKLVJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3VyYXRpb24pCi17
Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9
IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gbGVnYWN5
Q29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9u
LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVE
aXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uZGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKK1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZh
dWx0OwogCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKLSAgICA6IG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpKQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lKCJGaWxlcyIpCi0gICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhQ2FjaGVEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkKLSAg
ICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURpcmVj
dG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpCi0g
ICAgLCBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBtX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKQotICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAgLCBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKLXsKLX0KLQotUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKLXsKLX0KK1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsK
IAogUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KCkKIHsKICAgICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAogICAgIGNvcHkt
Pm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2RlbDsKLSAgICBjb3B5LT5tX2Rpc2tDYWNo
ZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0NhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlz
a0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fZGlza0NhY2hlU3Bl
Y3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKLSAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gdGhpcy0+bV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIGNvcHktPm1fbWVkaWFD
YWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5t
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsKICAgICBjb3B5LT5tX2luamVjdGVkQnVuZGxlUGF0aCA9IHRoaXMtPm1faW5qZWN0
ZWRCdW5kbGVQYXRoOwogICAgIGNvcHktPm1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVy
ID0gdGhpcy0+bV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7Ci0gICAgY29weS0+bV9s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAg
ICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBj
b3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSB0aGlzLT5tX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9jYWNo
ZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVt
ZXM7CiAgICAgY29weS0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMgPSB0aGlzLT5tX2Fs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2FkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFBhdGhzID0gdGhpcy0+bV9hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRo
czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOwotICAgIHN0YXRpYyBS
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYp
OwogCiAgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVh
bCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC03OSwzOCArNzcsOSBAQCBwdWJsaWM6
CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlTW9kZWw7IH0KICAgICB2b2lkIHNldENhY2hlTW9kZWwoV2ViS2l0OjpDYWNoZU1vZGVsIGNh
Y2hlTW9kZWwpIHsgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsgfQogCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Fw
cGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpIHsg
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsg
fQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWU7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQg
c2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3Rv
cnkpIHsgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3Rvcnk7IH0KLQotICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURp
cmVjdG9yeSA9IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICAKLSAgICBjb25zdCBXVEY6OlN0
cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpIHsg
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
OyB9Ci0KICAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KICAgICB2b2lkIHNldEluamVjdGVkQnVu
ZGxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKSB7IG1faW5qZWN0
ZWRCdW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0
cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3Jh
Z2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBX
VEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldERldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5KSB7IG1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpIHsg
bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0K
LSAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eShjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkgeyBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXIoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUNsYXNzZXNGb3JQ
YXJhbWV0ZXJDb2RlcjsgfQogICAgIHZvaWQgc2V0Q3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNv
ZGVyKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjbGFzc2VzRm9yQ29kZXIpIHsgbV9jdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXIgPSBXVEZNb3ZlKGNsYXNzZXNGb3JDb2Rlcik7IH0KIApAQCAt
MTkxLDE3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9j
YWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OwogCi0g
ICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3Ry
aW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBXVEY6
OlN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBXVEY6OlN0cmlu
ZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX2RldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3dlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsK
LSAgICBXVEY6OlN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBtX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsKICAg
ICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDE4ICsz
MTEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoCiAgICAgfQog
fQogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
Y29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmlndXJh
cmlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVj
dG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9yeSgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5n
KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNz
UG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nl
c3NQb29sY29uZmlndXJhcmlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5n
KHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpKTsK
LSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKQEAg
LTMzNSwyMiArMzIzLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3Rl
ZCgKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRF
WFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRl
eHQtPnByaXY7Ci0gICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJz
aXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0Nh
Y2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25maWd1
cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIpCisgICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJsb2NhbC1zdG9yYWdlLWRpcmVjdG9yeSIs
IHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCksIG51bGxwdHIpKTsKKworICAgIGlm
ICghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKQogICAgICAgICBjb25maWd1cmF0aW9uLnNldEhTVFNTdG9yYWdl
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAot
ICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGUoY29uZmlndXJhdGlvbik7Ci0KLSAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFu
YWdlcikKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSh3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZv
cldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSkpOwogICAgIHByaXYt
PnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdl
ckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIHdl
YmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29sKTsKQEAgLTE0NzQsMTIgKzE0NTMsOSBAQCB2
b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvCiAgKgogICogRGVwcmVjYXRl
ZDogMi4xMC4gVXNlIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFu
YWdlcigpIGluc3RlYWQuCiAgKi8KLXZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2Nh
Y2hlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBkaXJl
Y3RvcnkpCit2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3Rvcnko
V2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKGRp
cmVjdG9yeSk7Ci0KLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlv
bigpLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJl
Y3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICBnX3dhcm5pbmcoIndlYmtp
dF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkgaXMgZGVwcmVjYXRlZCBhbmQg
ZG9lcyBub3RoaW5nLCB1c2UgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIGluc3RlYWQiKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NTQsNyArMTc1NCw3IEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nl
c3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHko
KSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykgewotICAgICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlv
bikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICBwcm9jZXNz
UG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0
X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsK
ICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIFN0cmluZyBtX2Fw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CisgICAgU3RyaW5nIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJGaWxlcyJfcyB9OwogICAg
IFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1faW5kZXhlZERCRGF0
YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379217</attachid>
            <date>2019-09-19 23:55:45 -0700</date>
            <delta_ts>2019-09-20 05:24:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190919235545.patch</filename>
            <type>text/plain</type>
            <size>33638</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICAv
LyBGSVhNRTogTW92ZSB0aGUgY2FjaGUgbW9kZWwgdG8gV2Vic2l0ZURhdGFTdG9yZSBzbyB3ZSBk
b24ndCBuZWVkIHRvIGFzc3VtZSB0aGUgZmlyc3QgY2FjaGUgaXMgb24gdGhlIHNhbWUgdm9sdW1l
IGFzIGFsbCBjYWNoZXMuCisgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKCFj
YWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChhdXRvKiBjYWNoZSA9IHNlc3Npb24uY2FjaGUoKSkKKyAgICAgICAgICAgIGNhY2hl
U3RvcmFnZURpcmVjdG9yeSA9IGNhY2hlLT5zdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgfSk7CisK
KyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKGNhY2hlU3RvcmFnZURpcmVj
dG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNl
IDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAg
IC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5Lgog
ICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjUwMTIyKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzksNyArMzM5LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkS2VwdEFsaXZlTG9h
ZChSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmKTsKICAgICB2b2lkIHJlbW92ZUtlcHRBbGl2
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAKLSAgICBjb25zdCBTdHJpbmcmIGRpc2tD
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAg
ICAgY29uc3QgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlT3B0aW9uczsgfQogCiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIHdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzYsNiBAQCBwcml2YXRlOgogICAgIC8vIENv
bm5lY3Rpb25zIHRvIFdlYlByb2Nlc3Nlcy4KICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uczsKIAotICAgIFN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKICAgICBi
b29sIG1faGFzU2V0Q2FjaGVNb2RlbCB7IGZhbHNlIH07CiAgICAgQ2FjaGVNb2RlbCBtX2NhY2hl
TW9kZWwgeyBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlciB9OwogICAgIGJvb2wgbV9zdXBwcmVz
c01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDE2ICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKCkKLXsKLX0KK05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpID0gZGVmYXVsdDsKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7CiAgICAgZW5jb2RlciA8PCBj
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKLSAgICBlbmNvZGVyIDw8IGRpc2tD
YWNoZURpcmVjdG9yeTsKLSAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbjsKICNlbmRpZgpAQCAtMTAzLDE1ICs5OSw2IEBAIGJvb2wgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5j
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc2tDYWNoZURpcmVjdG9yeSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBkZWNv
ZGVyID4+IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWRpc2tD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpkaXNr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
cmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw2
IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKICAgICBDYWNoZU1v
ZGVsIGNhY2hlTW9kZWwgeyBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlciB9OwogICAgIGJvb2wg
Y2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24geyB0cnVlIH07CiAKLSAgICBTdHJp
bmcgZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24geyBmYWxzZSB9OwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkocmV2aXNp
b24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDcgQEAgTmV0d29ya1Nlc3Npb246Ok5l
dHdvcmtTZXNzaW9uKE5ldHdvcmtQcgogewogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkgewogICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVy
cy5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIGlmIChuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkuaXNOdWxsKCkpCi0gICAgICAgICAgICBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBuZXR3b3Jr
UHJvY2Vzcy5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
IW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc051bGwoKSkKICAgICAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Om9wZW4obmV0d29ya1Byb2Nlc3MsIG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29ya1By
b2Nlc3MuY2FjaGVPcHRpb25zKCksIG1fc2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHJldmlzaW9u
IDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8Q2FjaGU+IENh
Y2hlOjpvcGVuKE5ldHdvcmtQcm9jZXNzCiAgICAgaWYgKCFzdG9yYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlKG5ldHdvcmtQcm9j
ZXNzLCBzdG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlvbnMsIHNlc3Npb25JRCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlKG5ldHdvcmtQcm9jZXNzLCBjYWNoZVBhdGgsIHN0
b3JhZ2UucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9ucywgc2Vzc2lvbklEKSk7CiB9CiAKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTc4LDEwICs3OCwxMSBAQCBzdGF0aWMg
dm9pZCBkdW1wRmlsZUNoYW5nZWQoQ2FjaGUqIGNhY2hlCiB9CiAjZW5kaWYKIAotQ2FjaGU6OkNh
Y2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFn
ZSwgT3B0aW9uU2V0PENhY2hlT3B0aW9uPiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCitDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnksIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNl
dDxDYWNoZU9wdGlvbj4gb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDog
bV9zdG9yYWdlKFdURk1vdmUoc3RvcmFnZSkpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdv
cmtQcm9jZXNzKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zdG9yYWdl
RGlyZWN0b3J5KHN0b3JhZ2VEaXJlY3RvcnkpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENhY2hl
T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24gMjUw
MTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDExICsxNzAsMTIgQEAgcHVibGljOgogCiAgICAgTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5n
ZXQoKTsgfQogICAgIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQorICAgIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSgp
IHsgcmV0dXJuIG1fc3RvcmFnZURpcmVjdG9yeTsgfQogCiAgICAgfkNhY2hlKCk7CiAKIHByaXZh
dGU6Ci0gICAgQ2FjaGUoTmV0d29ya1Byb2Nlc3MmLCBSZWY8U3RvcmFnZT4mJiwgT3B0aW9uU2V0
PENhY2hlT3B0aW9uPiwgUEFMOjpTZXNzaW9uSUQpOworICAgIENhY2hlKE5ldHdvcmtQcm9jZXNz
JiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8U3RvcmFnZT4mJiwgT3B0aW9u
U2V0PENhY2hlT3B0aW9uPiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgS2V5IG1ha2VDYWNoZUtl
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtMTk1LDYgKzE5Niw3IEBA
IHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX3RyYXZlcnNlQ291bnQgeyAwIH07CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgU3RyaW5nIG1fc3RvcmFnZURpcmVjdG9yeTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5pbmRleGVkRGF0YWJhc2VUZW1wQmxvYkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAjZW5kaWYKICNlbmRpZgotICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3Rvcnk7CiAKICAgICBfQ0ZOZXR3b3JrU2V0QVRTQ29udGV4dChwYXJhbWV0
ZXJzLm5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKIApAQCAtMTE2LDEwICsxMTUsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAKICAgICBBU1NFUlQoIW1fZGlz
a0NhY2hlSXNEaXNhYmxlZEZvclRlc3RpbmcpOwogCi0gICAgaWYgKG1fZGlza0NhY2hlRGlyZWN0
b3J5LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIG1fY2FjaGVPcHRpb25zID0geyBOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9u
OjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdO
ZXR3b3JrU2Vzc2lvbikKICAgICAgICAgbV9jYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6
Q2FjaGVPcHRpb246OlRlc3RpbmdNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgaWYgKHBhcmFtZXRlcnMucHJv
eHlTZXR0aW5ncy5tb2RlICE9IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVs
dCkKICAgICAgICAgc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MocGFyYW1ldGVycy5wcm94eVNldHRp
bmdzKTsKIAotICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKTsKLSAgICBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGly
ZWN0b3J5OwotCiAgICAgR1JlZlB0cjxHUmVzb2x2ZXI+IGNhY2hlZFJlc29sdmVyID0gYWRvcHRH
UmVmKHdlYmtpdENhY2hlZFJlc29sdmVyTmV3KGFkb3B0R1JlZihnX3Jlc29sdmVyX2dldF9kZWZh
dWx0KCkpKSk7CiAgICAgZ19yZXNvbHZlcl9zZXRfZGVmYXVsdChjYWNoZWRSZXNvbHZlci5nZXQo
KSk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKEZpbGVTeXN0
ZW06OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKLQogICAgIG1fY2FjaGVP
cHRpb25zID0geyBOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9Owog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBp
ZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDkgKzUwMiw2IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fdXJs
U2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCiAgICAgICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAK
LSAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlz
a0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShORVRXT1JL
X0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9jb25maWd1cmF0aW9u
LT5kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CiAjZW5kaWYKQEAgLTU0
NSw4ICs1NDIsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAg
ICAgLy8gKioqKioqKioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJl
Y3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmly
c3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1
NDcxMj4pCiAgICAgLy8gKioqKioqKioqCi0gICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3Jl
UGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAg
ICBpZiAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCiAg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkt
PndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
OwogICAgIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtNzY5LDExICs3NjUsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNv
bHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0
aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQ
YXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOwogCiAgICAgbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQ
cm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0eShtX2NvbmZpZ3VyYXRp
b24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6ZSgpKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNz
QWxsb3dlZFBhdGhzKCkpCkBAIC04NTAsMzcgKzg0MSwyMyBAQCBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycyBXZWJQcm9jZXNzCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlRGlyZWN0
b3JpZXNJZk5lY2Vzc2FyeSgpOwogCiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OwotICAgIGlmIChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lID0gd2Vic2l0ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lKCk7Ci0gICAgaWYgKGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAKICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBp
ZiAod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
LQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIXdlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHko
KSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAg
U3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVk
aWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNh
Y2hlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJl
c29sdmluZ1BhdGgobWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZFdyaXRlLCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0
cmluZyBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
TWVkaWFLZXlzRGlyZWN0b3J5KCk7Ci0gICAgaWYgKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCi0gICAgICAgIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQ
YXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICgh
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIG1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2NCwxMiArNzY0LDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQYXRocyB7CiAgICAgICAgIFN0cmluZyBpbmplY3Rl
ZEJ1bmRsZVBhdGg7Ci0gICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Owot
ICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBt
ZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5OwogICAgICAgICBTdHJpbmcgdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwotICAgICAg
ICBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYwICszNiwxOCBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNz
UG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsK
IH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29uZmlndXJhdGlvbikKLXsK
LSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24t
Pm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1
cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQotUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUoIkZpbGVzIikKLSAgICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVj
dG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAg
ICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAg
ICAsIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246On5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotewotfQorUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0Owog
CiBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+
bV9jYWNoZU1vZGVsID0gdGhpcy0+bV9jYWNoZU1vZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hl
RGlyZWN0b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNr
Q2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5t
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNh
Y2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3Rl
ZEJ1bmRsZVBhdGg7CiAgICAgY29weS0+bV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIg
PSB0aGlzLT5tX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsKLSAgICBjb3B5LT5tX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNv
cHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hl
UGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
czsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3
YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkUGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhz
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7
CiAKICAgICBleHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFs
IH5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoK
ICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6
OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9
Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBz
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9y
eSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3Rvcnko
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGly
ZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3Rl
ZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBk
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9k
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNv
bnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQot
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGN1c3RvbUNsYXNz
ZXNGb3JQYXJhbWV0ZXJDb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQ2xhc3Nlc0ZvclBh
cmFtZXRlckNvZGVyOyB9CiAgICAgdm9pZCBzZXRDdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29k
ZXIoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNsYXNzZXNGb3JDb2RlcikgeyBtX2N1c3RvbUNsYXNz
ZXNGb3JQYXJhbWV0ZXJDb2RlciA9IFdURk1vdmUoY2xhc3Nlc0ZvckNvZGVyKTsgfQogCkBAIC0x
OTEsMTcgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZl
VmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2Nh
Y2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAg
ICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJp
bmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6
U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNo
ZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
OwogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5n
IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Owot
ICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IG1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyOwogICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMx
MSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihj
b25zdCBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFy
aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQ
b29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vz
c1Bvb2xjb25maWd1cmFyaW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwot
ICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAt
MzM1LDIyICszMjMsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVk
KAogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVY
VChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4
dC0+cHJpdjsKLSAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
b2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRh
TWFuYWdlcikKKyAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5Iiwg
cHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSwgbnVsbHB0cikpOworCisgICAgaWYg
KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SFNUU1N0b3JhZ2VE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyLmdldCgpKSkpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0g
ICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAg
ICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVj
dG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKLQotICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyKQotICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9y
V2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAgICAgcHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0RGF0YVN0b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOwogCiAgICAgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpLCAqcHJpdi0+cHJvY2Vzc1Bvb2wpOwpAQCAtMTQ3NCwxMiArMTQ1Myw5IEBAIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW8KICAqCiAgKiBEZXByZWNhdGVk
OiAyLjEwLiBVc2Ugd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5h
Z2VyKCkgaW5zdGVhZC4KICAqLwotdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGRpcmVj
dG9yeSkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShX
ZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciopCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGly
ZWN0b3J5KTsKLQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9u
KCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVj
dG9yeSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGdfd2FybmluZygid2Via2l0
X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSBpcyBkZXByZWNhdGVkIGFuZCBk
b2VzIG5vdGhpbmcsIHVzZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaW5zdGVhZCIpOwogfQog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBXZWJzaXRlRAogICAgIH0KIAogICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgp
ICYmIGNvdW50ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9u
KSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgIHByb2Nlc3NQ
b29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRf
dCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRRdW90YSgpIH07CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5Owog
ICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKKyAgICBTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CiAgICAg
U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379232</attachid>
            <date>2019-09-20 05:24:11 -0700</date>
            <delta_ts>2019-09-20 07:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202028-20190920052410.patch</filename>
            <type>text/plain</type>
            <size>34208</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA5LTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBzdG9yYWdlIHBhdGhzIG9uIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHBpZWNlIG9m
IHIyNDk3NjguCisgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlc2UgcGF0aHMgYW5k
IHRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFdlYnNpdGVEYXRhU3RvcmUgcGF0aHMuCisgICAg
ICAgIFRoZXJlIHdhcyBvbmUgcmVtYWluaW5nIHVzZSBvZiB0aGUgZ2xvYmFsIGRpc2sgY2FjaGUg
ZGlyZWN0b3J5IGluIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsLAorICAgICAgICB3aGlj
aCBJIHJlcGxhY2VkIHdpdGggdGhlIGRlZmF1bHQgc2Vzc2lvbidzIGRpc2sgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBpcyBlcXVpdmFsZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpc2tDYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMTktMDktMTkg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUVywgV2lu
Q2Fpcm9dIFN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBSZWxlYXNlIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw3ICsxOTg1LDE3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisKKyAgICAv
LyBGSVhNRTogTW92ZSB0aGUgY2FjaGUgbW9kZWwgdG8gV2Vic2l0ZURhdGFTdG9yZSBzbyB3ZSBk
b24ndCBuZWVkIHRvIGFzc3VtZSB0aGUgZmlyc3QgY2FjaGUgaXMgb24gdGhlIHNhbWUgdm9sdW1l
IGFzIGFsbCBjYWNoZXMuCisgICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKCFj
YWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChhdXRvKiBjYWNoZSA9IHNlc3Npb24uY2FjaGUoKSkKKyAgICAgICAgICAgIGNhY2hl
U3RvcmFnZURpcmVjdG9yeSA9IGNhY2hlLT5zdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgfSk7CisK
KyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKGNhY2hlU3RvcmFnZURpcmVj
dG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNl
IDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAg
IC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5Lgog
ICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjUwMTIyKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzksNyArMzM5LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkS2VwdEFsaXZlTG9h
ZChSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmKTsKICAgICB2b2lkIHJlbW92ZUtlcHRBbGl2
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAKLSAgICBjb25zdCBTdHJpbmcmIGRpc2tD
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAg
ICAgY29uc3QgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlT3B0aW9uczsgfQogCiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIHdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzYsNiBAQCBwcml2YXRlOgogICAgIC8vIENv
bm5lY3Rpb25zIHRvIFdlYlByb2Nlc3Nlcy4KICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uczsKIAotICAgIFN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKICAgICBi
b29sIG1faGFzU2V0Q2FjaGVNb2RlbCB7IGZhbHNlIH07CiAgICAgQ2FjaGVNb2RlbCBtX2NhY2hl
TW9kZWwgeyBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlciB9OwogICAgIGJvb2wgbV9zdXBwcmVz
c01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDE2ICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKCkKLXsKLX0KK05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpID0gZGVmYXVsdDsKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7CiAgICAgZW5jb2RlciA8PCBj
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKLSAgICBlbmNvZGVyIDw8IGRpc2tD
YWNoZURpcmVjdG9yeTsKLSAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbjsKICNlbmRpZgpAQCAtMTAzLDE1ICs5OSw2IEBAIGJvb2wgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5j
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc2tDYWNoZURpcmVjdG9yeSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBkZWNv
ZGVyID4+IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWRpc2tD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpkaXNr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
cmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw2
IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKICAgICBDYWNoZU1v
ZGVsIGNhY2hlTW9kZWwgeyBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlciB9OwogICAgIGJvb2wg
Y2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24geyB0cnVlIH07CiAKLSAgICBTdHJp
bmcgZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24geyBmYWxzZSB9OwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkocmV2aXNp
b24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDcgQEAgTmV0d29ya1Nlc3Npb246Ok5l
dHdvcmtTZXNzaW9uKE5ldHdvcmtQcgogewogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkgewogICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVy
cy5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgICAgIGlmIChuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkuaXNOdWxsKCkpCi0gICAgICAgICAgICBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBuZXR3b3Jr
UHJvY2Vzcy5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
IW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc051bGwoKSkKICAgICAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Om9wZW4obmV0d29ya1Byb2Nlc3MsIG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29ya1By
b2Nlc3MuY2FjaGVPcHRpb25zKCksIG1fc2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHJldmlzaW9u
IDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8Q2FjaGU+IENh
Y2hlOjpvcGVuKE5ldHdvcmtQcm9jZXNzCiAgICAgaWYgKCFzdG9yYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlKG5ldHdvcmtQcm9j
ZXNzLCBzdG9yYWdlLnJlbGVhc2VOb25OdWxsKCksIG9wdGlvbnMsIHNlc3Npb25JRCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlKG5ldHdvcmtQcm9jZXNzLCBjYWNoZVBhdGgsIHN0
b3JhZ2UucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9ucywgc2Vzc2lvbklEKSk7CiB9CiAKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKQEAgLTc4LDEwICs3OCwxMSBAQCBzdGF0aWMg
dm9pZCBkdW1wRmlsZUNoYW5nZWQoQ2FjaGUqIGNhY2hlCiB9CiAjZW5kaWYKIAotQ2FjaGU6OkNh
Y2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFn
ZSwgT3B0aW9uU2V0PENhY2hlT3B0aW9uPiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCitDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnksIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNl
dDxDYWNoZU9wdGlvbj4gb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDog
bV9zdG9yYWdlKFdURk1vdmUoc3RvcmFnZSkpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdv
cmtQcm9jZXNzKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zdG9yYWdl
RGlyZWN0b3J5KHN0b3JhZ2VEaXJlY3RvcnkpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENhY2hl
T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24gMjUw
MTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDExICsxNzAsMTIgQEAgcHVibGljOgogCiAgICAgTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5n
ZXQoKTsgfQogICAgIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQorICAgIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSgp
IHsgcmV0dXJuIG1fc3RvcmFnZURpcmVjdG9yeTsgfQogCiAgICAgfkNhY2hlKCk7CiAKIHByaXZh
dGU6Ci0gICAgQ2FjaGUoTmV0d29ya1Byb2Nlc3MmLCBSZWY8U3RvcmFnZT4mJiwgT3B0aW9uU2V0
PENhY2hlT3B0aW9uPiwgUEFMOjpTZXNzaW9uSUQpOworICAgIENhY2hlKE5ldHdvcmtQcm9jZXNz
JiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBSZWY8U3RvcmFnZT4mJiwgT3B0aW9u
U2V0PENhY2hlT3B0aW9uPiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgS2V5IG1ha2VDYWNoZUtl
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtMTk1LDYgKzE5Niw3IEBA
IHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX3RyYXZlcnNlQ291bnQgeyAwIH07CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgU3RyaW5nIG1fc3RvcmFnZURpcmVjdG9yeTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5pbmRleGVkRGF0YWJhc2VUZW1wQmxvYkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAjZW5kaWYKICNlbmRpZgotICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3Rvcnk7CiAKICAgICBfQ0ZOZXR3b3JrU2V0QVRTQ29udGV4dChwYXJhbWV0
ZXJzLm5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKIApAQCAtMTE2LDEwICsxMTUsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAKICAgICBBU1NFUlQoIW1fZGlz
a0NhY2hlSXNEaXNhYmxlZEZvclRlc3RpbmcpOwogCi0gICAgaWYgKG1fZGlza0NhY2hlRGlyZWN0
b3J5LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIG1fY2FjaGVPcHRpb25zID0geyBOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9u
OjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdO
ZXR3b3JrU2Vzc2lvbikKICAgICAgICAgbV9jYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6
Q2FjaGVPcHRpb246OlRlc3RpbmdNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lv
biAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgaWYgKHBhcmFtZXRlcnMucHJv
eHlTZXR0aW5ncy5tb2RlICE9IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVs
dCkKICAgICAgICAgc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MocGFyYW1ldGVycy5wcm94eVNldHRp
bmdzKTsKIAotICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKTsKLSAgICBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGly
ZWN0b3J5OwotCiAgICAgR1JlZlB0cjxHUmVzb2x2ZXI+IGNhY2hlZFJlc29sdmVyID0gYWRvcHRH
UmVmKHdlYmtpdENhY2hlZFJlc29sdmVyTmV3KGFkb3B0R1JlZihnX3Jlc29sdmVyX2dldF9kZWZh
dWx0KCkpKSk7CiAgICAgZ19yZXNvbHZlcl9zZXRfZGVmYXVsdChjYWNoZWRSZXNvbHZlci5nZXQo
KSk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKEZpbGVTeXN0
ZW06OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKLQogICAgIG1fY2FjaGVP
cHRpb25zID0geyBOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9Owog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBp
ZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDkgKzUwMiw2IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fdXJs
U2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCiAgICAgICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAK
LSAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlz
a0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShORVRXT1JL
X0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9jb25maWd1cmF0aW9u
LT5kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CiAjZW5kaWYKQEAgLTU0
NSwxMiArNTQyLDEzIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMK
ICAgICAvLyAqKioqKioqKioKICAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRp
cmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBm
aXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3
NDU0NzEyPikKICAgICAvLyAqKioqKioqKioKLSAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy5kZWZhdWx0
RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQor
ICAgIGlmIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSkK
ICAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUo
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5pbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnk7CiAgICAgCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmlu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgbmV0d29ya1Byb2Nl
c3MtPmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7CisgICAgaWYgKCFwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0
ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzLT5jcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOworICAgIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtNzY5LDExICs3NjcsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNv
bHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0
aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9y
eSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25m
aWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQ
YXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOwogCiAgICAgbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQ
cm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0eShtX2NvbmZpZ3VyYXRp
b24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6ZSgpKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNz
QWxsb3dlZFBhdGhzKCkpCkBAIC04NTAsMzcgKzg0MywyMyBAQCBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycyBXZWJQcm9jZXNzCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlRGlyZWN0
b3JpZXNJZk5lY2Vzc2FyeSgpOwogCiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OwotICAgIGlmIChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lID0gd2Vic2l0ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lKCk7Ci0gICAgaWYgKGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAKICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBp
ZiAod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
LQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIXdlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHko
KSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAg
U3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVk
aWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNh
Y2hlRGlyZWN0b3J5OwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJl
c29sdmluZ1BhdGgobWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZFdyaXRlLCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFN0
cmluZyBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
TWVkaWFLZXlzRGlyZWN0b3J5KCk7Ci0gICAgaWYgKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCi0gICAgICAgIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQ
YXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICgh
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIG1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2NCwxMiArNzY0LDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQYXRocyB7CiAgICAgICAgIFN0cmluZyBpbmplY3Rl
ZEJ1bmRsZVBhdGg7Ci0gICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Owot
ICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgICAgIFN0cmluZyBt
ZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5OwogICAgICAgICBTdHJpbmcgdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwotICAgICAg
ICBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYwICszNiwxOCBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNz
UG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsK
IH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29uZmlndXJhdGlvbikKLXsK
LSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0g
bGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24t
Pm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1
cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX21l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKSA9IGRlZmF1
bHQ7CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQotUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUoIkZpbGVzIikKLSAgICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVj
dG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAg
ICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAg
ICAsIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQotewotfQotCi1Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246On5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotewotfQorUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0Owog
CiBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNvcHkoKQogewogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+
bV9jYWNoZU1vZGVsID0gdGhpcy0+bV9jYWNoZU1vZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hl
RGlyZWN0b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNr
Q2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5t
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNh
Y2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3Rl
ZEJ1bmRsZVBhdGg7CiAgICAgY29weS0+bV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIg
PSB0aGlzLT5tX2N1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjsKLSAgICBjb3B5LT5tX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNv
cHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hl
UGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
czsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3
YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkUGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhz
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7
CiAKICAgICBleHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFs
IH5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoK
ICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6
OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9
Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBz
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9y
eSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3Rvcnko
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGly
ZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3Rl
ZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBk
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9k
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNv
bnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQot
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGN1c3RvbUNsYXNz
ZXNGb3JQYXJhbWV0ZXJDb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQ2xhc3Nlc0ZvclBh
cmFtZXRlckNvZGVyOyB9CiAgICAgdm9pZCBzZXRDdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29k
ZXIoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNsYXNzZXNGb3JDb2RlcikgeyBtX2N1c3RvbUNsYXNz
ZXNGb3JQYXJhbWV0ZXJDb2RlciA9IFdURk1vdmUoY2xhc3Nlc0ZvckNvZGVyKTsgfQogCkBAIC0x
OTEsMTcgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZl
VmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2Nh
Y2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAg
ICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJp
bmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6
U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNo
ZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
OwogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5n
IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Owot
ICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IG1fY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyOwogICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMx
MSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihj
b25zdCBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFy
aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQ
b29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vz
c1Bvb2xjb25maWd1cmFyaW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwot
ICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAt
MzM1LDIyICszMjMsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVk
KAogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVY
VChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4
dC0+cHJpdjsKLSAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
b2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRh
TWFuYWdlcikKKyAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5Iiwg
cHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSwgbnVsbHB0cikpOworCisgICAgaWYg
KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SFNUU1N0b3JhZ2VE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyLmdldCgpKSkpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0g
ICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAg
ICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVj
dG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKLQotICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyKQotICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9y
V2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAgICAgcHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0RGF0YVN0b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOwogCiAgICAgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpLCAqcHJpdi0+cHJvY2Vzc1Bvb2wpOwpAQCAtMTQ3NCwxMiArMTQ1Myw5IEBAIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW8KICAqCiAgKiBEZXByZWNhdGVk
OiAyLjEwLiBVc2Ugd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5h
Z2VyKCkgaW5zdGVhZC4KICAqLwotdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGRpcmVj
dG9yeSkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShX
ZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciopCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGly
ZWN0b3J5KTsKLQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9u
KCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVj
dG9yeSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGdfd2FybmluZygid2Via2l0
X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSBpcyBkZXByZWNhdGVkIGFuZCBk
b2VzIG5vdGhpbmcsIHVzZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaW5zdGVhZCIpOwogfQog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBXZWJzaXRlRAogICAgIH0KIAogICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgp
ICYmIGNvdW50ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9u
KSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgIHByb2Nlc3NQ
b29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRf
dCBtX3Blck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRRdW90YSgpIH07CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5Owog
ICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKKyAgICBTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CiAgICAg
U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5Owo=
</data>
<flag name="review"
          id="394932"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>