<?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>213533</bug_id>
          
          <creation_ts>2020-06-23 14:19:28 -0700</creation_ts>
          <short_desc>Remove a lot of unnecessary calls to Ref::copyRef()</short_desc>
          <delta_ts>2020-06-23 15:03:23 -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>Web Template Framework</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1665540</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-23 14:19:28 -0700</bug_when>
    <thetext>Remove a lot of unnecessary call to Ref::copyRef() now that Ref is copyable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665541</commentid>
    <comment_count>1</comment_count>
      <attachid>402590</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-23 14:21:28 -0700</bug_when>
    <thetext>Created attachment 402590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665542</commentid>
    <comment_count>2</comment_count>
      <attachid>402591</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-23 14:22:58 -0700</bug_when>
    <thetext>Created attachment 402591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665555</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-23 15:02:28 -0700</bug_when>
    <thetext>Committed r263422: &lt;https://trac.webkit.org/changeset/263422&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402591.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665556</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-23 15:03:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/64665995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665557</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-23 15:03:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/64665996&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402590</attachid>
            <date>2020-06-23 14:21:28 -0700</date>
            <delta_ts>2020-06-23 14:22:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213533-20200623142127.patch</filename>
            <type>text/plain</type>
            <size>201418</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQwNjg1ODRiMTYwZWQ1YzQxNTYyOGYy
ZDQ2ZjUzZTA3NmFkYzdlN2EuLjI0ODhlN2JlZDhkN2ZiNjdkZGU2ZWVjMzdmNDk0MjNkMzE2ZWIz
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY2FsbCB0
byBSZWY6OmNvcHlSZWYoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEzNTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGEgbG90IG9mIHVubmVjZXNzYXJ5IGNhbGwgdG8gUmVmOjpjb3B5UmVm
KCkgbm93IHRoYXQgUmVmIGlzIGNvcHlhYmxlLgorCisgICAgICAgICogd3RmL2dsaWIvU29ja2V0
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXVEY6OlNvY2tldENvbm5lY3Rpb246OndhaXRGb3JT
b2NrZXRXcml0YWJpbGl0eSk6CisKIDIwMjAtMDYtMjMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdLa0lzVHJhbnNsYXRlZCBvbmNlIG91ciBib3Rz
IGFyZSB1cGRhdGVkIHRvIHRoZSBuZWVkZWQgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1MjE0MzJmZTgz
MjM1YmU5MWYwNzIwNjkwOWQ0MDAwYWU5ZTY4ZC4uYTY1YjEyMjUyNjI1OWY0YzM5NGFjNDhjOTJi
MTkzODEzZTE4Y2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGEgbG90IG9m
IHVubmVjZXNzYXJ5IGNhbGwgdG8gUmVmOjpjb3B5UmVmKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzUzMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBj
YWxsIHRvIFJlZjo6Y29weVJlZigpIG5vdyB0aGF0IFJlZiBpcyBjb3B5YWJsZS4KKworICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGU6OmFkZEFsbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVl
c3RHZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJl
cXVlc3RJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVs
ZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dFB1dE9yQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpjcmVhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJj
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6UGVlcjo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBl
ZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFVwZ3JhZGVVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRo
cmVhZEluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgICog
Y3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86
OndyYXBLZXkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YmVnaW4pOgorICAgICAgICAqIGxvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpwdXNoU2FtcGxlcyk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9i
YWxTY29wZTo6d3JhcENyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZTo6dW53cmFwQ3J5cHRvS2V5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVVbnJlZ2lzdGVy
Sm9iSW5TZXJ2ZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRp
c3BhdGNoRmV0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUFjdGl2
YXRlRXZlbnQpOgorCiAyMDIwLTA2LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCBBdWRpb0NvbnRleHRCYXNlIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4
IGI0ZTg2MmY4NjhjYTA5OWUwMzlkZTgzZTNlMTU0OTNjMTc4MWNkMzMuLmY0ODIwODkwOTY0NGVi
ZmJmM2E1YzgxY2U5ODFkYWY0YjY3MWE3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMjAtMDYtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY2FsbCB0byBSZWY6OmNvcHlSZWYoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGEgbG90
IG9mIHVubmVjZXNzYXJ5IGNhbGwgdG8gUmVmOjpjb3B5UmVmKCkgbm93IHRoYXQgUmVmIGlzIGNv
cHlhYmxlLgorCisgICAgICAgICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNl
c3Npb246OmdvKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0Q3VycmVudFVSTCk6
CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmJhY2spOgorICAgICAgICAoV2ViRHJpdmVy
OjpTZXNzaW9uOjpmb3J3YXJkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6cmVmcmVz
aCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldFRpdGxlKToKKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6bmV3V2luZG93KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bjo6c3dpdGNoVG9GcmFtZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnN3aXRjaFRv
UGFyZW50RnJhbWUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpzZXRXaW5kb3dSZWN0
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bWF4aW1pemVXaW5kb3cpOgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjptaW5pbWl6ZVdpbmRvdyk6CisgICAgICAgIChXZWJEcml2
ZXI6OlNlc3Npb246OmZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNz
aW9uOjpmaW5kRWxlbWVudHMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRBY3Rp
dmVFbGVtZW50KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aXNFbGVtZW50U2VsZWN0
ZWQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRFbGVtZW50VGV4dCk6CisgICAg
ICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViRHJpdmVyOjpT
ZXNzaW9uOjppc0VsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6
aXNFbGVtZW50RGlzcGxheWVkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0RWxl
bWVudEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRDU1NWYWx1
ZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGljayk6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGVhcik6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246
OmdldFBhZ2VTb3VyY2UpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpleGVjdXRlU2Ny
aXB0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAg
ICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmFkZENvb2tpZSk6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb246OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmRl
bGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpwZXJmb3JtQWN0
aW9ucyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnRha2VTY3JlZW5zaG90KToKKwog
MjAyMC0wNi0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFNvbWUgc3R5bGUgaW1wcm92ZW1lbnRzIHRvIG1haW4gdGhyZWFkIGNvZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MjQ0OTFiYjZiZDVhN2FlOWMwNzRhOGYyOTA3ZDlkOTE1NjNkNzJlNS4uMGJlYjU2OGUxZDY2ZGRl
ZGI0Y2NhN2JiMTM4MTY4YzVkMjI0MzFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIw
MjAtMDYtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1v
dmUgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY2FsbCB0byBSZWY6OmNvcHlSZWYoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTMzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGEgbG90IG9mIHVu
bmVjZXNzYXJ5IGNhbGwgdG8gUmVmOjpjb3B5UmVmKCkgbm93IHRoYXQgUmVmIGlzIGNvcHlhYmxl
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cmVxdWVzdFJlc291
cmNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRm
YXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5Jbldl
YnNpdGVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZENh
Y2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZl
dGNoRGlyZWN0b3J5RW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjbGVhckFsbENhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3
U25hcHNob3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNv
bHZlQ2hpbGRGcmFtZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRBbGxDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZVNpbmdsZUNvb2tpZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2
aWNlc0ZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0TWF4
U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRQcnVuZUVudHJpZXNEb3duVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VmVyeVByZXZhbGVu
dFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0U2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9t
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc2V0UGFyYW1ldGVy
c1RvRGVmYXVsdFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0TGFzdFNlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRJc1J1bm5pbmdS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFVzZUlUUERhdGFiYXNlKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0
ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnJlc2V0UXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpj
bGVhckFwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6dXBkYXRlQnVuZGxlSWRlbnRpZmll
ckluTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpj
bGVhckJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjptYXJrQWxs
TGF5ZXJzVm9sYXRpbGUpOgorCiAyMDIwLTA2LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3NlIGFscmVhZHktYXZhaWxhYmxlIFdL
TmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LkhUVFBCb2R5IHRocm91Z2ggdGhlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5jcHAKaW5kZXggYmI5ODA4ZmFjOWYxOWViYzFk
MjhlY2QzYzFlY2I5MTQyOGZlYjQ2ZS4uM2FmYjU0YTQxY2I1YjhkZTExMzliMDNkYjMxMzY0M2My
NDMyMGQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uY3BwCkBAIC0y
NTAsNyArMjUwLDcgQEAgdm9pZCBTb2NrZXRDb25uZWN0aW9uOjp3YWl0Rm9yU29ja2V0V3JpdGFi
aWxpdHkoKQogICAgIG1fd3JpdGVNb25pdG9yLnN0YXJ0KGdfc29ja2V0X2Nvbm5lY3Rpb25fZ2V0
X3NvY2tldChtX2Nvbm5lY3Rpb24uZ2V0KCkpLCBHX0lPX09VVCwgUnVuTG9vcDo6Y3VycmVudCgp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNv
bmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19PVVQp
IHsKICAgICAgICAgICAgIC8vIFdlIGNhbid0IHN0b3AgdGhlIG1vbml0b3IgZnJvbSB0aGlzIGxh
bWJkYSwgYmVjYXVzZSBzdG9wIGRlc3Ryb3lzIHRoZSBsYW1iZGEuCi0gICAgICAgICAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRU
aGlzLmNvcHlSZWYoKV0geworICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICAgICAgbV93cml0ZU1vbml0b3Iu
c3RvcCgpOwogICAgICAgICAgICAgICAgIHdyaXRlKCk7CiAgICAgICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggYWM0MDg5YTM1OGFkMjg1
OTM5MDY2MDdhMjRlMWY0M2EyYzliY2M1ZS4uMzhmZGY4MWM1NjUwNzBhODI0MjI0NTBiZjE1YmRj
ODExNmJmMWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogCiAgICAgZm9yIChh
dXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKICAgICAgICAgYXV0byYgcmVxdWVzdFJlZmVyZW5j
ZSA9IHJlcXVlc3QuZ2V0KCk7Ci0gICAgICAgIEZldGNoUmVzcG9uc2U6OmZldGNoKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHJlcXVlc3RSZWZlcmVuY2UsIFt0aGlzLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgdGFza0hhbmRsZXIgPSB0YXNrSGFuZGxlci5jb3B5UmVmKCldKEV4Y2Vw
dGlvbk9yPEZldGNoUmVzcG9uc2UmPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIEZldGNo
UmVzcG9uc2U6OmZldGNoKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlcXVlc3RSZWZlcmVu
Y2UsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgdGFza0hhbmRsZXJdKEV4Y2Vw
dGlvbk9yPEZldGNoUmVzcG9uc2UmPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAg
IGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDA2YTkzNGFjYmYzYmQ2NDIzMzRiY2FjM2ViMWMzYzI4MmFiNDI0MTUuLmM0ZjQ5NGU0
OWIwOTQ4MDlmZjNiOWE1YmYyMWY3ZGFlNTJlMTg2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTgwOSw3ICs4MDks
NyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3Io
SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBSZWY8SQogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQo
KSk7CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBvcGVuIGN1cnNvciBvcGVy
YXRpb246ICVzIiwgY3Vyc29yLT5pbmZvKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25J
bXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHJlc3Vs
dCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZGlkT3BlbkN1cnNvck9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7
CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGN1cnNvci0+
aW5mbygpLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm9wZW5DdXJzb3JPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwpAQCAtODk4LDcg
Kzg5OCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqCiAgICAgSURCR2V0QWxsUmVjb3Jkc0Rh
dGEgZ2V0QWxsUmVjb3Jkc0RhdGEgeyBrZXlSYW5nZURhdGEsIGdldEFsbFR5cGUsIGNvdW50LCBv
YmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpLCAwIH07CiAKICAgICBMT0coSW5kZXhlZERC
T3BlcmF0aW9ucywgIklEQiBnZXQgYWxsIG9iamVjdCBzdG9yZSByZWNvcmRzIG9wZXJhdGlvbjog
JXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6
OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdCA9IHJlcXVlc3QuY29weVJlZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7
CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsK
ICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBnZXRBbGxSZWNvcmRzRGF0
YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmdldEFsbFJlY29yZHNPblNlcnZlcihvcGVyYXRpb24s
IGdldEFsbFJlY29yZHNEYXRhKTsKQEAgLTkyMSw3ICs5MjEsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpKU0dsb2JhbE9i
amVjdCYgcwogICAgIElEQkdldEFsbFJlY29yZHNEYXRhIGdldEFsbFJlY29yZHNEYXRhIHsga2V5
UmFuZ2VEYXRhLCBnZXRBbGxUeXBlLCBjb3VudCwgaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCku
aWRlbnRpZmllcigpLCBpbmRleC5pbmZvKCkuaWRlbnRpZmllcigpIH07CiAKICAgICBMT0coSW5k
ZXhlZERCT3BlcmF0aW9ucywgIklEQiBnZXQgYWxsIGluZGV4IHJlY29yZHMgb3BlcmF0aW9uOiAl
cyIsIGdldEFsbFJlY29yZHNEYXRhLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6
Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0ID0gcmVxdWVzdC5jb3B5UmVmKCldIChjb25zdCBhdXRvJiByZXN1bHQpIHsK
KyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1w
bDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmRpZEdldEFsbFJlY29yZHNPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwog
ICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGdldEFsbFJlY29yZHNEYXRh
ID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVyKG9wZXJhdGlvbiwg
Z2V0QWxsUmVjb3Jkc0RhdGEpOwpAQCAtOTc4LDcgKzk3OCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElE
Qk9iamVjCiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIExPRyhJbmRleGVk
REJPcGVyYXRpb25zLCAiSURCIGdldCByZWNvcmQgb3BlcmF0aW9uOiAlcyAlcyIsIG9iamVjdFN0
b3JlLmluZm8oKS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZ2V0UmVj
b3JkRGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVy
YXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywg
cmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCA9
IHJlcXVlc3QuY29weVJlZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1bGVP
cGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhp
cywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRS
ZWNvcmRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGdldFJlY29yZERhdGEgPSBnZXRSZWNvcmREYXRhLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmdl
dFJlY29yZE9uU2VydmVyKG9wZXJhdGlvbiwgZ2V0UmVjb3JkRGF0YSk7CkBAIC0xMDE4LDcgKzEw
MTgsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29y
ZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZAogICAgIElEQkdldFJlY29yZERhdGEgZ2V0
UmVjb3JkRGF0YSA9IHsgcmFuZ2UsIElEQkdldFJlY29yZERhdGFUeXBlOjpLZXlBbmRWYWx1ZSB9
OwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZ2V0IGluZGV4IHJlY29yZCBv
cGVyYXRpb246ICVzICVzIiwgaW5kZXguaW5mbygpLmNvbmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBnZXRSZWNvcmREYXRhLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0ID0gcmVxdWVzdC5jb3B5UmVmKCldIChjb25zdCBhdXRvJiByZXN1
bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpZEdldFJlY29yZE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7
CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZ2V0UmVjb3JkRGF0YSA9
IGdldFJlY29yZERhdGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+Z2V0UmVjb3JkT25TZXJ2ZXIob3BlcmF0aW9uLCBnZXRSZWNvcmRE
YXRhKTsKQEAgLTEwODEsNyArMTA4MSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdENvdW50KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvCiAgICAg
YWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25z
LCAiSURCIG9iamVjdCBzdG9yZSBjb3VudCBvcGVyYXRpb246ICVzLCByYW5nZSAlcyIsIG9iamVj
dFN0b3JlLmluZm8oKS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmFu
Z2UubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9u
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVl
c3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSByZXF1
ZXN0LmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0
aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJl
cXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChj
b25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkR2V0Q291bnRP
blNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJhbmdlID0gcmFuZ2UuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVy
YXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Z2V0Q291bnRPblNlcnZlcihvcGVyYXRp
b24sIHJhbmdlKTsKQEAgLTExMDMsNyArMTEwMyw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdENvdW50KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCSW5kZXgmIGlu
CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVy
YXRpb25zLCAiSURCIGluZGV4IGNvdW50IG9wZXJhdGlvbjogJXMsIHJhbmdlICVzIiwgaW5kZXgu
aW5mbygpLmNvbmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByYW5nZS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQo
KSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCA9IHJlcXVlc3QuY29w
eVJlZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5n
ZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRDb3VudE9uU2VydmVy
KHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmFuZ2UgPSByYW5nZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikg
ewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRDb3VudE9uU2VydmVyKG9wZXJhdGlvbiwgcmFu
Z2UpOwpAQCAtMTE0Miw3ICsxMTQyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0RGVsZXRlUmVjb3JkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2IKICAgICBh
ZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMs
ICJJREIgZGVsZXRlIHJlY29yZCBvcGVyYXRpb246ICVzLCByYW5nZSAlcyIsIG9iamVjdFN0b3Jl
LmluZm8oKS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmFuZ2UubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LmNv
cHlSZWYoKV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3Qu
Z2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBh
dXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRGVsZXRlUmVjb3JkT25T
ZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByYW5nZSA9IHJhbmdlLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0
aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRlbGV0ZVJlY29yZE9uU2VydmVyKG9wZXJh
dGlvbiwgcmFuZ2UpOwpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShKU0dsb2JhbE9iamVjdCYgc3RhdGUs
IEkKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZS5pbmZv
KCkuaWRlbnRpZmllcigpOwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgY2xl
YXIgb2JqZWN0IHN0b3JlIG9wZXJhdGlvbjogJXMiLCBvYmplY3RTdG9yZS5pbmZvKCkuY29uZGVu
c2VkTG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9u
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVl
c3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSByZXF1
ZXN0LmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0
aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJl
cXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChj
b25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkQ2xlYXJPYmpl
Y3RTdG9yZU9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyXSAoYXV0byYgb3Bl
cmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNsZWFyT2JqZWN0U3RvcmVPblNlcnZl
cihvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CkBAIC0xMjIxLDcgKzEyMjEsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChKU0dsb2Jh
bE9iamVjdCYgc3RhdGUsIElEQk9iamVjdAogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7
CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBwdXRPckFkZCBvcGVyYXRpb246
ICVzIGtleTogJXMiLCBvYmplY3RTdG9yZS5pbmZvKCkuY29uZGVuc2VkTG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGtleSA/IGtleS0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkg
OiAiPG51bGwga2V5PiIpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0gKGNv
bnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQp
IHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUHV0T3JBZGRPblNlcnZlcihyZXF1ZXN0Lmdl
dCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGtl
eSwgdmFsdWUgPSBtYWtlUmVmKHZhbHVlKSwgb3ZlcndyaXRlTW9kZV0gKGF1dG8mIG9wZXJhdGlv
bikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdXRPckFkZE9uU2VydmVyKG9wZXJhdGlvbiwg
a2V5LmdldCgpLCB2YWx1ZS5wdHIoKSwgb3ZlcndyaXRlTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
YjAyNTNhYzc5Mzc5OGU3MGY5MDQyZDIxNTk1OWUzOWFkZTE2ZTlmYS4uODU4MWQ1Y2Q3Yjc5MDNj
ODNmZDhkMTE1NGVhMTU2MWEzMmQ4M2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBFeGNlcHRpb25PcjxSZWY8TWVkaWFSZWNvcmRlcj4+IE1lZGlhUmVjb3JkZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsICJUaGUgTWVkaWFSZWNvcmRlciBpcyB1bnN1cHBvcnRlZCBvbiB0aGlz
IHBsYXRmb3JtIl9zIH07CiAgICAgYXV0byByZWNvcmRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFS
ZWNvcmRlcihkb2N1bWVudCwgV1RGTW92ZShzdHJlYW0pLCBXVEZNb3ZlKHByaXZhdGVJbnN0YW5j
ZSksIFdURk1vdmUob3B0aW9ucykpKTsKICAgICByZWNvcmRlci0+c3VzcGVuZElmTmVlZGVkKCk7
Ci0gICAgcmVjb3JkZXItPm1fcHJpdmF0ZS0+c2V0RXJyb3JDYWxsYmFjayhbcmVjb3JkZXIgPSBy
ZWNvcmRlci5jb3B5UmVmKCldKGF1dG8mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIHJlY29y
ZGVyLT5tX3ByaXZhdGUtPnNldEVycm9yQ2FsbGJhY2soW3JlY29yZGVyXShhdXRvJiYgZXhjZXB0
aW9uKSBtdXRhYmxlIHsKICAgICAgICAgcmVjb3JkZXItPmRpc3BhdGNoRXJyb3IoV1RGTW92ZSgq
ZXhjZXB0aW9uKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlY29yZGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCBlOWJmNGM4MTc3MzIwZmQxNjAwYzhjYmM3
MTVlNDg3MThiNDBjMmI1Li5lNzYzZjliM2QxYzE5YzA2YTY4ODkyZGQwMjk0OWMwZTFkZjE1NzQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBSZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZT4gQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZQogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYo
Km5ldyBTb3VyY2UoY2FudmFzLCBXVEZNb3ZlKGZyYW1lUmVxdWVzdFJhdGUpKSk7CiAgICAgc291
cmNlLT5zdGFydCgpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbc291cmNlID0gc291cmNlLmNv
cHlSZWYoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3NvdXJjZV0gewogICAgICAgICBpZiAo
IXNvdXJjZS0+bV9jYW52YXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHNvdXJjZS0+
Y2FwdHVyZUNhbnZhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcAppbmRleCBhZDM5NTJhMDcyY2Y2NWRkZDI0OGMxYmU4OTY5MzQ5NTFlM2U1
NmRkLi5hYjQ3ODI2YzgzZWJiNThiNzdiNGE2MTUyNzEzOTIxMzNjZjg0MGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzAzLDgg
KzcwMyw4IEBAIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8CiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVk
dWxlVHJhbnNhY3Rpb25DYWxsYmFjayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB0cmFuc2FjdGlvbiA9IG1ha2VSZWZQdHIodHJhbnNhY3Rpb24pXSB7Ci0gICAgICAgIG1fZG9j
dW1lbnQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdHJh
bnNhY3Rpb24gPSB0cmFuc2FjdGlvbi5jb3B5UmVmKCldIHsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYW5zYWN0aW9uID0gbWFr
ZVJlZlB0cih0cmFuc2FjdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgIG1fZG9jdW1lbnQtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdHJhbnNhY3Rpb24g
PSBXVEZNb3ZlKHRyYW5zYWN0aW9uKV0gewogICAgICAgICAgICAgdHJhbnNhY3Rpb24tPnBlcmZv
cm1QZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBhNjY1OTg1NTA4ZTQ4MDgxMmZjYzQz
ODdhY2ZiMTIwYmNhZDk3MzcwLi5jOWJlYzdhN2Q1NDQ3OGVlZDNlMTZhNGIzZjU0YmE1NGNmMzgz
ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBt
X21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9
IG1fd29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCksIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVz
dFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RS
ZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEsIDAsIGJpbmFy
eURhdGEuYnl0ZUxlbmd0aCgpKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIuY29weVJlZigpLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwg
c2VuZFJlcXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVl
c3RSZXN1bHQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoQmxvYiYgYmlu
YXJ5RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVs
LT5zZW5kKGJpbmFyeURhdGEpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlci5jb3B5UmVmKCksIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBz
ZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVz
dFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQo
KQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBidWZmZXJlZEFtb3VudCA9IG1fbWFp
bldlYlNvY2tldENoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0g
bV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+c2V0QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0sIG1fdGFza01vZGUp
OwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OmRpZENvbm5lY3QoKQogCiAgICAgU3RyaW5nIHN1YnByb3RvY29sID0gbV9tYWlu
V2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9
IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmV4dGVuc2lvbnMoKTsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIuY29weVJlZigpLCBzdWJwcm90b2NvbCA9IHN1YnByb3Rv
Y29sLmlzb2xhdGVkQ29weSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHko
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRX
cmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29s
Lmlzb2xhdGVkQ29weSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTdWJwcm90b2NvbChzdWJwcm90b2NvbCk7CiAgICAg
ICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7CkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXMKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
LmNvcHlSZWYoKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSwgbV90
YXNrTW9kZSk7CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3QKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0
YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmlu
YXJ5RGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RG
TW92ZShiaW5hcnlEYXRhKSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CkBAIC0yOTUsNyArMjk1LDcg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnUKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
YnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
eworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91
bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoYnVmZmVy
ZWRBbW91bnQpOwogICAgIH0sIG1fdGFza01vZGUpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFN0YXJ0Q2xvc2luZ0hh
bmRzaGFrZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhh
bmRsZWRCdWZmZXJlZAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9tYWluV2Vi
U29ja2V0Q2hhbm5lbCA9IG51bGxwdHI7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXIuY29weVJlZigpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xv
c2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENv
cHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsK
ICAgICAgICAgfSwgbV90YXNrTW9kZSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBl
cl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CiAgICAg
fSwgbV90YXNrTW9kZSk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBncmFkZVVSTCgpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIuY29weVJlZigpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJdKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZGlkVXBncmFkZVVSTCgpOwogICAgIH0sIG1fdGFza01vZGUpOwpAQCAtMzYz
LDcgKzM2Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6bWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQgPSBs
b2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtjbGll
bnRXcmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9
IG1ha2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBj
b250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIsICZsb2FkZXJQ
cm94eSwgcGVlciA9IG1ha2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxv
YWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAg
ICAgaWYgKGNsaWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJs
aWVyLCB3ZSBuZWVkIHRvIGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBl
ZXIuCkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsK
ICAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihbJmxvYWRlclByb3h5ID0gbV9sb2FkZXJQcm94eSwgd29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCksIHRhc2tNb2Rl
ID0gbV90YXNrTW9kZS5pc29sYXRlZENvcHkoKSwgcHJvdmlkZXIgPSBtX3NvY2tldFByb3ZpZGVy
LmNvcHlSZWYoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFsmbG9hZGVyUHJveHkgPSBtX2xvYWRl
clByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCB0YXNr
TW9kZSA9IG1fdGFza01vZGUuaXNvbGF0ZWRDb3B5KCksIHByb3ZpZGVyID0gbV9zb2NrZXRQcm92
aWRlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
IG1haW5UaHJlYWRJbml0aWFsaXplKGNvbnRleHQsIGxvYWRlclByb3h5LCBXVEZNb3ZlKHdvcmtl
ckNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpOwogICAgIH0pOwog
ICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQzZDc3MzI5NzI3ZDE0ZjYxZDc5NGFm
YjYxNTE5ODgwNTJiYzE1ZmUuLjMyNTIxMTM3ZjE0ODk5YmEwMThkOTAxODkwMGNiNGM2Mzc5YjIy
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC03NDcsMTIgKzc0NywxMiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVB
c3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZAogICAgICAg
ICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOwogICAgIH0pOwogCi0gICAgYXV0
byogZnVsZmlsbEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh3b3Js
ZC52bSgpLCAmZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0
aW9uID0gc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLmNvcHlSZWYoKV0gKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11dGFibGUgeworICAgIGF1dG8qIGZ1bGZpbGxIYW5kbGVy
ID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUod29ybGQudm0oKSwgJmdsb2JhbE9i
amVjdCwgMSwgU3RyaW5nIHsgfSwgW3NoYXJlZFJlc29sdmVGdW5jdGlvbl0gKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11dGFibGUgewogICAgICAgICBzaGFyZWRSZXNv
bHZlRnVuY3Rpb24tPnJ1bihjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKIAotICAgIGF1dG8qIHJl
amVjdEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh3b3JsZC52bSgp
LCAmZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uID0g
c2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLmNvcHlSZWYoKV0gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSBtdXRhYmxlIHsKKyAgICBhdXRvKiByZWplY3RI
YW5kbGVyID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUod29ybGQudm0oKSwgJmds
b2JhbE9iamVjdCwgMSwgU3RyaW5nIHsgfSwgW3NoYXJlZFJlc29sdmVGdW5jdGlvbl0gKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSBtdXRhYmxlIHsK
ICAgICAgICAgc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLT5ydW4obWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KSB9KSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgfSk7CkBAIC03NjMsMTAgKzc2MywxMCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZAog
ICAgICAgICAgICAgc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLT5ydW4obWFrZVVuZXhwZWN0ZWQoRXhj
ZXB0aW9uRGV0YWlscyB7ICJDb21wbGV0aW9uIGhhbmRsZXIgZm9yIGZ1bmN0aW9uIGNhbGwgaXMg
bm8gbG9uZ2VyIHJlYWNoYWJsZSJfcyB9KSk7CiAgICAgfSk7CiAKLSAgICB3b3JsZC52bSgpLmhl
YXAuYWRkRmluYWxpemVyKGZ1bGZpbGxIYW5kbGVyLCBbZmluYWxpemVHdWFyZCA9IGZpbmFsaXpl
R3VhcmQuY29weVJlZigpXShKU0NlbGwqKSB7CisgICAgd29ybGQudm0oKS5oZWFwLmFkZEZpbmFs
aXplcihmdWxmaWxsSGFuZGxlciwgW2ZpbmFsaXplR3VhcmRdKEpTQ2VsbCopIHsKICAgICAgICAg
ZmluYWxpemVHdWFyZC0+cnVuKCk7CiAgICAgfSk7Ci0gICAgd29ybGQudm0oKS5oZWFwLmFkZEZp
bmFsaXplcihyZWplY3RIYW5kbGVyLCBbZmluYWxpemVHdWFyZCA9IGZpbmFsaXplR3VhcmQuY29w
eVJlZigpXShKU0NlbGwqKSB7CisgICAgd29ybGQudm0oKS5oZWFwLmFkZEZpbmFsaXplcihyZWpl
Y3RIYW5kbGVyLCBbZmluYWxpemVHdWFyZF0oSlNDZWxsKikgewogICAgICAgICBmaW5hbGl6ZUd1
YXJkLT5ydW4oKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCBlMGVjY2RmOWVjMjljOWQxMGY1MjBmZGI2ZmUxZmM2NmZkMGEyMmFmLi40NTAzOGJk
MWIwYjdiZDhlMzQzNDE3MTc3Yjc0N2RjZTIyNjQ2NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBTdWJ0bGVDcnlwdG86
OndyYXBLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEtleUZvcm1hdCBmb3JtYXQsIENy
eXB0b0sKICAgICBhdXRvIGluZGV4ID0gcHJvbWlzZS5wdHIoKTsKICAgICBtX3BlbmRpbmdQcm9t
aXNlcy5hZGQoaW5kZXgsIFdURk1vdmUocHJvbWlzZSkpOwogICAgIGF1dG8gc3VidGxlQ3J5cHRv
V2Vha1BvaW50ZXIgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFtp
bmRleCwgc3VidGxlQ3J5cHRvV2Vha1BvaW50ZXIsIHdyYXBBbGdvcml0aG0sIHdyYXBwaW5nS2V5
ID0gbWFrZVJlZih3cmFwcGluZ0tleSksIHdyYXBQYXJhbXMgPSBXVEZNb3ZlKHdyYXBQYXJhbXMp
LCBpc0VuY3J5cHRpb24sIGNvbnRleHQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlLmNvcHlSZWYo
KV0oU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYga2V5KSBtdXRhYmxl
IHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2luZGV4LCBzdWJ0bGVDcnlwdG9XZWFrUG9pbnRlciwg
d3JhcEFsZ29yaXRobSwgd3JhcHBpbmdLZXkgPSBtYWtlUmVmKHdyYXBwaW5nS2V5KSwgd3JhcFBh
cmFtcyA9IFdURk1vdmUod3JhcFBhcmFtcyksIGlzRW5jcnlwdGlvbiwgY29udGV4dCwgd29ya1F1
ZXVlID0gbV93b3JrUXVldWVdKFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0
YSYmIGtleSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChzdWJ0bGVDcnlwdG9XZWFrUG9pbnRlcikg
ewogICAgICAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IHN1YnRsZUNyeXB0b1dlYWtQb2ludGVy
LT5tX3BlbmRpbmdQcm9taXNlcy5nZXQoaW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAK
aW5kZXggZjJiZDYwMDE3ZGVkY2NmMTM3MDZmZTc5YTllOGQ2NDdhMTk2MGEyMC4uOWVmYThmYWUw
YzQ3MWMwZTVmOGI1ZTZkNjliMjZiNDgwZjYzZTQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBEb2N1bWVudFdyaXRl
cjo6YmVnaW4oY29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50
KiBvd24KICAgICAvLyBhbmQgd2UgbWF5IGFsc28gbmVlZCB0byBpbmhlcml0IGl0cyBDb250ZW50
IFNlY3VyaXR5IFBvbGljeSBiZWxvdy4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IGV4aXN0aW5nRG9j
dW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
IGhhbmRsZURPTVdpbmRvd0NyZWF0aW9uID0gW3RoaXMsIGRvY3VtZW50ID0gZG9jdW1lbnQuY29w
eVJlZigpLCB1cmxdIHsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gaGFuZGxlRE9NV2luZG93
Q3JlYXRpb24gPSBbdGhpcywgZG9jdW1lbnQsIHVybF0gewogICAgICAgICBpZiAobV9mcmFtZS0+
bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NlY3VyZVRyYW5zaXRpb25Ubyh1cmwpKQogICAg
ICAgICAgICAgZG9jdW1lbnQtPnRha2VET01XaW5kb3dGcm9tKCptX2ZyYW1lLT5kb2N1bWVudCgp
KTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZjliYjEwZmJmMTgzZjNjZjNkNWNjYjBlNWI5
MTNjZmYzMmYyZTA2Yy4uMTc2MzE1MjZlZGRhN2Q2YWZmMzVjYTFlYzllMjI1NjZlM2ZjZGU3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp+
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIoKSA9IGRlZmF1bHQ7CiB2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoRnJhbWUmIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBsb2FkZXIoYWRvcHRSZWYoKm5ldyBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcihmcmFtZSwgY2xpZW50KSkpOwotICAgIGxvYWRlci0+aW5p
dChXVEZNb3ZlKHJlcXVlc3QpLCBbbG9hZGVyID0gbG9hZGVyLmNvcHlSZWYoKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaW5pdGlhbGl6ZWQp
IG11dGFibGUgeworICAgIGxvYWRlci0+aW5pdChXVEZNb3ZlKHJlcXVlc3QpLCBbbG9hZGVyLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBpbml0
aWFsaXplZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUobG9hZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAxYzMzZmE4OWUxMWQzMzg2OTdhYzc1NzliYmNkZDlhOGNmNmI2
ZThlLi44NzI3ZGM5YzYzMWZiOTNmYjUyNzk4ZGM2YzE2NTY2YWY3ZDJjMjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUgogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzdWJsb2FkZXIpKTsKICAgICB9CiAjZW5kaWYKLSAgICBzdWJsb2FkZXItPmlu
aXQoV1RGTW92ZShyZXF1ZXN0KSwgW3N1YmxvYWRlciA9IHN1YmxvYWRlci5jb3B5UmVmKCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIGluaXRp
YWxpemVkKSBtdXRhYmxlIHsKKyAgICBzdWJsb2FkZXItPmluaXQoV1RGTW92ZShyZXF1ZXN0KSwg
W3N1YmxvYWRlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGJvb2wgaW5pdGlhbGl6ZWQpIG11dGFibGUgewogICAgICAgICBpZiAoIWluaXRpYWxpemVk
KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN1YmxvYWRlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDIzMDFkOWMwODI0
ZDgzZWQ5NTdkYThhZDMyMmRiNDc0NDYyMDIwOWUuLjc3NTAzMjIzOWE1ZDVhYmFhNzYzZjdhMjYz
ZWQ3Y2IyNDU5ODI2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM3NCw5ICszNzQsOSBAQCB2b2lkIEltYWdlU291cmNlOjpz
dGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2Rp
bmdEdXJhdGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAg
ICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRo
cmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0
aHJlYWQuCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gcHJv
dGVjdGVkVGhpcy5jb3B5UmVmKCksIHByb3RlY3RlZFF1ZXVlID0gcHJvdGVjdGVkRGVjb2RpbmdR
dWV1ZS5jb3B5UmVmKCksIHByb3RlY3RlZERlY29kZXIgPSBwcm90ZWN0ZWREZWNvZGVyLmNvcHlS
ZWYoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBuYXRpdmVJbWFnZSA9
IFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdR
dWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29w
eSgpLCBuYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNs
b3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNv
ZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KLSAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkUXVl
dWUucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGluZ1F1ZXVlICYmIHByb3RlY3RlZERl
Y29kZXIucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGVyKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHByb3RlY3RlZERlY29kaW5nUXVldWUucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9k
ZWNvZGluZ1F1ZXVlICYmIHByb3RlY3RlZERlY29kZXIucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+
bV9kZWNvZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUaGlzLT5t
X2ZyYW1lQ29tbWl0UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJlcXVlc3QpOwogICAgICAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0UXVldWUucmVtb3ZlRmlyc3QoKTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FjaGVOYXRpdmVJbWFnZUF0SW5k
ZXhBc3luYyhXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJl
cXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJh
bWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXgg
NzVhMGE4Y2MxMjFiMWNhZmM3MTZhMGYxYTYwNGMzZjhjYzYxNWQ4Yi4uNTcyZDMxY2Y1MTBmYjRl
NWMwZmY4NDlhZGM5MDU5MTUxYjMyNTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAg
LTExMjgsNyArMTEyOCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAgICAgICAg
YXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAg
W3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVu
dGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9w
dGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dy
ZWdhdG9yID0gYWdncmVnYXRvci5jb3B5UmVmKCldIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3Ip
LCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRh
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYWdncmVnYXRvci0+cmVxdWVzdHNEYXRh
LmFwcGVuZCh7IFdURk1vdmUoa2V5SUQpLCBXVEZNb3ZlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSkg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCmluZGV4IDljMTU4MjFlNWRmZDZkM2IzNGJhMDQ0MDM0N2NkMDAwZjliOTJiOTIu
LmU3NTQzOTRkNGNjY2VhNDBiNjNjMWIwYzY1M2JiODhhMGViNDFmODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03
MzAsNyArNzMwLDcgQEAgcHVibGljOgogICAgICAgICAvLyBJZiB0aGUgY292ZXJSZWN0IGRvZXNu
J3QgY29udGFpbiB0aGUgY2FsY3VsYXRlZCB2aXNpYmxlIHJlY3RhbmdsZSB3ZSBuZWVkIHRvIHJl
cXVlc3QgYSBiYWNraW5nU3RvcmUKICAgICAgICAgLy8gdXBkYXRlIHRvIHJlbmRlciBtb3JlIHRp
bGVzLgogICAgICAgICBpZiAoIW1fY292ZXJSZWN0LmNvbnRhaW5zKHRyYW5zZm9ybWVkVmlzaWJs
ZVJlY3QpKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRIb3N0ID0g
bV9ob3N0LmNvcHlSZWYoKV0oKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRIb3N0ID0gbV9ob3N0XSgpIHsKICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRIb3N0LT5y
ZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3Bw
CmluZGV4IGE3N2U3YjlhZWRkZWRjNzFhN2RlZTQ3Njg2M2IyNzA1MWI0NThkMmIuLmI0ZjRmMTQx
NDMzNzcyMWU2YjA3ZmFhZTNlMmJiZTY4YWZiMjVlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAg
dm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpwdXNoU2FtcGxlcyhjb25z
dCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIG9sZFNvdXJjZSA9IG1fZGF0YVNvdXJjZSwgbmV3U291cmNlID0gZGF0YVNvdXJjZS5j
b3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIG9sZFNvdXJjZSA9IG1fZGF0YVNvdXJjZSwgbmV3
U291cmNlID0gZGF0YVNvdXJjZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGY5M2NkMTNhYTU3NjUzNjFlZjI5YzZmYTY3NTY0
OWY4M2I4MTA0ODcuLjkwZTZhOThiNjFjYzhlZDcyOWQ4ZDMyZTljMzY0ZWY2YTlkYjQyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00NDMs
NyArNDQzLDcgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3QKICAgICBhdXRvIHJlc3VsdENvbnRh
aW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gZG9uZUNv
bnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gd3Jh
cHBlZEtleUNvbnRhaW5lciA9IENyeXB0b0J1ZmZlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAg
bV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250
YWluZXIgPSByZXN1bHRDb250YWluZXIuY29weVJlZigpLCBrZXksIHdyYXBwZWRLZXlDb250YWlu
ZXIgPSB3cmFwcGVkS2V5Q29udGFpbmVyLmNvcHlSZWYoKSwgZG9uZUNvbnRhaW5lciA9IGRvbmVD
b250YWluZXIuY29weVJlZigpLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93bmNh
c3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkpKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fdGhyZWFkLndvcmtlckxv
YWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbcmVzdWx0Q29udGFpbmVyLCBrZXksIHdyYXBw
ZWRLZXlDb250YWluZXIsIGRvbmVDb250YWluZXIsIHdvcmtlck1lc3NhZ2luZ1Byb3h5ID0gbWFr
ZVJlZihkb3duY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eT4obV90aHJlYWQud29ya2VyTG9hZGVy
UHJveHkoKSkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIHJl
c3VsdENvbnRhaW5lci0+c2V0Qm9vbGVhbihjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCB3cmFw
cGVkS2V5Q29udGFpbmVyLT5idWZmZXIoKSkpOwogICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRC
b29sZWFuKHRydWUpOwogICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CkBAIC00NjYsNyArNDY2LDcgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5
cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG8KICAgICBhdXRv
IHJlc3VsdENvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwogICAg
IGF1dG8gZG9uZUNvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwog
ICAgIGF1dG8ga2V5Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsK
LSAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3Vs
dENvbnRhaW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIHdyYXBwZWRLZXksIGtleUNv
bnRhaW5lciA9IGtleUNvbnRhaW5lci5jb3B5UmVmKCksIGRvbmVDb250YWluZXIgPSBkb25lQ29u
dGFpbmVyLmNvcHlSZWYoKSwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBtYWtlUmVmKGRvd25jYXN0
PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpKSldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX3RocmVhZC53b3JrZXJMb2Fk
ZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwgd3JhcHBlZEtleSwg
a2V5Q29udGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VS
ZWYoZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclBy
b3h5KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICByZXN1
bHRDb250YWluZXItPnNldEJvb2xlYW4oY29udGV4dC51bndyYXBDcnlwdG9LZXkod3JhcHBlZEtl
eSwga2V5Q29udGFpbmVyLT5idWZmZXIoKSkpOwogICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRC
b29sZWFuKHRydWUpOwogICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDdjNjMwOWFkMGY3ZTk5ZWJiMTQ2MjNiZjBh
M2Y5ZDk4OWVmZTU5ZGUuLmVlZDNmOTI5N2NkMjMwYTQyZTk2ZTJjZTI3NGU5OGIwNjNiZDk3Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0
b3BPcmlnaW4sCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVl
c3RJZGVudGlmaWVyOwogICAgIG1fbWF0Y2hSZWdpc3RyYXRpb25SZXF1ZXN0cy5hZGQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RocmVhZCA9IG1fdGhyZWFkLmNvcHlSZWYoKSwgcmVxdWVzdElkZW50aWZpZXIsIHRvcE9yaWdp
biA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRvcE9yaWdpbikpLCBjbGllbnRVUkwgPSBjcm9z
c1RocmVhZENvcHkoY2xpZW50VVJMKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt0aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHRvcE9yaWdpbiA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHRvcE9yaWdpbikpLCBjbGllbnRVUkwgPSBjcm9zc1RocmVhZENv
cHkoY2xpZW50VVJMKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNl
cnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KTsKICAgICAgICAgY29ubmVjdGlvbi5tYXRjaFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHRvcE9yaWdp
biksIGNsaWVudFVSTCwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZp
ZXJdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShy
ZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewpAQCAtODAsNyArODAsNyBAQCB2b2lkIFdv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BPcmlnaW4sCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFz
dFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fZ2V0UmVnaXN0cmF0aW9uc1JlcXVlc3RzLmFkZChy
ZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwgdG9w
T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9
IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2luID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9IGNyb3NzVGhy
ZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9u
ID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLmdldFJlZ2lzdHJhdGlvbnMoV1RGTW92ZSh0b3BP
cmlnaW4pLCBjbGllbnRVUkwsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgZGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICB0aHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCBkYXRhID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUoZGF0YSkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewpAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJl
YWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdAogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX3doZW5SZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCBy
ZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBj
bGllbnRVUkwgPSBjcm9zc1RocmVhZENvcHkoY2xpZW50VVJMKV0oKSBtdXRhYmxlIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt0aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHRv
cE9yaWdpbiA9IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgY2xpZW50VVJMID0gY3Jvc3NUaHJl
YWRDb3B5KGNsaWVudFVSTCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24g
PSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0
aW9uKCk7CiAgICAgICAgIGNvbm5lY3Rpb24ud2hlblJlZ2lzdHJhdGlvblJlYWR5KHRvcE9yaWdp
biwgY2xpZW50VVJMLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmll
cl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKQEAgLTE4OSw3
ICsxODksNyBAQCB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVVbnJlZ2lz
dGVySm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdAogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX3VucmVnaXN0ZXJS
ZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLmNvcHlSZWYoKSwgcmVxdWVzdElk
ZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnRleHRJZGVudGlmaWVyXSgpIG11
dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0
SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29udGV4dElkZW50aWZpZXJdKCkg
bXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAgICAgICAgIGNvbm5l
Y3Rpb24uc2NoZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIocmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgY29udGV4dElkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJ
ZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVh
ZENvcHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKaW5kZXggM2E4MGM2MjEyY2JiNzRiOWYyZWQzZmY4ZGZkMTUxMmRmODcxZmI4MC4uNzMz
YjVmZjg2NjBiODVjNTEzZGI5M2RiMWI5MDBjZDk3M2E1MmU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVm
PENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAg
ICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOwogICAgIGF1dG8gZXZlbnQgPSBGZXRjaEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmZldGNoRXZlbnQsIFdURk1vdmUoaW5pdCksIEV2ZW50OjpJc1Ry
dXN0ZWQ6Olllcyk7CiAKLSAgICBldmVudC0+b25SZXNwb25zZShbY2xpZW50ID0gY2xpZW50LmNv
cHlSZWYoKSwgbW9kZSwgcmVkaXJlY3QsIHJlcXVlc3RVUkxdIChhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBldmVudC0+b25SZXNwb25zZShbY2xpZW50LCBtb2RlLCByZWRpcmVjdCwgcmVx
dWVzdFVSTF0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBwcm9jZXNzUmVzcG9u
c2UoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlc3VsdCksIG1vZGUsIHJlZGlyZWN0LCByZXF1
ZXN0VVJMKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA0NTIy
NWE2ZTRmMGJlMDlkMzNmMWI5ZTc3ZDVhZWQzOTIzNWI0ZmU1Li5kMmYzZTc3NGUwOGYxZGYyMTRj
MGU0NTgxYWJkMzhjMDEzNTA2OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkK
IHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8
U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgYXV0
byBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlUmVmKGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4oKndvcmtlckdsb2JhbFNjb3BlKCkpKTsKLSAgICBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuY29weVJlZigpLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgb3B0aW9u
cyA9IFdURk1vdmUob3B0aW9ucyldKCkgbXV0YWJsZSB7CisgICAgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9u
LCBbc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNs
aWVudElkLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJl
ZmVycmVyKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyldKCkgbXV0YWJsZSB7CiAgICAgICAg
IFNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucykpOwogICAgIH0pOwogfQpAQCAtMTE3LDcg
KzExNyw3IEBAIHN0YXRpYyB2b2lkIGZpcmVNZXNzYWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJiBzY29wZSwgTWVzc2FnZVdpdGhNZXNzYWdlCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OnF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNz
YWdlLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSkKIHsKICAgICBhdXRv
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPigqd29ya2VyR2xvYmFsU2NvcGUoKSkpOwotICAgIHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb3B5UmVmKCksIG1lc3NhZ2UgPSBXVEZN
b3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKV0oKSBtdXRhYmxl
IHsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAgVVJM
IHNvdXJjZVVSTDsKICAgICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2U7
CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPihzb3VyY2VEYXRhKSkgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6cXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG1lc3NhCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUluc3RhbGxF
dmVudCgpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlUmVmKGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKndvcmtlckdsb2JhbFNjb3BlKCkpKTsK
LSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY29weVJl
ZigpXSgpIG11dGFibGUgeworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29w
KCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1
ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCBmaXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlbGx1Iiwg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiAKICAgICAgICAgYXV0byBpbnN0YWxsRXZlbnQgPSBFeHRlbmRhYmxlRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuaW5zdGFsbEV2ZW50LCB7IH0sIEV4dGVuZGFibGVFdmVudDo6SXNUcnVz
dGVkOjpZZXMpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCkKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
cXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBtYWtlUmVmKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4o
Kndvcmtlckdsb2JhbFNjb3BlKCkpKTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY29weVJlZigpXSgpIG11dGFibGUgeworICAgIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlw
dWxhdGlvbiwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV0oKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQgZmlyaW5n
IGV2ZW50IGZvciB3b3JrZXIgJWxsdSIsIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFk
KCkuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgICAgIGF1dG8gYWN0aXZhdGVFdmVu
dCA9IEV4dGVuZGFibGVFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hY3RpdmF0ZUV2ZW50LCB7
IH0sIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5k
ZXggNDc4NWEyNjk2ODUzYjNiOTM0ZjlkNTViMmFhYzFjZWQ4MmYyNTEwNi4uYTU1ZmE0OTM4MGM0
OTUxMzBmZTMxYTk2Yzg0ZTA4OWI3NmQxY2FjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC0zMDYs
NyArMzA2LDcgQEAgdm9pZCBTZXNzaW9uOjpnbyhjb25zdCBTdHJpbmcmIHVybCwgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW8KICAgICAgICAgcGFyYW1ldGVycy0+
c2V0RG91YmxlKCJwYWdlTG9hZFRpbWVvdXQiX3MsIG1fcGFnZUxvYWRUaW1lb3V0KTsKICAgICAg
ICAgaWYgKGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IHBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcoKSkK
ICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywg
cGFnZUxvYWRTdHJhdGVneS52YWx1ZSgpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZCgibmF2aWdhdGVCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21t
YW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewog
ICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzMyLDcgKzMzMiw3IEBA
IHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4g
cGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkp
OwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJnZXRCcm93c2luZ0NvbnRl
eHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhp
cy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBt
X2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJnZXRCcm93c2luZ0NvbnRleHQiX3MsIFdURk1v
dmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBTZXNzaW9uOjpiYWNr
KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIHBhcmFtZXRlcnMtPnNldERvdWJsZSgicGFnZUxvYWRUaW1lb3V0Il9zLCBtX3BhZ2VM
b2FkVGltZW91dCk7CiAgICAgICAgIGlmIChhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBwYWdlTG9h
ZFN0cmF0ZWd5U3RyaW5nKCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoInBh
Z2VMb2FkU3RyYXRlZ3kiX3MsIHBhZ2VMb2FkU3RyYXRlZ3kudmFsdWUoKSk7Ci0gICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdvQmFja0luQnJvd3NpbmdDb250ZXh0Il9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMu
Y29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9o
b3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ29CYWNrSW5Ccm93c2luZ0NvbnRleHQiX3MsIFdU
Rk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3Bv
bnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZN
b3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFNlc3Npb246OmZvcndhcmQoRnVuY3Rpb248dm9pZCAo
Q29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0RG91YmxlKCJwYWdlTG9hZFRpbWVvdXQiX3MsIG1fcGFnZUxvYWRUaW1lb3V0KTsKICAg
ICAgICAgaWYgKGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IHBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmco
KSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgcGFnZUxvYWRTdHJhdGVneS52YWx1ZSgpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFu
ZFRvQmFja2VuZCgiZ29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKCJnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDI1LDcg
KzQyNSw3IEBAIHZvaWQgU2Vzc2lvbjo6cmVmcmVzaChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBwYXJhbWV0ZXJzLT5zZXREb3Vi
bGUoInBhZ2VMb2FkVGltZW91dCJfcywgbV9wYWdlTG9hZFRpbWVvdXQpOwogICAgICAgICBpZiAo
YXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gcGFnZUxvYWRTdHJhdGVneVN0cmluZygpKQogICAgICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCBwYWdlTG9h
ZFN0cmF0ZWd5LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJyZWxvYWRCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJy
ZWxvYWRCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAg
IGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFNlc3Np
b246OmdldFRpdGxlKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0
SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBw
YXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVuY3Rpb24oKSB7IHJldHVybiBk
b2N1bWVudC50aXRsZTsgfSJfcyk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1
bWVudHMiX3MsIEpTT046OkFycmF5OjpjcmVhdGUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENv
bW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFu
ZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsK
ICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9i
amVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBTZXNzaW9uOjpuZXdXaW5kb3coT3B0
aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJwcmVzZW50YXRpb25IaW50Il9zLCB0eXBlSGludC52
YWx1ZSgpID09ICJ3aW5kb3ciID8gIldpbmRvdyJfcyA6ICJUYWIiX3MpOwogICAgICAgICB9Ci0g
ICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4
dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlz
LmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiBy
ZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29t
bWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFNlc3Npb246OnN3
aXRjaFRvRnJhbWUoUmVmUHRyPEpTT046OlZhbHVlPiYmIGZyYW1lSUQsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbgogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJub2RlSGFuZGxlIl9z
LCBmcmFtZUVsZW1lbnRJRCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKCJyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZSJfcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6
OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1h
bmRUb0JhY2tlbmQoInJlc29sdmVDaGlsZEZyYW1lSGFuZGxlIl9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNl
KSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVz
dWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgU2Vzc2lvbjo6c3dpdGNoVG9Q
YXJlbnRGcmFtZShGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25I
CiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAg
cGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdD
b250ZXh0LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJy
ZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJy
ZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAg
ICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RG
TW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KE9wdGlvbmFs
PGRvdWJsZT4geCwgT3B0aW9uYWw8ZG91YmxlPiB5LCBPcHRpb25hbDxkb3UKICAgICAgICAgICAg
IHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUp
KTsKICAgICAgICAgfQotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRX
aW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFu
ZFRvQmFja2VuZCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYg
cmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdU
Rk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtODIzLDcgKzgyMyw3IEBAIHZvaWQgU2Vzc2lvbjo6bWF4aW1pemVXaW5kb3coRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAKICAgICAgICAg
UmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJtYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6
OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgibWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJl
c3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlz
RXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0
OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtODQ4LDcgKzg0OCw3IEBAIHZvaWQgU2Vzc2lvbjo6bWluaW1pemVXaW5k
b3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAK
ICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKCJoaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFy
YW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9u
SG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICBtX2hv
c3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJoaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHQiX3Ms
IFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIFNlc3Npb246OmZ1bGxzY3JlZW5X
aW5kb3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZAog
ICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBTdHJpbmcoRW50ZXJG
dWxsc2NyZWVuSmF2YVNjcmlwdCwgc2l6ZW9mKEVudGVyRnVsbHNjcmVlbkphdmFTY3JpcHQpKSk7
CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIEpTT046OkFycmF5
OjpjcmVhdGUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEJvb2xlYW4oImV4cGVjdHNJbXBs
aWNpdENhbGxiYWNrQXJndW1lbnQiX3MsIHRydWUpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9ob3N0
LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdU
Rk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3Bv
bnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNDMsNyArMTA0Myw3IEBA
IHZvaWQgU2Vzc2lvbjo6ZmluZEVsZW1lbnRzKGNvbnN0IFN0cmluZyYgc3RyYXRlZ3ksIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIEZpbmRFCiAgICAgICAgIGlmIChtX2ltcGxpY2l0V2FpdFRpbWVv
dXQpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXREb3VibGUoImNhbGxiYWNrVGltZW91dCJf
cywgbV9pbXBsaWNpdFdhaXRUaW1lb3V0ICsgMTAwMCk7CiAKLSAgICAgICAgbV9ob3N0LT5zZW5k
Q29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUo
cGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVm
KCksIG1vZGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hv
c3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIG1vZGUsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21t
YW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMDUsNyArMTEwNSw3IEBA
IHZvaWQgU2Vzc2lvbjo6Z2V0QWN0aXZlRWxlbWVudChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
YnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVl
KCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVuY3Rp
b24oKSB7IHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50OyB9Il9zKTsKICAgICAgICAgcGFy
YW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgSlNPTjo6QXJyYXk6OmNyZWF0ZSgpKTsK
LSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
cHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkg
eworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25I
b3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3Bv
bnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNTIsNyAr
MTE1Miw3IEBAIHZvaWQgU2Vzc2lvbjo6aXNFbGVtZW50U2VsZWN0ZWQoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgICAgICAgICBwYXJhbWV0ZXJz
LT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFs
dWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsIFN0cmlu
ZyhFbGVtZW50QXR0cmlidXRlSmF2YVNjcmlwdCwgc2l6ZW9mKEVsZW1lbnRBdHRyaWJ1dGVKYXZh
U2NyaXB0KSkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBX
VEZNb3ZlKGFyZ3VtZW50cykpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3By
b3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVj
dGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
U2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBp
ZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUo
cmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTIwMyw3ICsxMjAzLDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRFbGVtZW50VGV4dChjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgLy8gRklY
TUU6IEFkZCBhbiBhdG9tIHRvIHByb3Blcmx5IGltcGxlbWVudCB0aGlzIGluc3RlYWQgb2YganVz
dCB1c2luZyBpbm5lclRleHQuCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rp
b24iX3MsICJmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlubmVyVGV4dC5yZXBs
YWNlKC9eW15cXFNcXHhhMF0rfFteXFxTXFx4YTBdKyQvZywgJycpIH0iX3MpOwogICAgICAgICBw
YXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwot
ICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0
ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8
fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgdm9p
ZCBTZXNzaW9uOjpnZXRFbGVtZW50VGFnTmFtZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
ZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgImZ1bmN0aW9uKGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpIH0iX3MpOwogICAgICAgICBw
YXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwot
ICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0
ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8
fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI3Niw3ICsxMjc2LDcgQEAgdm9p
ZCBTZXNzaW9uOjpnZXRFbGVtZW50UmVjdChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29t
cHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCB7IH0sIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVj
dGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKE9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2ws
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3IpIHsKKyAgICAgICAgY29tcHV0ZUVsZW1lbnRM
YXlvdXQoZWxlbWVudElELCB7IH0sIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxSZWN0PiYmIHJlY3QsIE9wdGlv
bmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSB7CiAgICAg
ICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgdm9pZCBTZXNzaW9uOjppc0VsZW1l
bnRFbmFibGVkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmUKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1f
Y3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJmdW5jdGlvbiJfcywgU3RyaW5nKEVsZW1lbnRFbmFibGVkSmF2YVNjcmlwdCwgc2l6
ZW9mKEVsZW1lbnRFbmFibGVkSmF2YVNjcmlwdCkpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0
QXJyYXkoImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKLSAgICAgICAgbV9ob3N0
LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdU
Rk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVm
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Np
b25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFu
ZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzNTMsNyArMTM1Myw3IEBAIHZvaWQgU2Vzc2lvbjo6aXNF
bGVtZW50RGlzcGxheWVkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChD
b21tYW5kCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9z
LCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldFN0cmluZygiZnVuY3Rpb24iX3MsIFN0cmluZyhFbGVtZW50RGlzcGxheWVkSmF2YVNjcmlw
dCwgc2l6ZW9mKEVsZW1lbnREaXNwbGF5ZWRKYXZhU2NyaXB0KSkpOwogICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwotICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
biJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlz
LmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVz
cG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM5NSw3ICsxMzk1LDcgQEAgdm9pZCBTZXNz
aW9uOjpnZXRFbGVtZW50QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBT
dHJpbmcmIGF0dHJpYnUKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVI
YW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgU3RyaW5nKEVsZW1lbnRBdHRyaWJ1dGVK
YXZhU2NyaXB0LCBzaXplb2YoRWxlbWVudEF0dHJpYnV0ZUphdmFTY3JpcHQpKSk7CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7
Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9y
IHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9i
amVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2
b2lkIFNlc3Npb246OmdldEVsZW1lbnRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBtYWtlU3RyaW5nKCJmdW5j
dGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LiIsIHByb3BlcnR5LCAiOyB9IikpOwogICAg
ICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50
cykpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBw
cm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7
CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNv
bW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNF
cnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ3Nyw3ICsxNDc3LDcg
QEAgdm9pZCBTZXNzaW9uOjpnZXRFbGVtZW50Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIGNvbnN0IFN0cmluZyYgY3NzUHJvcGUKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsK
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgbWFrZVN0cmluZygi
ZnVuY3Rpb24oZWxlbWVudCkgeyByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCciLCBjc3NQcm9wZXJ0eSwgIicpOyB9
IikpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3Zl
KGFyZ3VtZW50cykpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJl
c3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lv
bkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVz
cG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYxMyw3
ICsxNjEzLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50Q2xpY2soY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgZWxlbWVudElzRmlsZVVwbG9hZChlbGVtZW50SUQsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGVsZW1lbnRJRCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgIGVsZW1lbnRJc0ZpbGVVcGxvYWQoZWxlbWVudElELCBbdGhp
cywgcHJvdGVjdGVkVGhpcywgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNjI0LDcgKzE2MjQsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE9wdGlvblNldDxFbGVtZW50
TGF5b3V0T3B0aW9uPiBvcHRpb25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVz
IH07Ci0gICAgICAgICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9wdGlvbnMs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGVsZW1lbnRJ
RCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9u
YWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50ZXIsIGJvb2wgaXNP
YnNjdXJlZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKE9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+JiYgaW5W
aWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1v
dmUoZXJyb3IpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3MjQsNyArMTcy
NCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsZWFyKGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBlbGVtZW50SXNFZGl0YWJsZShlbGVtZW50SUQsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGVsZW1lbnRJRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGVsZW1lbnRJc0VkaXRhYmxlKGVsZW1lbnRJRCwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTczNyw3ICsxNzM3LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50Q2xlYXIoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMg
PSB7IEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQgfTsKLSAgICAg
ICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgZWxlbWVudElELCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxSZWN0PiYm
IHJlY3QsIE9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wdXRlRWxlbWVudExh
eW91dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBlbGVtZW50SUQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFs
PFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAo
IXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNzU1LDcgKzE3NTUsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGVh
cihjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAog
ICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9z
LCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgU3RyaW5nKEZvcm1FbGVtZW50Q2xlYXJK
YXZhU2NyaXB0LCBzaXplb2YoRm9ybUVsZW1lbnRDbGVhckphdmFTY3JpcHQpKSk7CiAgICAgICAg
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1
bWVudHMpKTsKLSAgICAgICAgICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJl
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYm
IHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2Vu
ZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtw
cm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE5NTQsNyArMTk1NCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGVsZW1lbnRJc0ZpbGVVcGxvYWQoZWxlbWVudElELCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBlbGVtZW50SUQsIHRleHQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRS
ZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBlbGVtZW50SXNGaWxlVXBsb2FkKGVs
ZW1lbnRJRCwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgdGV4dCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVt
ZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
RnVuY3QKICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhh
bmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsIGZvY3VzU2NyaXB0KTsKICAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3Zl
KGFyZ3VtZW50cykpOwotICAgICAgICAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tl
bmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBmaWxlVXBsb2Fk
VHlwZSwgZWxlbWVudElELCB0ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgZmlsZVVwbG9hZFR5cGUsIGVsZW1lbnRJRCwgdGV4dCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1h
bmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdU
Rk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMDYwLDcgKzIwNjAsNyBAQCB2b2lkIFNlc3Npb246OmdldFBhZ2VTb3Vy
Y2UoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgog
ICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywg
bV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFyYW1ldGVycy0+
c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgImZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50Lm91dGVySFRNTDsgfSJfcyk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFy
cmF5KCJhcmd1bWVudHMiX3MsIEpTT046OkFycmF5OjpjcmVhdGUoKSk7Ci0gICAgICAgIG1faG9z
dC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJl
ZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNz
aW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1v
dmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMTM5LDcgKzIxMzksNyBAQCB2b2lkIFNlc3Npb246OmV4
ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBh
cmd1bWVudAogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbigiZXhwZWN0c0ltcGxp
Y2l0Q2FsbGJhY2tBcmd1bWVudCJfcywgdHJ1ZSk7CiAgICAgICAgIGlmIChtX3NjcmlwdFRpbWVv
dXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKQogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0RG91YmxlKCJjYWxsYmFja1RpbWVvdXQiX3MsIG1fc2NyaXB0VGlt
ZW91dCk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIG11dGFibGUgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJl
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IENvbW1hbmRSZXN1bHQ6OmZh
aWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpOwogICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQuZXJyb3JDb2RlKCkgPT0gQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmV4cGVj
dGVkQWxlcnRPcGVuKQpAQCAtMjMyNyw3ICsyMzI3LDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRBbGxD
b29raWVzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIKIAogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0Nv
bnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdldEFsbENvb2tpZXMiX3MsIFdURk1v
dmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25I
b3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgIG1faG9z
dC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdldEFsbENvb2tpZXMiX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFu
ZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIzOTcsNyArMjM5Nyw3IEBAIHZvaWQgU2Vzc2lvbjo6YWRk
Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0
JiYpPiYmCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5n
Q29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJjb29raWUiX3MsIFdURk1vdmUoY29va2llKSk7
Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImFkZFNpbmdsZUNvb2tpZSJf
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNv
cHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
U2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9z
dC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImFkZFNpbmdsZUNvb2tpZSJfcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkg
ewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQyMiw3ICsyNDIy
LDcgQEAgdm9pZCBTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVj
dD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3Np
bmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImNvb2tp
ZU5hbWUiX3MsIG5hbWUpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJk
ZWxldGVTaW5nbGVDb29raWUiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlz
ID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25z
ZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJkZWxldGVTaW5nbGVD
b29raWUiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9y
KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFp
bChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI0NDYsNyArMjQ0Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2ll
cyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kCiAgICAg
ICAgIH0KICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdD
b250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAg
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJkZWxldGVBbGxDb29raWVzIl9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJl
ZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNz
aW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgiZGVsZXRlQWxsQ29va2llcyJfcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewog
ICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjYyMyw3ICsyNjIzLDcg
QEAgdm9pZCBTZXNzaW9uOjpwZXJmb3JtQWN0aW9ucyhWZWN0b3I8VmVjdG9yPEFjdGlvbj4+JiYg
YWN0aW9uc0J5VGljaywgRnVuY3Rpb248dm8KICAgICAgICAgfQogCiAgICAgICAgIHBhcmFtZXRl
cnMtPnNldEFycmF5KCJzdGVwcyJfcywgV1RGTW92ZShzdGVwcykpOwotICAgICAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKCJwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSJfcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYo
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Np
b25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3NTMs
NyArMjc1Myw3IEBAIHZvaWQgU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoT3B0aW9uYWw8U3RyaW5n
PiBlbGVtZW50SUQsIE9wdGlvbmFsPGJvb2w+IHNjcm9sbEluCiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldEJvb2xlYW4oImNsaXBUb1ZpZXdwb3J0Il9zLCB0cnVlKTsKICAgICAgICAgaWYgKHNjcm9s
bEludG9WaWV3LnZhbHVlT3IoZmFsc2UpKQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0Qm9v
bGVhbigic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCJfcywgdHJ1ZSk7Ci0gICAgICAgIG1faG9zdC0+
c2VuZENvbW1hbmRUb0JhY2tlbmQoInRha2VTY3JlZW5zaG90Il9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKCJ0YWtlU2NyZWVuc2hvdCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3By
b3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0Ojpm
YWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IDk4YTIyMmM2YTA3YTIxYmVmNTFkNjliZWFh
MjM1ZjFlNmY4MjJmYjQuLjVjZjcyMDE1YjA0NDAwZjJmY2ZmZWU0MTYzMjczYjE1YjBhZDM4ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBSZWY8UGxhdGZvcm1NZWRp
YVJlc291cmNlPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoUmVzb3Vy
Y2VSZXF1ZQogICAgIGF1dG8gcmVtb3RlTWVkaWFSZXNvdXJjZSA9IFJlbW90ZU1lZGlhUmVzb3Vy
Y2U6OmNyZWF0ZShyZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciwgKnRoaXMsIHJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICByZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5hZGRN
ZWRpYVJlc291cmNlKHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVNZWRpYVJl
c291cmNlKTsKIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpSZXF1ZXN0UmVzb3VyY2UocmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpLCBbcmVtb3RlTWVk
aWFSZXNvdXJjZSA9IHJlbW90ZU1lZGlhUmVzb3VyY2UuY29weVJlZigpXSgpIHsKKyAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6UmVxdWVzdFJlc291cmNlKHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zKSwgW3JlbW90ZU1lZGlhUmVzb3VyY2VdKCkgewogICAg
ICAgICByZW1vdGVNZWRpYVJlc291cmNlLT5zZXRSZWFkeSh0cnVlKTsKICAgICB9LCBtX2lkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKaW5kZXggMGJjYTliNzJmZjI3YWNkMmU1ZDI3YmExMmRkNGM2YTE4NzBjZWY5Mi4uMjFi
ODNjYjRlZGRiYjI0NTYxYWI0OGVhNjZjOTc1YzliNDI2NGI4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0xNDk5LDcg
KzE0OTksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJgogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k6CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBzdWJGcmFtZURvbWFp
biA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgc3RvcmUt
Pmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4sIFtzdG9yZSA9IHN0b3JlLmNvcHlSZWYoKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQp
IG11dGFibGUgeworICAgICAgICAgICAgc3RvcmUtPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4s
IFtzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Ym9vbCByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNz
UXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgcmVzdWx0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTE1MTIsNyArMTUx
Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfTsKIAogICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBzdWJGcmFtZURvbWFpbiA9
IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1l
RG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0b3Jl
LT5jYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9w
RnJhbWVEb21haW4sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELCBbc3RvcmUgPSBzdG9yZS5jb3B5
UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJv
b2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmNhbGxIYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52
YWx1ZSgpLCBwYWdlSUQsIFtzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgc3RvcmUt
PnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2MzksNyAr
MTYzOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgfQogCiAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBm
cmFtZUlELCBwYWdlSUQsIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgc2NvcGUsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHN0b3JlLT5jYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwg
dG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgc2NvcGUsIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdG9yZSA9IHN0b3JlLmNvcHlSZWYoKV0o
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIHN0
b3JlLT5jYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgc2NvcGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdG9yZV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQg
d2FzR3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVl
KCkuZGlzcGF0Y2goW3dhc0dyYW50ZWQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdhc0dyYW50ZWQpOwogICAgICAgICAgICAgfSk7CkBAIC0yMjg0LDExICsyMjg0LDEx
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRv
ciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIAotICAgIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgYXV0byByZWdpc3RyYWJsZURv
bWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291cmNl
c0ZvckRlYnVnTW9kZSgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9y
IGRvbWFpbnNUb0Jsb2NrIHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tp
ZXNGb3IsIHsgfSwgeyB9IH07Ci0gICAgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGRv
bWFpbnNUb0Jsb2NrLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKKyAgICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWlu
c1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tl
ZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKQEAgLTI0MDYsNyAr
MjQwNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0
ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgIGRlYnVnTG9nRG9tYWlu
c0luQmF0Y2hlcygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0cmFja2luZyByZXN0cmljdGlvbnMiLCBk
b21haW5zVG9CbG9jayk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGRvbWFpbnNU
b0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0
b3JlLT5jYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihk
b21haW5zVG9CbG9jaywgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN0b3JlID0gc3Rv
cmUuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBzdG9yZS0+Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9tYWluc1RvQmxvY2ssIFt3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpLCBzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNz
UXVldWUoKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDIyMWUzNjNhYTFlMjY3NmJi
Zjc3YzAxY2EwZmQ0MzhlNTk2MTZhZDQuLjA2Njk4MjBkODY1N2U1OTNjNDY2MmNmOTU2OWNmZjI4
MzlmZjI0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHMK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ29va2llQWNjZXNzOjpCYXNlZE9uQ29va2llUG9s
aWN5OgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJlZihz
dG9yZSgpKSwgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHN0b3JlLT5oYXNDb29raWVzKHN1YkZyYW1lRG9tYWluLCBbc3RvcmUg
PSBzdG9yZS5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0b3JlLT5oYXND
b29raWVzKHN1YkZyYW1lRG9tYWluLCBbc3RvcmUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiAgICAgICAgICAgICAg
ICAgfSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHMKICAgICB9
CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJlZihzdG9yZSgp
KSwgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJh
bWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlE
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewotICAgICAgICBzdG9yZS0+Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIo
c3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwg
W3N0b3JlID0gc3RvcmUuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3JlLT5j
YWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELCBbc3RvcmUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzdWx0XSAoKSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICAg
ICAgfSk7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWkKICAgICB9
CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZyYW1lRG9tYWluID0gc3ViRnJh
bWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4u
aXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkp
LCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVy
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBzY29wZSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0b3JlID0g
c3RvcmUuY29weVJlZigpXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZy
YW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBzY29wZSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0b3JlXShTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0b3Jl
LT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CiAgICAgICAgICAgICB9KTsKQEAg
LTgyMSwxMSArODIxLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxlCiAKICAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgcmVt
b3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgYXV0
byByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVBy
ZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3IsIHsgfSwgeyB9IH07Ci0gICAgdXBkYXRlQ29va2llQmxvY2tp
bmdGb3JEb21haW5zKGRvbWFpbnNUb0Jsb2NrLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB1cGRhdGVDb29raWVCbG9ja2luZ0Zv
ckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjptZXJnZVN0YXRpc3RpY3Mo
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKQEAgLTg4Myw3ICs4
ODMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29v
a2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dgogICAgICAgICBkZWJ1Z0xvZ0RvbWFpbnNJ
bkJhdGNoZXMoIkFwcGx5aW5nIGNyb3NzLXNpdGUgdHJhY2tpbmcgcmVzdHJpY3Rpb25zIiwgZG9t
YWluc1RvQmxvY2spOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBkb21haW5zVG9C
bG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICBzdG9y
ZS0+Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9t
YWluc1RvQmxvY2ssIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdG9yZSA9IHN0b3Jl
LmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGRvbWFpbnNUb0Jsb2NrLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgc3RvcmUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1
ZXVlKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0NzlmNTE2MTg1OWE4ODYzOGE4ZDI4ZTUwOGM5NWQx
OGY1MTQ4OGUxLi43MzczNDkyYmU4ODM3MmNkZWYwMTNhOTkzMWQ1MDhhNWI4NTA1ODQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjA2LDggKzIw
Niw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jk
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYKIAogICAgIHNldERhdGFSZWNvcmRzQmVpbmdS
ZW1vdmVkKHRydWUpOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IG1h
a2VSZWYobV9zdG9yZSksIGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciA9
IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3Ip
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZS5jb3B5UmVmKCldICgpIG11dGFi
bGUgewotICAgICAgICBzdG9yZS0+ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERh
dGFUeXBlcygpLCBXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCB3b3JrUXVldWUgPSB3b3JrUXVldWUuY29weVJlZigpXShjb25zdCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpIG11
dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKG1f
c3RvcmUpLCBkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQgPSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWVdICgpIG11dGFibGUgeworICAgICAgICBzdG9y
ZS0+ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBXVEZNb3Zl
KGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3b3Jr
UXVldWVdKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0
ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNo
KFtkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5z
V2l0aERlbGV0ZWRXZWJzaXRlRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKENvbXBsZXRp
b25IYW5kbAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIHN0b3JlID0g
bWFrZVJlZihtX3N0b3JlKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0b3JlLT5yZWdpc3RyYWJs
ZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpt
b25pdG9yZWREYXRhVHlwZXMoKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldIChIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgeworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFS
ZWNvcmRzV2VyZVNjYW5uZWQgPSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUsIHN0b3JlID0gbWFr
ZVJlZihtX3N0b3JlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3JlLT5yZWdpc3RyYWJsZURv
bWFpbnNXaXRoV2Vic2l0ZURhdGEoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25p
dG9yZWREYXRhVHlwZXMoKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHdvcmtRdWV1ZV0gKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlu
c1dpdGhXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3Bh
dGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBkb21haW5zV2l0aFdlYnNpdGVEYXRh
ID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBAIC00MzksNyArNDM5LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5n
Rm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWIKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJlZiht
X3N0b3JlKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2sp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgc3RvcmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3JIYW5kbGVyKGRvbWFpbnNUb0Jsb2NrLCBbc3RvcmUgPSBzdG9yZS5jb3B5UmVmKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIHN0b3JlLT5jYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29r
aWVzRm9ySGFuZGxlcihkb21haW5zVG9CbG9jaywgW3N0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgc3Rv
cmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICB9KTsKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKG1fc3RvcmUpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBzdG9yZS0+cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyhbc3RvcmUgPSBzdG9yZS5j
b3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3JlLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtzdG9y
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGUz
ZjQzNGQ1ZjhmMWZiMTU1ODJmYmIyOTg3NDcwYjBjMGJlMGM3MWEuLmYxYTg1NjAwYTQ0ZjRhN2Vk
MDUyNWQ1NGQwMjk0ZjdiYzZjYTM4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zNzksOCArMzc5LDggQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxSZXNvdXIKICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdTdGF0aXN0
aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKIAogICAgICAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNz
aW5nIHN0YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBw
b3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZS0+dXBkYXRlQ29va2llQmxvY2tpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRU
aGlzLmNvcHlSZWYoKV0oKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCldKCkgeworICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+dXBkYXRlQ29va2llQmxvY2tpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXNdKCkg
eworICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXNdKCkgewogICAgICAgICAgICAgICAgIGxvZ1Rlc3RpbmdFdmVudCgiU3RhdGlzdGlj
cyBVcGRhdGVkIl9zKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQ3NCw3ICs0
NzQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgICAgICAgICAgaWYgKCFtX25ldHdv
cmtTZXNzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
bywgc2NvcGUsIHRvcEZyYW1lRG9tYWluLCBzdWJGcmFtZURvbWFpbiB9KTsKIAotICAgICAgICAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlS
ZWYoKSwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQs
IHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
Ym9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVy
ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMsIHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwg
ZnJhbWVJRCwgd2ViUGFnZUlELCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAodXNlckRpZEdyYW50QWNjZXNzKQogICAgICAgICAgICAgICAgICAg
ICBncmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFt
ZUlELCB3ZWJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBzY29wZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTEx
ODYsNyArMTE4Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyCiAgICAgICAgICAgICBwb3N0
VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJv
dGVjdGVkVGhpcy5jb3B5UmVmKCksIHNob3VsZEdyYW5kZmF0aGVyLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBzaG91bGRHcmFu
ZGZhdGhlciwgY2FsbGJhY2tBZ2dyZWdhdG9yXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
IChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Olllcykg
ewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRh
KFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildKCkgbXV0
YWJsZSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAyY2M5YjdiYzc0ODEw
MjdlOWE2MWZhMWNhZDQ4NWIyMjc4Y2VhM2M3Li42ZjBjZTY0OWQ4YjE3ZmVmOGQ2NmVmMTNkNjNi
YzVmZGU2OGM1MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDk0LDcgKzQ5
NCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZFBpbmc6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBS
SXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291
cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFy
YW1ldGVycy5pZGVudGlmaWVyKTsKIAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbY29u
bmVjdGlvbiA9IG1fY29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyXSAoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtj
b25uZWN0aW9uID0gbV9jb25uZWN0aW9uLCBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRl
bnRpZmllcl0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZEZpbmlzaFBpbmdMb2FkKGlkZW50aWZpZXIsIGVycm9y
LCByZXNwb25zZSksIDApOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODk3MmE2OTQ1OTM5ZDJiN2Y4NTUzMDA0OWE5
ZjQzZGJiMDZlNTE5ZS4uZjEyM2IyMGFjNmMyNDUxMGY0NDlhMDI0ZWJkYzlmNTJiNjRkMmQzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTI2NywxMCArMjY3LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29raWVzIGFuZCBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihb
Jl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLmZsdXNo
QW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZShbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24uZmx1c2hB
bmREZXN0cm95UGVyc2lzdGVudFN0b3JlKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAg
fSk7CiAjZW5kaWYKLSAgICBwbGF0Zm9ybVN5bmNBbGxDb29raWVzKFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHBsYXRmb3JtU3lu
Y0FsbENvb2tpZXMoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMTUxNCwyMCArMTUxNCwyMCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdAogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENhY2hlU3RvcmFn
ZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLmNv
bnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvIGVudHJpZXMpIG11
dGFibGUgeworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCp0aGlz
LCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9u
OjpDb21wdXRlU2l6ZXMpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMpIG11dGFi
bGUgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJp
ZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwogICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdl
KSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7Ci0gICAgICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQs
IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRv
JiYgb3JpZ2lucykgeworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3Rv
cmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lu
cykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vi
c2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UsIDAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7Ci0gICAgICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byYmIG9yaWdpbnMp
IHsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhz
ZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAg
ICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50
cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIDAg
fSk7CiAgICAgICAgIH0pOwpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXQKICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7
CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhNRTog
UGljayB0aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQuCi0g
ICAgICAgIHBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBjcm9zc1RocmVh
ZENvcHkocGF0aCldKCkgbXV0YWJsZSB7CisgICAgICAgIHBvc3RTdG9yYWdlVGFzayhDcm9zc1Ro
cmVhZFRhc2soW3RoaXMsIGNhbGxiYWNrQWdncmVnYXRvciwgcGF0aCA9IGNyb3NzVGhyZWFkQ29w
eShwYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpLCBzZWN1
cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzLCAwIH0pOwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgcGF0aCA9IG1fc2VydmljZVdv
cmtlckluZm8uZ2V0KHNlc3Npb25JRCkuZGF0YWJhc2VQYXRoOwogICAgIGlmICghcGF0aC5pc0Vt
cHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zKSkgewotICAgICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vz
c2lvbklEKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKKyAgICAgICAgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmln
aW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2VjdXJpdHlP
cmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0
YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBAIC0xNTY0LDcgKzE1NjQsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdAogI2VuZGlmCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CiAgICAgICAgIGZvckVhY2hO
ZXR3b3JrU2Vzc2lvbihbc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsICZjYWxsYmFja0FnZ3JlZ2F0
b3JdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhz
ZXNzaW9uLmNhY2hlKCksIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRyaWVzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhzZXNzaW9uLmNhY2hlKCksIHNl
c3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9KTsKQEAgLTE1ODMsNyArMTU4Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVnaXN0cmFibGVEb21haW5zKFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgZG9t
YWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
cmVnaXN0cmFibGVEb21haW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBkb21haW5zKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFkb21haW5zLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0
YS5yZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5hZGQoZG9tYWlu
cy50YWtlTGFzdCgpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTE2MTgsMjIgKzE2MTgsMjIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKQotICAgICAgICBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnRoaXMsIHNlc3Npb25JRCwgW2NsZWFy
VGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAg
ICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnRoaXMsIHNlc3Npb25JRCwg
W2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdl
clNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKLSAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
ZGVsZXRlU2Vzc2lvblN0b3JhZ2Uoc2Vzc2lvbklELCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVh
clRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJT
ZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlKHNlc3Npb25JRCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7
IH0pOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25J
RCkpCi0gICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlm
aWVkU2luY2Uoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBj
bGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCBtb2RpZmll
ZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAg
ICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlm
aWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hh
bmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5j
bG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFy
VGFza3NIYW5kbGVyXSB7IH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAg
ICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jbGVhckFsbChbY2xlYXJUYXNrc0hh
bmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHN3U2Vy
dmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNsZWFyQWxsKFtjbGVhclRhc2tzSGFuZGxlcl0geyB9
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTE2
NDcsNyArMTY0Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgICAgICAgICAgICAg
Ly8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCiAgICAgICAgICAg
ICAgICAgYXV0byBzaG91bGRHcmFuZGZhdGhlciA9ICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxl
dGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KSA/IFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljczo6Tm8gOiBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllczsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2UsIHNob3VsZEdyYW5kZmF0
aGVyLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsg
fSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLCBzaG91bGRHcmFuZGZhdGhlciwg
W2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMTczMiwzMSArMTczMiwzMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogCiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkp
IHsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCi0gICAgICAg
ICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNl
c3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hh
bmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25J
RCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJd
IHsgfSk7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFp
bnMoc2Vzc2lvbklEKSkKLSAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lv
blN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFu
ZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9zdG9y
YWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwg
b3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSAmJiBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQotICAgICAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2lu
RGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0g
eyB9KTsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlRm9y
T3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9z
ZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFu
ZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgd2ViSURC
U2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdp
bkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiAhc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpIHsKICAgICAgICAgYXV0byYgc2VydmVyID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNl
c3Npb25JRCk7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQot
ICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHNlcnZlci5j
bGVhcihvcmlnaW5EYXRhLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogI2VuZGlm
CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRp
c2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIGZvckVhY2hO
ZXR3b3JrU2Vzc2lvbihbb3JpZ2luRGF0YXMsICZjbGVhclRhc2tzSGFuZGxlcl0oYXV0byYgc2Vz
c2lvbikgewotICAgICAgICAgICAgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb24uY2FjaGUo
KSwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNv
cHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhzZXNzaW9u
LmNhY2hlKCksIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgICAg
IH0pOwogICAgIH0KIApAQCAtMTc3Myw3ICsxNzczLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3Ry
YWJsZURvbWFpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlbW92ZURhdGFGb3JEb21h
aW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVm
KCldIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJl
bW92ZURhdGFGb3JEb21haW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTEwLDcgKzE5MTAsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKFBBTDo6U2VzcwogICAgIH0KICAgICAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewotICAgICAgICBDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCp0aGlzLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucy5j
b250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpLCBbdGhpcywgZG9t
YWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIHNlc3Npb25JRCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRyaWVz
KSBtdXRhYmxlIHsKKyAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygq
dGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbjo6Q29tcHV0ZVNpemVzKSwgW3RoaXMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRyaWVz
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYXV0byBlbnRyaWVzVG9EZWxl
dGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29v
a2llV2Vic2l0ZURhdGFGb3IsIGVudHJpZXMpOwogCkBAIC0xOTE4LDIyICsxOTE4LDIyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9z
dChlbnRyeS5vcmlnaW4uaG9zdCkpOwogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
ZW50cmllc1RvRGVsZXRlKQotICAgICAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpj
bGVhckNhY2hlc0Zvck9yaWdpbigqdGhpcywgc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEg
eyBlbnRyeS5vcmlnaW4gfSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCp0aGlzLCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSB7IGVudHJ5Lm9yaWdpbiB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgICAgICB9
KTsKICAgICB9CiAKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlc3Npb25TdG9yYWdlKSkgewotICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJz
aXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFn
ZXJTZXQtPmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMp
IHsKICAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lz
dHJhYmxlRG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRl
RGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAgICAgICAgICAgICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyhzZXNz
aW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luc1Rv
RGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PmdldExvY2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVE
YXRhRm9yXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNl
dC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIG9yaWdpbnNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxl
RG9tYWlucyhvcmlnaW5zLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZv
ciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOwotICAgICAgICAgICAgICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBv
cmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmRl
bGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5zVG9EZWxldGUsIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAg
IH0KQEAgLTE5NDIsOCArMTk0Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJl
c3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgYXV0
byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwogICAgIGlmICghcGF0
aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKICAgICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0
IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgotICAgICAgICBwb3N0U3Rv
cmFnZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBjcm9zc1RocmVhZENv
cHkocGF0aCksIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
c2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciA9IFdU
Rk1vdmUoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdp
bnMgPSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CisgICAgICAgIHBvc3RTdG9yYWdl
VGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9y
LCBwYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGgpLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvciA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxOb25D
b29raWVXZWJzaXRlRGF0YUZvcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3RoaXMsIHNlc3Npb25JRCwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29v
a2llV2Vic2l0ZURhdGFGb3IgPSBXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBzZWN1cml0eU9yaWdpbnMgPSBpbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gZW50cmllc1RvRGVsZXRlOwogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byBkb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCk7CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPm1fZG9tYWlucy5hZGQoZG9tYWluKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMoZW50cmllc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICB3ZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoZW50cmllc1RvRGVs
ZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pKTsKICAgICB9CkBAIC0xOTYzLDEyICsxOTYzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpT
ZXNzCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBhdGggPSBtX3NlcnZpY2VXb3Jr
ZXJJbmZvLmdldChzZXNzaW9uSUQpLmRhdGFiYXNlUGF0aDsKICAgICBpZiAoIXBhdGguaXNFbXB0
eSgpICYmIHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucykpIHsKLSAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3Jp
Z2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgICAgIHN3U2VydmVyRm9y
U2Vzc2lvbihzZXNzaW9uSUQpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbdGhpcywgc2Vz
c2lvbklELCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJh
Y2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5
T3JpZ2lucykgbXV0YWJsZSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5T3JpZ2lu
IDogc2VjdXJpdHlPcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5jb250YWlucyhSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkpKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
Pm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0
KHNlY3VyaXR5T3JpZ2luLmhvc3QpKTsKLSAgICAgICAgICAgICAgICBzd1NlcnZlckZvclNlc3Np
b24oc2Vzc2lvbklEKS5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgc3dT
ZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KQEAg
LTE5NzYsNyArMTk3Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAg
ICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgJmRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCAmY2FsbGJhY2tBZ2dyZWdh
dG9yXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMo
c2Vzc2lvbi5jYWNoZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW2RvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZXNzaW9uID0gbWFrZVdlYWtQdHIoJnNlc3Npb24pXShh
dXRvIGVudHJpZXMpIG11dGFibGUgeworICAgICAgICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVz
KHNlc3Npb24uY2FjaGUoKSwgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtkb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBzZXNzaW9u
ID0gbWFrZVdlYWtQdHIoJnNlc3Npb24pXShhdXRvIGVudHJpZXMpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0xOTg3LDE0ICsxOTg3LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAg
ICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5hcHBlbmQoZW50cnkub3JpZ2luKTsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjbGVhckRpc2tDYWNoZUVudHJpZXMoc2Vz
c2lvbi0+Y2FjaGUoKSwgZW50cmllc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICBjbGVhckRp
c2tDYWNoZUVudHJpZXMoc2Vzc2lvbi0+Y2FjaGUoKSwgZW50cmllc1RvRGVsZXRlLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0K
IAogICAgIGF1dG8gZGF0YVR5cGVzRm9yVUlQcm9jZXNzID0gV2Vic2l0ZURhdGE6OmZpbHRlcih3
ZWJzaXRlRGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSSk7CiAgICAgaWYgKCFk
YXRhVHlwZXNGb3JVSVByb2Nlc3MuaXNFbXB0eSgpICYmICFkb21haW5zVG9EZWxldGVBbGxOb25D
b29raWVXZWJzaXRlRGF0YUZvci5pc0VtcHR5KCkpIHsKLSAgICAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKKyAgICAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYp
PiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykgewogICAgICAgICAgICAgZm9yIChhdXRvJiBk
b21haW4gOiBkb21haW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9k
b21haW5zLmFkZChkb21haW4pOwogICAgICAgICB9OwpAQCAtMjA4MCw3ICsyMDgwLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICB9CiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKLSAgICAgICAgQ2FjaGVT
dG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlv
bnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50cmll
cykgbXV0YWJsZSB7CisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMo
KnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTIw
ODksOCArMjA4OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgYXV0byBwYXRoID0g
bV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwogICAgIGlmICghcGF0aC5pc0VtcHR5
KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykpIHsKICAgICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRhdGFiYXNl
IHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgotICAgICAgICBwb3N0U3RvcmFnZVRhc2so
Q3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpLCBwYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGgpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBzZWN1cml0eU9yaWdpbnMgPSBpbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKHBhdGgpXSB7CisgICAgICAgIHBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2soW3RoaXMsIGNhbGxiYWNrQWdncmVnYXRvciwgcGF0aCA9IGNyb3NzVGhyZWFk
Q29weShwYXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBzZWN1cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0YWJh
c2VPcmlnaW5zKHBhdGgpXSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1
cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmln
aW4sIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICAg
ICAgfSk7CkBAIC0yMTAxLDcgKzIxMDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3Ry
YWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBwYXRoID0gbV9zZXJ2aWNlV29ya2VySW5mby5n
ZXQoc2Vzc2lvbklEKS5kYXRhYmFzZVBhdGg7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMpKSB7Ci0gICAgICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmdl
dE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBz
ZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vz
c2lvbklEKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0o
Y29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFi
bGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3Jp
Z2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBAIC0yMTEwLDcgKzIxMTAs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBmb3JF
YWNoTmV0d29ya1Nlc3Npb24oW3Nlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCAmY2FsbGJhY2tBZ2dy
ZWdhdG9yXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJp
ZXMoc2Vzc2lvbi5jYWNoZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50cmllcykgbXV0
YWJsZSB7CisgICAgICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoc2Vzc2lvbi5jYWNoZSgp
LCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRy
aWVzKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CkBAIC0yNTMwLDcgKzI1MzAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VQogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3Rv
cmFnZSkpIHsKICAgICAgICAgaWYgKG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Np
b25JRCkpCi0gICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW5hbWVPcmlnaW4oc2Vz
c2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBbYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOworICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVuYW1lT3JpZ2lu
KHNlc3Npb25JRCwgb2xkTmFtZSwgbmV3TmFtZSwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggODg5NTMwMzEzNmJhOWQ2MDg1ZWIwOTU3MDlhOGQz
N2M3ZjE0NjNhOS4uNWRjZDdiOThjZDVhNzA2NTY4NDY3MTNmMzYxZDgzMDNmMjE2MWE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcApAQCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2Fj
aGVzRnJvbURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENhY2hlc0Nh
bGxiCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWNoZXMtPmlu
aXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlcyA9IGNhY2hlcy5j
b3B5UmVmKCldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fj
aGVzLT5pbml0aWFsaXplKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZXNdKE9w
dGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikg
ewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDUsNyArNjQ1LDcgQEAgdm9pZCBFbmdp
bmU6OmZldGNoRGlyZWN0b3J5RW50cmllcyhib29sIHNob3VsZENvbXB1dGVTaXplLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYKIHsKICAgICBhdXRvIHRhc2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNr
Q291bnRlcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBmb3IgKGF1
dG8mIGZvbGRlclBhdGggOiBmb2xkZXJQYXRocykgewotICAgICAgICBDYWNoZXM6OnJldHJpZXZl
T3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNr
Q291bnRlci5jb3B5UmVmKCldIChhdXRvJiYgb3JpZ2luKSBtdXRhYmxlIHsKKyAgICAgICAgQ2Fj
aGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tD
b3VudGVyXSAoYXV0byYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgfSk7
CiAKICAgICBmb3IgKGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygpKQotICAgICAgICBj
YWNoZXMtPmNsZWFyKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgICAgICBjYWNoZXMtPmNsZWFyKFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiB9CiAKIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTcyMyw3ICs3MjMsNyBA
QCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbQogCiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IG1f
Y2FjaGVzKSB7CiAgICAgICAgIGlmIChrZXlWYWx1ZS5rZXkudG9wT3JpZ2luID09IG9yaWdpbiB8
fCBrZXlWYWx1ZS5rZXkuY2xpZW50T3JpZ2luID09IG9yaWdpbikKLSAgICAgICAgICAgIGtleVZh
bHVlLnZhbHVlLT5jbGVhcihbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIGtleVZhbHVlLnZhbHVlLT5jbGVhcihbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZv
aWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogZm9sZGVyUGF0aHMpIHsKLSAgICAgICAgQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBmb2xkZXJQYXRoXSAoT3B0aW9u
YWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CisgICAg
ICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lv
UXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbiwgY2Fs
bGJhY2tBZ2dyZWdhdG9yLCBmb2xkZXJQYXRoXSAoT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWZvbGRlck9y
aWdpbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoZm9sZGVyT3Jp
Z2luLT50b3BPcmlnaW4gIT0gb3JpZ2luICYmIGZvbGRlck9yaWdpbi0+Y2xpZW50T3JpZ2luICE9
IG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCBhYzMzNzc1OWVlYzlmNzI1ZDQ5MDllYTZm
ZDk1NTVjMmRmNWVjYWJmLi40MTIwMzM4ZjAzZTI4OGJhODhmODk0ODYxYzY5ZmM4ZWNhNzMzMzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm8KICAgICAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBmb3JFYWNoTmV0d29y
a1Nlc3Npb24oW21vZGlmaWVkU2luY2UsICZhZ2dyZWdhdG9yXShOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbikgewogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0gc2Vzc2lvbi5jYWNoZSgpKQot
ICAgICAgICAgICAgICAgIGNhY2hlLT5jbGVhcihtb2RpZmllZFNpbmNlLCBbYWdncmVnYXRvciA9
IGFnZ3JlZ2F0b3IuY29weVJlZigpXSAoKSB7IH0pOworICAgICAgICAgICAgICAgIGNhY2hlLT5j
bGVhcihtb2RpZmllZFNpbmNlLCBbYWdncmVnYXRvcl0gKCkgeyB9KTsKICAgICAgICAgfSk7CiAg
ICAgfSkuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCAwODNkMDE4YWNiNDU0MzhmMmVm
YjJmZDBiNTRmZDExNzdlMzQwMmEyLi5mOTI3MDE5NDU5YWE1ZmQyNTM1YmQ1ZmNjYjQzNWE2OWZm
ODUzZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvCiAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGZvckVhY2hOZXR3b3JrU2Vz
c2lvbihbbW9kaWZpZWRTaW5jZSwgJmFnZ3JlZ2F0b3JdKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
KSB7CiAgICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IHNlc3Npb24uY2FjaGUoKSkKLSAgICAgICAg
ICAgIGNhY2hlLT5jbGVhcihtb2RpZmllZFNpbmNlLCBbYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3Iu
Y29weVJlZigpXSAoKSB7IH0pOworICAgICAgICAgICAgY2FjaGUtPmNsZWFyKG1vZGlmaWVkU2lu
Y2UsIFthZ2dyZWdhdG9yXSAoKSB7IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRl
eCA1MmYxOWYwNGQwZDIyYjNkNjBkNjMyMWFjYjk2Y2QxNWJhZjk2MTM0Li4wNWFkODQyMWQ4NzM5
Y2MxOTE3ZmRjYWUxMTA3YTBlOTU5YjU0YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTY2MywxNiAr
NjYzLDE2IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAgICAgfSk7CiAKICAgICBhdXRvJiBz
dG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwotICAgIHN0b3JlLmNsZWFyUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgc3RvcmUucmVzZXRDcm9zc1NpdGVM
b2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgc3RvcmUuc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyh0cnVlLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAg
ICBzdG9yZS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoZmFsc2UsIGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICBzdG9yZS5zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyh0
cnVlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKLSAgICBzdG9yZS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICBzdG9yZS5yZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgc3RvcmUuc2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8sIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAg
IHN0b3JlLnNldFVzZUlUUERhdGFiYXNlKGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5jbGVhclJlc291cmNl
TG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwor
ICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIHN0
b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRl
c3RpbmcodHJ1ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBzdG9yZS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
ZmFsc2UsIGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIHN0b3JlLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRG
b3JUZXN0aW5nKHRydWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgc3RvcmUuc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9y
VGVzdGluZyhmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBzdG9yZS5yZXNl
dFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAg
ICBzdG9yZS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAg
ICBzdG9yZS5zZXRVc2VJVFBEYXRhYmFzZShmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGFTdG9yZVJlZik7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCmluZGV4IDRjYWNjMTBjY2U1YjE4OGQ0MGEyMmUxMTM2OGFhMGZkODU1
ZTMxODcuLmEwZThiMTgyYzZiN2Y5NWUxYzYwN2VhOTcwZGFiNDBmMTQ1OGViYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xMDIy
LDcgKzEwMjIsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1Nu
YXBzaG90CiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklP
U3VyZmFjZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0
LCBjb21wcmVzc2VkRm9ybWF0KSkgewogICAgICAgICBhdXRvIHZpZXdTbmFwc2hvdCA9IFdlYktp
dDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgICAgIFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFj
ZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3QgPSB2aWV3U25hcHNob3QuY29weVJlZigp
XShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7
CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3Vy
ZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3Rd
KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZhY2UpIHsK
ICAgICAgICAgICAgIGlmIChjb252ZXJ0ZWRTdXJmYWNlKQogICAgICAgICAgICAgICAgIHZpZXdT
bmFwc2hvdC0+c2V0U3VyZmFjZShXVEZNb3ZlKGNvbnZlcnRlZFN1cmZhY2UpKTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDVkYzg3YjYwYmRhYTgzNGIwMGEzZTgwODQ3
Mjc3ZjU0ZjNiYmQ0ODUuLjJlYTdiNGQ2M2FkYjljYjJlZTg5ODVhODk0NDczZDBlOWU0ODFlOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC05ODAsNyArOTgwLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHQKICAgICBpZiAoZnJhbWVOb3RGb3VuZCkKICAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
Pik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKE9wdGlvbmFsPFN0cmluZz4gZXJy
b3JUeXBlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIG11dGFibGUgeworICAg
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdf
Rk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpy
ZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleAogICAg
IGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+KT4gY29tcGxldGlvbkhh
bmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9
IGNhbGxiYWNrLmNvcHlSZWYoKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0YWJsZSB7CisgICAgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4p
PiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yVHlwZSkgewog
ICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9F
UlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNTQs
NyArMTA1NCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5
b3V0KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuCiAgICAgaWYgKCFjb29yZGluYXRl
U3lzdGVtKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVU
QUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnY29vcmRpbmF0ZVN5c3RlbScg
aXMgaW52YWxpZC4iKTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4s
IGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYo
KV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3Vy
ZWQpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIG11dGFibGUgewogICAgICAgICBp
ZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5H
X0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
c2VsZWN0T3B0aW9uRWxlbWVudChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmQKICAg
ICBpZiAoZnJhbWVOb3RGb3VuZCkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrID0gY2FsbGJh
Y2suY29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CisgICAg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9u
SGFuZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUg
ewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZh
aWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI2Myw3ICsxMjYzLDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnQKICAgICAgICAgbmV3RmlsZUxpc3QuYXBwZW5kKGZpbGVuYW1lKTsKICAgICB9CiAK
LSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9u
SGFuZGxlciA9IFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oT3B0aW9uYWw8U3RyaW5n
PiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzA2LDcgKzEz
MDYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRBbGxDb29raWVzKGNvbnN0IFN0
cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBSZQogICAgIGlmICghcGFnZSkKICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2sgPSBjYWxsYmFjay5j
b3B5UmVmKCldKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiBjb29raWVzKSBtdXRhYmxlIHsKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7
CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVE
X0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMy
NCw3ICsxMzI0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xlQ29v
a2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGwKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsK
IAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4gY29t
cGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKE9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlKSBtdXRhYmxlIHsKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrXShP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5
cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURF
RklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzk0LDcgKzEzOTQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVD
b29raWUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsCiAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIs
ICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNv
b2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1l
bnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tp
ZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2Fs
bGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKCkgeworICAgIGNvb2tpZU1hbmFnZXItPnNldENv
b2tpZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBb
Y2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9KTsK
IH0KQEAgLTE2ODAsNyArMTY4MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
IGlmICghcGFyc2VkQnV0dG9uKQogICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2J1
dHRvbicgaXMgaW52YWxpZC4iKTsKIAotICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gcGFnZS5jb3B5UmVmKCksIHgsIHldKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGF1dG8gbW91c2VF
dmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UsIHgsIHldKE9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3Ip
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Q
cm90b2NvbFN0cmluZygpKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5n
JiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVj
dCYmKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCBjYWxsYmFj
ayA9IGNhbGxiYWNrLmNvcHlSZWYoKSwgdGFrZVZpZXdTbmFwc290ID0gV1RGTW92ZSh0YWtlVmll
d1NuYXBzb3QpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCYm
IHJlY3QpIG11dGFibGUgeworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgV2ViQ29yZTo6SW50UmVjdCYmKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbcGFnZSA9IG1h
a2VSZWYoKnBhZ2UpLCBjYWxsYmFjaywgdGFrZVZpZXdTbmFwc290ID0gV1RGTW92ZSh0YWtlVmll
d1NuYXBzb3QpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCYm
IHJlY3QpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBj
YWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
KmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDQ0OTI4ZDJmMWE3Y2M3N2Nk
NTIzYTk0MzIyNDBjNDMxM2VmZmM3YjIuLjQzMzc2Yjg2OGEwMTQ5MmM5YzYwNTYxMGZiYTM1YjQ0
OTNhYzc3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAog
ICAgICAgICAmJiAhbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2VzRGVj
aXNpb25IYW5kbGVyCiAgICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNp
c2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXMKICAgICAgICAgJiYgIW1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblVzZXJJbmZvRGVjaXNpb25IYW5kbGVyV2Vic2l0ZVBvbGljaWVzKSB7Ci0gICAg
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbd2ViUGFnZSA9IG1ha2VSZWYod2ViUGFnZVBy
b3h5KSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgbmF2aWdhdGlvbkFjdGlvbiA9IG5h
dmlnYXRpb25BY3Rpb24uY29weVJlZigpLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzXSAoYm9vbCBp
bnRlcmNlcHRlZE5hdmlnYXRpb24pIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFt3ZWJQYWdlID0gbWFrZVJlZih3ZWJQYWdlUHJveHkpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlz
dGVuZXIpLCBuYXZpZ2F0aW9uQWN0aW9uLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzXSAoYm9vbCBp
bnRlcmNlcHRlZE5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGlmIChpbnRlcmNlcHRlZE5hdmln
YXRpb24pIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQ
CiAgICAgfSkoKTsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIHNlbGVjdG9yRm9yQ29tcGxl
dGlvbkhhbmRsZXJDaGVja2VyKTsKLSAgICBhdXRvIGRlY2lzaW9uSGFuZGxlcldpdGhQcmVmZXJl
bmNlc09yUG9saWNpZXMgPSBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpLCBuYXZp
Z2F0aW9uQWN0aW9uID0gbmF2aWdhdGlvbkFjdGlvbi5jb3B5UmVmKCksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpLCB3ZWJQYWdlUHJveHkgPSBtYWtlUmVmKHdlYlBhZ2VQcm94eSksIHN1YmZy
YW1lTmF2aWdhdGlvbiwgZGVmYXVsdFdlYnNpdGVQb2xpY2llc10gKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSBhY3Rpb25Qb2xpY3ksIGlkIHBvbGljaWVzT3JQcmVmZXJlbmNlcykgbXV0YWJsZSB7
CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXJXaXRoUHJlZmVyZW5jZXNPclBvbGljaWVzID0gW2xv
Y2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgbmF2aWdhdGlvbkFjdGlvbiwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlciksIHdlYlBhZ2VQcm94eSA9IG1ha2VSZWYod2ViUGFnZVByb3h5
KSwgc3ViZnJhbWVOYXZpZ2F0aW9uLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzXSAoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSwgaWQgcG9saWNpZXNPclByZWZlcmVuY2VzKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNh
bGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRl
eCAxN2JhNTlkZjVhZDAxNzJlYjg2ZWNkM2YzMWI0NTdjZjIzNThhNGI4Li43ZTA3MGRiZDYxM2Vl
M2IxYzczNGYyZTVlYzA5YmM3YmZiZjc4NDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUoRnJhbWUKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAK
LSAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luID0gdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uY29weVJlZigpLCB0b3BMZXZlbERvY3VtZW50
T3JpZ2luID0gdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBlcm1pc3Npb25JbmZvIHBlcm1pc3Np
b25JbmZvKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIGZyYW1lSUQsIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShQZXJtaXNzaW9uSW5mbyBwZXJt
aXNzaW9uSW5mbykgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZVNjb3BlRXhpdChbJmNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmM3ZDYwMDNmMDJkYzg5YjJiZWE5MWY3ODE3ZjA1
Y2ZmMjc0MTExYS4uYWE1MDFlZTNkYzEwYjY1Njg0ZTYzNTgwYWY3ZTJlYWE1MmNiZjFjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODgsNyArNzg4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7Ci0gICAgbV9p
bmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJl
ZigpXSAoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJldHVybkRhdGEpIG11dGFibGUgeworICAgIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUodGhpcywgbWVzc2FnZU5hbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwcm9jZXNzID0gbV9wcm9jZXNzXSAoUmVm
UHRyPEFQSTo6T2JqZWN0PiYmIHJldHVybkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihVc2VyRGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJl
dHVybkRhdGEuZ2V0KCkpKSk7CiAgICAgfSk7CiB9CkBAIC0zMjAyLDEzICszMjAyLDEzIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJh
Y2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZSgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNr
QWdncmVnYXRvcl0geyB9KTsKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nl
c3MtPnByb2Nlc3NQb29sKCkubmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAoIW5ldHdv
cmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG5ldHdvcmtQ
cm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVh
clNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBuZXR3b3JrUHJv
Y2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogICAgIH0KICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTUxMDYsNyAr
NTEwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiAgICAgYXV0byogZnJhbWUgPSBwcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1l
KTsKIAotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVu
dGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vz
cy5jb3B5UmVmKCldIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgeworICAgIGF1dG8gc2Vu
ZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlE
LCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNp
b24pIHsKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2Vi
UGFnZUlEKTsKICAgICB9KTsKIApAQCAtNTE5Myw3ICs1MTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXMKICAgICAKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBv
bGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0
aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93
c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFibGUgewogCi0gICAgICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRo
aXMuY29weVJlZigpLCBmcmFtZSA9IGZyYW1lLmNvcHlSZWYoKSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBuYXZpZ2F0aW9uLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2ll
cyA9IG1ha2VSZWZQdHIocG9saWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcywgZnJhbWUsIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0g
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwb2xpY2llcykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZGVmYXVsdFBvbGljaWVzID0gbV9jb25maWd1
cmF0aW9uLT5kZWZhdWx0V2Vic2l0ZVBvbGljaWVzKCkpCkBAIC01NDQwLDcgKzU0NDAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJl
c3BvbnNlLnVybCgpKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0g
bmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklE
KSA6IG51bGxwdHI7CiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9s
aWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3
ZWJQYWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBX
VEZNb3ZlKG5hdmlnYXRpb24pLAotICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCld
IChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVm
UHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
IG11dGFibGUgeworICAgICAgICBwcm9jZXNzXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
QVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNh
ZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6
IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNs
aWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNh
ZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTc5MjIsNyArNzky
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdh
bWVwYWREYXRhPiYgZ2FtZXBhZERhdGFzLCBib29sCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk+JiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMg
bmVnb3RpYXRlZExlZ2FjeVRMUykKIHsKICAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRMUyA9PSBO
ZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMpIHsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5z
aG91bGRBbGxvd0xlZ2FjeVRMUygqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlID0gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY29weVJlZigpXSAoYm9vbCBzaG91bGRB
bGxvd0xlZ2FjeVRMUykgeworICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnNob3VsZEFsbG93
TGVnYWN5VExTKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VdIChi
b29sIHNob3VsZEFsbG93TGVnYWN5VExTKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQWxsb3dM
ZWdhY3lUTFMpCiAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdl
dCgpKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCBlMjkyZTBlNDdjZmI3YmQ5NTQzMGIwMTY1ZWZhMTIzOTJhMDkwYzZh
Li5jZDdlNzA4NzRmZDUyNzZlZTEwYmZjOGYxYjFkOTBkMDAwM2NjM2UyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMTg1LDcgKzIxODUsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAgIGF1dG8mIHRhcmdldFVSTCA9IG5hdmlnYXRpb24u
Y3VycmVudFJlcXVlc3QoKS51cmwoKTsKICAgICBhdXRvIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0YXJnZXRVUkwgfTsKIAotICAgIGF1dG8g
Y3JlYXRlTmV3UHJvY2VzcyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgZGF0YVN0b3Jl
ID0gZGF0YVN0b3JlLmNvcHlSZWYoKV0gKCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94eT4geworICAg
IGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgZGF0
YVN0b3JlXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7CiAgICAgICAgIHJldHVybiBwcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW4oZGF0YVN0b3JlLCBwYWdlLnB0cigpLCB0YXJnZXRSZWdp
c3RyYWJsZURvbWFpbik7CiAgICAgfTsKIApAQCAtMjM2Miw3ICsyMzYyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWkKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGZvciAo
YXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGlu
ZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91bGRTY2hlZHVsZU5vdGlm
aWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCA0NzQ0ZjRmMWRjOWVmMjUwNTE2OTViYzVjNWQwMzc1ZmExMWUwZDA1Li5h
MGZjYzk5MTQzOTIxMjEyMDE1OTgxNDYwZTIyNGI0YmZmNDZiYjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cApAQCAtMTE4MCw3ICsxMTgwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNYXhTdGF0
aXN0aWNzRW50cmllcyhzaXplX3QgbWF4aW11bUVudHJ5Q291bnQsIENvbXBsZXQKICAgICBhdXRv
IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
c2V0TWF4U3RhdGlzdGljc0VudHJpZXMobV9zZXNzaW9uSUQsIG1heGltdW1FbnRyeUNvdW50LCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1fc2Vzc2lvbklELCBtYXhpbXVtRW50cnlDb3VudCwg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMTkw
LDcgKzExOTAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFBydW5lRW50cmllc0Rvd25U
byhzaXplX3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbgogICAgIGF1dG8gY2FsbGJhY2tB
Z2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygp
KQotICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQcnVuZUVu
dHJpZXNEb3duVG8obV9zZXNzaW9uSUQsIHBydW5lVGFyZ2V0Q291bnQsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0UHJ1bmVFbnRy
aWVzRG93blRvKG1fc2Vzc2lvbklELCBwcnVuZVRhcmdldENvdW50LCBbcHJvY2Vzc1Bvb2wsIGNh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRH
cmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9uSUQs
IHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0xMjEwLDcgKzEyMTAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMsCiAgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChtX3Nlc3Npb25JRCwgc2Vjb25k
cywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNzaW9uSUQs
IHNlY29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogICAg
IAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTI3MSw3ICsxMjcxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBlbnN1cmVQ
cm9jZXNzUG9vbHMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuc2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHsgdXJsIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkuc2V0UHJldmFsZW50UmVzb3VyY2UobV9zZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMjg3LDcgKzEyODcsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aQogICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3
b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJs
IH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNldFByZXZhbGVudFJlc291
cmNlRm9yRGVidWdNb2RlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9
CiAKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0VmVyeVBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlCiAgICAgCiAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQot
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShtX3Nl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW3Byb2Nlc3NQb29s
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZSht
X3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xMzMyLDcgKzEz
MzIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdgogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAg
ICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRTaG91bGRDbGFzc2lm
eVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChtX3Nlc3Npb25JRCwgdmFsdWUsIFtw
cm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwobV9zZXNz
aW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0K
IAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4o
Y29uc3QgVVJMJiBzdWJGcmFtZVVSTCwgY29uc3QgVVJMJiB0b3BGcmFtZVVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTM0OCw3ICsxMzQ4LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4o
Y29uc3QgVVJMJiBzdWJGcmFtZVVSTCwgY28KICAgICAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQ
b29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9j
ZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbihtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4geyBzdWJGcmFtZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZy
YW1lVVJMIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbihtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyBzdWJGcmFtZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1l
VVJMIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0K
IApAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZVUKICAgICAKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
ICAgIHByb2Nlc3MtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihtX3Nlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBzdWJyZXNvdXJjZVVSTCB9LCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVVJMIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIHByb2Nlc3MtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihtX3Nlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBzdWJyZXNvdXJjZVVSTCB9LCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVVJMIH0sIFtwcm9jZXNzUG9vbCwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTQwNyw3ICsxNDA3LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29u
c3QgVVJMJiBzdWJyZXNvdXJjZVVSTCwKICAgICAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29s
IDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyBzdWJyZXNvdXJjZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybFJl
ZGlyZWN0ZWRUbyB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8obV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHsgc3VicmVzb3VyY2VVUkwgfSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1
cmxSZWRpcmVjdGVkVG8gfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiAgICAgfQogfQogCkBAIC0xNDI0LDcgKzE0MjQsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFVSTCYgc3VicmVzb3VyY2VV
UgogICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewog
ICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20o
bV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgc3VicmVzb3VyY2VVUkwg
fSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmxSZWRpcmVjdGVkRnJvbSB9LCBbcHJv
Y2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBzdWJyZXNv
dXJjZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybFJlZGlyZWN0ZWRGcm9t
IH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApA
QCAtMTQ0MSw3ICsxNDQxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiB0b3BGcmFtZVVSTCwgY29uc3QKICAgICAKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAg
IHByb2Nlc3MtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhtX3Nlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB0b3BGcmFtZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB7IHVybFJlZGlyZWN0ZWRUbyB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBw
cm9jZXNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8obV9zZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVUkwgfSwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4geyB1cmxSZWRpcmVjdGVkVG8gfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFVSTCYgdG9wRnJh
bWVVUkwsIGNvbgogICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9v
bHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20obV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVV
UkwgfSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmxSZWRpcmVjdGVkRnJvbSB9LCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0b3BGcmFt
ZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybFJlZGlyZWN0ZWRGcm9tIH0s
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAt
MTQ4OCw3ICsxNDg4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbGVhclByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjwKIAogICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJv
Y2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vz
cy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyB1cmwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyB1cmwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAg
fQogfQogCkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JgogICAg
IAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAg
ICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAg
ICAgICAgICAgcHJvY2Vzcy0+cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKG1fc2Vzc2lv
bklELCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5yZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMobV9zZXNzaW9uSUQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTUyMiw3ICsxNTIyLDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJv
Y2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChtX3Nlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSwgc2hvdWxkR3JhbmRmYXRoZXIsIFtw
cm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQobV9zZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIHNob3VsZEdyYW5kZmF0aGVy
LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAg
LTE1NTYsNyArMTU1Niw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFTdW1tYXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgUmVmUHRyPENh
bGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxi
YWNrQWdncmVnYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogCiAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IGVuc3VyZVByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcyh0aGlzKS5nZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YVN1bW1hcnkobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpLCBwcm9jZXNzUG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYgZGF0YSkgeworICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3ModGhpcykuZ2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFTdW1tYXJ5KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNz
UG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGE+JiYgZGF0YSkgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRSZXN1bHQo
V1RGTW92ZShkYXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTE1NzAsNyArMTU3MCw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChTaG91bGRHcmFuZGZhdGhlclN0YXRpCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQobV9zZXNzaW9uSUQsIHsgfSwgc2hvdWxkR3JhbmRmYXRoZXIs
IFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQobV9zZXNzaW9uSUQsIHsgfSwgc2hvdWxkR3JhbmRmYXRoZXIsIFtwcm9j
ZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTU4MCw3
ICsxNTgwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogCiAgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0g
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKG1fc2Vzc2lvbklELCBbcHJvY2Vzc1Bvb2wsIGNhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAg
ICAgICAgICBwcm9jZXNzLT5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKG1fc2Vzc2lvbklE
LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAg
LTE1OTIsNyArMTU5Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5kCiAgICAgCiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBw
cm9jZXNzLT5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcobV9zZXNz
aW9uSUQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNjaGVkdWxlU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhtX3Nlc3Npb25JRCwgW3Byb2Nlc3NQb29sLCBj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xNjIxLDcgKzE2MjEsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldExhc3RTZWVuKGNvbnN0IFVSTCYgdXJsLCBTZWNv
bmRzIHNlY29uZHMsIENvbXBsZXRpb25IYQogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bv
b2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRMYXN0U2Vlbiht
X3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgc2Vjb25kcywg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2V0TGFzdFNlZW4obV9zZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIHNlY29uZHMsIFtwcm9jZXNz
UG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTY0OCw3ICsx
NjQ4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmco
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgdG9wRnIKIAogICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+bWVyZ2VT
dGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IHVybCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsMSB9LCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsMiB9LCBsYXN0U2VlbiwgaGFk
VXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVy
ZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgW3By
b2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsMSB9LCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB7IHRvcEZyYW1lVXJsMiB9LCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBp
c1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xNjYzLDcgKzE2NjMsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0
IFVSTCYgdXJsLCBib29sIGhhZAogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5pbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1
cmwgfSwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBpc1ByZXZhbGVudCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+
aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFtwcm9jZXNzUG9vbCwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTY3Miw3ICsxNjcyLDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkKGJvb2wgdmFsdWUsIENvbXAKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAog
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgcHJv
Y2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVu
RGF0YVJlY29yZHNXZXJlU2Nhbm5lZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KGJvb2wgdmFsdWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE2ODEsNyArMTY4MSw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Rlc3QoYm9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAg
ICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRJc1J1bm5pbmdSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVzdChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0SXNSdW5uaW5n
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QobV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bv
b2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNjg5LDcgKzE2
ODksNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkK
LSAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5UGFn
ZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vzc1Bv
b2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nl
c3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MDksNyArMTcwOSw3IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMsIENv
bXBsZXRpb25ICiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgCiAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKG1fc2Vz
c2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgc2Vjb25kcywg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjps
b2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MjUsNyArMTcyNSw3IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPmxvZ1VzZXJJbnRlcmFjdGlvbihtX3Nlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBw
cm9jZXNzLT5sb2dVc2VySW50ZXJhY3Rpb24obV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdXJsIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQog
CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2bwogCiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBw
cm9jZXNzLT5jbGVhclVzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5jbGVhclVzZXJJbnRl
cmFjdGlvbihtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE3OTUsNyArMTc5NSw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVy
bCwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvCiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRHcmFu
ZGZhdGhlcmVkKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9
LCBpc0dyYW5kZmF0aGVyZWQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2V0R3JhbmRmYXRoZXJl
ZChtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgaXNHcmFu
ZGZhdGhlcmVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTgw
Nyw3ICsxODA3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRVc2VJVFBEYXRhYmFzZShi
b29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYKICAgICAKICAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nl
c3MtPnNldFVzZUlUUERhdGFiYXNlKG1fc2Vzc2lvbklELCB2YWx1ZSwgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBw
cm9jZXNzLT5zZXRVc2VJVFBEYXRhYmFzZShtX3Nlc3Npb25JRCwgdmFsdWUsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xODE5LDcgKzE4MTksNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKGNvbnN0IFVSTCYgZgogICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0Q3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgZnJvbVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvVVJM
IH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNldENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IGZyb21VUkwgfSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0b1VS
TCB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAK
QEAgLTE4MjksNyArMTgyOSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoQ29tcGxldGlvCiAgICAgCiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNz
LT5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhtX3Nlc3Np
b25JRCwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE4MzksNyAr
MTgzOSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
Y29uc3QgVVJMJiB1cmwsIGJvb2wgaW5jbHVkZUh0dHBPCiAgICAgCiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3Jr
UHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5kZWxldGVDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgaW5jbHVkZUh0dHBPbmx5
Q29va2llcywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE4NzEs
NyArMTg3MSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluCiAgICAgCiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFi
bGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRTaG91bGREb3duZ3JhZGVSZWZl
cnJlckZvclRlc3RpbmcoZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9
CiB9CiAKQEAgLTE5MDAsMTIgKzE5MDAsMTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWUKICAg
ICBpZiAodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IGJsb2NraW5nTW9kZSkgewog
ICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2luZ01vZGU7CiAg
ICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQotICAgICAgICAgICAg
d2ViUHJvY2Vzcy5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGJsb2NraW5nTW9kZSwg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
CisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUo
YmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIAogICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0
byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKG1f
c2Vzc2lvbklELCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUobV9zZXNzaW9uSUQsIGJsb2NraW5nTW9kZSwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE5MTYsNyArMTkxNiw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3Vs
ZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcobV9zZXNzaW9uSUQsIGZsYWcsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZv
clRlc3RpbmcobV9zZXNzaW9uSUQsIGZsYWcsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAg
ICAgfQogfQogCkBAIC0xOTI3LDcgKzE5MjcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZQog
CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgbW9kZSwgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBuZXR3
b3JrUHJvY2Vzcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBtb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0K
IApAQCAtMTkzNyw3ICsxOTM3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW4KIAogICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0
byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKQEAgLTE5NDgsNyArMTk0OCw3IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBz
ZWNvbmRzLCBDCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgCiAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKG1f
c2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc2Vjb25kcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE5
NjIsNyArMTk2Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlCiAgICAgCiAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgfQogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
MjE1Myw3ICsyMTUzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlKGJvb2wgZW5hYmxlZCwgQ29tcGxldGkKICAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwor
ICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlKG1fc2Vzc2lvbklELCBlbmFibGVkLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAgICAgVU5V
U0VEX1BBUkFNKGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTIzOTksNyArMjM5OSw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRRdW90YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFj
a0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBw
cm9jZXNzLT5yZXNldFF1b3RhKG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnJl
c2V0UXVvdGEobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQog
fQogCkBAIC0yNDUzLDcgKzI0NTMsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyQXBw
Qm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aQogCiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmNsZWFyQXBwQm91bmRTZXNzaW9uKG1fc2Vzc2lvbklE
LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Y2xlYXJBcHBCb3Vu
ZFNlc3Npb24obV9zZXNzaW9uSUQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogICAgIH0KIH0KIApAQCAtMjQ2Myw3ICsyNDYzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFVSTCYmIG9sZE5hbWUsIFVSTCYmIG5ld05h
bWUsIE8KICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFBy
b2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+
YWRkU2Vzc2lvbigqdGhpcyk7Ci0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YShtX3Nlc3Npb25JRCwgb2xkTmFtZSwgbmV3TmFtZSwgZGF0YVR5cGVz
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRh
KG1fc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNDc2LDE0ICsyNDc2LDE0IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Zm9yd2FyZEFwcEJvdW5kRG9tYWluc1RvSVRQSWZJbml0
aWFsaXplZChDb21wbGV0aW9uSGFuZGxlCiAgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gcHJvcGFnYXRlQXBwQm91bmREb21haW5zID0gW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIChXZWJzaXRlRGF0
YVN0b3JlKiBzdG9yZSwgY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4m
IGRvbWFpbnMpIHsKKyAgICBhdXRvIHByb3BhZ2F0ZUFwcEJvdW5kRG9tYWlucyA9IFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIChXZWJzaXRlRGF0YVN0b3JlKiBzdG9yZSwgY29uc3QgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKICAgICAgICAgaWYgKCFzdG9yZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RvcmUtPnRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoKSAhPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zKQotICAgICAgICAgICAgc3RvcmUtPnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAg
ICBzdG9yZS0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCi0gICAgICAgIHN0b3JlLT5zZXRBcHBCb3VuZERv
bWFpbnNGb3JJVFAoZG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHN0b3JlLT5zZXRBcHBCb3VuZERvbWFpbnNG
b3JJVFAoZG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9OwogCiAgICAg
cHJvcGFnYXRlQXBwQm91bmREb21haW5zKGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSwg
KmFwcEJvdW5kRG9tYWlucyk7CkBAIC0yNDk4LDcgKzI0OTgsNyBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnNldEFwcEJvdW5kRG9tYWluc0ZvcklUUChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYgogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7
CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5kRG9tYWlu
c0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9zZXNzaW9uSUQsIGRvbWFpbnMsIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0
YXRpc3RpY3MobV9zZXNzaW9uSUQsIGRvbWFpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiAgICAgfQogfQogI2VuZGlmCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKGNvbnN0IFN0cmlu
ZyYgYnVuZAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKS51cGRhdGVCdW5kbGVJZGVudGlmaWVyKGJ1bmRsZUlkZW50aWZpZXIs
IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS51cGRhdGVCdW5k
bGVJZGVudGlmaWVyKGJ1bmRsZUlkZW50aWZpZXIsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJCdW5kbGVJZGVudGlmaWVySW5OZXR3
b3JrUHJvY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0yNTE2LDcgKzI1MTYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyQnVuZGxl
SWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dgogICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5j
bGVhckJ1bmRsZUlkZW50aWZpZXIoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLmNsZWFyQnVuZGxlSWRlbnRpZmllcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTkx
MzZjNGVlOWI4NWMzMzQ5NjE1MGRkNDVkOTk5ODE3OTg4NjM0MC4uMzUyNzVhNzRkMmYzYTRjOWMy
M2ViZGRkNzcwNmIyMGM4MjNmZWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcApAQCAtMTQ1OSw3ICsxNDU5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjptYXJrQWxsTGF5
ZXJzVm9sYXRpbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW4KICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAibWFya0FsbExheWVy
c1ZvbGF0aWxlOiIpOwogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGZvciAoYXV0
byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgewotICAgICAgICBwYWdlLT5tYXJrTGF5ZXJz
Vm9sYXRpbGUoW3RoaXMsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCksIHBhZ2VJRCA9IHBhZ2UtPmlkZW50aWZpZXIoKV0gKGJvb2wgc3VjY2VlZGVkKSB7
CisgICAgICAgIHBhZ2UtPm1hcmtMYXllcnNWb2xhdGlsZShbdGhpcywgY2FsbGJhY2tBZ2dyZWdh
dG9yLCBwYWdlSUQgPSBwYWdlLT5pZGVudGlmaWVyKCldIChib29sIHN1Y2NlZWRlZCkgewogICAg
ICAgICAgICAgaWYgKHN1Y2NlZWRlZCkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAibWFya0FsbExheWVyc1ZvbGF0aWxlOiBTdWNjZXNz
ZnVseSBtYXJrZWQgbGF5ZXJzIGFzIHZvbGF0aWxlIGZvciB3ZWJQYWdlSUQ9JSIgUFJJdTY0LCBw
YWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgICAgICBlbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402591</attachid>
            <date>2020-06-23 14:22:58 -0700</date>
            <delta_ts>2020-06-23 15:02:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213533-20200623142257.patch</filename>
            <type>text/plain</type>
            <size>201426</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQwNjg1ODRiMTYwZWQ1YzQxNTYyOGYy
ZDQ2ZjUzZTA3NmFkYzdlN2EuLmJiMTA3MWUxYjRjOGMxN2JlNjkxNDRhM2FlOTA0NTNiNzg0MzAw
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY2FsbHMg
dG8gUmVmOjpjb3B5UmVmKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzUzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBjYWxscyB0byBSZWY6OmNvcHlS
ZWYoKSBub3cgdGhhdCBSZWYgaXMgY29weWFibGUuCisKKyAgICAgICAgKiB3dGYvZ2xpYi9Tb2Nr
ZXRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6U29ja2V0Q29ubmVjdGlvbjo6d2FpdEZv
clNvY2tldFdyaXRhYmlsaXR5KToKKwogMjAyMC0wNi0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV0trSXNUcmFuc2xhdGVkIG9uY2Ugb3VyIGJv
dHMgYXJlIHVwZGF0ZWQgdG8gdGhlIG5lZWRlZCBTREsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMzUyMTQzMmZl
ODMyMzViZTkxZjA3MjA2OTA5ZDQwMDBhZTllNjhkLi5iODAyM2MzMmFmYjU4YTM2YTFlZDJhODAw
ZDIyMjM1NTMzOWI0YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAtMDYtMjMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBsb3Qg
b2YgdW5uZWNlc3NhcnkgY2FsbHMgdG8gUmVmOjpjb3B5UmVmKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzUzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhIGxvdCBvZiB1bm5lY2Vzc2Fy
eSBjYWxscyB0byBSZWY6OmNvcHlSZWYoKSBub3cgdGhhdCBSZWYgaXMgY29weWFibGUuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlOjphZGRBbGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVu
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxs
T2JqZWN0U3RvcmVSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dERlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJl
cXVlc3RQdXRPckFkZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpT
b3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFVw
ZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1h
aW5UaHJlYWRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmluaXRpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAg
ICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VidGxlQ3J5
cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBsZXMpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlVW5yZWdp
c3RlckpvYkluU2VydmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNo
OjpkaXNwYXRjaEZldGNoRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVB
Y3RpdmF0ZUV2ZW50KToKKwogMjAyMC0wNi0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIERyb3AgQXVkaW9Db250ZXh0QmFzZSBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpp
bmRleCBiNGU4NjJmODY4Y2EwOTllMDM5ZGU4M2UzZTE1NDkzYzE3ODFjZDMzLi5kYmNlMDAyNjZm
Y2QwY2RlNDUwZDg3YTA2NTc4OTQ5Y2M3MmIxNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDIwLTA2LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIGEgbG90IG9mIHVubmVjZXNzYXJ5IGNhbGxzIHRvIFJlZjo6Y29weVJlZigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
YSBsb3Qgb2YgdW5uZWNlc3NhcnkgY2FsbHMgdG8gUmVmOjpjb3B5UmVmKCkgbm93IHRoYXQgUmVm
IGlzIGNvcHlhYmxlLgorCisgICAgICAgICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2
ZXI6OlNlc3Npb246OmdvKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0Q3VycmVu
dFVSTCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmJhY2spOgorICAgICAgICAoV2Vi
RHJpdmVyOjpTZXNzaW9uOjpmb3J3YXJkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6
cmVmcmVzaCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldFRpdGxlKToKKyAgICAg
ICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bmV3V2luZG93KToKKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbjo6c3dpdGNoVG9GcmFtZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnN3
aXRjaFRvUGFyZW50RnJhbWUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpzZXRXaW5k
b3dSZWN0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bWF4aW1pemVXaW5kb3cpOgor
ICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjptaW5pbWl6ZVdpbmRvdyk6CisgICAgICAgIChX
ZWJEcml2ZXI6OlNlc3Npb246OmZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVy
OjpTZXNzaW9uOjpmaW5kRWxlbWVudHMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpn
ZXRBY3RpdmVFbGVtZW50KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aXNFbGVtZW50
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRFbGVtZW50VGV4dCk6
CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRUYWdOYW1lKToKKyAgICAg
ICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViRHJp
dmVyOjpTZXNzaW9uOjppc0VsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6aXNFbGVtZW50RGlzcGxheWVkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6
Z2V0RWxlbWVudEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVs
ZW1lbnRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRD
U1NWYWx1ZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGljayk6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGVhcik6CisgICAgICAgIChXZWJE
cml2ZXI6OlNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNl
c3Npb246OmdldFBhZ2VTb3VyY2UpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpleGVj
dXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6
CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmFkZENvb2tpZSk6CisgICAgICAgIChXZWJE
cml2ZXI6OlNlc3Npb246OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Np
b246OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpwZXJm
b3JtQWN0aW9ucyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnRha2VTY3JlZW5zaG90
KToKKwogMjAyMC0wNi0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNvbWUgc3R5bGUgaW1wcm92ZW1lbnRzIHRvIG1haW4gdGhyZWFkIGNvZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMjQ0OTFiYjZiZDVhN2FlOWMwNzRhOGYyOTA3ZDlkOTE1NjNkNzJlNS4uMzJlZTc3YjRj
NjQ0NTlhZWQ3YjU4NGEwYzg3ZDViMWNmZTk4ZjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIg
QEAKKzIwMjAtMDYtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY2FsbHMgdG8gUmVmOjpjb3B5UmVmKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzUzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhIGxv
dCBvZiB1bm5lY2Vzc2FyeSBjYWxscyB0byBSZWY6OmNvcHlSZWYoKSBub3cgdGhhdCBSZWYgaXMg
Y29weWFibGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpyZXF1
ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURh
dGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlQWxs
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9hZFBpbmcpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0
aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9y
aWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6ZmV0Y2hEaXJlY3RvcnlFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNldEZpbGVzRm9ySW5wdXRGaWxlVXBs
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmdldEFsbENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xl
Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmds
ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3Jt
TW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
Ojp0YWtlU2NyZWVuc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRl
TWVkaWFEZXZpY2VzRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnRPdmVycmlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbklu
dGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldFBydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRWZXJ5
UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbGVhclByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRQ
YXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFy
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRMYXN0U2Vlbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29y
ZHNXZXJlU2Nhbm5lZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldElz
UnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6bG9nVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJVc2VySW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRHcmFuZGZh
dGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VXNlSVRQRGF0
YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2llc0Zv
clRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NU
b1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6cmVzZXRRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmNsZWFyQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JJVFApOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp1cGRhdGVCdW5kbGVJ
ZGVudGlmaWVySW5OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
Om1hcmtBbGxMYXllcnNWb2xhdGlsZSk6CisKIDIwMjAtMDYtMjMgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBFeHBvc2UgYWxyZWFkeS1hdmFp
bGFibGUgV0tOYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuSFRUUEJvZHkgdGhyb3VnaCB0aGUgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcAppbmRleCBiYjk4MDhmYWM5
ZjE5ZWJjMWQyOGVjZDNjMWVjYjkxNDI4ZmViNDZlLi4zYWZiNTRhNDFjYjViOGRlMTEzOWIwM2Ri
MzEzNjQzYzI0MzIwZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5j
cHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNvY2tldENvbm5lY3Rpb246OndhaXRGb3JTb2Nr
ZXRXcml0YWJpbGl0eSgpCiAgICAgbV93cml0ZU1vbml0b3Iuc3RhcnQoZ19zb2NrZXRfY29ubmVj
dGlvbl9nZXRfc29ja2V0KG1fY29ubmVjdGlvbi5nZXQoKSksIEdfSU9fT1VULCBSdW5Mb29wOjpj
dXJyZW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChHSU9Db25k
aXRpb24gY29uZGl0aW9uKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIGlmIChjb25kaXRpb24gJiBH
X0lPX09VVCkgewogICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCB0aGUgbW9uaXRvciBmcm9t
IHRoaXMgbGFtYmRhLCBiZWNhdXNlIHN0b3AgZGVzdHJveXMgdGhlIGxhbWJkYS4KLSAgICAgICAg
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHBy
b3RlY3RlZFRoaXMuY29weVJlZigpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXNdIHsKICAgICAgICAgICAgICAgICBtX3dyaXRl
TW9uaXRvci5zdG9wKCk7CiAgICAgICAgICAgICAgICAgd3JpdGUoKTsKICAgICAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBhYzQwODlh
MzU4YWQyODU5MzkwNjYwN2EyNGUxZjQzYTJjOWJjYzVlLi4zOGZkZjgxYzU2NTA3MGE4MjQyMjQ1
MGJmMTViZGM4MTE2YmYxYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8
UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAKICAg
ICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewogICAgICAgICBhdXRvJiByZXF1ZXN0
UmVmZXJlbmNlID0gcmVxdWVzdC5nZXQoKTsKLSAgICAgICAgRmV0Y2hSZXNwb25zZTo6ZmV0Y2go
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdFJlZmVyZW5jZSwgW3RoaXMsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCB0YXNrSGFuZGxlciA9IHRhc2tIYW5kbGVyLmNvcHlSZWYo
KV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVz
dFJlZmVyZW5jZSwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCB0YXNrSGFuZGxl
cl0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAg
ICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggMDZhOTM0YWNiZjNiZDY0MjMzNGJjYWMzZWIxYzNjMjgyYWI0MjQxNS4u
YzRmNDk0ZTQ5YjA5NDgwOWZmM2I5YTViZjIxZjdkYWU1MmUxODYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtODA5
LDcgKzgwOSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3Bl
bkN1cnNvcihKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlZjxJCiAgICAgYWRkUmVxdWVzdChyZXF1
ZXN0LmdldCgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIG9wZW4gY3Vy
c29yIG9wZXJhdGlvbjogJXMiLCBjdXJzb3ItPmluZm8oKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCA9IHJlcXVlc3QuY29weVJlZigpXSAoY29uc3QgYXV0
byYgcmVzdWx0KSB7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRPcGVuQ3Vyc29yT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwg
cmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmZvID0g
Y3Vyc29yLT5pbmZvKCkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+b3BlbkN1cnNvck9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7CkBA
IC04OTgsNyArODk4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0
R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6SlNHbG9iYWxPYmoKICAgICBJREJHZXRBbGxS
ZWNvcmRzRGF0YSBnZXRBbGxSZWNvcmRzRGF0YSB7IGtleVJhbmdlRGF0YSwgZ2V0QWxsVHlwZSwg
Y291bnQsIG9iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCksIDAgfTsKIAogICAgIExPRyhJ
bmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgb2JqZWN0IHN0b3JlIHJlY29yZHMgb3Bl
cmF0aW9uOiAlcyIsIGdldEFsbFJlY29yZHNEYXRhLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0ID0gcmVxdWVzdC5jb3B5UmVmKCldIChjb25zdCBhdXRvJiBy
ZXN1bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZEdldEFsbFJlY29yZHNPblNlcnZlcihyZXF1ZXN0LmdldCgpLCBy
ZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGdldEFsbFJl
Y29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVy
YXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVyKG9w
ZXJhdGlvbiwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwpAQCAtOTIxLDcgKzkyMSw3IEBAIFJlZjxJREJS
ZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzCiAgICAgSURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0QWxsUmVjb3Jkc0Rh
dGEgeyBrZXlSYW5nZURhdGEsIGdldEFsbFR5cGUsIGNvdW50LCBpbmRleC5vYmplY3RTdG9yZSgp
LmluZm8oKS5pZGVudGlmaWVyKCksIGluZGV4LmluZm8oKS5pZGVudGlmaWVyKCkgfTsKIAogICAg
IExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgaW5kZXggcmVjb3JkcyBvcGVy
YXRpb246ICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHJl
c3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJl
c3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZ2V0QWxsUmVj
b3Jkc0RhdGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJh
dGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRBbGxSZWNvcmRzT25TZXJ2ZXIob3Bl
cmF0aW9uLCBnZXRBbGxSZWNvcmRzRGF0YSk7CkBAIC05NzgsNyArOTc4LDcgQEAgUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgSURCT2JqZWMKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgTE9H
KEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZ2V0IHJlY29yZCBvcGVyYXRpb246ICVzICVzIiwg
b2JqZWN0U3RvcmUuaW5mbygpLmNvbmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBnZXRSZWNvcmREYXRhLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzY2hl
ZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRl
KCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0ID0gcmVxdWVzdC5jb3B5UmVmKCldIChjb25zdCBhdXRvJiByZXN1bHQpIHsKKyAgICBz
Y2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3Jl
YXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpZEdldFJlY29yZE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7CiAgICAgfSwgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZ2V0UmVjb3JkRGF0YSA9IGdldFJlY29yZERh
dGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Z2V0UmVjb3JkT25TZXJ2ZXIob3BlcmF0aW9uLCBnZXRSZWNvcmREYXRhKTsKQEAgLTEw
MTgsNyArMTAxOCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdElu
ZGV4UmVjb3JkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCSW5kCiAgICAgSURCR2V0UmVjb3Jk
RGF0YSBnZXRSZWNvcmREYXRhID0geyByYW5nZSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleUFu
ZFZhbHVlIH07CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBnZXQgaW5kZXgg
cmVjb3JkIG9wZXJhdGlvbjogJXMgJXMiLCBpbmRleC5pbmZvKCkuY29uZGVuc2VkTG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIGdldFJlY29yZERhdGEubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSByZXF1ZXN0LmNvcHlSZWYoKV0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkR2V0UmVjb3JkT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwg
cmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBnZXRSZWNv
cmREYXRhID0gZ2V0UmVjb3JkRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikg
ewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRSZWNvcmRPblNlcnZlcihvcGVyYXRpb24sIGdl
dFJlY29yZERhdGEpOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RT
dG8KICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgTE9HKEluZGV4ZWREQk9w
ZXJhdGlvbnMsICJJREIgb2JqZWN0IHN0b3JlIGNvdW50IG9wZXJhdGlvbjogJXMsIHJhbmdlICVz
Iiwgb2JqZWN0U3RvcmUuaW5mbygpLmNvbmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCByYW5nZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVP
cGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhp
cywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dCA9IHJlcXVlc3QuY29weVJlZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1
bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgq
dGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVx
dWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRH
ZXRDb3VudE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmFuZ2UgPSByYW5nZS5pc29sYXRlZENvcHkoKV0gKGF1
dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRDb3VudE9uU2VydmVy
KG9wZXJhdGlvbiwgcmFuZ2UpOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJJ
bmRleCYgaW4KICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgTE9HKEluZGV4
ZWREQk9wZXJhdGlvbnMsICJJREIgaW5kZXggY291bnQgb3BlcmF0aW9uOiAlcywgcmFuZ2UgJXMi
LCBpbmRleC5pbmZvKCkuY29uZGVuc2VkTG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJh
bmdlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlv
bihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1
ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0ID0gcmVx
dWVzdC5jb3B5UmVmKCldIChjb25zdCBhdXRvJiByZXN1bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJh
dGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCBy
ZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0XSAo
Y29uc3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEdldENvdW50
T25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByYW5nZSA9IHJhbmdlLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3Bl
cmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmdldENvdW50T25TZXJ2ZXIob3BlcmF0
aW9uLCByYW5nZSk7CkBAIC0xMTQyLDcgKzExNDIsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJP
YgogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBMT0coSW5kZXhlZERCT3Bl
cmF0aW9ucywgIklEQiBkZWxldGUgcmVjb3JkIG9wZXJhdGlvbjogJXMsIHJhbmdlICVzIiwgb2Jq
ZWN0U3RvcmUuaW5mbygpLmNvbmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBy
YW5nZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRp
b24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVx
dWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCA9IHJl
cXVlc3QuY29weVJlZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1bGVPcGVy
YXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywg
cmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0g
KGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxldGVS
ZWNvcmRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJhbmdlID0gcmFuZ2UuaXNvbGF0ZWRDb3B5KCldIChhdXRv
JiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlUmVjb3JkT25TZXJ2
ZXIob3BlcmF0aW9uLCByYW5nZSk7CkBAIC0xMTgxLDcgKzExODEsNyBAQCBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKEpTR2xvYmFsT2JqZWN0
JiBzdGF0ZSwgSQogICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciA9IG9iamVjdFN0
b3JlLmluZm8oKS5pZGVudGlmaWVyKCk7CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywg
IklEQiBjbGVhciBvYmplY3Qgc3RvcmUgb3BlcmF0aW9uOiAlcyIsIG9iamVjdFN0b3JlLmluZm8o
KS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVP
cGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhp
cywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dCA9IHJlcXVlc3QuY29weVJlZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1
bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgq
dGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVx
dWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIChh
dXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2xlYXJPYmplY3RTdG9y
ZU9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKQEAgLTEyMjEsNyAr
MTIyMSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRk
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0
LmdldCgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIHB1dE9yQWRkIG9w
ZXJhdGlvbjogJXMga2V5OiAlcyIsIG9iamVjdFN0b3JlLmluZm8oKS5jb25kZW5zZWRMb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwga2V5ID8ga2V5LT5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSA6ICI8bnVsbCBrZXk+Iik7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCA9IHJlcXVlc3QuY29weVJl
ZigpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQo
KSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8m
IHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRQdXRPckFkZE9uU2VydmVyKHJl
cXVlc3QuZ2V0KCksIHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwga2V5LCB2YWx1ZSA9IG1ha2VSZWYodmFsdWUpLCBvdmVyd3JpdGVNb2RlXSAoYXV0byYg
b3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnB1dE9yQWRkT25TZXJ2ZXIob3Bl
cmF0aW9uLCBrZXkuZ2V0KCksIHZhbHVlLnB0cigpLCBvdmVyd3JpdGVNb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cAppbmRleCBiMDI1M2FjNzkzNzk4ZTcwZjkwNDJkMjE1OTU5ZTM5YWRlMTZlOWZhLi44NTgxZDVj
ZDdiNzkwM2M4M2ZkOGQxMTU0ZWExNTYxYTMyZDgzYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC01Myw3
ICs1Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVJlY29yZGVyPj4gTWVkaWFSZWNvcmRlcjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBNZWRpYVJlY29yZGVyIGlzIHVuc3VwcG9ydGVk
IG9uIHRoaXMgcGxhdGZvcm0iX3MgfTsKICAgICBhdXRvIHJlY29yZGVyID0gYWRvcHRSZWYoKm5l
dyBNZWRpYVJlY29yZGVyKGRvY3VtZW50LCBXVEZNb3ZlKHN0cmVhbSksIFdURk1vdmUocHJpdmF0
ZUluc3RhbmNlKSwgV1RGTW92ZShvcHRpb25zKSkpOwogICAgIHJlY29yZGVyLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKLSAgICByZWNvcmRlci0+bV9wcml2YXRlLT5zZXRFcnJvckNhbGxiYWNrKFtyZWNv
cmRlciA9IHJlY29yZGVyLmNvcHlSZWYoKV0oYXV0byYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Cisg
ICAgcmVjb3JkZXItPm1fcHJpdmF0ZS0+c2V0RXJyb3JDYWxsYmFjayhbcmVjb3JkZXJdKGF1dG8m
JiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICByZWNvcmRlci0+ZGlzcGF0Y2hFcnJvcihX
VEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVjb3JkZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGU5YmY0YzgxNzczMjBmZDE2
MDBjOGNiYzcxNWU0ODcxOGI0MGMyYjUuLmU3NjNmOWIzZDFjMTljMDZhNjg4OTJkZDAyOTQ5YzBl
MWRmMTU3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFJlZjxDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlPiBD
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlCiAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZigqbmV3IFNvdXJjZShjYW52YXMsIFdURk1vdmUoZnJhbWVSZXF1ZXN0UmF0ZSkpKTsK
ICAgICBzb3VyY2UtPnN0YXJ0KCk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzb3VyY2UgPSBz
b3VyY2UuY29weVJlZigpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc291cmNlXSB7CiAgICAg
ICAgIGlmICghc291cmNlLT5tX2NhbnZhcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
c291cmNlLT5jYXB0dXJlQ2FudmFzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGFkMzk1MmEwNzJjZjY1ZGRkMjQ4YzFiZTg5Njkz
NDk1MWUzZTU2ZGQuLmFiNDc4MjZjODNlYmI1OGI3N2I0YTYxNTI3MTM5MjEzM2NmODQwZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBA
IC03MDMsOCArNzAzLDggQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjwKIAogdm9pZCBEYXRhYmFz
ZTo6c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHRyYW5zYWN0aW9uID0gbWFrZVJlZlB0cih0cmFuc2FjdGlvbildIHsKLSAgICAg
ICAgbV9kb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtp
bmcsIFt0cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uLmNvcHlSZWYoKV0geworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rp
b24gPSBtYWtlUmVmUHRyKHRyYW5zYWN0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9kb2N1
bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0cmFu
c2FjdGlvbiA9IFdURk1vdmUodHJhbnNhY3Rpb24pXSB7CiAgICAgICAgICAgICB0cmFuc2FjdGlv
bi0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGE2NjU5ODU1MDhlNDgw
ODEyZmNjNDM4N2FjZmIxMjBiY2FkOTczNzAuLmM5YmVjN2E3ZDU0NDc4ZWVkM2UxNmE0YjNmNTRi
YTU0Y2YzODM4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJl
c3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQobWVzc2FnZSk7Ci0gICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRX
cmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgc2VuZFJlcXVlc3RSZXN1
bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFNl
bmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsK
IH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpQZWVyOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5k
UmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSwg
MCwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlci5jb3B5UmVmKCksIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFi
bGUgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChz
ZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0xOTgsNyArMTk4
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChC
bG9iJiBiaW5hcnlEYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJD
bGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgc2VuZFJlcXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNl
bmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTIxMCw3ICsyMTAs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJl
ZEFtb3VudCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50
ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdy
YXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuY29weVJlZigpLCBidWZmZXJlZEFtb3VudF0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5zZXRCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSwgbV90
YXNrTW9kZSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgpCiAKICAgICBTdHJpbmcgc3VicHJvdG9jb2wg
PSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJwcm90b2NvbCgpOwogICAgIFN0cmluZyBleHRl
bnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwotICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCksIHN1YnByb3RvY29sID0g
c3VicHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lvbnMgPSBleHRlbnNpb25zLmlzb2xh
dGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtl
ckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHN1YnByb3RvY29sID0gc3Vi
cHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lvbnMgPSBleHRlbnNpb25zLmlzb2xhdGVk
Q29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7
CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29s
KTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25z
KTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lcwogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVu
dFdyYXBwZXIuY29weVJlZigpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKICAg
ICB9LCBtX3Rhc2tNb2RlKTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWlu
dDhfdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIuY29weVJlZigpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShi
aW5hcnlEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3Jr
ZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5hcnlEYXRhID0gV1RG
TW92ZShiaW5hcnlEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlQmluYXJ5
RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKQEAgLTI5NSw3
ICsyOTUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuY29w
eVJlZigpLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZm
ZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGRhdGVCdWZmZXJlZEFtb3Vu
dChidWZmZXJlZEFtb3VudCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CkBAIC0zMDUsNyArMzA1LDcg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93
b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFN0YXJ0Q2xvc2lu
Z0hhbmRzaGFrZSgpOwogICAgIH0sIG1fdGFza01vZGUpOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKHVuc2ln
bmVkIHVuaGFuZGxlZEJ1ZmZlcmVkCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBt
X21haW5XZWJTb2NrZXRDaGFubmVsID0gbnVsbHB0cjsKIAotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBj
bG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVk
Q29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNs
aWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlz
b2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ2xvc2UodW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCBy
ZWFzb24pOwogICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUVycm9yKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGll
bnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3Io
KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGdyYWRlVVJMKCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlci5jb3B5UmVmKCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGdyYWRlVVJMKCk7CiAgICAgfSwgbV90YXNrTW9kZSk7
CkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKIAogICAgIGJvb2wg
c2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAg
ICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5
LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVy
UHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBbY2xpZW50V3JhcHBlciwg
JmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlS
ZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0
dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0
ZSB0aGUgcGVlci4KQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6OmluaXRpYWxpemUoKQogICAgIHNldE1ldGhvZE5vdENvbXBs
ZXRlZCgpOwogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFsmbG9hZGVyUHJveHkgPSBtX2xvYWRlclByb3h5
LCB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
dGFza01vZGUgPSBtX3Rhc2tNb2RlLmlzb2xhdGVkQ29weSgpLCBwcm92aWRlciA9IG1fc29ja2V0
UHJvdmlkZXIuY29weVJlZigpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoWyZsb2FkZXJQcm94eSA9
IG1fbG9hZGVyUHJveHksIHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIHRhc2tNb2RlID0gbV90YXNrTW9kZS5pc29sYXRlZENvcHkoKSwgcHJvdmlkZXIgPSBtX3Nv
Y2tldFByb3ZpZGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgbWFpblRocmVhZEluaXRpYWxpemUoY29udGV4dCwgbG9hZGVyUHJveHksIFdURk1v
dmUod29ya2VyQ2xpZW50V3JhcHBlciksIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSk7CiAg
ICAgfSk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDNkNzczMjk3MjdkMTRm
NjFkNzk0YWZiNjE1MTk4ODA1MmJjMTVmZS4uMzI1MjExMzdmMTQ4OTliYTAxOGQ5MDE4OTAwY2I0
YzYzNzliMjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTc0NywxMiArNzQ3LDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
CiAgICAgICAgIHJlc29sdmVDb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CiAgICAgfSk7CiAK
LSAgICBhdXRvKiBmdWxmaWxsSGFuZGxlciA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKHdvcmxkLnZtKCksICZnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7IH0sIFtzaGFyZWRSZXNv
bHZlRnVuY3Rpb24gPSBzaGFyZWRSZXNvbHZlRnVuY3Rpb24uY29weVJlZigpXSAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgbXV0YWJsZSB7CisgICAgYXV0byogZnVsZmls
bEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh3b3JsZC52bSgpLCAm
Z2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uXSAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIHNo
YXJlZFJlc29sdmVGdW5jdGlvbi0+cnVuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0pOwogCi0gICAg
YXV0byogcmVqZWN0SGFuZGxlciA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHdv
cmxkLnZtKCksICZnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7IH0sIFtzaGFyZWRSZXNvbHZlRnVu
Y3Rpb24gPSBzaGFyZWRSZXNvbHZlRnVuY3Rpb24uY29weVJlZigpXSAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11dGFibGUgeworICAgIGF1dG8q
IHJlamVjdEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh3b3JsZC52
bSgpLCAmZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0aW9u
XSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11
dGFibGUgewogICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihtYWtlVW5leHBlY3Rl
ZChFeGNlcHRpb25EZXRhaWxzIHsgY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpIH0pKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9KTsKQEAgLTc2MywxMCArNzYzLDEwIEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkCiAgICAgICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihtYWtlVW5leHBl
Y3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIkNvbXBsZXRpb24gaGFuZGxlciBmb3IgZnVuY3Rpb24g
Y2FsbCBpcyBubyBsb25nZXIgcmVhY2hhYmxlIl9zIH0pKTsKICAgICB9KTsKIAotICAgIHdvcmxk
LnZtKCkuaGVhcC5hZGRGaW5hbGl6ZXIoZnVsZmlsbEhhbmRsZXIsIFtmaW5hbGl6ZUd1YXJkID0g
ZmluYWxpemVHdWFyZC5jb3B5UmVmKCldKEpTQ2VsbCopIHsKKyAgICB3b3JsZC52bSgpLmhlYXAu
YWRkRmluYWxpemVyKGZ1bGZpbGxIYW5kbGVyLCBbZmluYWxpemVHdWFyZF0oSlNDZWxsKikgewog
ICAgICAgICBmaW5hbGl6ZUd1YXJkLT5ydW4oKTsKICAgICB9KTsKLSAgICB3b3JsZC52bSgpLmhl
YXAuYWRkRmluYWxpemVyKHJlamVjdEhhbmRsZXIsIFtmaW5hbGl6ZUd1YXJkID0gZmluYWxpemVH
dWFyZC5jb3B5UmVmKCldKEpTQ2VsbCopIHsKKyAgICB3b3JsZC52bSgpLmhlYXAuYWRkRmluYWxp
emVyKHJlamVjdEhhbmRsZXIsIFtmaW5hbGl6ZUd1YXJkXShKU0NlbGwqKSB7CiAgICAgICAgIGZp
bmFsaXplR3VhcmQtPnJ1bigpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwCmluZGV4IGUwZWNjZGY5ZWMyOWM5ZDEwZjUyMGZkYjZmZTFmYzY2ZmQwYTIyYWYu
LjQ1MDM4YmQxYjBiN2JkOGUzNDM0MTcxNzdiNzQ3ZGNlMjI2NDY3MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lkIFN1YnRs
ZUNyeXB0bzo6d3JhcEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZv
cm1hdCwgQ3J5cHRvSwogICAgIGF1dG8gaW5kZXggPSBwcm9taXNlLnB0cigpOwogICAgIG1fcGVu
ZGluZ1Byb21pc2VzLmFkZChpbmRleCwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgYXV0byBzdWJ0
bGVDcnlwdG9XZWFrUG9pbnRlciA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBhdXRvIGNhbGxi
YWNrID0gW2luZGV4LCBzdWJ0bGVDcnlwdG9XZWFrUG9pbnRlciwgd3JhcEFsZ29yaXRobSwgd3Jh
cHBpbmdLZXkgPSBtYWtlUmVmKHdyYXBwaW5nS2V5KSwgd3JhcFBhcmFtcyA9IFdURk1vdmUod3Jh
cFBhcmFtcyksIGlzRW5jcnlwdGlvbiwgY29udGV4dCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUu
Y29weVJlZigpXShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBrZXkp
IG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbaW5kZXgsIHN1YnRsZUNyeXB0b1dlYWtQ
b2ludGVyLCB3cmFwQWxnb3JpdGhtLCB3cmFwcGluZ0tleSA9IG1ha2VSZWYod3JhcHBpbmdLZXkp
LCB3cmFwUGFyYW1zID0gV1RGTW92ZSh3cmFwUGFyYW1zKSwgaXNFbmNyeXB0aW9uLCBjb250ZXh0
LCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZV0oU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0
LCBLZXlEYXRhJiYga2V5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHN1YnRsZUNyeXB0b1dlYWtQ
b2ludGVyKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc3VidGxlQ3J5cHRvV2Vh
a1BvaW50ZXItPm1fcGVuZGluZ1Byb21pc2VzLmdldChpbmRleCkpIHsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmNwcAppbmRleCBmMmJkNjAwMTdkZWRjY2YxMzcwNmZlNzlhOWU4ZDY0N2ExOTYwYTIwLi45
ZWZhOGZhZTBjNDcxYzBlNWY4YjVlNmQ2OWIyNmI0ODBmNjNlNDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIERvY3Vt
ZW50V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwg
RG9jdW1lbnQqIG93bgogICAgIC8vIGFuZCB3ZSBtYXkgYWxzbyBuZWVkIHRvIGluaGVyaXQgaXRz
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGJlbG93LgogICAgIFJlZlB0cjxEb2N1bWVudD4gZXhp
c3RpbmdEb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAKLSAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4gaGFuZGxlRE9NV2luZG93Q3JlYXRpb24gPSBbdGhpcywgZG9jdW1lbnQgPSBkb2N1
bWVudC5jb3B5UmVmKCksIHVybF0geworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBoYW5kbGVE
T01XaW5kb3dDcmVhdGlvbiA9IFt0aGlzLCBkb2N1bWVudCwgdXJsXSB7CiAgICAgICAgIGlmICht
X2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKHVy
bCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+dGFrZURPTVdpbmRvd0Zyb20oKm1fZnJhbWUtPmRv
Y3VtZW50KCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCBmOWJiMTBmYmYxODNmM2NmM2Q1
Y2NiMGU1YjkxM2NmZjMyZjJlMDZjLi4xNzYzMTUyNmVkZGE3ZDZhZmYzNWNhMWVjOWUyMjU2NmUz
ZmNkZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI6On5OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcigpID0gZGVmYXVsdDsKIHZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShGcmFtZSYgZnJhbWUsIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGxvYWRlcihhZG9wdFJlZigq
bmV3IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKGZyYW1lLCBjbGllbnQpKSk7Ci0gICAgbG9h
ZGVyLT5pbml0KFdURk1vdmUocmVxdWVzdCksIFtsb2FkZXIgPSBsb2FkZXIuY29weVJlZigpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBpbml0
aWFsaXplZCkgbXV0YWJsZSB7CisgICAgbG9hZGVyLT5pbml0KFdURk1vdmUocmVxdWVzdCksIFts
b2FkZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChi
b29sIGluaXRpYWxpemVkKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFpbml0aWFsaXplZCkKICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShsb2FkZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjMzNmYTg5ZTExZDMzODY5N2FjNzU3OWJiY2Rk
OWE4Y2Y2YjZlOGUuLjg3MjdkYzljNjMxZmI5M2ZiNTI3OThkYzZjMTY1NjZhZjdkMmMyOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTI2LDcg
KzEyNiw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSYgZnJhbWUsIENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHN1YmxvYWRlcikpOwogICAgIH0KICNlbmRpZgotICAgIHN1Ymxv
YWRlci0+aW5pdChXVEZNb3ZlKHJlcXVlc3QpLCBbc3VibG9hZGVyID0gc3VibG9hZGVyLmNvcHlS
ZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJv
b2wgaW5pdGlhbGl6ZWQpIG11dGFibGUgeworICAgIHN1YmxvYWRlci0+aW5pdChXVEZNb3ZlKHJl
cXVlc3QpLCBbc3VibG9hZGVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYm9vbCBpbml0aWFsaXplZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghaW5p
dGlhbGl6ZWQpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3VibG9hZGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggMjMw
MWQ5YzA4MjRkODNlZDk1N2RhOGFkMzIyZGI0NzQ0NjIwMjA5ZS4uNzc1MDMyMjM5YTVkNWFiYWE3
NjNmN2EyNjNlZDdjYjI0NTk4MjY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzc0LDkgKzM3NCw5IEBAIHZvaWQgSW1hZ2VT
b3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAgICBzbGVlcCht
aW5EZWNvZGluZ0R1cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRpbmdUaW1l
KSk7CiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgY3Jl
YXRpb24gdGhyZWFkIHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlm
ZmVyZW50IHRocmVhZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgcHJvdGVjdGVkUXVldWUgPSBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLmNvcHlSZWYoKSwgcHJvdGVjdGVkRGVjb2RlciA9IHByb3RlY3RlZERlY29k
ZXIuY29weVJlZigpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIG5hdGl2
ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZl
IGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BB
c3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgotICAgICAgICAgICAgICAgIGlmIChwcm90
ZWN0ZWRRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJv
dGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRU
aGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RlY3Rl
ZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAgICAg
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1vdmVG
aXJzdCgpOwogICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2ZUlt
YWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgs
IGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRp
b25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQppbmRleCA3NWEwYThjYzEyMWIxY2FmYzcxNmEwZjFhNjA0YzNmOGNjNjE1ZDhiLi41NzJkMzFj
ZjUxMGZiNGU1YzBmZjg0OWFkYzkwNTkxNTFiMzI1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwog
ICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOwot
ICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBw
OmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIu
Z2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJ
RCksIGFnZ3JlZ2F0b3IgPSBhZ2dyZWdhdG9yLmNvcHlSZWYoKV0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdn
cmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBhZ2dyZWdhdG9yLT5yZXF1
ZXN0c0RhdGEuYXBwZW5kKHsgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoY29udGVudEtleVJlcXVl
c3REYXRhKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggOWMxNTgyMWU1ZGZkNmQzYjM0YmEwNDQwMzQ3Y2QwMDBm
OWI5MmI5Mi4uZTc1NDM5NGQ0Y2NjZWE0MGI2M2MxYjBjNjUzYmI4OGEwZWI0MWY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTczMCw3ICs3MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIElmIHRoZSBjb3ZlclJl
Y3QgZG9lc24ndCBjb250YWluIHRoZSBjYWxjdWxhdGVkIHZpc2libGUgcmVjdGFuZ2xlIHdlIG5l
ZWQgdG8gcmVxdWVzdCBhIGJhY2tpbmdTdG9yZQogICAgICAgICAvLyB1cGRhdGUgdG8gcmVuZGVy
IG1vcmUgdGlsZXMuCiAgICAgICAgIGlmICghbV9jb3ZlclJlY3QuY29udGFpbnModHJhbnNmb3Jt
ZWRWaXNpYmxlUmVjdCkpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZEhvc3QgPSBtX2hvc3QuY29weVJlZigpXSgpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZEhvc3QgPSBtX2hvc3RdKCkgewogICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZEhvc3QtPnJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGUoKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5jcHAKaW5kZXggYTc3ZTdiOWFlZGRlZGM3MWE3ZGVlNDc2ODYzYjI3MDUxYjQ1OGQyYi4u
YjRmNGYxNDE0MzM3NzIxZTZiMDdmYWFlM2UyYmJlNjhhZmIyNWU3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApAQCAtODQsNyAr
ODQsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnB1c2hTYW1w
bGVzKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgb2xkU291cmNlID0gbV9kYXRhU291cmNlLCBuZXdTb3VyY2UgPSBkYXRh
U291cmNlLmNvcHlSZWYoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgb2xkU291cmNlID0gbV9kYXRhU291
cmNlLCBuZXdTb3VyY2UgPSBkYXRhU291cmNlXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZjkzY2QxM2FhNTc2NTM2MWVmMjlj
NmZhNjc1NjQ5ZjgzYjgxMDQ4Ny4uOTBlNmE5OGI2MWNjOGVkNzI5ZDhkMzJlOWMzNjRlZjZhOWRi
NDJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
QEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjp3cmFwQ3J5cHRvS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdAogICAgIGF1dG8gcmVz
dWx0Q29udGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3JlYXRlKCk7CiAgICAgYXV0
byBkb25lQ29udGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3JlYXRlKCk7CiAgICAg
YXV0byB3cmFwcGVkS2V5Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUo
KTsKLSAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jl
c3VsdENvbnRhaW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIGtleSwgd3JhcHBlZEtl
eUNvbnRhaW5lciA9IHdyYXBwZWRLZXlDb250YWluZXIuY29weVJlZigpLCBkb25lQ29udGFpbmVy
ID0gZG9uZUNvbnRhaW5lci5jb3B5UmVmKCksIHdvcmtlck1lc3NhZ2luZ1Byb3h5ID0gbWFrZVJl
Zihkb3duY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eT4obV90aHJlYWQud29ya2VyTG9hZGVyUHJv
eHkoKSkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV90aHJlYWQu
d29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIsIGtl
eSwgd3JhcHBlZEtleUNvbnRhaW5lciwgZG9uZUNvbnRhaW5lciwgd29ya2VyTWVzc2FnaW5nUHJv
eHkgPSBtYWtlUmVmKGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3Jr
ZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQud3JhcENyeXB0b0tleShr
ZXksIHdyYXBwZWRLZXlDb250YWluZXItPmJ1ZmZlcigpKSk7CiAgICAgICAgIGRvbmVDb250YWlu
ZXItPnNldEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjp1
bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0bwog
ICAgIGF1dG8gcmVzdWx0Q29udGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3JlYXRl
KCk7CiAgICAgYXV0byBkb25lQ29udGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3Jl
YXRlKCk7CiAgICAgYXV0byBrZXlDb250YWluZXIgPSBDcnlwdG9CdWZmZXJDb250YWluZXI6OmNy
ZWF0ZSgpOwotICAgIG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRl
cihbcmVzdWx0Q29udGFpbmVyID0gcmVzdWx0Q29udGFpbmVyLmNvcHlSZWYoKSwgd3JhcHBlZEtl
eSwga2V5Q29udGFpbmVyID0ga2V5Q29udGFpbmVyLmNvcHlSZWYoKSwgZG9uZUNvbnRhaW5lciA9
IGRvbmVDb250YWluZXIuY29weVJlZigpLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYo
ZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5
KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fdGhyZWFkLndv
cmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbcmVzdWx0Q29udGFpbmVyLCB3cmFw
cGVkS2V5LCBrZXlDb250YWluZXIsIGRvbmVDb250YWluZXIsIHdvcmtlck1lc3NhZ2luZ1Byb3h5
ID0gbWFrZVJlZihkb3duY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eT4obV90aHJlYWQud29ya2Vy
TG9hZGVyUHJveHkoKSkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgIHJlc3VsdENvbnRhaW5lci0+c2V0Qm9vbGVhbihjb250ZXh0LnVud3JhcENyeXB0b0tleSh3
cmFwcGVkS2V5LCBrZXlDb250YWluZXItPmJ1ZmZlcigpKSk7CiAgICAgICAgIGRvbmVDb250YWlu
ZXItPnNldEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggN2M2MzA5YWQwZjdlOTllYmIx
NDYyM2JmMGEzZjlkOTg5ZWZlNTlkZS4uZWVkM2Y5Mjk3Y2QyMzBhNDJlOTZlMmNlMjc0ZTk4YjA2
M2JkOTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHRvcE9yaWdpbiwKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9s
YXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9tYXRjaFJlZ2lzdHJhdGlvblJlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFp
blRocmVhZChbdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwg
dG9wT3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVS
TCA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2lu
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9IGNyb3Nz
VGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25uZWN0
aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLm1hdGNoUmVnaXN0cmF0aW9uKFdURk1vdmUo
dG9wT3JpZ2luKSwgY2xpZW50VVJMLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0
SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB0aHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBX
VEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5
T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9
ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9nZXRSZWdpc3RyYXRpb25zUmVxdWVz
dHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt0aHJlYWQgPSBtX3RocmVhZC5jb3B5UmVmKCksIHJlcXVlc3RJZGVudGlm
aWVyLCB0b3BPcmlnaW4gPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0b3BPcmlnaW4pKSwgY2xp
ZW50VVJMID0gY3Jvc3NUaHJlYWRDb3B5KGNsaWVudFVSTCldKCkgbXV0YWJsZSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCB0b3BP
cmlnaW4gPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0b3BPcmlnaW4pKSwgY2xpZW50VVJMID0g
Y3Jvc3NUaHJlYWRDb3B5KGNsaWVudFVSTCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCk7CiAgICAgICAgIGNvbm5lY3Rpb24uZ2V0UmVnaXN0cmF0aW9ucyhXVEZN
b3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTCwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVx
dWVzdElkZW50aWZpZXJdKGF1dG8mJiBkYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIGRhdGEgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShkYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CkBA
IC05Niw3ICs5Niw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp3aGVuUmVnaXN0
cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0CiAgICAgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fd2hlblJl
Z2lzdHJhdGlvblJlYWR5UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aHJlYWQgPSBtX3RocmVhZC5jb3B5
UmVmKCksIHJlcXVlc3RJZGVudGlmaWVyLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4uaXNvbGF0ZWRD
b3B5KCksIGNsaWVudFVSTCA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUg
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRp
ZmllciwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRVUkwgPSBj
cm9zc1RocmVhZENvcHkoY2xpZW50VVJMKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29u
bmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oKTsKICAgICAgICAgY29ubmVjdGlvbi53aGVuUmVnaXN0cmF0aW9uUmVhZHko
dG9wT3JpZ2luLCBjbGllbnRVUkwsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJ
ZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewpA
QCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVs
ZVVucmVnaXN0ZXJKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0CiAgICAgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fdW5y
ZWdpc3RlclJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCBy
ZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29udGV4dElkZW50aWZp
ZXJdKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQs
IHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb250ZXh0SWRlbnRp
Zmllcl0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICAgICAg
ICAgY29ubmVjdGlvbi5zY2hlZHVsZVVucmVnaXN0ZXJKb2JJblNlcnZlcihyZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBjb250ZXh0SWRlbnRpZmllciwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwg
cmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIHRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNy
b3NzVGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAppbmRleCAzYTgwYzYyMTJjYmI3NGI5ZjJlZDNmZjhkZmQxNTEyZGY4NzFm
YjgwLi43MzNiNWZmODY2MGI4NWM1MTNkYjkzZGIxYjkwMGNkOTczYTUyZTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hF
dmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9i
YWxTYwogICAgIGluaXQuY2FuY2VsYWJsZSA9IHRydWU7CiAgICAgYXV0byBldmVudCA9IEZldGNo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZmV0Y2hFdmVudCwgV1RGTW92ZShpbml0KSwgRXZl
bnQ6OklzVHJ1c3RlZDo6WWVzKTsKIAotICAgIGV2ZW50LT5vblJlc3BvbnNlKFtjbGllbnQgPSBj
bGllbnQuY29weVJlZigpLCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTF0gKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgeworICAgIGV2ZW50LT5vblJlc3BvbnNlKFtjbGllbnQsIG1vZGUsIHJlZGly
ZWN0LCByZXF1ZXN0VVJMXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHByb2Nl
c3NSZXNwb25zZShXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVzdWx0KSwgbW9kZSwgcmVkaXJl
Y3QsIHJlcXVlc3RVUkwpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmlu
ZGV4IDQ1MjI1YTZlNGYwYmUwOWQzM2YxYjllNzdkNWFlZDM5MjM1YjRmZTUuLmQyZjNlNzc0ZTA4
ZjFkZjIxNGMwZTQ1ODFhYmQzOGMwMTM1MDY5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVu
dExvb3AoKQogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2
ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykKIHsK
ICAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPigqd29ya2VyR2xvYmFsU2NvcGUoKSkpOwotICAgIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jb3B5UmVmKCksIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQs
IHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKV0oKSBtdXRhYmxlIHsKKyAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdU
Rk1vdmUocmVmZXJyZXIpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgU2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShj
bGllbnQpLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudElkLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgfSk7CiB9CkBA
IC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIHZvaWQgZmlyZU1lc3NhZ2VFdmVudChTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBNZXNzYWdlV2l0aE1lc3NhZ2UKIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6cXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQogewog
ICAgIGF1dG8gc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVJlZihkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KCp3b3JrZXJHbG9iYWxTY29wZSgpKSk7Ci0gICAgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlID0gc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNvcHlSZWYoKSwgbWVzc2Fn
ZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXSgp
IG11dGFibGUgeworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVl
dWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXSgpIG11dGFibGUgewogICAg
ICAgICBVUkwgc291cmNlVVJMOwogICAgICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNl
IHNvdXJjZTsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+KHNvdXJjZURhdGEpKSB7CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYgbWVzc2EKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJl
SW5zdGFsbEV2ZW50KCkKIHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1h
a2VSZWYoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqd29ya2VyR2xvYmFsU2Nv
cGUoKSkpOwotICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVU
YXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5l
dmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlXSgpIG11dGFi
bGUgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRo
cmVhZDo6cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2Vy
ICVsbHUiLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKIAogICAgICAgICBhdXRvIGluc3RhbGxFdmVudCA9IEV4dGVuZGFibGVFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnN0YWxsRXZlbnQsIHsgfSwgRXh0ZW5kYWJsZUV2ZW50
OjpJc1RydXN0ZWQ6Olllcyk7CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVJbnN0YWxsRXZlbnQoKQogdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCkKIHsKICAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPigqd29ya2VyR2xvYmFsU2NvcGUoKSkpOwotICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlXSgpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVu
dCBmaXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlbGx1Iiwgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgYXV0byBhY3Rp
dmF0ZUV2ZW50ID0gRXh0ZW5kYWJsZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFjdGl2YXRl
RXZlbnQsIHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9u
LmNwcAppbmRleCA0Nzg1YTI2OTY4NTNiM2I5MzRmOWQ1NWIyYWFjMWNlZDgyZjI1MTA2Li5hNTVm
YTQ5MzgwYzQ5NTEzMGZlMzFhOTZjODRlMDg5Yjc2ZDFjYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFNlc3Npb246OmdvKGNvbnN0IFN0cmluZyYgdXJsLCBG
dW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpbwogICAgICAgICBwYXJh
bWV0ZXJzLT5zZXREb3VibGUoInBhZ2VMb2FkVGltZW91dCJfcywgbV9wYWdlTG9hZFRpbWVvdXQp
OwogICAgICAgICBpZiAoYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gcGFnZUxvYWRTdHJhdGVneVN0
cmluZygpKQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0
ZWd5Il9zLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKCJuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENv
bW1hbmRUb0JhY2tlbmQoIm5hdmlnYXRlQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzIsNyAr
MzMyLDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRDdXJyZW50VVJMKEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIKIAogICAgICAgICBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQu
dmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdldEJyb3dz
aW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90
ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7Cisg
ICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdldEJyb3dzaW5nQ29udGV4dCJf
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFNlc3Np
b246OmJhY2soRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgcGFyYW1ldGVycy0+c2V0RG91YmxlKCJwYWdlTG9hZFRpbWVvdXQiX3Ms
IG1fcGFnZUxvYWRUaW1lb3V0KTsKICAgICAgICAgaWYgKGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9
IHBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcoKSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgcGFnZUxvYWRTdHJhdGVneS52YWx1ZSgpKTsKLSAg
ICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ29CYWNrSW5Ccm93c2luZ0NvbnRl
eHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVj
dGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAg
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJnb0JhY2tJbkJyb3dzaW5nQ29udGV4
dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21t
YW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0Ojpm
YWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgU2Vzc2lvbjo6Zm9yd2FyZChGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBw
YXJhbWV0ZXJzLT5zZXREb3VibGUoInBhZ2VMb2FkVGltZW91dCJfcywgbV9wYWdlTG9hZFRpbWVv
dXQpOwogICAgICAgICBpZiAoYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gcGFnZUxvYWRTdHJhdGVn
eVN0cmluZygpKQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlS
ZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vz
c2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+
c2VuZENvbW1hbmRUb0JhY2tlbmQoImdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92
ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC00MjUsNyArNDI1LDcgQEAgdm9pZCBTZXNzaW9uOjpyZWZyZXNoKEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldERvdWJsZSgicGFnZUxvYWRUaW1lb3V0Il9zLCBtX3BhZ2VMb2FkVGltZW91dCk7CiAgICAg
ICAgIGlmIChhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkp
CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3Ms
IHBhZ2VMb2FkU3RyYXRlZ3kudmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRU
b0JhY2tlbmQoInJlbG9hZEJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1h
bmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoInJlbG9hZEJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAg
ICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VP
YmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZv
aWQgU2Vzc2lvbjo6Z2V0VGl0bGUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2lu
Z0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAg
ICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsICJmdW5jdGlvbigpIHsg
cmV0dXJuIGRvY3VtZW50LnRpdGxlOyB9Il9zKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJy
YXkoImFyZ3VtZW50cyJfcywgSlNPTjo6QXJyYXk6OmNyZWF0ZSgpKTsKLSAgICAgICAgbV9ob3N0
LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdU
Rk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVm
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Np
b25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFu
ZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFNlc3Npb246Om5ld1dp
bmRvdyhPcHRpb25hbDxTdHJpbmc+IHR5cGVIaW50LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JgogICAgICAgICAgICAgcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoInByZXNlbnRhdGlvbkhpbnQiX3MsIHR5
cGVIaW50LnZhbHVlKCkgPT0gIndpbmRvdyIgPyAiV2luZG93Il9zIDogIlRhYiJfcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3Np
bmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0
Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNw
b25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAh
cmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3Qp
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgU2Vz
c2lvbjo6c3dpdGNoVG9GcmFtZShSZWZQdHI8SlNPTjo6VmFsdWU+JiYgZnJhbWVJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVI
YW5kbGUiX3MsIGZyYW1lRWxlbWVudElEKTsKICAgICAgICAgfQogCi0gICAgICAgIG1faG9zdC0+
c2VuZENvbW1hbmRUb0JhY2tlbmQoInJlc29sdmVDaGlsZEZyYW1lSGFuZGxlIl9zLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJl
ZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNz
aW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgicmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUiX3MsIFdURk1vdmUo
cGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYg
cmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENv
bW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBTZXNzaW9uOjpz
d2l0Y2hUb1BhcmVudEZyYW1lKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29t
cGxldGlvbkgKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3Np
bmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwog
ICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRC
cm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoInJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZSJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1h
bmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoInJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZSJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewog
ICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6
ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qo
T3B0aW9uYWw8ZG91YmxlPiB4LCBPcHRpb25hbDxkb3VibGU+IHksIE9wdGlvbmFsPGRvdQogICAg
ICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiLCBoZWlnaHQudmFsdWUoKSk7
CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoInNpemUiX3MsIFdURk1vdmUod2lu
ZG93U2l6ZSkpOwogICAgICAgICB9Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tl
bmQoInNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVy
cyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVz
cG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNF
cnJvcikgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBTZXNzaW9uOjptYXhpbWl6ZVdpbmRv
dyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGUKIAog
ICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9w
bGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1h
bmRUb0JhY2tlbmQoIm1heGltaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUo
cGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVm
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNz
aW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICBt
X2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJtYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250
ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpD
b21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVz
cG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBTZXNzaW9uOjptaW5p
bWl6ZVdpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGUKIAogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJoYW5kbGUi
X3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+
c2VuZENvbW1hbmRUb0JhY2tlbmQoImhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNv
cHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImhpZGVXaW5kb3dPZkJyb3dzaW5nQ29u
dGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJl
c3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21t
YW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZnVs
bHNjcmVlbldpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW5kCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsIFN0cmlu
ZyhFbnRlckZ1bGxzY3JlZW5KYXZhU2NyaXB0LCBzaXplb2YoRW50ZXJGdWxsc2NyZWVuSmF2YVNj
cmlwdCkpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbigiZXhw
ZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCJfcywgdHJ1ZSk7Ci0gICAgICAgIG1faG9zdC0+
c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29w
eVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShT
ZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
biJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21t
YW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9u
c2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0Myw3ICsx
MDQzLDcgQEAgdm9pZCBTZXNzaW9uOjpmaW5kRWxlbWVudHMoY29uc3QgU3RyaW5nJiBzdHJhdGVn
eSwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgRmluZEUKICAgICAgICAgaWYgKG1faW1wbGljaXRX
YWl0VGltZW91dCkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldERvdWJsZSgiY2FsbGJhY2tU
aW1lb3V0Il9zLCBtX2ltcGxpY2l0V2FpdFRpbWVvdXQgKyAxMDAwKTsKIAotICAgICAgICBtX2hv
c3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlz
LmNvcHlSZWYoKSwgbW9kZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgbW9kZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9u
c2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEwNSw3ICsx
MTA1LDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRBY3RpdmVFbGVtZW50KEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmQKICAgICAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRl
eHQudmFsdWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3Ms
ICJmdW5jdGlvbigpIHsgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7IH0iX3MpOwogICAg
ICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBKU09OOjpBcnJheTo6Y3Jl
YXRlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJl
c3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
U2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBp
ZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUo
cmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTE1Miw3ICsxMTUyLDcgQEAgdm9pZCBTZXNzaW9uOjppc0VsZW1lbnRTZWxlY3RlZChjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgICAgIHBh
cmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJf
cywgU3RyaW5nKEVsZW1lbnRBdHRyaWJ1dGVKYXZhU2NyaXB0LCBzaXplb2YoRWxlbWVudEF0dHJp
YnV0ZUphdmFTY3JpcHQpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVu
dHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRU
b0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAg
ICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwo
V1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMjAzLDcgKzEyMDMsNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRUZXh0KGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdQogICAgICAg
ICAvLyBGSVhNRTogQWRkIGFuIGF0b20gdG8gcHJvcGVybHkgaW1wbGVtZW50IHRoaXMgaW5zdGVh
ZCBvZiBqdXN0IHVzaW5nIGlubmVyVGV4dC4KICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJmdW5jdGlvbiJfcywgImZ1bmN0aW9uKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaW5uZXJU
ZXh0LnJlcGxhY2UoL15bXlxcU1xceGEwXSt8W15cXFNcXHhhMF0rJC9nLCAnJykgfSJfcyk7CiAg
ICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1l
bnRzKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9
IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2Up
IHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNw
b25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjQ0LDcgKzEyNDQs
NyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRUYWdOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkp
OwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVuY3Rpb24o
ZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgfSJfcyk7CiAg
ICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1l
bnRzKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9
IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2Up
IHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNw
b25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjc2LDcgKzEyNzYs
NyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRSZWN0KGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIHsgfSwgW3Byb3RlY3RlZFRoaXMg
PSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2ludD4m
JiwgYm9vbCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikgeworICAgICAgICBjb21wdXRl
RWxlbWVudExheW91dChlbGVtZW50SUQsIHsgfSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFJlY3Q+JiYgcmVj
dCwgT3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3Ip
IHsKICAgICAgICAgICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShlcnJvcikpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzEyLDcgKzEzMTIsNyBAQCB2b2lkIFNlc3Npb246
OmlzRWxlbWVudEVuYWJsZWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRs
ZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBTdHJpbmcoRWxlbWVudEVuYWJsZWRKYXZhU2Ny
aXB0LCBzaXplb2YoRWxlbWVudEVuYWJsZWRKYXZhU2NyaXB0KSkpOwogICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwotICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
biJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlz
LmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVz
cG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgdm9pZCBTZXNz
aW9uOjppc0VsZW1lbnREaXNwbGF5ZWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmQKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVI
YW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgU3RyaW5nKEVsZW1lbnREaXNwbGF5ZWRK
YXZhU2NyaXB0LCBzaXplb2YoRWxlbWVudERpc3BsYXllZEphdmFTY3JpcHQpKSk7CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7
Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9y
IHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9i
amVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzk1LDcgKzEzOTUsNyBAQCB2
b2lkIFNlc3Npb246OmdldEVsZW1lbnRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IGNvbnN0IFN0cmluZyYgYXR0cmlidQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBTdHJpbmcoRWxlbWVudEF0
dHJpYnV0ZUphdmFTY3JpcHQsIHNpemVvZihFbGVtZW50QXR0cmlidXRlSmF2YVNjcmlwdCkpKTsK
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1
bWVudHMpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlz
ID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25z
ZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNl
LmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MzYsNyArMTQz
Niw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudFByb3BlcnR5KGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5z
ZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUo
KSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsIG1ha2VTdHJp
bmcoImZ1bmN0aW9uKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuIiwgcHJvcGVydHksICI7IH0i
KSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUo
YXJndW1lbnRzKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVk
VGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlz
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9u
SG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNw
b25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDc3LDcg
KzE0NzcsNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRDU1NWYWx1ZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiBjc3NQcm9wZQogICAgICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBtYWtl
U3RyaW5nKCJmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJyIsIGNzc1Byb3BlcnR5
LCAiJyk7IH0iKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3Ms
IFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tl
bmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBb
cHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3Bv
bnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgi
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90
ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAg
IGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92
ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNjEzLDcgKzE2MTMsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBlbGVtZW50SXNGaWxlVXBsb2FkKGVsZW1lbnRJRCwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgZWxlbWVudElELCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZWxlbWVudElzRmlsZVVwbG9hZChlbGVtZW50
SUQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE2MjQsNyArMTYyNCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgT3B0aW9uU2V0
PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMgPSB7IEVsZW1lbnRMYXlvdXRPcHRpb246OlNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29v
cmRpbmF0ZXMgfTsKLSAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwg
b3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwg
ZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShPcHRpb25hbDxSZWN0PiYmIHJlY3QsIE9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwg
Ym9vbCBpc09ic2N1cmVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2lu
dD4mJiBpblZpZXdDZW50ZXIsIGJvb2wgaXNPYnNjdXJlZCwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKCFyZWN0IHx8IGVycm9yKSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZh
aWwoV1RGTW92ZShlcnJvcikpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcy
NCw3ICsxNzI0LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50Q2xlYXIoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGVsZW1lbnRJc0VkaXRhYmxlKGVsZW1lbnRJRCwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgZWxlbWVudElELCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVz
dWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZWxlbWVudElzRWRpdGFibGUoZWxlbWVu
dElELCBbdGhpcywgcHJvdGVjdGVkVGhpcywgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNzM3LDcgKzE3MzcsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGVhcihj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4g
b3B0aW9ucyA9IHsgRWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCB9
OwotICAgICAgICAgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBlbGVtZW50SUQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFs
PFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXB1dGVF
bGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGVs
ZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
T3B0aW9uYWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50ZXIsIGJv
b2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE3NTUsNyArMTc1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudENsZWFyKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0CiAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVI
YW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBTdHJpbmcoRm9ybUVsZW1l
bnRDbGVhckphdmFTY3JpcHQsIHNpemVvZihGb3JtRWxlbWVudENsZWFySmF2YVNjcmlwdCkpKTsK
ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZN
b3ZlKGFyZ3VtZW50cykpOwotICAgICAgICAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJl
c3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5k
VG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3Zl
KHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZWxlbWVudElzRmlsZVVwbG9hZChlbGVtZW50SUQs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGVsZW1lbnRJ
RCwgdGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Q29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGVsZW1lbnRJc0ZpbGVV
cGxvYWQoZWxlbWVudElELCBbdGhpcywgcHJvdGVjdGVkVGhpcywgZWxlbWVudElELCB0ZXh0LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVz
dWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigp
KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCB2b2lkIFNlc3Np
b246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImZyYW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgZm9jdXNTY3Jp
cHQpOwogICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3Ms
IFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFu
ZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGZp
bGVVcGxvYWRUeXBlLCBlbGVtZW50SUQsIHRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmaWxlVXBsb2FkVHlwZSwgZWxlbWVudElELCB0ZXh0LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9z
dDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIwNjAsNyArMjA2MCw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0
UGFnZVNvdXJjZShGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFu
ZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVuY3Rpb24oKSB7IHJldHVybiBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MOyB9Il9zKTsKICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgSlNPTjo6QXJyYXk6OmNyZWF0ZSgpKTsKLSAgICAg
ICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhp
cy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBt
X2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJf
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxMzksNyArMjEzOSw3IEBAIHZvaWQgU2Vz
c2lvbjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgUmVmUHRyPEpTT046OkFy
cmF5PiYmIGFyZ3VtZW50CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50Il9zLCB0cnVlKTsKICAgICAgICAgaWYgKG1fc2Ny
aXB0VGltZW91dCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpCiAg
ICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXREb3VibGUoImNhbGxiYWNrVGltZW91dCJfcywgbV9z
Y3JpcHRUaW1lb3V0KTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29tbWFuZFJl
c3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC5lcnJvckNvZGUoKSA9PSBDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6
OlVuZXhwZWN0ZWRBbGVydE9wZW4pCkBAIC0yMzI3LDcgKzIzMjcsNyBAQCB2b2lkIFNlc3Npb246
OmdldEFsbENvb2tpZXMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcgogCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJy
b3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgp
KTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QWxsQ29va2llcyJf
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNv
cHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
U2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QWxsQ29va2llcyJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVz
cG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgdm9pZCBTZXNz
aW9uOjphZGRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSZXN1bHQmJik+JiYKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
YnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVl
KCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoImNvb2tpZSJfcywgV1RGTW92ZShj
b29raWUpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiYWRkU2luZ2xl
Q29va2llIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3Rl
ZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAg
ICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiYWRkU2luZ2xlQ29va2llIl9zLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJl
c3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNw
b25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDIy
LDcgKzI0MjIsNyBAQCB2b2lkIFNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIG5h
bWUsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JgogICAgICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
cGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2
ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiY29va2llTmFtZSJfcywgbmFtZSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoImRlbGV0ZVNpbmdsZUNvb2tpZSJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYm
IHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImRlbGV0
ZVNpbmdsZUNvb2tpZSJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNl
LmlzRXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVz
dWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ0Niw3ICsyNDQ2LDcgQEAgdm9pZCBTZXNzaW9uOjpkZWxldGVB
bGxDb29raWVzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhh
bmQKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJi
cm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUo
KSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImRlbGV0ZUFsbENvb2tp
ZXMiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhp
cy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBt
X2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJkZWxldGVBbGxDb29raWVzIl9zLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjIzLDcg
KzI2MjMsNyBAQCB2b2lkIFNlc3Npb246OnBlcmZvcm1BY3Rpb25zKFZlY3RvcjxWZWN0b3I8QWN0
aW9uPj4mJiBhY3Rpb25zQnlUaWNrLCBGdW5jdGlvbjx2bwogICAgICAgICB9CiAKICAgICAgICAg
cGFyYW1ldGVycy0+c2V0QXJyYXkoInN0ZXBzIl9zLCBXVEZNb3ZlKHN0ZXBzKSk7Ci0gICAgICAg
IG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNl
Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMu
Y29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlIl9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1v
dmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjc1Myw3ICsyNzUzLDcgQEAgdm9pZCBTZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChPcHRpb25h
bDxTdHJpbmc+IGVsZW1lbnRJRCwgT3B0aW9uYWw8Ym9vbD4gc2Nyb2xsSW4KICAgICAgICAgcGFy
YW1ldGVycy0+c2V0Qm9vbGVhbigiY2xpcFRvVmlld3BvcnQiX3MsIHRydWUpOwogICAgICAgICBp
ZiAoc2Nyb2xsSW50b1ZpZXcudmFsdWVPcihmYWxzZSkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJz
LT5zZXRCb29sZWFuKCJzY3JvbGxJbnRvVmlld0lmTmVlZGVkIl9zLCB0cnVlKTsKLSAgICAgICAg
bV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgidGFrZVNjcmVlbnNob3QiX3MsIFdURk1vdmUo
cGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgIG1faG9zdC0+
c2VuZENvbW1hbmRUb0JhY2tlbmQoInRha2VTY3JlZW5zaG90Il9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNw
b25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRS
ZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggOThhMjIyYzZhMDdhMjFiZWY1
MWQ2OWJlYWEyMzVmMWU2ZjgyMmZiNC4uNWNmNzIwMTViMDQ0MDBmMmZjZmZlZTQxNjMyNzNiMTVi
MGFkMzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFJlZjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2U+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnJlcXVlc3RSZXNvdXJj
ZShSZXNvdXJjZVJlcXVlCiAgICAgYXV0byByZW1vdGVNZWRpYVJlc291cmNlID0gUmVtb3RlTWVk
aWFSZXNvdXJjZTo6Y3JlYXRlKHJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLCAqdGhpcywgcmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmFkZE1lZGlhUmVzb3VyY2UocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90
ZU1lZGlhUmVzb3VyY2UpOwogCi0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlcXVlc3RSZXNv
dXJjZShyZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucyksIFty
ZW1vdGVNZWRpYVJlc291cmNlID0gcmVtb3RlTWVkaWFSZXNvdXJjZS5jb3B5UmVmKCldKCkgewor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpSZXF1ZXN0UmVzb3VyY2UocmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpLCBbcmVtb3RlTWVkaWFSZXNvdXJjZV0o
KSB7CiAgICAgICAgIHJlbW90ZU1lZGlhUmVzb3VyY2UtPnNldFJlYWR5KHRydWUpOwogICAgIH0s
IG1faWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAppbmRleCAwYmNhOWI3MmZmMjdhY2QyZTVkMjdiYTEyZGQ0YzZhMTg3MGNl
ZjkyLi4yMWI4M2NiNGVkZGJiMjQ1NjFhYjQ4ZWE2NmM5NzVjOWI0MjY0Yjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAg
LTE0OTksNyArMTQ5OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIENvb2tpZUFjY2Vzczo6QmFzZWRPbkNvb2tpZVBvbGljeToKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIHN1YkZy
YW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBzdG9yZS0+aGFzQ29va2llcyhzdWJGcmFtZURvbWFpbiwgW3N0b3JlID0gc3RvcmUuY29weVJl
ZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29s
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBzdG9yZS0+aGFzQ29va2llcyhzdWJGcmFt
ZURvbWFpbiwgW3N0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgc3RvcmUtPnN0
YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCByZXN1bHRdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMTUx
Miw3ICsxNTEyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKICAgICB9OwogCiAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIHN1YkZyYW1l
RG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0g
dG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgc3RvcmUtPmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKHN1YkZyYW1lRG9t
YWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQsIFtzdG9yZSA9IHN0
b3JlLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBzdG9yZS0+Y2FsbEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBm
cmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgW3N0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgICAgIH0pOwpAQCAt
MTYzOSw3ICsxNjM5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb20KICAgICB9CiAKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4u
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRD
b3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBzY29wZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1l
RG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBzY29wZSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0b3JlID0gc3RvcmUuY29w
eVJlZigpXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lRG9tYWlu
LCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBzY29wZSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0b3JlXShTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0
aWNzUXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTIyODQsMTEg
KzIyODQsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xl
YXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKIAogICAgIGF1dG8gY2FsbGJhY2tB
Z2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogCi0gICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKICAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yID0gZW5zdXJlUHJldmFsZW50
UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVs
ZXRlQ29va2llc0ZvciwgeyB9LCB7IH0gfTsKLSAgICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRv
bWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlu
cyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXJlQWxsVGhpcmRQYXJ0eUNvb2tp
ZXNCbG9ja2VkVW5kZXIoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQpAQCAt
MjQwNiw3ICsyNDA2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgZGVidWdM
b2dEb21haW5zSW5CYXRjaGVzKCJBcHBseWluZyBjcm9zcy1zaXRlIHRyYWNraW5nIHJlc3RyaWN0
aW9ucyIsIGRvbWFpbnNUb0Jsb2NrKTsKIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwg
ZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgc3RvcmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JI
YW5kbGVyKGRvbWFpbnNUb0Jsb2NrLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3Rv
cmUgPSBzdG9yZS5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3JlLT5jYWxsVXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihkb21haW5zVG9CbG9jaywgW3dlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgc3RvcmUtPnN0
YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggMjIxZTM2M2Fh
MWUyNjc2YmJmNzdjMDFjYTBmZDQzOGU1OTYxNmFkNC4uMDY2OTgyMGQ4NjU3ZTU5M2M0NjYyY2Y5
NTY5Y2ZmMjgzOWZmMjRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYgcwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDb29raWVBY2Nlc3M6OkJhc2VkT25D
b29raWVQb2xpY3k6CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBt
YWtlUmVmKHN0b3JlKCkpLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgc3RvcmUtPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4s
IFtzdG9yZSA9IHN0b3JlLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgc3Rv
cmUtPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4sIFtzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzdWx0XSAoKSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAg
ICAgICAgICAgICB9KTsKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYg
cwogICAgIH0KIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVm
KHN0b3JlKCkpLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlE
LCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0b3JlLT5jYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQudmFsdWUoKSwg
cGFnZUlELCBbc3RvcmUgPSBzdG9yZS5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
c3RvcmUtPmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKHN1YkZyYW1lRG9tYWlu
LCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQsIFtzdG9yZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQpIG11
dGFibGUgewogICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdICgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiAg
ICAgICAgICAgICB9KTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aQogICAgIH0KIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4g
PSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFt
ZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZSA9IG1ha2VSZWYo
c3RvcmUoKSksIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBzdG9yZS0+Y2FsbEdyYW50U3RvcmFnZUFjY2Vz
c0hhbmRsZXIoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQs
IHNjb3BlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
c3RvcmUgPSBzdG9yZS5jb3B5UmVmKCldKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQpIG11dGFibGUgeworICAgICAgICBzdG9yZS0+Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHNjb3Bl
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc3RvcmVd
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQpIG11dGFibGUgewogICAgICAgICAg
ICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFt3YXNHcmFudGVkLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtODIxLDExICs4MjEsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGUKIAogICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAK
ICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yID0g
ZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7CiAgICAgUmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9LCB7IH0gfTsKLSAgICB1cGRhdGVDb29r
aWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHVwZGF0ZUNvb2tpZUJs
b2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1lcmdlU3Rh
dGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQpAQCAt
ODgzLDcgKzg4Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp1
cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgICAgIGRlYnVnTG9n
RG9tYWluc0luQmF0Y2hlcygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0cmFja2luZyByZXN0cmljdGlv
bnMiLCBkb21haW5zVG9CbG9jayk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGRv
bWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHN0b3JlLT5jYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFu
ZGxlcihkb21haW5zVG9CbG9jaywgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN0b3Jl
ID0gc3RvcmUuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBzdG9yZS0+Y2FsbFVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9tYWluc1RvQmxvY2ssIFt3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0b3JlLT5zdGF0
aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDQ3OWY1MTYxODU5YTg4NjM4YThkMjhl
NTA4Yzk1ZDE4ZjUxNDg4ZTEuLjczNzM0OTJiZTg4MzcyY2RlZjAxM2E5OTMxZDUwOGE1Yjg1MDU4
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0y
MDYsOCArMjA2LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURh
dGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogCiAgICAgc2V0RGF0YVJlY29y
ZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0
b3JlID0gbWFrZVJlZihtX3N0b3JlKSwgZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlLmNvcHlSZWYoKV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0b3JlLT5kZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9u
aXRvcmVkRGF0YVR5cGVzKCksIFdURk1vdmUoZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNp
dGVEYXRhRm9yKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldKGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRl
RGF0YSkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IG1h
a2VSZWYobV9zdG9yZSksIGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciA9
IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3Ip
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIHN0b3JlLT5kZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCks
IFdURk1vdmUoZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKSwgc2hvdWxk
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIHdvcmtRdWV1ZV0oY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNX
aXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtRdWV1ZS0+
ZGlzcGF0Y2goW2RvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEo
Q29tcGxldGlvbkhhbmRsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwg
c3RvcmUgPSBtYWtlUmVmKG1fc3RvcmUpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUtPnJl
Z2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgd29ya1F1ZXVlID0gd29ya1F1ZXVlLmNvcHlSZWYoKV0gKEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhXZWJzaXRlRGF0YSkgbXV0YWJs
ZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2hvdWxkTm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZSwgc3Rv
cmUgPSBtYWtlUmVmKG1fc3RvcmUpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgd29ya1F1ZXVlXSAoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
JiBkb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtRdWV1
ZS0+ZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGRvbWFpbnNXaXRoV2Vi
c2l0ZURhdGEgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhXZWJzaXRlRGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTQzOSw3
ICs0MzksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
QmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFJlZ2lzdHJhYgogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBt
YWtlUmVmKG1fc3RvcmUpLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5z
VG9CbG9jayksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewotICAgICAgICBzdG9yZS0+Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9tYWluc1RvQmxvY2ssIFtzdG9yZSA9IHN0b3JlLmNv
cHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGRvbWFpbnNUb0Jsb2NrLCBbc3RvcmUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgIH0pOwpAQCAtNDkzLDcgKzQ5Myw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IG1ha2VSZWYobV9z
dG9yZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7Ci0gICAgICAgIHN0b3JlLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtzdG9yZSA9
IHN0b3JlLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPnJlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3MoW3N0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
aW5kZXggZTNmNDM0ZDVmOGYxZmIxNTU4MmZiYjI5ODc0NzBiMGMwYmUwYzcxYS4uZjFhODU2MDBh
NDRmNGE3ZWQwNTI1ZDU0ZDAyOTRmN2JjNmNhMzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0
ZWQoVmVjdG9yPFJlc291cgogICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2FuY2VsUGVuZGlu
Z1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdCgpOwogCiAgICAgICAgIC8vIEZpcmUgYmVmb3Jl
IHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdhdGUgdXNlciBpbnRlcmFjdGlvbiBhcyBm
YXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2luZyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHBy
b3RlY3RlZFRoaXMuY29weVJlZigpXSgpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKV0oKSB7CisgICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2luZyhbdGhpcywgcHJvdGVjdGVk
VGhpc10oKSB7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gcHJvdGVjdGVkVGhpc10oKSB7CiAgICAgICAgICAgICAgICAgbG9nVGVzdGluZ0V2ZW50KCJT
dGF0aXN0aWNzIFVwZGF0ZWQiX3MpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAt
NDc0LDcgKzQ3NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpCiAgICAgICAgICAgICBpZiAo
IW1fbmV0d29ya1Nlc3Npb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogCi0g
ICAgICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29uZmlybWF0
aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRo
aXMuY29weVJlZigpLCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHdl
YlBhZ2VJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgbXV0YWJsZSB7CisgICAgICAgICAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxldGlv
bkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmICh1c2VyRGlkR3JhbnRBY2Nlc3MpCiAgICAgICAgICAg
ICAgICAgICAgIGdyYW50U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMs
IHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3IKICAgICAgICAg
ICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9
KTsKIAotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXIoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgc2hvdWxkR3JhbmRmYXRoZXIsIGNhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldICgpIG11dGFibGUgewor
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXIoW3RoaXMsIHByb3RlY3RlZFRoaXMsIHNo
b3VsZEdyYW5kZmF0aGVyLCBjYWxsYmFja0FnZ3JlZ2F0b3JdICgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
czo6WWVzKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5ncmFuZGZhdGhlckV4aXN0aW5nV2Vi
c2l0ZURhdGEoW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9y
KV0oKSBtdXRhYmxlIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJjYzli
N2JjNzQ4MTAyN2U5YTYxZmExY2FkNDg1YjIyNzhjZWEzYzcuLjZmMGNlNjQ5ZDhiMTdmZWY4ZDY2
ZWYxM2Q2M2JjNWZkZTY4YzUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00
OTQsNyArNDk0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9hZFBp
bmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2EKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUGluZzogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5
SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxv
YWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCks
IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCi0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFtjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllciA9IGxv
YWRQYXJhbWV0ZXJzLmlkZW50aWZpZXJdIChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gW2Nvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24sIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyXSAoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGlkRmluaXNoUGluZ0xvYWQoaWRlbnRpZmll
ciwgZXJyb3IsIHJlc3BvbnNlKSwgMCk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4OTcyYTY5NDU5MzlkMmI3Zjg1
NTMwMDQ5YTlmNDNkYmIwNmU1MTllLi5mMTIzYjIwYWM2YzI0NTEwZjQ0OWEwMjRlYmRjOWY1MmI2
NGQyZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMjY3LDEwICsyNjcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikKICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tp
ZXMgYW5kIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyB0byBkaXNrIGJlZm9yZSBleGl0aW5nLgog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgZm9yRWFjaE5ldHdvcmtT
ZXNzaW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24uZmx1c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBuZXR3b3JrU2Vzc2lv
bi5mbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICB9KTsKICNlbmRpZgotICAgIHBsYXRmb3JtU3luY0FsbENvb2tpZXMoW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgcGxh
dGZvcm1TeW5jQWxsQ29va2llcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkaWRDcmVhdGVEb3dubG9hZCgpCkBAIC0xNTE0LDIwICsxNTE0LDIw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKLSAgICAgICAgQ2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9w
dGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50
cmllcykgbXV0YWJsZSB7CisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJp
ZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmll
cykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAgICAgIH0pOwogICAgIH0KIAog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lv
blN0b3JhZ2UpICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNl
c3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldFNl
c3Npb25TdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8m
JiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFw
cGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSwgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2Up
ICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKLSAgICAgICAg
bV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYg
b3JpZ2lucykgeworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VP
cmlnaW5zKHNlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsK
ICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVE
YXRhOjpFbnRyeSB7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3Rv
cmFnZSwgMCB9KTsKICAgICAgICAgfSk7CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdAogICAgIGF1dG8gcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vz
c2lvbklEKTsKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYmIHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBQaWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lv
biBJRC4KLSAgICAgICAgcG9zdFN0b3JhZ2VUYXNrKENyb3NzVGhyZWFkVGFzayhbdGhpcywgY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgcGF0aCA9IGNy
b3NzVGhyZWFkQ29weShwYXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9zdFN0b3JhZ2VUYXNr
KENyb3NzVGhyZWFkVGFzayhbdGhpcywgY2FsbGJhY2tBZ2dyZWdhdG9yLCBwYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KHBhdGgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRv
ciksIHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsKICAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlP
cmlnaW5zKQogICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0
ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CkBAIC0xNTU2LDcgKzE1NTYsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBwYXRoID0gbV9z
ZXJ2aWNlV29ya2VySW5mby5nZXQoc2Vzc2lvbklEKS5kYXRhYmFzZVBhdGg7CiAgICAgaWYgKCFw
YXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpKSB7Ci0gICAgICAgIHN3U2VydmVyRm9yU2Vz
c2lvbihzZXNzaW9uSUQpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oY29uc3QgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgICAgICBzd1Nl
cnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1
cml0eU9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBz
ZWN1cml0eU9yaWdpbnMpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTE1NjQsNyArMTU2
NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAjZW5kaWYKICAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAg
Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgJmNhbGxiYWNr
QWdncmVnYXRvcl0oYXV0byYgc2Vzc2lvbikgewotICAgICAgICAgICAgZmV0Y2hEaXNrQ2FjaGVF
bnRyaWVzKHNlc3Npb24uY2FjaGUoKSwgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvIGVudHJpZXMp
IG11dGFibGUgeworICAgICAgICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb24uY2Fj
aGUoKSwgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8g
ZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXQKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsK
LSAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZWdpc3RyYWJsZURvbWFp
bnMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1
dG8mJiBkb21haW5zKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5yZWdpc3RyYWJsZURvbWFpbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIGRv
bWFpbnMpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWRvbWFpbnMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmFk
ZChkb21haW5zLnRha2VMYXN0KCkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMTYxOCwyMiAr
MTYxOCwyMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0pOwogCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCi0gICAg
ICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklE
LCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7
CisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhpcywgc2Vz
c2lvbklELCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQotICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZShzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxl
ciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9zdG9yYWdl
TWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2Uoc2Vzc2lvbklELCBbY2xlYXJUYXNrc0hh
bmRsZXJdIHsgfSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgbV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMo
c2Vzc2lvbklEKSkKLSAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9jYWxTdG9y
YWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgbV9zdG9y
YWdlTWFuYWdlclNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQs
IG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpCi0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBjbGVh
clRhc2tzSGFuZGxlci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHdlYklEQlNlcnZlcihzZXNz
aW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNl
LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpCi0gICAgICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNsZWFyQWxsKFtjbGVh
clRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY2xlYXJBbGwoW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQpAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICAgICAg
ICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4KICAg
ICAgICAgICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gKChtb25pdG9yZWRUeXBlc1Jh
dyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpID8gU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzOjpObyA6IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgc2hvdWxk
R3JhbmRmYXRoZXIsIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2UsIHNob3VsZEdyYW5k
ZmF0aGVyLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNzMyLDMxICsxNzMyLDMxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlKSkgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykK
LSAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigq
dGhpcywgc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVh
clRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqdGhpcywg
c2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tz
SGFuZGxlcl0geyB9KTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKSAmJiBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5jb250YWlucyhzZXNzaW9uSUQpKQotICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxl
dGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFy
VGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoc2Vz
c2lvbklELCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2Up
ICYmIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmNvbnRhaW5zKHNlc3Npb25JRCkpCi0gICAgICAgIG1f
c3RvcmFnZU1hbmFnZXJTZXQtPmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklE
LCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29w
eVJlZigpXSB7IH0pOworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5kZWxldGVMb2NhbFN0
b3JhZ2VGb3JPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAm
JiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9u
SUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFy
VGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAg
ICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdp
bnMob3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmICFzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBhdXRvJiBzZXJ2ZXIgPSBzd1NlcnZlckZvclNl
c3Npb24oc2Vzc2lvbklEKTsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2lu
RGF0YXMpCi0gICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3JpZ2luRGF0YSwgW2NsZWFyVGFza3NI
YW5kbGVyID0gY2xlYXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAg
c2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9
CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RGlza0NhY2hlKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAg
Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtvcmlnaW5EYXRhcywgJmNsZWFyVGFza3NIYW5kbGVyXShh
dXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgICAgICBjbGVhckRpc2tDYWNoZUVudHJpZXMoc2Vzc2lv
bi5jYWNoZSgpLCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNrc0hh
bmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgY2xlYXJEaXNrQ2FjaGVFbnRyaWVz
KHNlc3Npb24uY2FjaGUoKSwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xNzczLDcgKzE3NzMsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpbwogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6
IHJlZ2lzdHJhYmxlRG9tYWlucykgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKLSAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVtb3ZlRGF0
YUZvckRvbWFpbihkb21haW4sIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVy
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+cmVtb3ZlRGF0YUZvckRvbWFpbihkb21haW4sIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5MTAsNyArMTkxMCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgfQogICAgIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hP
cHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFt0
aGlzLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgc2Vzc2lvbklE
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRv
IGVudHJpZXMpIG11dGFibGUgeworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hF
bnRyaWVzKCp0aGlzLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0
YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpLCBbdGhpcywgZG9tYWluc1RvRGVsZXRlQWxsTm9u
Q29va2llV2Vic2l0ZURhdGFGb3IsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRv
IGVudHJpZXMpIG11dGFibGUgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIGVudHJp
ZXNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVB
bGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgZW50cmllcyk7CiAKQEAgLTE5MTgsMjIgKzE5MTgs
MjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KGVudHJ5Lm9yaWdpbi5ob3N0KSk7CiAKICAgICAgICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiBlbnRyaWVzVG9EZWxldGUpCi0gICAgICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCp0aGlzLCBzZXNzaW9uSUQsIFNlY3VyaXR5T3Jp
Z2luRGF0YSB7IGVudHJ5Lm9yaWdpbiB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlP
cmlnaW5EYXRhIHsgZW50cnkub3JpZ2luIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAg
ICAgICAgIH0pOwogICAgIH0KIAogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlu
cyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UpKSB7Ci0gICAgICAgICAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5nZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICAgICAgbV9zdG9y
YWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3Jl
Z2F0b3IsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYg
b3JpZ2lucykgewogICAgICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVy
Rm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JPcmln
aW5zKHNlc3Npb25JRCwgb3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyU2V0LT5kZWxldGVTZXNzaW9uU3RvcmFnZUZvck9yaWdpbnMoc2Vzc2lvbklELCBv
cmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKSkgewotICAgICAgICAgICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzZXNzaW9uSUQsIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2ll
V2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lu
cykgewogICAgICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNz
aW9uSUQsIG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnNUb0Rl
bGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTk0Miw4ICsxOTQyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MK
ICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAg
aWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhNRTogUGljayB0
aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQuCi0gICAgICAg
IHBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIHNlc3Npb25JRCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKSwgcGF0aCA9IGNyb3Nz
VGhyZWFkQ29weShwYXRoKSwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFG
b3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURh
dGFGb3IpXSgpIG11dGFibGUgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRh
Rm9yID0gV1RGTW92ZShkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciks
IGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHNlY3Vy
aXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsKKyAgICAgICAgcG9z
dFN0b3JhZ2VUYXNrKENyb3NzVGhyZWFkVGFzayhbdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0Fn
Z3JlZ2F0b3IsIHBhdGggPSBjcm9zc1RocmVhZENvcHkocGF0aCksIGRvbWFpbnNUb0RlbGV0ZUFs
bE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2Vzc2lvbklELCBkb21haW5zVG9EZWxldGVB
bGxOb25Db29raWVXZWJzaXRlRGF0YUZvciA9IFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxsTm9u
Q29va2llV2Vic2l0ZURhdGFGb3IpLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlY3VyaXR5T3JpZ2lu
cyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsKICAgICAgICAgICAgICAgICBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBlbnRyaWVzVG9EZWxldGU7CiAgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykgewogICAg
ICAgICAgICAgICAgICAgICBhdXRvIGRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KTsKQEAgLTE5NTQsNyArMTk1NCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV9kb21haW5zLmFkZChkb21haW4pOwogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2lucyhlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAgIHdlYklE
QlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhlbnRy
aWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSkpOwogICAgIH0KQEAgLTE5NjMsMTIgKzE5NjMsMTIgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhQQUw6OlNlc3MKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgcGF0aCA9IG1fc2Vy
dmljZVdvcmtlckluZm8uZ2V0KHNlc3Npb25JRCkuZGF0YWJhc2VQYXRoOwogICAgIGlmICghcGF0
aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSkgewotICAgICAgICBzd1NlcnZlckZvclNlc3Np
b24oc2Vzc2lvbklEKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW3RoaXMsIHNlc3Npb25J
RCwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKKyAgICAgICAgc3dT
ZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFt0
aGlzLCBzZXNzaW9uSUQsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9y
LCBjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYg
c2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJp
dHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkpOwotICAgICAgICAgICAgICAgIHN3U2VydmVy
Rm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNsZWFyKHNlY3VyaXR5T3JpZ2luLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAg
ICAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jbGVhcihzZWN1cml0eU9yaWdpbiwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKIAogICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hl
KSkgewogICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW3Nlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLCAmZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsICZjYWxsYmFj
a0FnZ3JlZ2F0b3JdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGZldGNoRGlza0NhY2hl
RW50cmllcyhzZXNzaW9uLmNhY2hlKCksIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbZG9tYWlu
c1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHNlc3Npb24gPSBtYWtlV2Vha1B0cigmc2Vz
c2lvbildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgICAgICAgICBmZXRjaERpc2tDYWNo
ZUVudHJpZXMoc2Vzc2lvbi5jYWNoZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucywgW2RvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IHNlc3Npb24gPSBtYWtlV2Vha1B0cigmc2Vzc2lvbildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTE5ODcsMTQgKzE5ODcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
QW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAg
ICAgICAgICAgICAgICAgICAgZW50cmllc1RvRGVsZXRlLmFwcGVuZChlbnRyeS5vcmlnaW4pOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVudHJ5Lm9yaWdpbi5ob3N0
KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50
cmllcyhzZXNzaW9uLT5jYWNoZSgpLCBlbnRyaWVzVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAg
IGNsZWFyRGlza0NhY2hlRW50cmllcyhzZXNzaW9uLT5jYWNoZSgpLCBlbnRyaWVzVG9EZWxldGUs
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBXZWJzaXRlRGF0YTo6
ZmlsdGVyKHdlYnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJKTsKICAg
ICBpZiAoIWRhdGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgewotICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykgewor
ICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+Jik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0gKGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX2RvbWFpbnMuYWRkKGRvbWFpbik7CiAgICAgICAgIH07CkBAIC0yMDgwLDcgKzIwODAs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIH0KICAgICAKICAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewotICAgICAg
ICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCp0aGlzLCBzZXNzaW9uSUQsIGZl
dGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMp
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0
byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNo
RW50cmllcygqdGhpcywgc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURh
dGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBl
bnRyaWVzKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJz
aXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzKTsKICAgICAgICAgfSk7CiAgICAg
fQpAQCAtMjA4OSw4ICsyMDg5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVE
b21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBhdXRv
IHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFwYXRo
LmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhNRTogUGljayB0aGUgcmlnaHQg
ZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQuCi0gICAgICAgIHBvc3RTdG9y
YWdlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBhdGggPSBjcm9zc1RocmVhZENvcHkocGF0aCldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHNlY3VyaXR5T3JpZ2lu
cyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsKKyAgICAgICAgcG9zdFN0b3JhZ2VU
YXNrKENyb3NzVGhyZWFkVGFzayhbdGhpcywgY2FsbGJhY2tBZ2dyZWdhdG9yLCBwYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHBhdGgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4
ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1
cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CiAg
ICAgICAgICAgICB9KTsKQEAgLTIxMDEsNyArMjEwMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBhdGggPSBtX3NlcnZpY2VXb3Jr
ZXJJbmZvLmdldChzZXNzaW9uSUQpLmRhdGFiYXNlUGF0aDsKICAgICBpZiAoIXBhdGguaXNFbXB0
eSgpICYmIHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucykpIHsKLSAgICAgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgICAgIHN3U2VydmVyRm9yU2Vz
c2lvbihzZXNzaW9uSUQpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhbY2FsbGJhY2tBZ2dy
ZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lu
cykgbXV0YWJsZSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2Vj
dXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJz
aXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTIxMTAs
NyArMjExMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CiAgICAg
ICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsICZjYWxs
YmFja0FnZ3JlZ2F0b3JdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgICAgIGZldGNoRGlza0Nh
Y2hlRW50cmllcyhzZXNzaW9uLmNhY2hlKCksIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0oYXV0byBlbnRy
aWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhzZXNzaW9u
LmNhY2hlKCksIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShh
dXRvIGVudHJpZXMpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKQEAgLTI1MzAsNyArMjUzMCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVCiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlKSkgewogICAgICAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFp
bnMoc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbmFtZU9y
aWdpbihzZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIFthZ2dyZWdhdG9yID0gYWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZW5h
bWVPcmlnaW4oc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBbYWdncmVnYXRvcl0geyB9KTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA4ODk1MzAzMTM2YmE5ZDYwODVlYjA5
NTcwOWE4ZDM3YzdmMTQ2M2E5Li41ZGNkN2I5OGNkNWE3MDY1Njg0NjcxM2YzNjFkODMwM2YyMTYx
YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBFbmdpbmU6
OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q2FjaGVzQ2FsbGIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNh
Y2hlcy0+aW5pdGlhbGl6ZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2FjaGVzID0g
Y2FjaGVzLmNvcHlSZWYoKV0oT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAg
ICAgICBjYWNoZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNh
Y2hlc10oT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3Iu
dmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0NSw3ICs2NDUsNyBAQCB2
b2lkIEVuZ2luZTo6ZmV0Y2hEaXJlY3RvcnlFbnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogewogICAgIGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3Jp
Z2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IGZvbGRlclBhdGhzKSB7Ci0gICAgICAgIENhY2hlczo6
cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRl
ciA9IHRhc2tDb3VudGVyLmNvcHlSZWYoKV0gKGF1dG8mJiBvcmlnaW4pIG11dGFibGUgeworICAg
ICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9p
b1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6
ZSwgdGFza0NvdW50ZXJdIChhdXRvJiYgb3JpZ2luKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoIW9yaWdpbikKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFy
QWxsQ2FjaGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICB9KTsKIAogICAgIGZvciAoYXV0byYgY2FjaGVzIDogbV9jYWNoZXMudmFsdWVzKCkpCi0g
ICAgICAgIGNhY2hlcy0+Y2xlYXIoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIGNhY2hlcy0+Y2xlYXIoW2NhbGxiYWNrQWdn
cmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzIzLDcg
KzcyMyw3IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tCiAKICAgICBmb3IgKGF1dG8mIGtleVZh
bHVlIDogbV9jYWNoZXMpIHsKICAgICAgICAgaWYgKGtleVZhbHVlLmtleS50b3BPcmlnaW4gPT0g
b3JpZ2luIHx8IGtleVZhbHVlLmtleS5jbGllbnRPcmlnaW4gPT0gb3JpZ2luKQotICAgICAgICAg
ICAga2V5VmFsdWUudmFsdWUtPmNsZWFyKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAga2V5VmFsdWUudmFsdWUtPmNs
ZWFyKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC03NDEsNyArNzQx
LDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmb2xkZXJQYXQKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBmb2xkZXJQYXRocykgewotICAgICAg
ICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1
ZXVlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW4sIGNhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIGZvbGRlclBhdGhd
IChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxl
IHsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0
aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3Jp
Z2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRlclBhdGhdIChPcHRpb25hbDxXZWJDb3JlOjpD
bGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
Zm9sZGVyT3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChm
b2xkZXJPcmlnaW4tPnRvcE9yaWdpbiAhPSBvcmlnaW4gJiYgZm9sZGVyT3JpZ2luLT5jbGllbnRP
cmlnaW4gIT0gb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IGFjMzM3NzU5ZWVjOWY3MjVk
NDkwOWVhNmZkOTU1NWMyZGY1ZWNhYmYuLjQxMjAzMzhmMDNlMjg4YmE4OGY4OTQ4NjFjNjlmYzhl
Y2E3MzMzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2bwogICAgICAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbbW9kaWZpZWRTaW5jZSwgJmFnZ3JlZ2F0b3JdKE5ldHdvcmtTZXNz
aW9uJiBzZXNzaW9uKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGUgPSBzZXNzaW9uLmNh
Y2hlKCkpCi0gICAgICAgICAgICAgICAgY2FjaGUtPmNsZWFyKG1vZGlmaWVkU2luY2UsIFthZ2dy
ZWdhdG9yID0gYWdncmVnYXRvci5jb3B5UmVmKCldICgpIHsgfSk7CisgICAgICAgICAgICAgICAg
Y2FjaGUtPmNsZWFyKG1vZGlmaWVkU2luY2UsIFthZ2dyZWdhdG9yXSAoKSB7IH0pOwogICAgICAg
ICB9KTsKICAgICB9KS5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDA4M2QwMThhY2I0
NTQzOGYyZWZiMmZkMGI1NGZkMTE3N2UzNDAyYTIuLmY5MjcwMTk0NTlhYTVmZDI1MzViZDVmY2Ni
NDM1YTY5ZmY4NTNkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFttb2RpZmllZFNpbmNlLCAmYWdncmVnYXRvcl0oTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24pIHsKICAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0gc2Vzc2lvbi5jYWNoZSgpKQot
ICAgICAgICAgICAgY2FjaGUtPmNsZWFyKG1vZGlmaWVkU2luY2UsIFthZ2dyZWdhdG9yID0gYWdn
cmVnYXRvci5jb3B5UmVmKCldICgpIHsgfSk7CisgICAgICAgICAgICBjYWNoZS0+Y2xlYXIobW9k
aWZpZWRTaW5jZSwgW2FnZ3JlZ2F0b3JdICgpIHsgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCmluZGV4IDUyZjE5ZjA0ZDBkMjJiM2Q2MGQ2MzIxYWNiOTZjZDE1YmFmOTYxMzQuLjA1YWQ4
NDIxZDg3MzljYzE5MTdmZGNhZTExMDdhMGU5NTliNTRjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAt
NjYzLDE2ICs2NjMsMTYgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGEKICAgICB9KTsKIAogICAg
IGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZik7Ci0gICAgc3RvcmUu
Y2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQcm9jZXNzZXMoW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7Ci0gICAgc3RvcmUucmVz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICBzdG9yZS5yZXNldENy
b3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICBzdG9yZS5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKHRy
dWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwotICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhmYWxzZSwgZmFsc2UsIFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JU
ZXN0aW5nKHRydWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoZmFsc2UsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnJl
c2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAgICBzdG9yZS5zY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpO
bywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7Ci0gICAgc3RvcmUuc2V0VXNlSVRQRGF0YWJhc2UoZmFsc2UsIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHN0b3JlLmNsZWFy
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIHN0b3JlLnJlc2V0Q3Jvc3NTaXRlTG9h
ZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CisgICAgc3RvcmUuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVy
cmVyRm9yVGVzdGluZyh0cnVlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIHN0b3Jl
LnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhmYWxzZSwgZmFsc2UsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgc3Rv
cmUuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEZvclRlc3RpbmcodHJ1ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBz
dG9yZS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGVGb3JUZXN0aW5nKGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIHN0
b3JlLnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOworICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0
OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOworICAgIHN0b3JlLnNldFVzZUlUUERhdGFiYXNlKGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKICAgICBj
b21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggNGNhY2MxMGNjZTViMTg4ZDQwYTIyZTExMzY4
YWEwZmQ4NTVlMzE4Ny4uYTBlOGIxODJjNmI3Zjk1ZTFjNjA3ZWE5NzBkYWI0MGYxNDU4ZWJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0K
QEAgLTEwMjIsNyArMTAyMiw3IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rh
a2VWaWV3U25hcHNob3QKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBjb21wcmVzc2Vk
Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsKICAgICBpZiAoV2Vi
Q29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoc25hcHNo
b3RGb3JtYXQsIGNvbXByZXNzZWRGb3JtYXQpKSB7CiAgICAgICAgIGF1dG8gdmlld1NuYXBzaG90
ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRyKTsKLSAgICAgICAgV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hvdCA9IHZpZXdTbmFwc2hvdC5j
b3B5UmVmKCldKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1
cmZhY2UpIHsKKyAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RG
TW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdT
bmFwc2hvdF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3Vy
ZmFjZSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFN1cmZhY2UpCiAgICAgICAgICAgICAg
ICAgdmlld1NuYXBzaG90LT5zZXRTdXJmYWNlKFdURk1vdmUoY29udmVydGVkU3VyZmFjZSkpOwog
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNWRjODdiNjBiZGFhODM0YjAw
YTNlODA4NDcyNzdmNTRmM2JiZDQ4NS4uMmVhN2I0ZDYzYWRiOWNiMmVlODk4NWE4OTQ0NzNkMGU5
ZTQ4MWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBTdHJp
bmcmIGJyb3dzaW5nQ29udGV4dAogICAgIGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0YWJs
ZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGVycm9yVHlwZSkgewogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJl
KFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwMTgsNyArMTAxOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4CiAgICAgaWYgKGZyYW1lTm90Rm91bmQpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCi0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21w
bGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKKyAgICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY2FsbGJhY2tdKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JU
eXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVE
RUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTA1NCw3ICsxMDU0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVs
ZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW4KICAgICBpZiAoIWNv
b3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdjb29yZGluYXRl
U3lzdGVtJyBpcyBpbnZhbGlkLiIpOwogCi0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrID0gY2FsbGJhY2su
Y29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wg
aXNPYnNjdXJlZCkgbXV0YWJsZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiwgYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVy
ZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0
SGFuZAogICAgIGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2sg
PSBjYWxsYmFjay5jb3B5UmVmKCldKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBtdXRhYmxl
IHsKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+IGNv
bXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JU
eXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChjb25zdCBTdHJp
bmcmIGJyb3dzaW5nQ29udAogICAgICAgICBuZXdGaWxlTGlzdC5hcHBlbmQoZmlsZW5hbWUpOwog
ICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+IGNv
bXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yVHlwZSkg
ewogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5F
RF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEz
MDYsNyArMTMwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEFsbENvb2tpZXMo
Y29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIFJlCiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7
CiAKLSAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFjayA9IGNh
bGxiYWNrLmNvcHlSZWYoKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJv
clR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BS
RURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVT
aW5nbGVDb29raWUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbAogICAgIGlmICgh
cGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90
Rm91bmQpOwogCi0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2Fs
bGJhY2tdKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KGVycm9yVHlwZSkgewogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19G
T1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzOTQsNyArMTM5NCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFk
ZFNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwKICAgICAg
ICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1Bh
cmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90IGZvdW5kLiIpOwogCiAg
ICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+
c2V0Q29va2llcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgY29va2ll
IH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oKSB7CisgICAgY29va2llTWFuYWdl
ci0+c2V0Q29va2llcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgY29v
a2llIH0sIFtjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwog
ICAgIH0pOwogfQpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoK
ICAgICAgICAgaWYgKCFwYXJzZWRCdXR0b24pCiAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFt
ZXRlciAnYnV0dG9uJyBpcyBpbnZhbGlkLiIpOwogCi0gICAgICAgIGF1dG8gbW91c2VFdmVudHNG
bHVzaGVkQ2FsbGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBwYWdlLmNvcHlSZWYoKSwgeCwg
eV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgYXV0
byBtb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSwgeCwgeV0o
T3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAgICAgIGlm
IChlcnJvcikKICAgICAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3IudmFs
dWUoKS50b1Byb3RvY29sU3RyaW5nKCkpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0yMDUyLDcg
KzIwNTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3Jl
OjpJbnRSZWN0JiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtwYWdlID0gbWFrZVJlZigqcGFnZSks
IGNhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpLCB0YWtlVmlld1NuYXBzb3QgPSBXVEZNb3Zl
KHRha2VWaWV3U25hcHNvdCldKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJ
bnRSZWN0JiYgcmVjdCkgbXV0YWJsZSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtw
YWdlID0gbWFrZVJlZigqcGFnZSksIGNhbGxiYWNrLCB0YWtlVmlld1NuYXBzb3QgPSBXVEZNb3Zl
KHRha2VWaWV3U25hcHNvdCldKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJ
bnRSZWN0JiYgcmVjdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNDQ5MjhkMmYx
YTdjYzc3Y2Q1MjNhOTQzMjI0MGM0MzEzZWZmYzdiMi4uNDMzNzZiODY4YTAxNDkyYzljNjA1NjEw
ZmJhMzViNDQ5M2FjNzdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2VQCiAgICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVy
ZW5jZXNEZWNpc2lvbkhhbmRsZXIKICAgICAgICAgJiYgIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkRlY2lzaW9uSGFuZGxlcldlYnNpdGVQb2xpY2llcwogICAgICAgICAmJiAhbV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uVXNlckluZm9EZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXMp
IHsKLSAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt3ZWJQYWdlID0gbWFrZVJlZih3
ZWJQYWdlUHJveHkpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpLCBuYXZpZ2F0aW9uQWN0
aW9uID0gbmF2aWdhdGlvbkFjdGlvbi5jb3B5UmVmKCksIGRlZmF1bHRXZWJzaXRlUG9saWNpZXNd
IChib29sIGludGVyY2VwdGVkTmF2aWdhdGlvbikgeworICAgICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gW3dlYlBhZ2UgPSBtYWtlUmVmKHdlYlBhZ2VQcm94eSksIGxpc3RlbmVyID0gV1RG
TW92ZShsaXN0ZW5lciksIG5hdmlnYXRpb25BY3Rpb24sIGRlZmF1bHRXZWJzaXRlUG9saWNpZXNd
IChib29sIGludGVyY2VwdGVkTmF2aWdhdGlvbikgewogICAgICAgICAgICAgaWYgKGludGVyY2Vw
dGVkTmF2aWdhdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V2ViUGFnZVAKICAgICB9KSgpOwogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgc2VsZWN0b3JG
b3JDb21wbGV0aW9uSGFuZGxlckNoZWNrZXIpOwotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyV2l0
aFByZWZlcmVuY2VzT3JQb2xpY2llcyA9IFtsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5l
ciksIG5hdmlnYXRpb25BY3Rpb24gPSBuYXZpZ2F0aW9uQWN0aW9uLmNvcHlSZWYoKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlciksIHdlYlBhZ2VQcm94eSA9IG1ha2VSZWYod2ViUGFnZVByb3h5
KSwgc3ViZnJhbWVOYXZpZ2F0aW9uLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzXSAoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSwgaWQgcG9saWNpZXNPclByZWZlcmVuY2VzKSBt
dXRhYmxlIHsKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlcldpdGhQcmVmZXJlbmNlc09yUG9saWNp
ZXMgPSBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpLCBuYXZpZ2F0aW9uQWN0aW9u
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgd2ViUGFnZVByb3h5ID0gbWFrZVJlZih3ZWJQ
YWdlUHJveHkpLCBzdWJmcmFtZU5hdmlnYXRpb24sIGRlZmF1bHRXZWJzaXRlUG9saWNpZXNdIChX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgYWN0aW9uUG9saWN5LCBpZCBwb2xpY2llc09yUHJlZmVy
ZW5jZXMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRp
ZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDE3YmE1OWRmNWFkMDE3MmViODZlY2QzZjMxYjQ1N2NmMjM1OGE0YjguLjdlMDcw
ZGJkNjEzZWUzYjFjNzM0ZjJlNWVjMDliYzdiZmJmNzg0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZShG
cmFtZQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgZnJhbWVJRCwgdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4gPSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCksIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUGVybWlzc2lvbkluZm8g
cGVybWlzc2lvbkluZm8pIG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgZnJh
bWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBlcm1pc3Npb25J
bmZvIHBlcm1pc3Npb25JbmZvKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjYWxsQ29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlU2NvcGVFeGl0KFsmY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmYzdkNjAwM2YwMmRjODliMmJlYTkx
Zjc4MTdmMDVjZmYyNzQxMTFhLi5hYTUwMWVlM2RjMTBiNjU2ODRlNjM1ODBhZjdlMmVhYTUyY2Jm
MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc4OCw3
ICs3ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gcmV0dXJuRGF0YTsK
LSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKHRoaXMsIG1lc3NhZ2VOYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2JqZWN0KCkpLmdldCgpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcHJvY2VzcyA9IG1fcHJvY2Vz
cy5jb3B5UmVmKCldIChSZWZQdHI8QVBJOjpPYmplY3Q+JiYgcmV0dXJuRGF0YSkgbXV0YWJsZSB7
CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb2Nlc3MgPSBtX3Byb2Nl
c3NdIChSZWZQdHI8QVBJOjpPYmplY3Q+JiYgcmV0dXJuRGF0YSkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXMocmV0dXJuRGF0YS5nZXQoKSkpKTsKICAgICB9KTsKIH0KQEAgLTMyMDIsMTMgKzMyMDIs
MTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3Zl
cnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6Q2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlm
ICghbmV0d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgfQogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
NTEwNiw3ICs1MTA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAgICBhdXRvKiBmcmFt
ZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2Vz
cywgZnJhbWUpOwogCi0gICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3Jl
YXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3Mg
PSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3
ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3NdIChjb25zdCBhdXRvJiBwb2xp
Y3lEZWNpc2lvbikgewogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNp
b24pLCB3ZWJQYWdlSUQpOwogICAgIH0pOwogCkBAIC01MTkzLDcgKzUxOTMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2NlcwogICAgIAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1l
LnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciks
IG5hdmlnYXRpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8
U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAKLSAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJv
dGVjdGVkVGhpcy5jb3B5UmVmKCksIGZyYW1lID0gZnJhbWUuY29weVJlZigpLCBzZW5kZXIgPSBX
VEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBw
cm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9u
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9s
aWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBvbGlj
aWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkZWZhdWx0UG9saWNpZXMgPSBt
X2NvbmZpZ3VyYXRpb24tPmRlZmF1bHRXZWJzaXRlUG9saWNpZXMoKSkKQEAgLTU0NDAsNyArNTQ0
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJv
Y2VzcywgcmVzcG9uc2UudXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmln
YXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZp
Z2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+
c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdh
dGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3MgPSBwcm9jZXNzLmNv
cHlSZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikgbXV0YWJsZSB7CisgICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAv
LyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJl
IG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28g
YXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNzky
Miw3ICs3OTIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdhbWVwYWRBY3Rpdml0eShjb25zdCBW
ZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMsIGJvb2wKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgTmVnb3RpYXRlZExl
Z2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTKQogewogICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5
VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcykgewotICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPnNob3VsZEFsbG93TGVnYWN5VExTKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jb3B5UmVmKCldIChib29s
IHNob3VsZEFsbG93TGVnYWN5VExTKSB7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+c2hv
dWxkQWxsb3dMZWdhY3lUTFMoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZV0gKGJvb2wgc2hvdWxkQWxsb3dMZWdhY3lUTFMpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRBbGxvd0xlZ2FjeVRMUykKICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGUyOTJlMGU0N2NmYjdiZDk1NDMwYjAxNjVlZmExMjM5
MmEwOTBjNmEuLmNkN2U3MDg3NGZkNTI3NmVlMTBiZmM4ZjFiMWQ5MGQwMDAzY2MzZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIxODUsNyArMjE4
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwo
V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgYXV0byYgdGFyZ2V0VVJMID0gbmF2
aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLnVybCgpOwogICAgIGF1dG8gdGFyZ2V0UmVnaXN0cmFi
bGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRhcmdldFVSTCB9OwogCi0g
ICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBk
YXRhU3RvcmUgPSBkYXRhU3RvcmUuY29weVJlZigpXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiB7CisgICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIHRhcmdldFJlZ2lzdHJhYmxlRG9t
YWluLCBkYXRhU3RvcmVdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKICAgICAgICAgcmV0
dXJuIHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihkYXRhU3RvcmUsIHBhZ2UucHRyKCksIHRh
cmdldFJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICB9OwogCkBAIC0yMzYyLDcgKzIzNjIsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3Rpbmco
Y29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2Fs
bGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2VlZFJlc291cmNlTG9hZFN0
YXRpc3RpY3NGb3JUZXN0aW5nKGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlEb21haW4sIHNo
b3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
b3JUZXN0aW5nKGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlEb21haW4sIHNob3VsZFNjaGVk
dWxlTm90aWZpY2F0aW9uKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDQ3NDRmNGYxZGM5ZWYyNTA1MTY5NWJjNWM1ZDAzNzVmYTEx
ZTBkMDUuLmEwZmNjOTkxNDM5MjEyMTIwMTU5ODE0NjBlMjI0YjRiZmY0NmJiODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xMTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldAog
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1By
b2Nlc3MoKS5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhtX3Nlc3Npb25JRCwgbWF4aW11bUVudHJ5
Q291bnQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMobV9zZXNzaW9uSUQsIG1heGltdW1FbnRy
eUNvdW50LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFy
Z2V0Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTExOTAsNyArMTE5MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJ1bmVFbnRy
aWVzRG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uCiAgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNl
dFBydW5lRW50cmllc0Rvd25UbyhtX3Nlc3Npb25JRCwgcHJ1bmVUYXJnZXRDb3VudCwgW3Byb2Nl
c3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQ
cnVuZUVudHJpZXNEb3duVG8obV9zZXNzaW9uSUQsIHBydW5lVGFyZ2V0Q291bnQsIFtwcm9jZXNz
UG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMDAsNyArMTIwMCw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldEdyYW5kZmF0aGVyaW5nVGltZShtX3Nl
c3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUobV9zZXNzaW9uSUQsIHNl
Y29uZHMsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTEyMTAsNyArMTIxMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcywKICAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklE
LCBzZWNvbmRzLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChtX3Nl
c3Npb25JRCwgc2Vjb25kcywgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiB9CiAgICAgCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IGVuc3VyZVByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyB1cmwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9v
bC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShtX3Nlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW3Byb2Nlc3NQb29sLCBjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyODcsNyArMTI4Nyw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29u
c3QgVVJMJiB1cmwsIENvbXBsZXRpCiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bv
b2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyB1cmwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2V0UHJldmFs
ZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHsgdXJsIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwog
ICAgIH0KIH0KIApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGUK
ICAgICAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9j
ZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VmVyeVByZXZhbGVudFJlc291
cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbcHJv
Y2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VmVyeVByZXZhbGVudFJl
c291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTEz
MzIsNyArMTMzMiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2CiAgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKG1fc2Vzc2lvbklELCB2
YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1By
b2Nlc3MoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbihjb25zdCBVUkwmIHN1YkZyYW1lVVJMLCBjb25zdCBVUkwmIHRvcEZyYW1lVVJMLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMzQ4LDcg
KzEzNDgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbihjb25zdCBVUkwmIHN1YkZyYW1lVVJMLCBjbwogICAgIAogICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2Vz
cyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+
c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB7IHN1YkZyYW1lVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdG9wRnJhbWVVUkwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHN1YkZyYW1lVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dG9wRnJhbWVVUkwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAg
ICAgfQogfQogCkBAIC0xMzc3LDcgKzEzNzcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBVUkwmIHN1YnJlc291cmNlVQog
ICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAg
ICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQot
ICAgICAgICAgICAgcHJvY2Vzcy0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKG1f
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHN1YnJlc291cmNlVVJMIH0s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVUkwgfSwgW3Byb2Nlc3NQb29s
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OworICAgICAgICAgICAgcHJvY2Vzcy0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
KG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHN1YnJlc291cmNlVVJM
IH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVUkwgfSwgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xNDA3LDcgKzE0
MDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMLAogICAgIAogICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9
IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2V0
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHN1YnJlc291cmNlVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdXJsUmVkaXJlY3RlZFRvIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3Mt
PnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyBzdWJyZXNvdXJjZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IHVybFJlZGlyZWN0ZWRUbyB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE0MjQsNyArMTQyNCw3IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiBzdWJy
ZXNvdXJjZVVSCiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQ
cm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBzdWJyZXNv
dXJjZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybFJlZGlyZWN0ZWRGcm9t
IH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNldFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RGcm9tKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHN1YnJlc291cmNlVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsUmVkaXJl
Y3RlZEZyb20gfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAg
fQogfQogCkBAIC0xNDQxLDcgKzE0NDEsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lVVJMLCBjb25zdAogICAg
IAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAg
ICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAg
ICAgICAgICAgcHJvY2Vzcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKG1fc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVVJMIH0sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsUmVkaXJlY3RlZFRvIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIHByb2Nlc3MtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhtX3Nlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0b3BGcmFtZVVSTCB9LCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB7IHVybFJlZGlyZWN0ZWRUbyB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNr
QWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJM
JiB0b3BGcmFtZVVSTCwgY29uCiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0
b3BGcmFtZVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybFJlZGlyZWN0ZWRG
cm9tIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNldFRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RGcm9tKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHRvcEZyYW1lVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsUmVkaXJlY3Rl
ZEZyb20gfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQog
fQogCkBAIC0xNDg4LDcgKzE0ODgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPAogCiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5jbGVhclByZXZhbGVudFJlc291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9j
ZXNzLT5jbGVhclByZXZhbGVudFJlc291cmNlKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHVybCB9LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICB9CiB9CiAKQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mCiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7
CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMo
bV9zZXNzaW9uSUQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhtX3Nlc3Npb25JRCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xNTIyLDcgKzE1MjIsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZQogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KG1fc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlLCBzaG91bGRHcmFuZGZh
dGhlciwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChtX3Nlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSwgc2hvdWxkR3Jh
bmRmYXRoZXIsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0K
IH0KIApAQCAtMTU1Niw3ICsxNTU2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBS
ZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihu
ZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogZW5zdXJlUHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAg
ICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKHRoaXMpLmdldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHByb2Nlc3NQb29sXShWZWN0b3I8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJiBkYXRhKSB7CisgICAg
ICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcyh0aGlzKS5nZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3Is
IHByb2Nlc3NQb29sXShWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YT4mJiBkYXRhKSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFk
ZFJlc3VsdChXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTU3MCw3ICsx
NTcwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGkKIAogICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtX3Nlc3Npb25JRCwgeyB9LCBzaG91bGRHcmFu
ZGZhdGhlciwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChtX3Nlc3Npb25JRCwgeyB9LCBzaG91bGRHcmFuZGZhdGhl
ciwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBA
IC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ29va2ll
QmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAKICAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nl
c3MtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUobV9zZXNzaW9uSUQsIFtwcm9jZXNzUG9v
bCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUobV9z
ZXNzaW9uSUQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0K
IH0KIApAQCAtMTU5Miw3ICsxNTkyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmQKICAgICAK
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2lu
ZyhtX3Nlc3Npb25JRCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2NoZWR1
bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKG1fc2Vzc2lvbklELCBbcHJvY2Vz
c1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE2MjEsNyAr
MTYyMSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgVVJMJiB1
cmwsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhCiAKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNldExh
c3RTZWVuKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBz
ZWNvbmRzLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZXRMYXN0U2Vlbiht
X3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgc2Vjb25kcywg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0x
NjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiB0b3BGcgogCiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9j
ZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNz
LT5tZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVV
cmwxIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVcmwyIH0sIGxhc3RT
ZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3Jh
bmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1v
dmVkLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5tZXJnZVN0YXRpc3RpY0Zv
clRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVcmwxIH0sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVcmwyIH0sIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJh
Y3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2
YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBbcHJvY2Vzc1Bvb2ws
IGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE2NjMsNyArMTY2Myw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFkCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29s
IDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPmluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IHVybCB9LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBw
cm9jZXNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgaGFkVXNlckludGVyYWN0aW9uLCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgW3Byb2Nlc3NQ
b29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0xNjcyLDcgKzE2
NzIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwgQ29tcAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAg
ICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29s
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQ
YWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nl
c3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTY4MSw3
ICsxNjgxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRJc1J1bm5pbmdSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVzdChib29sIHZhbHVlLCBDb21wbGUKICAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldElzUnVu
bmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nl
c3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRJ
c1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChtX3Nlc3Npb25JRCwgdmFsdWUsIFtw
cm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFs
dWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE2
ODksNyArMTY4OSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRO
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtw
cm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQsIHZhbHVl
LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vj
b25kcywgQ29tcGxldGlvbkgKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b24obV9zZXNzaW9uSUQsIHNlY29uZHMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKG1fc2Vzc2lvbklELCBz
ZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTcyNSw3ICsxNzI1LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQKIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9j
ZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcHJvY2Vzcy0+bG9nVXNlckludGVyYWN0aW9u
KG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIHByb2Nlc3MtPmxvZ1VzZXJJbnRlcmFjdGlvbihtX3Nlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAg
ICB9CiB9CiAKQEAgLTE3NzgsNyArMTc3OCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xl
YXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAK
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPmNsZWFyVXNlckludGVyYWN0aW9uKG1fc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIHByb2Nlc3MtPmNsZWFy
VXNlckludGVyYWN0aW9uKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTc5NSw3
ICsxNzk1LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0
IFVSTCYgdXJsLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ28KICAgICAKICAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHByb2Nl
c3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3Mt
PnNldEdyYW5kZmF0aGVyZWQobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdXJsIH0sIGlzR3JhbmRmYXRoZXJlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZXRHcmFu
ZGZhdGhlcmVkKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9
LCBpc0dyYW5kZmF0aGVyZWQsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQog
CkBAIC0xODA3LDcgKzE4MDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFVzZUlUUERh
dGFiYXNlKGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogICAgIAogICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAo
YXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgcHJvY2Vzcy0+c2V0VXNlSVRQRGF0YWJhc2UobV9zZXNzaW9uSUQsIHZhbHVlLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIHByb2Nlc3MtPnNldFVzZUlUUERhdGFiYXNlKG1fc2Vzc2lvbklELCB2YWx1ZSwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTE4MTksNyArMTgxOSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoY29uc3QgVVJMJiBmCiAgICAgCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZXRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4geyBmcm9tVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdG9VUkwgfSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzcy0+c2V0Q3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHsgZnJvbVVSTCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IHRvVVJMIH0sIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAg
IH0KIH0KIApAQCAtMTgyOSw3ICsxODI5LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNl
dENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhDb21wbGV0aW8KICAg
ICAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3MtPnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAt
MTgzOSw3ICsxODM5LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9y
VGVzdGluZyhjb25zdCBVUkwmIHVybCwgYm9vbCBpbmNsdWRlSHR0cE8KICAgICAKICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAg
ICAgICBuZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApA
QCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW4KICAgICAKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGVuYWJsZWQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZERvd25n
cmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwogICAgIH0KIH0KIApAQCAtMTkwMCwxMiArMTkwMCwxMiBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZQogICAgIGlmICh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gYmxvY2tpbmdN
b2RlKSB7CiAgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IGJsb2NraW5n
TW9kZTsKICAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzIDogcHJvY2Vzc2VzKCkpCi0gICAg
ICAgICAgICB3ZWJQcm9jZXNzLnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tp
bmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKKyAgICAgICAgICAgIHdlYlByb2Nlc3Muc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQog
CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUobV9zZXNzaW9uSUQsIGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBuZXR3b3JrUHJv
Y2Vzcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShtX3Nlc3Npb25JRCwgYmxvY2tp
bmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTkxNiw3
ICsxOTE2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2UKICAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQ
cm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkRW5ibGVTYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgZmxhZywgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAg
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50Rm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgZmxhZywgW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKICAgICB9CiB9CiAKQEAgLTE5MjcsNyArMTkyNyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQ
cm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBtb2RlLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZv
clRlc3RpbmcobV9zZXNzaW9uSUQsIG1vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAg
ICAgfQogfQogCkBAIC0xOTM3LDcgKzE5MzcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbgog
CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVz
Rm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwg
fSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVy
bCB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KICNlbmRpZiAvLyBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhT
ZWNvbmRzIHNlY29uZHMsIEMKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMobV9zZXNzaW9uSUQsIHNlY29uZHMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWNvbmRzKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGUKICAgICAKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhtX3Nlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nlc3Npb25JRCwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIGF1
dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShtX3Nlc3Npb25JRCwgZW5h
YmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
ICAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMjM5OSw3ICsyMzk5LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNldFF1b3RhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9
IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIHByb2Nlc3MtPnJlc2V0UXVvdGEobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgcHJv
Y2Vzcy0+cmVzZXRRdW90YShtX3Nlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
ICAgICB9CiB9CiAKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
Y2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Y2xlYXJBcHBCb3VuZFNlc3Npb24obV9z
ZXNzaW9uSUQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jbGVh
ckFwcEJvdW5kU2Vzc2lvbihtX3Nlc3Npb25JRCwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0yNDYzLDcgKzI0NjMsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJM
JiYgbmV3TmFtZSwgTwogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9v
bDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNz
ID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzLT5hZGRTZXNzaW9uKCp0aGlzKTsKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5y
ZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBk
YXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlbmFtZU9yaWdpbkluV2Vi
c2l0ZURhdGEobV9zZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRhdGFUeXBlcywgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI0NzYsMTQgKzI0
NzYsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmb3J3YXJkQXBwQm91bmREb21haW5zVG9J
VFBJZkluaXRpYWxpemVkKENvbXBsZXRpb25IYW5kbGUKICAgICBpZiAoIWFwcEJvdW5kRG9tYWlu
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwcm9wYWdhdGVBcHBCb3VuZERvbWFpbnMg
PSBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0gKFdl
YnNpdGVEYXRhU3RvcmUqIHN0b3JlLCBjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYgZG9tYWlucykgeworICAgIGF1dG8gcHJvcGFnYXRlQXBwQm91bmREb21haW5zID0g
W2NhbGxiYWNrQWdncmVnYXRvcl0gKFdlYnNpdGVEYXRhU3RvcmUqIHN0b3JlLCBjb25zdCBIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykgewogICAgICAgICBpZiAo
IXN0b3JlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdG9yZS0+dGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERvbWFpbnMpCi0gICAgICAgICAgICBz
dG9yZS0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21haW5zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICAgICAgICAgIHN0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbEV4Y2VwdEJldHdlZW5BcHBCb3VuZERv
bWFpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAgICAgICAgc3RvcmUtPnNldEFw
cEJvdW5kRG9tYWluc0ZvcklUUChkb21haW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgc3RvcmUtPnNldEFwcEJvdW5k
RG9tYWluc0ZvcklUUChkb21haW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH07
CiAKICAgICBwcm9wYWdhdGVBcHBCb3VuZERvbWFpbnMoZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgp
LmdldCgpLCAqYXBwQm91bmREb21haW5zKTsKQEAgLTI0OTgsNyArMjQ5OCw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2V0QXBwQm91bmREb21haW5zRm9ySVRQKGNvbnN0IEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFiCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0QXBwQm91
bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgZG9tYWlucywg
W2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7
CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0QXBwQm91bmREb21haW5zRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhtX3Nlc3Npb25JRCwgZG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTI1MDgsNyArMjUwOCw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6dXBkYXRlQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoY29u
c3QgU3RyaW5nJiBidW5kCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29s
LT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoYnVuZGxlSWRl
bnRpZmllciwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnVw
ZGF0ZUJ1bmRsZUlkZW50aWZpZXIoYnVuZGxlSWRlbnRpZmllciwgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbGVhckJ1bmRsZUlkZW50aWZp
ZXJJbk5ldHdvcmtQcm9jZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTI1MTYsNyArMjUxNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xl
YXJCdW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2CiAg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29s
IDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpLmNsZWFyQnVuZGxlSWRlbnRpZmllcihbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkuY2xlYXJCdW5kbGVJZGVudGlmaWVyKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBlOTEzNmM0ZWU5Yjg1YzMzNDk2MTUwZGQ0NWQ5OTk4MTc5ODg2MzQwLi4zNTI3NWE3NGQy
ZjNhNGM5YzIzZWJkZGQ3NzA2YjIwYzgyM2ZlYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xNDU5LDcgKzE0NTksNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om1h
cmtBbGxMYXllcnNWb2xhdGlsZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbgogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJtYXJr
QWxsTGF5ZXJzVm9sYXRpbGU6Iik7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
Zm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIHBhZ2UtPm1h
cmtMYXllcnNWb2xhdGlsZShbdGhpcywgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKSwgcGFnZUlEID0gcGFnZS0+aWRlbnRpZmllcigpXSAoYm9vbCBzdWNj
ZWVkZWQpIHsKKyAgICAgICAgcGFnZS0+bWFya0xheWVyc1ZvbGF0aWxlKFt0aGlzLCBjYWxsYmFj
a0FnZ3JlZ2F0b3IsIHBhZ2VJRCA9IHBhZ2UtPmlkZW50aWZpZXIoKV0gKGJvb2wgc3VjY2VlZGVk
KSB7CiAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkKQogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJtYXJrQWxsTGF5ZXJzVm9sYXRpbGU6
IFN1Y2Nlc3NmdWx5IG1hcmtlZCBsYXllcnMgYXMgdm9sYXRpbGUgZm9yIHdlYlBhZ2VJRD0lIiBQ
Ukl1NjQsIHBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIGVsc2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>