<?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>180792</bug_id>
          
          <creation_ts>2017-12-13 18:50:07 -0800</creation_ts>
          <short_desc>Use move semantics for SandboxExtension::Handle</short_desc>
          <delta_ts>2017-12-14 14:10:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1381454</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-13 18:50:07 -0800</bug_when>
    <thetext>Use move semantics for SandboxExtension::Handle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381455</commentid>
    <comment_count>1</comment_count>
      <attachid>329307</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-13 18:51:46 -0800</bug_when>
    <thetext>Created attachment 329307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381719</commentid>
    <comment_count>2</comment_count>
      <attachid>329374</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 11:53:56 -0800</bug_when>
    <thetext>Created attachment 329374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381727</commentid>
    <comment_count>3</comment_count>
      <attachid>329376</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 12:07:16 -0800</bug_when>
    <thetext>Created attachment 329376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381746</commentid>
    <comment_count>4</comment_count>
      <attachid>329381</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 12:22:31 -0800</bug_when>
    <thetext>Created attachment 329381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381814</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 14:09:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/r225926</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381816</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-14 14:10:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/36057910&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329307</attachid>
            <date>2017-12-13 18:51:46 -0800</date>
            <delta_ts>2017-12-14 11:53:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180792-20171213185145.patch</filename>
            <type>text/plain</type>
            <size>54547</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4ODkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE3LTEyLTEzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vdmUgc2Vt
YW50aWNzIGZvciBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUGFzc2luZyB0aGVtIGFyb3VuZCBh
cyBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlzIHdyb25nIGJlY2F1c2Ugb3duZXJz
aGlwIGlzIHRyYW5zZmVycmVkIGFuZCB0aGV5IGFyZSBjb25zdW1lZC4KKyAgICAgICAgSXQgb25s
eSB3b3JrcyBub3cgYmVjYXVzZSB0aGVpciBjb250ZW50cyBhcmUgbXV0YWJsZSwgd2hpY2ggaXNu
J3QgYSBnb29kIHVzZSBvZiBtdXRhYmxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlcmVnaXN0
ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAg
ICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9icyk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0Vu
dGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdVcGRhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
dGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5Ojpnb1RvSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdyYW50VXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6YmVnaW5Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0TWVtb3J5U2FtcGxlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMTItMTMgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIGF1dG8gZmlsbCBi
dXR0b24gdHlwZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAy
MjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDkgKzM3Nyw5IEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGUKICAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoZXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSk7
CiAKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5yZWdpc3RlckZpbGVCbG9i
VVJMKHRoaXMsIHVybCwgcGF0aCwgV1RGTW92ZShleHRlbnNpb24pLCBjb250ZW50VHlwZSk7CiB9
CkBAIC0zOTQsMTMgKzM5NCwxMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZWdpCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJCbG9i
VVJMKHRoaXMsIHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxlQmFj
a2VkQmxvYihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJh
Y2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocywgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJiBoYW5kbGVzKQogewogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lP
TlMpCiAgICAgQVNTRVJUKGZpbGVQYXRocy5zaXplKCkgPT0gaGFuZGxlcy5zaXplKCkpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlUGF0aHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IG1fYmxvYkRhdGFGaWxlUmVmZXJlbmNlcy5hZGQoZmlsZVBhdGhzW2ldLCBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVQYXRoc1tpXSwgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKGhhbmRsZXNbaV0pKSk7CisgICAgICAgIG1fYmxvYkRhdGFGaWxl
UmVmZXJlbmNlcy5hZGQoZmlsZVBhdGhzW2ldLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVQYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKFdURk1vdmUoaGFuZGxlc1tpXSkpKSk7CiAjZWxzZQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQogICAgICAgICBtX2Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIG51bGxwdHIpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA4LDEwICsxMDgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7
Ci0gICAgdm9pZCBwcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVC
YWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJv
eEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9iU2l6ZShjb25z
dCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIyNTgy
NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGVuZGlu
Z0Rvd25sb2FkID0gJnBlbmRpbmdEb3dubG9hZDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCAvKmFsbG93T3ZlcndyaXRlKi8pIHsgbV9w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbiA9IGZpbGVuYW1lOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgeyBtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uID0gZmlsZW5hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bjsgfQogICAgIGJvb2wgaXNEb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wZW5kaW5nRG93
bmxvYWRJRC5kb3dubG9hZElEKCk7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCShyZXZpc2lvbiAyMjU4MjUp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MzksMTIgKzQzOSwxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmNvbnN1bWVEYXRhKGNvCiAgICAgcmVhZCgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0
ZSkKIHsKLSAgICBOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGZp
bGVuYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgTmV0
d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgeyB9LCBh
bGxvd092ZXJ3cml0ZSk7CiAKICAgICBBU1NFUlQoIW1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAg
bV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBpZiAobV9zYW5k
Ym94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmgJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAg
TmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c3RhdGU7IH0KIAotICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3Ry
aW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCAvKmFsbG93T3Zlcndy
aXRlKi8pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29u
c3QgU3RyaW5nJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGJvb2wgLyphbGxvd092ZXJ3
cml0ZSovKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEZpbGVTdHJlYW1DbGllbnQgbWV0aG9kcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE4LDkgKzUxOCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRvd25sb2FkUmVxdWVzdChQQUwKICAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25s
b2FkKG51bGxwdHIsIHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkRmls
ZW5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBE
b3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1l
RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChz
ZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9h
ZChEb3dubG9hZElEIGRvd25sb2FkSUQpCkBAIC01OTQsMTIgKzU5NCwxMiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5h
dGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3
cml0ZSkKIHsKICAgICBpZiAoZGVzdGluYXRpb24uaXNFbXB0eSgpKQogICAgICAgICBkb3dubG9h
ZE1hbmFnZXIoKS5jYW5jZWxEb3dubG9hZChkb3dubG9hZElEKTsKICAgICBlbHNlCi0gICAgICAg
IGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93
T3ZlcndyaXRlKTsKKyAgICAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVEZWNpZGVQZW5k
aW5nRG93bmxvYWREZXN0aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKHVpbnQzMl90IGNtKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjI1ODI1KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRGlza0Nh
Y2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwg
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGRvd25s
b2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgdm9p
ZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9p
ZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wgY2FuQXV0
aGVudGljYXRlKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBwcml2YXRlOgogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAjZW5kaWYKLSAgICB2b2lkIGNvbnRpbnVlRGVj
aWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0
aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOworICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5n
RG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKIAogICAgIHZvaWQg
c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAgICAgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3Ry
aW5nJiBob3N0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAy
MjU4MjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXF1ZXN0Qm9k
eVNhbmRib3hFeHRlbnNpb25IYW5kbGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocmVxdWVzdEJvZHlTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCisgICAgICAgICAgICBpZiAoYXV0byBleHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0Qm9keVNhbmRib3hFeHRl
bnNpb25IYW5kbGVzW2ldKSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoZXh0ZW5zaW9uKSk7CiAgICAgICAgIH0KICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3
ICsyMTAsNyBAQCBTdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1CiAgICAg
aWYgKCFzZW5kU3luYyhNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUsIG1fcmVzcG9uc2VNSU1FVHlwZSksIE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTo6UmVwbHkoZGVzdGluYXRpb24sIGFsbG93T3ZlcndyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIG1fc2FuZGJveEV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKICAg
ICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKQEAgLTIyMiwxMCArMjIyLDEw
IEBAIHZvaWQgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2cKICAgICBzZW5kKE1l
c3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUFzeW5jKGRvd25sb2FkSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUpKTsKIH0KIAotdm9pZCBE
b3dubG9hZDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQordm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRl
RG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKIHsKICAgICBBU1NFUlQoIW1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgbV9zYW5k
Ym94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBpZiAobV9zYW5kYm94RXh0
ZW5zaW9uKQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdGFydFdpdGhIYW5kbGUoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAjZW5kaWYK
LSAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAg
dm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICAgICB2b2lkIGNhbmNl
bCgpOwogCiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9kb3du
bG9hZElEOyB9CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgU3Ry
aW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKTsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBk
aWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRo
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBib29sIGFsbG93T3ZlcndyaXRlKTsK
KyAgICB2b2lkIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93T3Zlcndy
aXRlKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAgdm9pZCBw
bGF0Zm9ybURpZEZpbmlzaCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2
b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkCiAjZW5kaWYKIH0KIAotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9u
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29s
IGFsbG93T3ZlcndyaXRlKQogewogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKG1f
ZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKSB7CkBA
IC0xMzMsNyArMTMzLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVu
ZAogICAgICAgICBBU1NFUlQoY29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBBU1NFUlQobV9w
ZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKIAotICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3RpbmF0aW9uLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgICAgIG5ldHdvcmtEYXRhVGFz
ay0+c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSksIGFsbG93T3ZlcndyaXRlKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpEb3dubG9hZCk7CiAgICAgICAgIGlmIChuZXR3b3JrRGF0YVRh
c2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q2FuY2VsaW5nIHx8IG5ldHdv
cmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDb21wbGV0ZWQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZAogI2VuZGlmCiB9CiAKLXZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikgJiYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0x
NjQsNyArMTY0LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTAog
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93
bmxvYWRJRCwgUmVzb3VyY2VSZXF1ZXN0KCkpOwogI2VuZGlmCiAKLSAgICBkb3dubG9hZC0+cmVz
dW1lKHJlc3VtZURhdGEsIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGRvd25s
b2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSk7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAg
ICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw5ICs4NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZWNpZGVQZW5kaW5n
RG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpOwogI2VuZGlmCiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2Fk
KERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9p
ZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0
cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CisgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERl
c3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogCi0gICAgdm9pZCByZXN1bWVEb3du
bG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25s
b2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAKICAgICB2b2lkIGNhbmNlbERv
d25sb2FkKERvd25sb2FkSUQpOwogICAgIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1t
CShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw5
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQg
RG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkKIHsKLSAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkpOwogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FuZGJveEV4dGVu
c2lvbi0+Y29uc3VtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCShyZXZpc2lvbiAyMjU4
MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxv
YWRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIERvd25sb2Fk
OjpzdGFydE5ldHdvcmtMb2FkKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIERv
d25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKK3ZvaWQgRG93bmxvYWQ6OnJlc3VtZShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9h
ZE1hYy5tbQkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWRXaXRoSGFuZGwKICAgICBbbV9u
c1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOwogfQogCi12b2lkIERv
d25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBBU1NFUlQoIW1fbnNVUkxE
b3dubG9hZCk7CiAgICAgQVNTRVJUKCFtX2RlbGVnYXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGUgeyB9CiAg
ICAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmLCBib29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93T3ZlcndyaXRlKi8pIG92ZXJyaWRl
OwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MoKSB7IHJldHVy
biBtX25ldHdvcmtMb2FkTWV0cmljczsgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZp
c2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsMTIgKzI5MSwxMiBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBOZXR3b3JrRGF0YVRhc2s6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBh
bGxvd092ZXJ3cml0ZSk7CisgICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbihmaWxlbmFtZSwgeyB9LCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICBBU1NFUlQoIW1f
c2FuZGJveEV4dGVuc2lvbik7Ci0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIG1fc2FuZGJveEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKTsKICAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbmRib3hF
eHRlbnNpb24tPmNvbnN1bWUoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hF
eHRlbnNpb24uaAkocmV2aXNpb24gMjI1ODI2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2Fu
ZGJveEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH07CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiBjcmVhdGUoY29uc3QgSGFuZGxlJik7CisgICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPiBjcmVhdGUoSGFuZGxlJiYpOwogICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFR5cGUsIEhhbmRsZSYpOwogICAgIHN0YXRpYyBib29sIGNyZWF0ZUhh
bmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxl
Jik7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgSGFuZGxlJik7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhl
IGRpcmVjdG9yeS4KQEAgLTEyOSw3ICsxMjksNyBAQCBpbmxpbmUgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBTCiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QpIHsgcmV0dXJuIG1fZW1w
dHlIYW5kbGU7IH0KIGlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZUFycmF5JikgeyBy
ZXR1cm4gdHJ1ZTsgfQotaW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxlJikgeyByZXR1cm4gbnVsbHB0cjsgfQoraW5saW5l
IFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFuZGxl
JiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBUeXBlLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9
CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChjb25zdCBTdHJpbmcmLCBUeXBlLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiwgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RhcnQoY29uc3Qg
ZG91YmwKICAgICBpbml0aWFsaXplVGltZXJzKGludGVydmFsKTsKIH0KIAotdm9pZCBXZWJNZW1v
cnlTYW1wbGVyOjpzdGFydChjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBsZUxv
Z0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJs
ZSBpbnRlcnZhbCkgCit2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnN0YXJ0KFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9n
RmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKIHsKICAgICBpZiAobV9pc1J1bm5pbmcp
IAogICAgICAgICByZXR1cm47CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxl
cjo6c3RhcnQoY29uc3QgU2FuZGIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0g
ICAgaW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUoc2FtcGxlTG9nRmlsZUhhbmRsZSwgc2FtcGxl
TG9nRmlsZVBhdGgpOworICAgIGluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKFdURk1vdmUoc2Ft
cGxlTG9nRmlsZUhhbmRsZSksIHNhbXBsZUxvZ0ZpbGVQYXRoKTsKICAgICBpbml0aWFsaXplVGlt
ZXJzKGludGVydmFsKTsKICAgIAogfQpAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgV2ViTWVtb3J5
U2FtcGxlcjo6aW5pdGlhbGl6ZVRlbXBMb2cKICAgICB3cml0ZUhlYWRlcnMoKTsKIH0KIAotdm9p
ZCBXZWJNZW1vcnlTYW1wbGVyOjppbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgc2FtcGxlTG9nRmlsZVBhdGgpCit2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVT
YW5kYm94ZWRMb2dGaWxlKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbXBsZUxvZ1NhbmRi
b3hIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgpCiB7Ci0gICAgbV9zYW1w
bGVMb2dTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbXBsZUxv
Z1NhbmRib3hIYW5kbGUpOworICAgIG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpKTsKICAg
ICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbXBsZUxvZ1Nh
bmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKICAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRoID0gc2Ft
cGxlTG9nRmlsZVBhdGg7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1w
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxl
ci5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgV2ViTWVtb3J5
U2FtcGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1lbW9yeVNhbXBsZXIqIHNpbmdsZXRv
bigpOwogICAgIHZvaWQgc3RhcnQoY29uc3QgZG91YmxlIGludGVydmFsID0gMCk7Ci0gICAgdm9p
ZCBzdGFydChjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBkb3VibGUgaW50ZXJ2YWwgPSAwKTsKKyAgICB2b2lkIHN0YXJ0KFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUgaW50ZXJ2YWwgPSAwKTsK
ICAgICB2b2lkIHN0b3AoKTsKICAgICBib29sIGlzUnVubmluZygpIGNvbnN0OwogICAgIApAQCAt
ODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIH5XZWJNZW1vcnlTYW1wbGVyKCk7CiAgICAgCiAg
ICAgdm9pZCBpbml0aWFsaXplVGVtcExvZ0ZpbGUoKTsKLSAgICB2b2lkIGluaXRpYWxpemVTYW5k
Ym94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgd3JpdGVIZWFkZXJzKCk7CiAg
ICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRvdWJsZSk7CiAgICAgdm9pZCBzYW1wbGVUaW1lckZp
cmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQkocmV2aXNpb24gMjI1ODI2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBA
QCBib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCitSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmIGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZS5t
X3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsMTIgKzMzNSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiB9CiAKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2Jz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkmIGhhbmRsZXMpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpncmFudFNhbmRib3hFeHRl
bnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYmIGhhbmRsZXMpCiB7CiAgICAgQVNTRVJUKHBhdGhzLnNpemUoKSA9
PSBoYW5kbGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9ibG9iVGVtcG9yYXJ5RmlsZVNh
bmRib3hFeHRlbnNpb25zLmFkZChwYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGhh
bmRsZXNbaV0pKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2Fu
ZGJveEV4dGVuc2lvbnMuYWRkKHBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShoYW5kbGVzW2ldKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0
LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgdm9p
ZCBncmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
dGhzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAgICAgdm9pZCBkaWRHZXRTYW5kYm94
RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50NjRfdCByZXF1ZXN0SUQsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAy
MjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzI5LDMxICsxNzI5LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXll
clRyZWVDb21taXRDb21wbGUKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogdm9pZCBXZWJQYWdl
UHJveHk6OmRyYWdFbnRlcmVkKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUpCiB7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRl
bnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXk7Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1l
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1wdHlBcnJh
eSk7CisgICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9u
OjpFbnRlcmVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCB7IH0sIHsgfSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkcmFnVXBkYXRlZChEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0
cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0eUFycmF5OwotICAgIHBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZCwgZHJhZ0RhdGEsIGRyYWdT
dG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZUVtcHR5QXJyYXkpOworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbjo6VXBkYXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgeyB9LCB7IH0p
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0V4aXRlZChEcmFnRGF0YSYgZHJhZ0RhdGEs
IGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewotICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0eUFycmF5OwotICAgIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6RXhpdGVkLCBkcmFnRGF0
YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlRW1wdHlBcnJheSk7CisgICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdDb250cm9sbGVyQWN0aW9uOjpFeGl0ZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHsg
fSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKERy
YWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQor
dm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0
YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiB7Ci0gICAgcGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbiwgZHJh
Z0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4
dGVuc2lvbnNGb3JVcGxvYWQpOworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbjo6UGVyZm9ybURyYWdPcGVyYXRpb24sIGRyYWdEYXRhLCBkcmFnU3Rv
cmFnZU5hbWUsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoc2FuZGJv
eEV4dGVuc2lvbnNGb3JVcGxvYWQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRh
JiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQordm9pZCBX
ZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxv
YWQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODUy
LDcgKzg1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYWdFbnRlcmVkKFdlYkNvcmU6OkRyYWdE
YXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9p
ZCBkcmFnVXBkYXRlZChXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lID0gU3RyaW5nKCkpOwogICAgIHZvaWQgZHJhZ0V4aXRlZChXZWJDb3JlOjpEcmFnRGF0
YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkpOwotICAgIHZvaWQg
cGVyZm9ybURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRy
YWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0
aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYm
KTsKIAogICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRy
YWdPcGVyYXRpb24sIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3Qp
OwogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBv
cGVyYXRpb24pOwpAQCAtMTYwNyw3ICsxNjA3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xl
YXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25z
dCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIHBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJh
Z0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogCiAgICAgdm9pZCB1
cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMjU4MjUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzczNiw3ICszNzM2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdP
cGVyYXRpb24oaQogCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRi
b3hFeHRlbnNpb25zSWZOZWVkZWQoKmZpbGVOYW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
c2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmFn
RGF0YS0+c2V0RmlsZU5hbWVzKCpmaWxlTmFtZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYWdlLT5wZXJmb3JtRHJhZ09wZXJhdGlvbigqZHJhZ0RhdGEsIHBhc3RlYm9hcmROYW1lLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+cGVyZm9ybURyYWdPcGVyYXRpb24oKmRyYWdEYXRh
LCBwYXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmlsZU5hbWVz
OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNzQ4LDcgKzM3NDgsNyBAQCBib29sIFdlYlZp
ZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3Bh
Z2UtPnBlcmZvcm1EcmFnT3BlcmF0aW9uKCpkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
UGFzdGVib2FyZC5uYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9u
Rm9yVXBsb2FkKTsKKyAgICBtX3BhZ2UtPnBlcmZvcm1EcmFnT3BlcmF0aW9uKCpkcmFnRGF0YSwg
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lLCBXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpKTsKICAgICBk
ZWxldGUgZHJhZ0RhdGE7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5NSwxMCAr
MTE5NSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0CiAgICAg
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJp
bGl0eShmbGFnKTsKIH0KICAgICAKLXZvaWQgV2ViUHJvY2Vzczo6c3RhcnRNZW1vcnlTYW1wbGVy
KGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FtcGxlTG9nRmlsZUhhbmRsZSwgY29u
c3QgU3RyaW5nJiBzYW1wbGVMb2dGaWxlUGF0aCwgY29uc3QgZG91YmxlIGludGVydmFsKQordm9p
ZCBXZWJQcm9jZXNzOjpzdGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYgc2FtcGxlTG9nRmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzYW1wbGVMb2dGaWxlUGF0aCwg
Y29uc3QgZG91YmxlIGludGVydmFsKQogewogI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikgICAg
Ci0gICAgV2ViTWVtb3J5U2FtcGxlcjo6c2luZ2xldG9uKCktPnN0YXJ0KHNhbXBsZUxvZ0ZpbGVI
YW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoLCBpbnRlcnZhbCk7CisgICAgV2ViTWVtb3J5U2FtcGxl
cjo6c2luZ2xldG9uKCktPnN0YXJ0KFdURk1vdmUoc2FtcGxlTG9nRmlsZUhhbmRsZSksIHNhbXBs
ZUxvZ0ZpbGVQYXRoLCBpbnRlcnZhbCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVM
b2dGaWxlSGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlTG9nRmlsZVBhdGgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjU4MjUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3Np
YmlsaXR5KGJvb2wpOwogICAgIAotICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGRvdWJsZSk7Cisg
ICAgdm9pZCBzdGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigp
OwogICAgIAogICAgIHZvaWQgZ2V0V2ViQ29yZVN0YXRpc3RpY3ModWludDY0X3QgY2FsbGJhY2tJ
RCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDExICs4OCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRs
ZTo6Y3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQorUmVmUHRyPEluamVjdGVkQnVu
ZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewogICAg
IGF1dG8gYnVuZGxlID0gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZShwYXJhbWV0ZXJzKSk7
CiAKLSAgICBidW5kbGUtPm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAg
YnVuZGxlLT5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSkpOwogICAg
IGlmICghYnVuZGxlLT5pbml0aWFsaXplKHBhcmFtZXRlcnMsIGluaXRpYWxpemF0aW9uVXNlckRh
dGEpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHJl
dmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGNyZWF0ZShjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNl
ckRhdGEpOworICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGNyZWF0ZShXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRh
dGEpOwogCiAgICAgfkluamVjdGVkQnVuZGxlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTQgKzYwLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgUmVm
UHRyPFNhbmRib3hFeHRlbnNpbwogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG1faWRzLnNpemUoKSA9PSBtX2hhbmRsZXMuc2l6ZSgpKTsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9pZHMuc2l6ZSgpKTsKLSAgICByZXR1cm4geyBtX2lk
c1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKG1faGFuZGxlc1tpXSkgfTsKLX0KLQotY29u
c3Qgc3RkOjpwYWlyPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zOjpvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAotewotICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1faWRzLnNpemUoKSA9PSBtX2hhbmRsZXMu
c2l6ZSgpKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9pZHMu
c2l6ZSgpKTsKLSAgICByZXR1cm4geyBtX2lkc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KG1faGFuZGxlc1tpXSkgfTsKKyAgICByZXR1cm4geyBtX2lkc1tpXSwgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUobV9oYW5kbGVzW2ldKSkgfTsKIH0KIAogc2l6ZV90IE1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnM6OnNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucy5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+IGlkcywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkmJiBoYW5kbGVzKTsKIAogICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPj4gb3BlcmF0b3JbXShzaXplX3QgaSk7Ci0gICAgY29uc3Qgc3RkOjpwYWly
PFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNywxMCArMjA3LDEwIEBAIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjoKICAgICByZXF1ZXN0LT5zZXREZXZpY2VJbmZvKGRldmljZUxp
c3QsIFdURk1vdmUobWVkaWFEZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBoYXNQZXJzaXN0ZW50
QWNjZXNzKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6Omdy
YW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucykKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKE1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMmJiBleHRlbnNpb25zKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewotICAgICAgICBhdXRvJiBleHRlbnNp
b24gPSBleHRlbnNpb25zW2ldOworICAgICAgICBjb25zdCBhdXRvJiBleHRlbnNpb24gPSBleHRl
bnNpb25zW2ldOwogICAgICAgICBleHRlbnNpb24uc2Vjb25kLT5jb25zdW1lKCk7CiAgICAgICAg
IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbi5maXJzdCwg
ZXh0ZW5zaW9uLnNlY29uZC5jb3B5UmVmKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3JlOjpNZWRpYURldmlj
ZXNFbnVtZXJhdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFEZXZpY2VF
bnVtZXJhdGlvbih1aW50NjRfdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
JiBkZXZpY2VMaXN0LCBTdHJpbmcmJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQsIGJvb2wgb3Jp
Z2luSGFzUGVyc2lzdGVudEFjY2Vzcyk7CiAKLSAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYpOwor
ICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zJiYpOwogICAgIHZvaWQgcmV2b2tlVXNlck1lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXMKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1lcywg
c2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChwYXRobmFtZXMu
c2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkp
CisgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpKQogICAgICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lUGVybWFuZW50bHkoKTsKICAgICB9
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5Ojpnb1RvSXRlbShICiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW0oaGlzdG9yeUl0ZW1Ub0lETWFwKCkuZ2V0KGl0
ZW0pLml0ZW1JRCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06
OlJlcGx5KHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKLSAgICBtX3BhZ2UtPnNhbmRib3hFeHRl
bnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+bWFpbldlYkZyYW1lKCksIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOworICAgIG1fcGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5i
ZWdpbkxvYWQobV9wYWdlLT5tYWluV2ViRnJhbWUoKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSk7CiB9CiAKIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRl
bUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwMywx
MyArMTIwMywxMyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChjb25zdCBMb2FkUGFyYW1ldGVy
cyYgbG9hZFBhcmFtZXRlcnMpCit2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0
ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVy
IHN0b3BwZXI7CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5u
YXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZCht
X21haW5GcmFtZS5nZXQoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0
KCksIFdURk1vdmUobG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogCiAg
ICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0
aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8v
IHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgpAQCAtMTMyOCwx
NCArMTMyOCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAg
ICAgbV9wYWdlLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlv
bnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKK3ZvaWQgV2ViUGFnZTo6cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qg
cmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAog
ICAgIEFTU0VSVCghbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5mcmFtZUhhc0xv
YWRlZCgpIHx8ICFtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ05hdmlnYXRp
b25JRCA9IG5hdmlnYXRpb25JRDsKIAotICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuYmVn
aW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBt
X3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0
QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCBPcHRpb25TZXQ8
UmVsb2FkT3B0aW9uPjo6ZnJvbVJhdyhyZWxvYWRPcHRpb25zKSk7CiB9CiAKQEAgLTMzMTYsNyAr
MzMxNiw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW8KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbHNlCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSkKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRi
b3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ09wZXJhdGlvbk5vbmUsIGZhbHNlLCAwLCB7IH0pKTsKQEAgLTMzNDIsOSArMzM0Miw5
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW8KICAgICBjYXNlIERy
YWdDb250cm9sbGVyQWN0aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbjogewogICAgICAgICBBU1NF
UlQoIW1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgICAgICBtX3BlbmRpbmdE
cm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVB
cnJheS5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lv
bnNIYW5kbGVBcnJheVtpXSkpCisgICAgICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdEcm9w
RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuYXBwZW5kKGV4dGVuc2lvbik7CiAgICAgICAgIH0KIApA
QCAtMzYxMyw5ICszNjEzLDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZU1lZGlhRGV2aWNl
RW51bQogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5kaWRDb21wbGV0
ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQsIGRldmljZXMsIFdURk1vdmUoZGV2
aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vzcyk7CiB9CiAj
aWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLXZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zJiBleHRlbnNpb25zKQordm9pZCBXZWJQYWdlOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zKE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmJiBleHRlbnNpb25zKQog
ewotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5ncmFudFVzZXJNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zKGV4dGVuc2lvbnMpOworICAgIG1fdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5ncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zKFdURk1vdmUoZXh0ZW5zaW9ucykpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJldm9rZVVzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNp
b25JRHMpCkBAIC0zOTM5LDExICszOTM5LDExIEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVu
c2lvblRyYWNrZXI6OncKICAgICBzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9u
KFdURk1vdmUocGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmJlZ2luTG9hZChXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKQordm9pZCBXZWJQYWdlOjpTYW5k
Ym94RXh0ZW5zaW9uVHJhY2tlcjo6YmVnaW5Mb2FkKFdlYkZyYW1lKiBmcmFtZSwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgaGFuZGxlKQogewogICAgIEFTU0VSVF9VTlVTRUQoZnJhbWUsIGZy
YW1lLT5pc01haW5GcmFtZSgpKTsKIAotICAgIHNldFBlbmRpbmdQcm92aXNpb25hbFNhbmRib3hF
eHRlbnNpb24oU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGhhbmRsZSkpOworICAgIHNldFBlbmRp
bmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24oU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUoaGFuZGxlKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFj
a2VyOjpzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPiYmIHBlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24pCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMjU4
MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY1OCw3ICs2NTgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CiAKLSAgICAgICAgdm9pZCBiZWdpbkxvYWQoV2ViRnJhbWUqLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSk7CisgICAgICAgIHZvaWQgYmVnaW5Mb2FkKFdl
YkZyYW1lKiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgICAgICB2b2lkIHdpbGxQ
ZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4m
JiBwZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24pOwogICAgICAgICB2b2lkIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKFdlYkZyYW1lKik7CiAgICAgICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9u
YWxMb2FkKFdlYkZyYW1lKik7CkBAIC03NjMsNyArNzYzLDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiAhUExBVEZPUk0oR1RLKQotICAgIHZvaWQgcGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpEcmFnRGF0YSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRh
JiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTExMSwxMiAr
MTExMSwxMiBAQCBwcml2YXRlOgogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7
CiAgICAgdm9pZCBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFy
YW1ldGVycyYpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsK
KyAgICB2b2lkIGxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERh
dGEoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgTG9h
ZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwg
V2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwotICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1
aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAg
dm9pZCBnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9p
ZCBnb0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb1Rv
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwpAQCAtMTI2
MCw3ICsxMjYwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICB2b2lkIGdyYW50VXNlck1lZGlh
RGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyYpOworICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zJiYpOwogICAgIHZvaWQgcmV2b2tlVXNlck1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329374</attachid>
            <date>2017-12-14 11:53:56 -0800</date>
            <delta_ts>2017-12-14 12:07:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180792-20171214115355.patch</filename>
            <type>text/plain</type>
            <size>56621</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE3LTEyLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vdmUgc2Vt
YW50aWNzIGZvciBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUGFzc2luZyB0aGVtIGFyb3VuZCBh
cyBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlzIHdyb25nIGJlY2F1c2Ugb3duZXJz
aGlwIGlzIHRyYW5zZmVycmVkIGFuZCB0aGV5IGFyZSBjb25zdW1lZC4KKyAgICAgICAgSXQgb25s
eSB3b3JrcyBub3cgYmVjYXVzZSB0aGVpciBjb250ZW50cyBhcmUgbXV0YWJsZSwgd2hpY2ggaXNu
J3QgYSBnb29kIHVzZSBvZiBtdXRhYmxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlcmVnaXN0
ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAg
ICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9icyk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0Vu
dGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdVcGRhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
dGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5Ojpnb1RvSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdyYW50VXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6YmVnaW5Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0TWVtb3J5U2FtcGxlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMTItMTMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY29weS9wYXN0ZSBlcnJvciBp
biBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw5ICszNzcsOSBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxlCiAgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKGV4dGVuc2lvbkhhbmRsZSk7CisgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkp
OwogCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJGaWxlQmxv
YlVSTCh0aGlzLCB1cmwsIHBhdGgsIFdURk1vdmUoZXh0ZW5zaW9uKSwgY29udGVudFR5cGUpOwog
fQpAQCAtMzk0LDEzICszOTQsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaQogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLnJlZ2lzdGVyQmxv
YlVSTCh0aGlzLCB1cmwsIHNyY1VSTCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJh
Y2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocywgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVC
YWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgIEFTU0VSVChmaWxlUGF0aHMuc2l6ZSgpID09IGhhbmRsZXMuc2l6ZSgpKTsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQotICAgICAg
ICBtX2Jsb2JEYXRhRmlsZVJlZmVyZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGVzW2ldKSkpOworICAgICAgICBtX2Jsb2JEYXRhRmls
ZVJlZmVyZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKGhhbmRsZXNbaV0pKSkpOwogI2Vsc2UKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZpbGVQYXRocy5zaXplKCk7ICsraSkKICAgICAgICAgbV9ibG9iRGF0YUZpbGVSZWZl
cmVuY2VzLmFkZChmaWxlUGF0aHNbaV0sIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZVBhdGhzW2ldLCBudWxscHRyKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwOCwxMCArMTA4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CiAgICAgdm9pZCBkZWxldGVDb29r
aWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwp
OwotICAgIHZvaWQgcHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxl
QmFja2VkQmxvYihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CisgICAgdm9pZCBwcmVyZWdpc3RlclNhbmRi
b3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVCYWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlQmFja2VkUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFj
a2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwogICAgIHZvaWQgYmxvYlNpemUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3QmIHJlc3VsdFNpemUpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyMjU4
MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICBtX3BlbmRp
bmdEb3dubG9hZCA9ICZwZW5kaW5nRG93bmxvYWQ7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3cml0ZSovKSB7IG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24gPSBmaWxlbmFtZTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93T3ZlcndyaXRlKi8pIHsgbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbiA9IGZpbGVuYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBwZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b247IH0KICAgICBib29sIGlzRG93bmxvYWQoKSBjb25zdCB7IHJldHVybiAhIW1fcGVuZGluZ0Rv
d25sb2FkSUQuZG93bmxvYWRJRCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjI1ODI1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDEyICs0MzksMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpjb25zdW1lRGF0YShjbwogICAgIHJlYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCiB7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihm
aWxlbmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIE5l
dHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZmlsZW5hbWUsIHsgfSwg
YWxsb3dPdmVyd3JpdGUpOwogCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAg
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2Fu
ZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOwogICAg
IE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgc3RhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3N0YXRlOyB9CiAKLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3
cml0ZSovKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNv
bnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVy
d3JpdGUqLykgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOCw5ICs1MTgsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3du
bG9hZChudWxscHRyLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZEZp
bGVuYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3Vt
ZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQo
c2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxv
YWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQpAQCAtNTk0LDEyICs1OTQsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZAogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxv
YWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGlu
YXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVy
d3JpdGUpCiB7CiAgICAgaWYgKGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgZG93bmxv
YWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CiAgICAgZWxzZQotICAgICAg
ICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxv
d092ZXJ3cml0ZSk7CisgICAgICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFsbG93T3ZlcndyaXRlKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tD
YWNoZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBkb3du
bG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZv
aWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZSh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGNhbkF1
dGhlbnRpY2F0ZSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjb250aW51ZURl
Y2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5h
dGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICB2b2lk
IHNldENhY2hlTW9kZWwodWludDMyX3QpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0
cmluZyYgaG9zdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjI1ODI2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29s
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlc1tpXSkpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5yZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lvbikpOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAs
NyArMjEwLDcgQEAgU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdQogICAg
IGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lLCBtX3Jlc3BvbnNlTUlNRVR5cGUpLCBNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6OlJlcGx5KGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAg
ICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCkBAIC0yMjIsMTAgKzIyMiwx
MCBAQCB2b2lkIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnCiAgICAgc2VuZChN
ZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWVBc3luYyhkb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKSk7CiB9CiAKLXZvaWQg
RG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgRG93bmxvYWQ6OmRpZERlY2lk
ZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCiB7CiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4
dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlm
Ci0gICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAg
IHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93
bmxvYWRJRDsgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIFN0
cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0
aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CisgICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3
cml0ZSk7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogICAgIHZvaWQg
cGxhdGZvcm1EaWRGaW5pc2goKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZAogI2VuZGlmCiB9CiAKLXZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9v
bCBhbGxvd092ZXJ3cml0ZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmICht
X2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5jb250YWlucyhkb3dubG9hZElEKSkgewpA
QCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBl
bmQKICAgICAgICAgQVNTRVJUKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgQVNTRVJUKG1f
cGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAKLSAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5zZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihkZXN0aW5hdGlvbiwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOwogICAgICAgICBpZiAobmV0d29ya0RhdGFU
YXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNhbmNlbGluZyB8fCBuZXR3
b3JrRGF0YVRhc2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q29tcGxldGVk
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDExICsxNDgsMTEgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZAogICAgIH0KICNlbHNlCiAgICAgaWYgKGF1dG8q
IHdhaXRpbmdEb3dubG9hZCA9IGRvd25sb2FkKGRvd25sb2FkSUQpKQotICAgICAgICB3YWl0aW5n
RG93bmxvYWQtPmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oZGVzdGluYXRpb24sIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICAgICAgd2FpdGluZ0Rvd25s
b2FkLT5kaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKIH0KIAotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1l
RG93bmxvYWQoUEFMCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CiAjZW5kaWYKIAotICAg
IGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRv
d25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3du
bG9hZCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjI1ODI1KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjZW5kaWYKICAgICB2b2lkIGNvbnZlcnROZXR3b3Jr
TG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYm
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24o
RG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKLSAgICB2
b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0JKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM1LDkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgRG93bmxvYWQ6
OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0J
KHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2lvcy9Eb3dubG9hZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQordm9pZCBEb3du
bG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZFdpdGhI
YW5kbAogICAgIFttX25zVVJMRG93bmxvYWQgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107
CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIEFT
U0VSVCghbV9uc1VSTERvd25sb2FkKTsKICAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBv
dmVycmlkZSB7IH0KICAgICBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlIHN0YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3cml0
ZSovKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0
IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVyd3Jp
dGUqLykgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0JKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MSwx
MiArMjkxLDEyIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFQKICAg
ICB9CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQor
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29u
c3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIE5ldHdvcmtE
YXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZmlsZW5hbWUsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICBOZXR3b3JrRGF0YVRhc2s6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCB7IH0sIGFsbG93T3ZlcndyaXRlKTsKIAog
ICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9uKTsKLSAgICBtX3NhbmRib3hFeHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAg
bV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAg
ICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDkgKzk1LDkg
QEAgU3RyaW5nIE5ldHdvcmtEYXRhVGFza1NvdXA6OnN1Z2dlc3RlZEZpbAogICAgIHJldHVybiBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9yZXNwb25zZS51cmwoKS5sYXN0UGF0aENvbXBvbmVu
dCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpzZXRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpz
ZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIE5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oZmlsZW5hbWUsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFs
bG93T3ZlcndyaXRlKTsKICAgICBtX2FsbG93T3ZlcndyaXRlRG93bmxvYWQgPSBhbGxvd092ZXJ3
cml0ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRl
QW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBzdGF0ZSgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBib29sIC8qYWxs
b3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2Nh
dGlvbihjb25zdCBTdHJpbmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFs
bG93T3ZlcndyaXRlKi8pIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCB0aW1lb3V0RmlyZWQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDIyNTgyNikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNyArOTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IEhhbmRsZSYpOworICAgIHN0YXRp
YyBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKEhhbmRsZSYmKTsKICAgICBzdGF0aWMg
Ym9vbCBjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlLCBIYW5kbGUmKTsKICAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJp
bmcmIHBhdGgsIFR5cGUsIEhhbmRsZSYpOwogICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIEhhbmRsZSYpOyAvLyBXaWxs
IGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkuCkBAIC0xMjksNyArMTI5LDcgQEAgaW5s
aW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgUwogaW5saW5lIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10o
c2l6ZV90KSB7IHJldHVybiBtX2VtcHR5SGFuZGxlOyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0IHsgfQogaW5s
aW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29k
ZXImLCBIYW5kbGVBcnJheSYpIHsgcmV0dXJuIHRydWU7IH0KLWlubGluZSBSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KK2lubGluZSBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmKSB7IHJldHVybiBudWxscHRyOyB9CiBpbmxpbmUgYm9v
bCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSwgSGFu
ZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiwgVHlwZSwgSGFuZGxl
JikgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIEhhbmRsZSYpIHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIu
Y3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFdlYk1lbW9y
eVNhbXBsZXI6OnN0YXJ0KGNvbnN0IGRvdWJsCiAgICAgaW5pdGlhbGl6ZVRpbWVycyhpbnRlcnZh
bCk7CiB9CiAKLXZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RhcnQoY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBzYW1wbGVMb2dGaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHNhbXBsZUxv
Z0ZpbGVQYXRoLCBjb25zdCBkb3VibGUgaW50ZXJ2YWwpIAordm9pZCBXZWJNZW1vcnlTYW1wbGVy
OjpzdGFydChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW1wbGVMb2dGaWxlSGFuZGxlLCBj
b25zdCBTdHJpbmcmIHNhbXBsZUxvZ0ZpbGVQYXRoLCBjb25zdCBkb3VibGUgaW50ZXJ2YWwpCiB7
CiAgICAgaWYgKG1faXNSdW5uaW5nKSAKICAgICAgICAgcmV0dXJuOwpAQCAtODEsNyArODEsNyBA
QCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnN0YXJ0KGNvbnN0IFNhbmRiCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgICAgIAotICAgIGluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKHNhbXBs
ZUxvZ0ZpbGVIYW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoKTsKKyAgICBpbml0aWFsaXplU2FuZGJv
eGVkTG9nRmlsZShXVEZNb3ZlKHNhbXBsZUxvZ0ZpbGVIYW5kbGUpLCBzYW1wbGVMb2dGaWxlUGF0
aCk7CiAgICAgaW5pdGlhbGl6ZVRpbWVycyhpbnRlcnZhbCk7CiAgICAKIH0KQEAgLTEzMSw5ICsx
MzEsOSBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVUZW1wTG9nCiAgICAgd3Jp
dGVIZWFkZXJzKCk7CiB9CiAKLXZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRi
b3hlZExvZ0ZpbGUoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW1wbGVMb2dTYW5k
Ym94SGFuZGxlLCBjb25zdCBTdHJpbmcmIHNhbXBsZUxvZ0ZpbGVQYXRoKQordm9pZCBXZWJNZW1v
cnlTYW1wbGVyOjppbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiBzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBjb25zdCBTdHJpbmcmIHNhbXBsZUxvZ0Zp
bGVQYXRoKQogewotICAgIG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsKKyAgICBtX3NhbXBsZUxvZ1Nh
bmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW1wbGVM
b2dTYW5kYm94SGFuZGxlKSk7CiAgICAgaWYgKG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lvbikK
ICAgICAgICAgbV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAgICAgbV9z
YW1wbGVMb2dGaWxlUGF0aCA9IHNhbXBsZUxvZ0ZpbGVQYXRoOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIGNsYXNzIFdlYk1lbW9yeVNhbXBsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJN
ZW1vcnlTYW1wbGVyKiBzaW5nbGV0b24oKTsKICAgICB2b2lkIHN0YXJ0KGNvbnN0IGRvdWJsZSBp
bnRlcnZhbCA9IDApOwotICAgIHZvaWQgc3RhcnQoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgZG91YmxlIGludGVydmFsID0gMCk7CisgICAgdm9p
ZCBzdGFydChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
ZG91YmxlIGludGVydmFsID0gMCk7CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgYm9vbCBpc1J1bm5p
bmcoKSBjb25zdDsKICAgICAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB+V2ViTWVt
b3J5U2FtcGxlcigpOwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZVRlbXBMb2dGaWxlKCk7Ci0g
ICAgdm9pZCBpbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94ZWRM
b2dGaWxlKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHdyaXRlSGVhZGVycygpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVRpbWVycyhkb3VibGUpOwog
ICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHJldmlzaW9uIDIyNTgyNikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6ZGVjbwogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQorUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJiBoYW5kbGUp
CiB7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDEyICszMzUs
MTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogfQogCiAjaWYg
RU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBoYW5kbGVzKQordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXRocywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBoYW5kbGVzKQogewogICAg
IEFTU0VSVChwYXRocy5zaXplKCkgPT0gaGFuZGxlcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fYmxvYlRlbXBvcmFyeUZpbGVTYW5kYm94RXh0ZW5zaW9ucy5hZGQocGF0aHNbaV0sIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGVzW2ldKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
bV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zLmFkZChwYXRoc1tpXSwgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoaGFuZGxlc1tpXSkpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCShyZXZpc2lvbiAy
MjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiBvcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNpZiBFTkFCTEUoU0FOREJP
WF9FWFRFTlNJT05TKQotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkmKTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9icyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aHMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwog
ICAgIHZvaWQgZGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3QgcmVx
dWVzdElELCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICNlbmRpZgogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyOSwzMSArMTcyOSwyNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJUcmVlQ29tbWl0Q29tcGxlCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW50ZXJlZChEcmFnRGF0YSYgZHJhZ0Rh
dGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewotICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0eUFycmF5OwotICAgIHBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50ZXJlZCwgZHJh
Z0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXkpOworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50ZXJlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFt
ZSwgeyB9LCB7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ1VwZGF0ZWQoRHJhZ0Rh
dGEmIGRyYWdEYXRhLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSkKIHsKLSAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1wdHlBcnJheTsK
LSAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVw
ZGF0ZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0eUFycmF5KTsKKyAgICBwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0ZWQsIGRyYWdEYXRhLCBkcmFn
U3RvcmFnZU5hbWUsIHsgfSwgeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFeGl0
ZWQoRHJhZ0RhdGEmIGRyYWdEYXRhLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSkKIHsK
LSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1w
dHlBcnJheTsKLSAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb246OkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXkpOworICAgIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6RXhpdGVkLCBkcmFnRGF0
YSwgZHJhZ1N0b3JhZ2VOYW1lLCB7IH0sIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpw
ZXJmb3JtRHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJh
Z1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94
RXh0ZW5zaW9uc0ZvclVwbG9hZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJh
dGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogewot
ICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6UGVy
Zm9ybURyYWdPcGVyYXRpb24sIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKTsKKyAgICBwZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3BlcmF0
aW9uLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24gYWN0aW9uLCBEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5z
aW9uc0ZvclVwbG9hZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnRGF0YSYgZHJhZ0RhdGEsIGNv
bnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNh
bmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2
aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg1Miw3ICs4NTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmFn
RW50ZXJlZChXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1l
ID0gU3RyaW5nKCkpOwogICAgIHZvaWQgZHJhZ1VwZGF0ZWQoV2ViQ29yZTo6RHJhZ0RhdGEmLCBj
b25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9IFN0cmluZygpKTsKICAgICB2b2lkIGRyYWdF
eGl0ZWQoV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9
IFN0cmluZygpKTsKLSAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdE
YXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CisgICAg
dm9pZCBwZXJmb3JtRHJhZ09wZXJhdGlvbihXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBib29sIG1vdXNlSXNPdmVyRmlsZUlu
cHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBpbnNlcnRpb25SZWN0KTsKICAgICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKQEAgLTE2MDcsNyArMTYwNyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpOwogCi0gICAg
dm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIFdl
YkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5Jik7CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5h
bWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSYmKTsKIAogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSgp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MzYsNyArMzczNiw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGkKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKCpmaWxlTmFtZXMsIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZHJhZ0RhdGEtPnNldEZpbGVOYW1lcygqZmlsZU5hbWVzKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+cGVyZm9ybURyYWdPcGVyYXRpb24oKmRyYWdE
YXRhLCBwYXN0ZWJvYXJkTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVu
c2lvbkZvclVwbG9hZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnBlcmZvcm1E
cmFnT3BlcmF0aW9uKCpkcmFnRGF0YSwgcGFzdGVib2FyZE5hbWUsIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRyYWdEYXRhOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlIGZpbGVOYW1lczsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzc0OCw3
ICszNzQ4LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaQogICAg
IH0KICNlbmRpZgogCi0gICAgbV9wYWdlLT5wZXJmb3JtRHJhZ09wZXJhdGlvbigqZHJhZ0RhdGEs
IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgbV9wYWdlLT5wZXJmb3JtRHJh
Z09wZXJhdGlvbigqZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFt
ZSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9uRm9yVXBsb2FkKSk7CiAgICAgZGVsZXRlIGRyYWdEYXRhOwogCiAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAy
MjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOTUsMTAgKzExOTUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmhh
bmNlZEFjY2Vzc2liaWxpdAogICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2Vk
VXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxhZyk7CiB9CiAgICAgCi12b2lkIFdlYlByb2Nl
c3M6OnN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNh
bXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0
IGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRNZW1vcnlTYW1wbGVyKFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKIHsKICNpZiBFTkFC
TEUoTUVNT1JZX1NBTVBMRVIpICAgIAotICAgIFdlYk1lbW9yeVNhbXBsZXI6OnNpbmdsZXRvbigp
LT5zdGFydChzYW1wbGVMb2dGaWxlSGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwgaW50ZXJ2YWwp
OworICAgIFdlYk1lbW9yeVNhbXBsZXI6OnNpbmdsZXRvbigpLT5zdGFydChXVEZNb3ZlKHNhbXBs
ZUxvZ0ZpbGVIYW5kbGUpLCBzYW1wbGVMb2dGaWxlUGF0aCwgaW50ZXJ2YWwpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc2FtcGxlTG9nRmlsZUhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNh
bXBsZUxvZ0ZpbGVQYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4Miw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sKTsKICAgICAKLSAgICB2b2lkIHN0YXJ0
TWVtb3J5U2FtcGxlcihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBkb3VibGUpOworICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZv
aWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKICAgICAKICAgICB2b2lkIGdldFdlYkNvcmVTdGF0aXN0
aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZp
c2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMSArODgsMTEgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6
YXRpb25Vc2VyRGF0YSkKIHsKICAgICBhdXRvIGJ1bmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0
ZWRCdW5kbGUocGFyYW1ldGVycykpOwogCi0gICAgYnVuZGxlLT5tX3NhbmRib3hFeHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhF
eHRlbnNpb25IYW5kbGUpOworICAgIGJ1bmRsZS0+bV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhF
eHRlbnNpb25IYW5kbGUpKTsKICAgICBpZiAoIWJ1bmRsZS0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJz
LCBpbml0aWFsaXphdGlvblVzZXJEYXRhKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNyArNzQsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVu
ZGxlPiBjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2Jq
ZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKKyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVk
QnVuZGxlPiBjcmVhdGUoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0
KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKIAogICAgIH5JbmplY3RlZEJ1bmRsZSgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAy
MjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE0ICs2MCw3IEBA
IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW8KIHsKICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lkcy5zaXplKCkgPT0gbV9oYW5kbGVzLnNpemUo
KSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1faWRzLnNpemUo
KSk7Ci0gICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShtX2hh
bmRsZXNbaV0pIH07Ci19Ci0KLWNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPj4gTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXShzaXpl
X3QgaSkgY29uc3QKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lk
cy5zaXplKCkgPT0gbV9oYW5kbGVzLnNpemUoKSk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaSA8IG1faWRzLnNpemUoKSk7Ci0gICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShtX2hhbmRsZXNbaV0pIH07CisgICAgcmV0dXJuIHsgbV9p
ZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKG1faGFuZGxlc1tpXSkpIH07
CiB9CiAKIHNpemVfdCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpzaXplKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaAkocmV2aXNpb24gMjI1
ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBwdWJs
aWM6CiAgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcyk7CiAKICAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG9wZXJhdG9yW10oc2l6ZV90IGkp
OwotICAgIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4g
b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIAog
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsMTAgKzIwNywxMCBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgcmVxdWVzdC0+
c2V0RGV2aWNlSW5mbyhkZXZpY2VMaXN0LCBXVEZNb3ZlKG1lZGlhRGV2aWNlSWRlbnRpZmllckhh
c2hTYWx0KSwgaGFzUGVyc2lzdGVudEFjY2Vzcyk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
KGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmIGV4dGVuc2lvbnMpCit2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYgZXh0ZW5zaW9ucykK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgYXV0byYgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uc1tpXTsKKyAgICAgICAgY29uc3Qg
YXV0byYgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uc1tpXTsKICAgICAgICAgZXh0ZW5zaW9uLnNlY29u
ZC0+Y29uc3VtZSgpOwogICAgICAgICBtX3VzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmFkZChleHRlbnNpb24uZmlyc3QsIGV4dGVuc2lvbi5zZWNvbmQuY29weVJlZigpKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShy
ZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRp
b24oV2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odWludDY0X3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgZGV2aWNlTGlzdCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0LCBib29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpOwogCi0gICAgdm9p
ZCBncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMmKTsKKyAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYmKTsKICAgICB2b2lkIHJl
dm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAko
cmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsx
OTcsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzCiAgICAgICAg
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JU
eXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsK
ICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9u
c0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4
dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRl
bnNpb25zSGFuZGxlQXJyYXlbaV0pKQorICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3Vt
ZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAko
cmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcg
QEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0oSAogCiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgbV9wYWdlLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGhpc3Rv
cnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVtSUQpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpSZXBseShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Ci0g
ICAgbV9wYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmJlZ2luTG9hZChtX3BhZ2UtPm1h
aW5XZWJGcmFtZSgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3BhZ2UtPnNhbmRi
b3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+bWFpbldlYkZyYW1lKCksIFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogfQogCiBIaXN0b3J5SXRlbSogV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjI1
ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMDMsMTMgKzEyMDMsMTMgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bURpZFJlY2VpdmVMb2FkUGFyYQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6bG9hZFJlcXVl
c3QoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQordm9pZCBXZWJQYWdlOjps
b2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIFNlbmRT
dG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlv
bklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOwogCi0gICAgbV9zYW5kYm94RXh0ZW5z
aW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNh
bmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuYmVn
aW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hF
eHRlbnNpb25IYW5kbGUpKTsKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3
ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9t
IHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5l
ZWRlZCBzdGF0ZS4KQEAgLTEzMjgsMTQgKzEzMjgsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZXREZWZl
cnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnNM
b2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZl
bmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuZnJhbWVIYXNMb2FkZWQoKSB8fCAhbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsK
ICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRi
b3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQo
bV9tYWluRnJhbWUuZ2V0KCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAg
IGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKSwgT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj46OmZyb21SYXcocmVsb2FkT3B0aW9u
cykpOwogfQogCkBAIC0zMzE2LDcgKzMzMTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAjZWxzZQotdm9p
ZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCit2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlm
ICghbV9wYWdlKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBmYWxzZSwgMCwgeyB9
KSk7CkBAIC0zMzQyLDkgKzMzNDIsOSBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvCiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6UGVyZm9ybURyYWdPcGVy
YXRpb246IHsKICAgICAgICAgQVNTRVJUKCFtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbik7
CiAKLSAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIG1fcGVuZGluZ0Ry
b3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNh
bmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlm
IChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKQorICAgICAgICAgICAgaWYg
KFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCiAgICAgICAg
ICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVuZChleHRl
bnNpb24pOwogICAgICAgICB9CiAKQEAgLTM2MTMsOSArMzYxMyw5IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW0KICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci0+ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlE
LCBkZXZpY2VzLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3MpOwogfQogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi12b2lk
IFdlYlBhZ2U6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucykKK3ZvaWQgV2ViUGFnZTo6Z3Jh
bnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zJiYgZXh0ZW5zaW9ucykKIHsKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci0+Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhleHRlbnNpb25z
KTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci0+Z3JhbnRVc2VyTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhXVEZNb3ZlKGV4dGVuc2lvbnMpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQpAQCAtMzkzOSwxMSArMzkzOSwxMSBAQCB2b2lk
IFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjp3CiAgICAgc2V0UGVuZGluZ1Byb3Zp
c2lvbmFsU2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHBlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lv
bikpOwogfQogCi12b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpiZWdpbkxv
YWQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRs
ZSkKK3ZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmJlZ2luTG9hZChXZWJG
cmFtZSogZnJhbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZSkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGZyYW1lLCBmcmFtZS0+aXNNYWluRnJhbWUoKSk7CiAKLSAgICBzZXRQZW5k
aW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZSho
YW5kbGUpKTsKKyAgICBzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGhhbmRsZSkpKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6c2V0UGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4
dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBwZW5kaW5nUHJvdmlzaW9uYWxTYW5k
Ym94RXh0ZW5zaW9uKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTgsNyArNjU4LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgICAgIHZvaWQgYmVnaW5Mb2Fk
KFdlYkZyYW1lKiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpOworICAg
ICAgICB2b2lkIGJlZ2luTG9hZChXZWJGcmFtZSosIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+JiYgcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKTsKICAg
ICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSopOwogICAgICAgICB2
b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSopOwpAQCAtNzYzLDcgKzc2Myw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgIVBMQVRG
T1JNKEdUSykKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOworICAg
IHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKQEAgLTExMTEsMTIgKzExMTEsMTIgQEAgcHJpdmF0ZToKICAgICAvLyBBY3Rpb25z
CiAgICAgdm9pZCB0cnlDbG9zZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBh
cmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KGNv
bnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVy
cyYmKTsKICAgICB2b2lkIGxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9p
ZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6Oklu
dFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKLSAg
ICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlv
bnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVsb2FkKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29CYWNrKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWlu
dDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQ2NF90KTsKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0g
ICAgdm9pZCBncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IE1lZGlh
RGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmKTsKKyAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYmKTsKICAgICB2
b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+Jik7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329376</attachid>
            <date>2017-12-14 12:07:16 -0800</date>
            <delta_ts>2017-12-14 12:22:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180792-20171214120716.patch</filename>
            <type>text/plain</type>
            <size>57899</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE3LTEyLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vdmUgc2Vt
YW50aWNzIGZvciBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUGFzc2luZyB0aGVtIGFyb3VuZCBh
cyBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlzIHdyb25nIGJlY2F1c2Ugb3duZXJz
aGlwIGlzIHRyYW5zZmVycmVkIGFuZCB0aGV5IGFyZSBjb25zdW1lZC4KKyAgICAgICAgSXQgb25s
eSB3b3JrcyBub3cgYmVjYXVzZSB0aGVpciBjb250ZW50cyBhcmUgbXV0YWJsZSwgd2hpY2ggaXNu
J3QgYSBnb29kIHVzZSBvZiBtdXRhYmxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlcmVnaXN0
ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAg
ICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9icyk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0Vu
dGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdVcGRhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
dGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5Ojpnb1RvSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdyYW50VXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6YmVnaW5Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0TWVtb3J5U2FtcGxlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMTItMTMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY29weS9wYXN0ZSBlcnJvciBp
biBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw5ICszNzcsOSBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxlCiAgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKGV4dGVuc2lvbkhhbmRsZSk7CisgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkp
OwogCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJGaWxlQmxv
YlVSTCh0aGlzLCB1cmwsIHBhdGgsIFdURk1vdmUoZXh0ZW5zaW9uKSwgY29udGVudFR5cGUpOwog
fQpAQCAtMzk0LDEzICszOTQsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaQogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLnJlZ2lzdGVyQmxv
YlVSTCh0aGlzLCB1cmwsIHNyY1VSTCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJh
Y2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocywgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVC
YWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgIEFTU0VSVChmaWxlUGF0aHMuc2l6ZSgpID09IGhhbmRsZXMuc2l6ZSgpKTsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQotICAgICAg
ICBtX2Jsb2JEYXRhRmlsZVJlZmVyZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGVzW2ldKSkpOworICAgICAgICBtX2Jsb2JEYXRhRmls
ZVJlZmVyZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKGhhbmRsZXNbaV0pKSkpOwogI2Vsc2UKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZpbGVQYXRocy5zaXplKCk7ICsraSkKICAgICAgICAgbV9ibG9iRGF0YUZpbGVSZWZl
cmVuY2VzLmFkZChmaWxlUGF0aHNbaV0sIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZVBhdGhzW2ldLCBudWxscHRyKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwOCwxMCArMTA4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CiAgICAgdm9pZCBkZWxldGVDb29r
aWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwp
OwotICAgIHZvaWQgcHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxl
QmFja2VkQmxvYihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CisgICAgdm9pZCBwcmVyZWdpc3RlclNhbmRi
b3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVCYWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlQmFja2VkUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFj
a2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwogICAgIHZvaWQgYmxvYlNpemUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3QmIHJlc3VsdFNpemUpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyMjU4
MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICBtX3BlbmRp
bmdEb3dubG9hZCA9ICZwZW5kaW5nRG93bmxvYWQ7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3cml0ZSovKSB7IG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24gPSBmaWxlbmFtZTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93T3ZlcndyaXRlKi8pIHsgbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbiA9IGZpbGVuYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBwZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b247IH0KICAgICBib29sIGlzRG93bmxvYWQoKSBjb25zdCB7IHJldHVybiAhIW1fcGVuZGluZ0Rv
d25sb2FkSUQuZG93bmxvYWRJRCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjI1ODI1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDEyICs0MzksMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpjb25zdW1lRGF0YShjbwogICAgIHJlYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCiB7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihm
aWxlbmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIE5l
dHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZmlsZW5hbWUsIHsgfSwg
YWxsb3dPdmVyd3JpdGUpOwogCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAg
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2Fu
ZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOwogICAg
IE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgc3RhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3N0YXRlOyB9CiAKLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3
cml0ZSovKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNv
bnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVy
d3JpdGUqLykgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOCw5ICs1MTgsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3du
bG9hZChudWxscHRyLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZEZp
bGVuYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3Vt
ZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQo
c2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxv
YWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQpAQCAtNTk0LDEyICs1OTQsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZAogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxv
YWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGlu
YXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVy
d3JpdGUpCiB7CiAgICAgaWYgKGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgZG93bmxv
YWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CiAgICAgZWxzZQotICAgICAg
ICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxv
d092ZXJ3cml0ZSk7CisgICAgICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFsbG93T3ZlcndyaXRlKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tD
YWNoZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBkb3du
bG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZv
aWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZSh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGNhbkF1
dGhlbnRpY2F0ZSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjb250aW51ZURl
Y2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5h
dGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICB2b2lk
IHNldENhY2hlTW9kZWwodWludDMyX3QpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0
cmluZyYgaG9zdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjI1ODI2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29s
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlc1tpXSkpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5yZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lvbikpOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAs
NyArMjEwLDcgQEAgU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdQogICAg
IGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lLCBtX3Jlc3BvbnNlTUlNRVR5cGUpLCBNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6OlJlcGx5KGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAg
ICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCkBAIC0yMjIsMTAgKzIyMiwx
MCBAQCB2b2lkIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnCiAgICAgc2VuZChN
ZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWVBc3luYyhkb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKSk7CiB9CiAKLXZvaWQg
RG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgRG93bmxvYWQ6OmRpZERlY2lk
ZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCiB7CiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4
dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlm
Ci0gICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAg
IHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93
bmxvYWRJRDsgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIFN0
cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0
aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CisgICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3
cml0ZSk7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogICAgIHZvaWQg
cGxhdGZvcm1EaWRGaW5pc2goKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZAogI2VuZGlmCiB9CiAKLXZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9v
bCBhbGxvd092ZXJ3cml0ZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmICht
X2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5jb250YWlucyhkb3dubG9hZElEKSkgewpA
QCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBl
bmQKICAgICAgICAgQVNTRVJUKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgQVNTRVJUKG1f
cGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAKLSAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5zZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihkZXN0aW5hdGlvbiwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOwogICAgICAgICBpZiAobmV0d29ya0RhdGFU
YXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNhbmNlbGluZyB8fCBuZXR3
b3JrRGF0YVRhc2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q29tcGxldGVk
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDExICsxNDgsMTEgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZAogICAgIH0KICNlbHNlCiAgICAgaWYgKGF1dG8q
IHdhaXRpbmdEb3dubG9hZCA9IGRvd25sb2FkKGRvd25sb2FkSUQpKQotICAgICAgICB3YWl0aW5n
RG93bmxvYWQtPmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oZGVzdGluYXRpb24sIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICAgICAgd2FpdGluZ0Rvd25s
b2FkLT5kaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKIH0KIAotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1l
RG93bmxvYWQoUEFMCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CiAjZW5kaWYKIAotICAg
IGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRv
d25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3du
bG9hZCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjI1ODI1KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjZW5kaWYKICAgICB2b2lkIGNvbnZlcnROZXR3b3Jr
TG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYm
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24o
RG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKLSAgICB2
b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0JKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM1LDkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgRG93bmxvYWQ6
OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0J
KHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2lvcy9Eb3dubG9hZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQordm9pZCBEb3du
bG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDEyICs4MywxMiBAQCB2b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkV2l0
aEhhbmRsCiAgICAgW21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5P
XTsKIH0KIAotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2FkOjpyZXN1bWUoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAg
QVNTRVJUKCFtX25zVVJMRG93bmxvYWQpOwogICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CiAKLSAg
ICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3Nh
bmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENh
bmNlbCgpIG92ZXJyaWRlIHsgfQogICAgIE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgc3RhdGUoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29u
c3QgU3RyaW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCAvKmFsbG93
T3ZlcndyaXRlKi8pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oY29uc3QgU3RyaW5nJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGJvb2wgLyphbGxv
d092ZXJ3cml0ZSovKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjkxLDEyICsyOTEsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZv
cm1IVAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVy
d3JpdGUpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2Nh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0gICAg
TmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIE5ldHdvcmtEYXRhVGFz
azo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZmlsZW5hbWUsIHsgfSwgYWxsb3dPdmVyd3Jp
dGUpOwogCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2FuZGJveEV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lv
bikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OSArOTUsOSBAQCBTdHJpbmcgTmV0d29ya0RhdGFUYXNrU291cDo6c3VnZ2VzdGVkRmlsCiAgICAg
cmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3Jlc3BvbnNlLnVybCgpLmxhc3RQYXRo
Q29tcG9uZW50KCkpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNldFBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0
ZSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBOZXR3b3JrRGF0
YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5k
aW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSwgYWxsb3dPdmVyd3JpdGUpOwogICAgIG1fYWxsb3dPdmVyd3JpdGVEb3dubG9hZCA9IGFs
bG93T3ZlcndyaXRlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
dmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICBOZXR3b3JrRGF0YVRhc2s6OlN0YXRl
IHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJv
b2wgLyphbGxvd092ZXJ3cml0ZSovKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBi
b29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHRpbWVvdXRGaXJlZCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkocmV2aXNpb24gMjI1ODI2
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAgICAgCi0gICAg
c3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoY29uc3QgSGFuZGxlJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFuZGxlJiYpOwogICAg
IHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUsIEhhbmRs
ZSYpOwogICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxlJik7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgSGFuZGxlJik7
IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4KQEAgLTEyOSw3ICsxMjks
NyBAQCBpbmxpbmUgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTCiBpbmxpbmUgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3Bl
cmF0b3JbXShzaXplX3QpIHsgcmV0dXJuIG1fZW1wdHlIYW5kbGU7IH0KIGlubGluZSB2b2lkIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Qg
eyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIEhhbmRsZUFycmF5JikgeyByZXR1cm4gdHJ1ZTsgfQotaW5saW5lIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQoraW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlu
bGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBU
eXBlLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmLCBUeXBl
LCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgSGFuZGxl
JikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5
U2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5
U2FtcGxlci5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
V2ViTWVtb3J5U2FtcGxlcjo6c3RhcnQoY29uc3QgZG91YmwKICAgICBpbml0aWFsaXplVGltZXJz
KGludGVydmFsKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzdGFydChjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYg
c2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkgCit2b2lkIFdlYk1lbW9y
eVNhbXBsZXI6OnN0YXJ0KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbXBsZUxvZ0ZpbGVI
YW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRl
cnZhbCkKIHsKICAgICBpZiAobV9pc1J1bm5pbmcpIAogICAgICAgICByZXR1cm47CkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RhcnQoY29uc3QgU2FuZGIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgaW5pdGlhbGl6ZVNhbmRib3hlZExvZ0Zp
bGUoc2FtcGxlTG9nRmlsZUhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgpOworICAgIGluaXRpYWxp
emVTYW5kYm94ZWRMb2dGaWxlKFdURk1vdmUoc2FtcGxlTG9nRmlsZUhhbmRsZSksIHNhbXBsZUxv
Z0ZpbGVQYXRoKTsKICAgICBpbml0aWFsaXplVGltZXJzKGludGVydmFsKTsKICAgIAogfQpAQCAt
MTMxLDkgKzEzMSw5IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVRlbXBMb2cK
ICAgICB3cml0ZUhlYWRlcnMoKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjppbml0aWFs
aXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBs
ZUxvZ1NhbmRib3hIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgpCit2b2lk
IFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2Ft
cGxlTG9nRmlsZVBhdGgpCiB7Ci0gICAgbV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOworICAgIG1fc2Ft
cGxlTG9nU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3Zl
KHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpKTsKICAgICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0
ZW5zaW9uKQogICAgICAgICBtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsK
ICAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRoID0gc2FtcGxlTG9nRmlsZVBhdGg7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDcgKzczLDcgQEAgY2xhc3MgV2ViTWVtb3J5U2FtcGxlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYk1lbW9yeVNhbXBsZXIqIHNpbmdsZXRvbigpOwogICAgIHZvaWQgc3RhcnQoY29uc3Qg
ZG91YmxlIGludGVydmFsID0gMCk7Ci0gICAgdm9pZCBzdGFydChjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUgaW50ZXJ2YWwgPSAwKTsK
KyAgICB2b2lkIHN0YXJ0KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBkb3VibGUgaW50ZXJ2YWwgPSAwKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICBib29s
IGlzUnVubmluZygpIGNvbnN0OwogICAgIApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAg
IH5XZWJNZW1vcnlTYW1wbGVyKCk7CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplVGVtcExvZ0Zp
bGUoKTsKLSAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVNh
bmRib3hlZExvZ0ZpbGUoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgd3JpdGVIZWFkZXJzKCk7CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRv
dWJsZSk7CiAgICAgdm9pZCBzYW1wbGVUaW1lckZpcmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkocmV2aXNpb24gMjI1ODI2
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCitS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYm
IGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUs
MTIgKzMzNSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiB9
CiAKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6
Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
cywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCit2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIGhhbmRsZXMp
CiB7CiAgICAgQVNTRVJUKHBhdGhzLnNpemUoKSA9PSBoYW5kbGVzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zLmFkZChwYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGhhbmRsZXNbaV0pKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnMuYWRkKHBhdGhzW2ld
LCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShoYW5kbGVzW2ldKSkpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgJKHJl
dmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogI2lmIEVOQUJM
RShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2Jz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkmJik7CiAgICAgdm9pZCBkaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50
NjRfdCByZXF1ZXN0SUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzI5LDMxICsxNzI5
LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllclRyZWVDb21taXRDb21wbGUKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbnRlcmVkKERyYWdEYXRh
JiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUpCiB7Ci0gICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXk7Ci0g
ICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRl
cmVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1wdHlBcnJheSk7CisgICAgcGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVkLCBkcmFnRGF0YSwgZHJhZ1N0
b3JhZ2VOYW1lLCB7IH0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnVXBkYXRl
ZChEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewot
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0
eUFycmF5OwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbjo6VXBkYXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXkpOworICAgIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZCwgZHJhZ0Rh
dGEsIGRyYWdTdG9yYWdlTmFtZSwgeyB9LCB7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZHJhZ0V4aXRlZChEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VO
YW1lKQogewotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25I
YW5kbGVFbXB0eUFycmF5OwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbjo6RXhpdGVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1wdHlBcnJheSk7CisgICAg
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFeGl0ZWQs
IGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQordm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
cmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxv
YWQpCiB7Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbiwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpOworICAgIHBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6UGVyZm9ybURy
YWdPcGVyYXRpb24sIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRi
b3hFeHRlbnNpb25zRm9yVXBsb2FkKQordm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFn
RGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODUyLDcgKzg1Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRyYWdFbnRlcmVkKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3Rv
cmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9pZCBkcmFnVXBkYXRlZChXZWJDb3JlOjpEcmFn
RGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkpOwogICAgIHZv
aWQgZHJhZ0V4aXRlZChXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lID0gU3RyaW5nKCkpOwotICAgIHZvaWQgcGVyZm9ybURyYWdPcGVyYXRpb24oV2ViQ29y
ZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
KTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKIAogICAgIHZvaWQgZGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QpOwogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOwpAQCAtMTYwNyw3ICsxNjA3
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7
CiAKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJs
ZVN0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzczNiw3ICszNzM2LDcgQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoKmZpbGVO
YW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnRGF0YS0+c2V0RmlsZU5hbWVzKCpmaWxlTmFt
ZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5wZXJmb3JtRHJhZ09wZXJhdGlv
bigqZHJhZ0RhdGEsIHBhc3RlYm9hcmROYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5k
Ym94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+
cGVyZm9ybURyYWdPcGVyYXRpb24oKmRyYWdEYXRhLCBwYXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2Fk
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgZmlsZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICB9CkBA
IC0zNzQ4LDcgKzM3NDgsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlv
bihpCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3BhZ2UtPnBlcmZvcm1EcmFnT3BlcmF0aW9uKCpk
cmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICBtX3BhZ2UtPnBl
cmZvcm1EcmFnT3BlcmF0aW9uKCpkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVi
b2FyZC5uYW1lLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25Gb3JVcGxvYWQpKTsKICAgICBkZWxldGUgZHJhZ0RhdGE7CiAKICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFn
QW5kRHJvcEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkz
LDkgKzI5Myw3IEBAIGJvb2wgRHJhZ0FuZERyb3BIYW5kbGVyOjpkcm9wKEdka0RyYWdDb24KICAg
ICBpZiAoZ2RrX2RyYWdfY29udGV4dF9nZXRfc2VsZWN0ZWRfYWN0aW9uKGNvbnRleHQpID09IEdE
S19BQ1RJT05fQ09QWSkKICAgICAgICAgZmxhZ3MgfD0gV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9u
SXNDb3B5S2V5RG93bjsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShkcm9wcGluZ0NvbnRleHQtPnNl
bGVjdGlvbkRhdGEucHRyKCksIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBv
aW50KG1fcGFnZS52aWV3V2lkZ2V0KCksIHBvc2l0aW9uKSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25zKGNvbnRleHQpKSwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7Ci0gICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkOwotICAgIG1fcGFnZS5wZXJmb3JtRHJhZ09wZXJh
dGlvbihkcmFnRGF0YSwgU3RyaW5nKCksIGhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9h
ZCk7CisgICAgbV9wYWdlLnBlcmZvcm1EcmFnT3BlcmF0aW9uKGRyYWdEYXRhLCBTdHJpbmcoKSwg
eyB9LCB7IH0pOwogICAgIGd0a19kcmFnX2ZpbmlzaChjb250ZXh0LCBUUlVFLCBGQUxTRSwgdGlt
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTUsMTAgKzExOTUsMTAgQEAg
dm9pZCBXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdAogICAgIFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxhZyk7
CiB9CiAgICAgCi12b2lkIFdlYlByb2Nlc3M6OnN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYg
c2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgV2ViUHJvY2Vz
czo6c3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbXBsZUxv
Z0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJs
ZSBpbnRlcnZhbCkKIHsKICNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIpICAgIAotICAgIFdlYk1l
bW9yeVNhbXBsZXI6OnNpbmdsZXRvbigpLT5zdGFydChzYW1wbGVMb2dGaWxlSGFuZGxlLCBzYW1w
bGVMb2dGaWxlUGF0aCwgaW50ZXJ2YWwpOworICAgIFdlYk1lbW9yeVNhbXBsZXI6OnNpbmdsZXRv
bigpLT5zdGFydChXVEZNb3ZlKHNhbXBsZUxvZ0ZpbGVIYW5kbGUpLCBzYW1wbGVMb2dGaWxlUGF0
aCwgaW50ZXJ2YWwpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlTG9nRmlsZUhhbmRs
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUxvZ0ZpbGVQYXRoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4
Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29s
KTsKICAgICAKLSAgICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOworICAgIHZvaWQgc3Rh
cnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBkb3VibGUpOwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKICAgICAKICAg
ICB2b2lkIGdldFdlYkNvcmVTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OCwxMSArODgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLVJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9iamVj
dCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0
ZWRCdW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKICAgICBhdXRvIGJ1bmRs
ZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGUocGFyYW1ldGVycykpOwogCi0gICAgYnVu
ZGxlLT5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGFyYW1l
dGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIGJ1bmRsZS0+bV9z
YW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1l
dGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpKTsKICAgICBpZiAoIWJ1bmRs
ZS0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzLCBpbml0aWFsaXphdGlvblVzZXJEYXRhKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAyMjU4
MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGUgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGU+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKIAogICAg
IH5JbmplY3RlZEJ1bmRsZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE0ICs2MCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW8KIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lkcy5z
aXplKCkgPT0gbV9oYW5kbGVzLnNpemUoKSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaSA8IG1faWRzLnNpemUoKSk7Ci0gICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShtX2hhbmRsZXNbaV0pIH07Ci19Ci0KLWNvbnN0IHN0ZDo6cGFp
cjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9uczo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKLXsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihtX2lkcy5zaXplKCkgPT0gbV9oYW5kbGVzLnNpemUoKSk7Ci0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1faWRzLnNpemUoKSk7Ci0g
ICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShtX2hhbmRsZXNb
aV0pIH07CisgICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShX
VEZNb3ZlKG1faGFuZGxlc1tpXSkpIH07CiB9CiAKIHNpemVfdCBNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zOjpzaXplKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYg
aGFuZGxlcyk7CiAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4+IG9wZXJhdG9yW10oc2l6ZV90IGkpOwotICAgIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CiAgICAg
c2l6ZV90IHNpemUoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDcsMTAgKzIwNywxMCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6CiAgICAgcmVxdWVzdC0+c2V0RGV2aWNlSW5mbyhkZXZpY2VMaXN0LCBXVEZNb3Zl
KG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgaGFzUGVyc2lzdGVudEFjY2Vzcyk7CiB9
CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMmIGV4dGVuc2lvbnMpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zJiYgZXh0ZW5zaW9ucykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4
dGVuc2lvbnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgYXV0byYgZXh0ZW5zaW9uID0gZXh0ZW5z
aW9uc1tpXTsKKyAgICAgICAgY29uc3QgYXV0byYgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uc1tpXTsK
ICAgICAgICAgZXh0ZW5zaW9uLnNlY29uZC0+Y29uc3VtZSgpOwogICAgICAgICBtX3VzZXJNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmFkZChleHRlbnNpb24uZmlyc3QsIGV4dGVuc2lvbi5z
ZWNvbmQuY29weVJlZigpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2Fu
Y2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24oV2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRp
b25SZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24o
dWludDY0X3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgZGV2aWNlTGlz
dCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0LCBib29sIG9yaWdpbkhhc1BlcnNp
c3RlbnRBY2Nlc3MpOwogCi0gICAgdm9pZCBncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmKTsKKyAgICB2b2lkIGdy
YW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucyYmKTsKICAgICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UGF0aG5hbWVzCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRib3hFeHRl
bnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUoKSA9PSBz
YW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKQorICAgICAgICBp
ZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAg
ICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
Z29Ub0l0ZW0oSAogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7CiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZEdvVG9JdGVtKGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVtSUQp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpSZXBseShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgbV9wYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tl
cigpLmJlZ2luTG9hZChtX3BhZ2UtPm1haW5XZWJGcmFtZSgpLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1f
cGFnZS0+bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwog
fQogCiBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGlu
dCBpdGVtSW5kZXgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDMsMTMgKzEyMDMsMTMg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYQogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJh
bWV0ZXJzKQordm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwog
CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklE
OwogCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUu
Z2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIG1fc2Fu
ZGJveEV4dGVuc2lvblRyYWNrZXIuYmVnaW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKIAogICAgIC8vIExldCB0
aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBh
c3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhl
IGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KQEAgLTEzMjgsMTQgKzEzMjgsMTQg
QEAgdm9pZCBXZWJQYWdlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFnZS0+
c2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZWxv
YWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlv
bnMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7
CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBBU1NFUlQo
IW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVIYXNMb2FkZWQoKSB8fCAh
bV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZp
Z2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21h
aW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0
ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIFdURk1vdmUoc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJl
bG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgT3B0aW9uU2V0PFJlbG9hZE9wdGlv
bj46OmZyb21SYXcocmVsb2FkT3B0aW9ucykpOwogfQogCkBAIC0zMzE2LDcgKzMzMTYsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAjZWxzZQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0
YSYgZHJhZ0RhdGEsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hF
eHRlbnNpb25zSGFuZGxlQXJyYXkpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9u
c0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVy
YXRpb25Ob25lLCBmYWxzZSwgMCwgeyB9KSk7CkBAIC0zMzQyLDkgKzMzNDIsOSBAQCB2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgY2FzZSBEcmFnQ29udHJvbGxl
ckFjdGlvbjo6UGVyZm9ybURyYWdPcGVyYXRpb246IHsKICAgICAgICAgQVNTRVJUKCFtX3BlbmRp
bmdEcm9wU2FuZGJveEV4dGVuc2lvbik7CiAKLSAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXlbaV0pKQorICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hh
bmRsZUFycmF5W2ldKSkpCiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNG
b3JGaWxlVXBsb2FkLmFwcGVuZChleHRlbnNpb24pOwogICAgICAgICB9CiAKQEAgLTM2MTMsOSAr
MzYxMyw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW0KICAgICBt
X3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci0+ZGlkQ29tcGxldGVNZWRpYURldmlj
ZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBkZXZpY2VzLCBXVEZNb3ZlKGRldmljZUlkZW50aWZp
ZXJIYXNoU2FsdCksIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpOwogfQogI2lmIEVOQUJMRShT
QU5EQk9YX0VYVEVOU0lPTlMpCi12b2lkIFdlYlBhZ2U6OmdyYW50VXNlck1lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYgZXh0ZW5z
aW9ucykKK3ZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYgZXh0ZW5zaW9ucykKIHsKLSAgICBtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci0+Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci0+Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhXVEZNb3Zl
KGV4dGVuc2lvbnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQpAQCAt
MzkzOSwxMSArMzkzOSwxMSBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2Vy
Ojp3CiAgICAgc2V0UGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHBl
bmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OlNhbmRib3hF
eHRlbnNpb25UcmFja2VyOjpiZWdpbkxvYWQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lv
blRyYWNrZXI6OmJlZ2luTG9hZChXZWJGcmFtZSogZnJhbWUsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIGhhbmRsZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGZyYW1lLCBmcmFtZS0+aXNNYWlu
RnJhbWUoKSk7CiAKLSAgICBzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGUpKTsKKyAgICBzZXRQZW5kaW5nUHJvdmlzaW9u
YWxTYW5kYm94RXh0ZW5zaW9uKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGhhbmRs
ZSkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6c2V0UGVu
ZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4m
JiBwZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NTgsNyArNjU4LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpOwog
Ci0gICAgICAgIHZvaWQgYmVnaW5Mb2FkKFdlYkZyYW1lKiwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBoYW5kbGUpOworICAgICAgICB2b2lkIGJlZ2luTG9hZChXZWJGcmFtZSosIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWRE
cmFnRGVzdGluYXRpb25BY3Rpb24oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgcGVuZGluZ0Ry
b3BTYW5kYm94RXh0ZW5zaW9uKTsKICAgICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZChXZWJGcmFtZSopOwogICAgICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJG
cmFtZSopOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0Rh
dGEmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTExMTEsMTIgKzExMTEsMTIgQEAg
cHJpdmF0ZToKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwogICAgIHZvaWQg
cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsK
LSAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBs
b2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJz
Jik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVy
cyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3Qg
U3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50IHNjcmVlblBvaW50KTsKLSAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpOworICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVs
b2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgZ29Gb3J3
YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29CYWNrKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJk
SXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKQEAgLTEyNjAsNyArMTI2MCw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVOQUJM
RShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBncmFudFVzZXJNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmKTsKKyAgICB2
b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyYmKTsKICAgICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329381</attachid>
            <date>2017-12-14 12:22:31 -0800</date>
            <delta_ts>2017-12-14 14:04:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180792-20171214122230.patch</filename>
            <type>text/plain</type>
            <size>58985</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE3LTEyLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vdmUgc2Vt
YW50aWNzIGZvciBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUGFzc2luZyB0aGVtIGFyb3VuZCBh
cyBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlzIHdyb25nIGJlY2F1c2Ugb3duZXJz
aGlwIGlzIHRyYW5zZmVycmVkIGFuZCB0aGV5IGFyZSBjb25zdW1lZC4KKyAgICAgICAgSXQgb25s
eSB3b3JrcyBub3cgYmVjYXVzZSB0aGVpciBjb250ZW50cyBhcmUgbXV0YWJsZSwgd2hpY2ggaXNu
J3QgYSBnb29kIHVzZSBvZiBtdXRhYmxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlcmVnaXN0
ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAg
ICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9icyk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0Vu
dGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdVcGRhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
dGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5Ojpnb1RvSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdyYW50VXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6YmVnaW5Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0TWVtb3J5U2FtcGxlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMTItMTMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY29weS9wYXN0ZSBlcnJvciBp
biBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw5ICszNzcsOSBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxlCiAgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIHVybCwgY29va2llTmFtZSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKGV4dGVuc2lvbkhhbmRsZSk7CisgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkp
OwogCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJGaWxlQmxv
YlVSTCh0aGlzLCB1cmwsIHBhdGgsIFdURk1vdmUoZXh0ZW5zaW9uKSwgY29udGVudFR5cGUpOwog
fQpAQCAtMzk0LDEzICszOTQsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaQogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLnJlZ2lzdGVyQmxv
YlVSTCh0aGlzLCB1cmwsIHNyY1VSTCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJh
Y2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocywgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVC
YWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgIEFTU0VSVChmaWxlUGF0aHMuc2l6ZSgpID09IGhhbmRsZXMuc2l6ZSgpKTsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQotICAgICAg
ICBtX2Jsb2JEYXRhRmlsZVJlZmVyZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGVzW2ldKSkpOworICAgICAgICBtX2Jsb2JEYXRhRmls
ZVJlZmVyZW5jZXMuYWRkKGZpbGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKGhhbmRsZXNbaV0pKSkpOwogI2Vsc2UKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZpbGVQYXRocy5zaXplKCk7ICsraSkKICAgICAgICAgbV9ibG9iRGF0YUZpbGVSZWZl
cmVuY2VzLmFkZChmaWxlUGF0aHNbaV0sIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZVBhdGhzW2ldLCBudWxscHRyKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwOCwxMCArMTA4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CiAgICAgdm9pZCBkZWxldGVDb29r
aWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwp
OwotICAgIHZvaWQgcHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxl
QmFja2VkQmxvYihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CisgICAgdm9pZCBwcmVyZWdpc3RlclNhbmRi
b3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVCYWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlQmFja2VkUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFj
a2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwogICAgIHZvaWQgYmxvYlNpemUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3QmIHJlc3VsdFNpemUpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyMjU4
MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICBtX3BlbmRp
bmdEb3dubG9hZCA9ICZwZW5kaW5nRG93bmxvYWQ7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3cml0ZSovKSB7IG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24gPSBmaWxlbmFtZTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCAvKmFsbG93T3ZlcndyaXRlKi8pIHsgbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbiA9IGZpbGVuYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBwZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b247IH0KICAgICBib29sIGlzRG93bmxvYWQoKSBjb25zdCB7IHJldHVybiAhIW1fcGVuZGluZ0Rv
d25sb2FkSUQuZG93bmxvYWRJRCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjI1ODI1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDEyICs0MzksMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpjb25zdW1lRGF0YShjbwogICAgIHJlYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCiB7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihm
aWxlbmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIE5l
dHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZmlsZW5hbWUsIHsgfSwg
YWxsb3dPdmVyd3JpdGUpOwogCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAg
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2Fu
ZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOwogICAg
IE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgc3RhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3N0YXRlOyB9CiAKLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgLyphbGxvd092ZXJ3
cml0ZSovKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNv
bnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIC8qYWxsb3dPdmVy
d3JpdGUqLykgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOCw5ICs1MTgsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3du
bG9hZChudWxscHRyLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZEZp
bGVuYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3Vt
ZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQo
c2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxv
YWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQpAQCAtNTk0LDEyICs1OTQsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZAogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxv
YWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGlu
YXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVy
d3JpdGUpCiB7CiAgICAgaWYgKGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgZG93bmxv
YWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CiAgICAgZWxzZQotICAgICAg
ICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxv
d092ZXJ3cml0ZSk7CisgICAgICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFsbG93T3ZlcndyaXRlKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tD
YWNoZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBkb3du
bG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZv
aWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZSh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGNhbkF1
dGhlbnRpY2F0ZSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjb250aW51ZURl
Y2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5h
dGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICB2b2lk
IHNldENhY2hlTW9kZWwodWludDMyX3QpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0
cmluZyYgaG9zdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjI1ODI2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29s
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlc1tpXSkpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5yZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lvbikpOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAs
NyArMjEwLDcgQEAgU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdQogICAg
IGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lLCBtX3Jlc3BvbnNlTUlNRVR5cGUpLCBNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6OlJlcGx5KGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAg
ICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCkBAIC0yMjIsMTAgKzIyMiwx
MCBAQCB2b2lkIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnCiAgICAgc2VuZChN
ZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWVBc3luYyhkb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKSk7CiB9CiAKLXZvaWQg
RG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgRG93bmxvYWQ6OmRpZERlY2lk
ZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCiB7CiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4
dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlm
Ci0gICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAg
IHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93
bmxvYWRJRDsgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIFN0
cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0
aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CisgICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3
cml0ZSk7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogICAgIHZvaWQg
cGxhdGZvcm1EaWRGaW5pc2goKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZAogI2VuZGlmCiB9CiAKLXZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9v
bCBhbGxvd092ZXJ3cml0ZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmICht
X2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5jb250YWlucyhkb3dubG9hZElEKSkgewpA
QCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBl
bmQKICAgICAgICAgQVNTRVJUKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgQVNTRVJUKG1f
cGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAKLSAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5zZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihkZXN0aW5hdGlvbiwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOwogICAgICAgICBpZiAobmV0d29ya0RhdGFU
YXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNhbmNlbGluZyB8fCBuZXR3
b3JrRGF0YVRhc2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q29tcGxldGVk
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDExICsxNDgsMTEgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZAogICAgIH0KICNlbHNlCiAgICAgaWYgKGF1dG8q
IHdhaXRpbmdEb3dubG9hZCA9IGRvd25sb2FkKGRvd25sb2FkSUQpKQotICAgICAgICB3YWl0aW5n
RG93bmxvYWQtPmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oZGVzdGluYXRpb24sIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICAgICAgd2FpdGluZ0Rvd25s
b2FkLT5kaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKIH0KIAotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1l
RG93bmxvYWQoUEFMCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CiAjZW5kaWYKIAotICAg
IGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRv
d25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3du
bG9hZCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjI1ODI1KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjZW5kaWYKICAgICB2b2lkIGNvbnZlcnROZXR3b3Jr
TG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYm
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24o
RG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKLSAgICB2
b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0JKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM1LDkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgRG93bmxvYWQ6
OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0J
KHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2lvcy9Eb3dubG9hZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQordm9pZCBEb3du
bG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDEyICs4MywxMiBAQCB2b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkV2l0
aEhhbmRsCiAgICAgW21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5P
XTsKIH0KIAotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2FkOjpyZXN1bWUoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAg
QVNTRVJUKCFtX25zVVJMRG93bmxvYWQpOwogICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CiAKLSAg
ICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGlmIChtX3Nh
bmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENh
bmNlbCgpIG92ZXJyaWRlIHsgfQogICAgIE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgc3RhdGUoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29u
c3QgU3RyaW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCAvKmFsbG93
T3ZlcndyaXRlKi8pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oY29uc3QgU3RyaW5nJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGJvb2wgLyphbGxv
d092ZXJ3cml0ZSovKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjkxLDEyICsyOTEsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZv
cm1IVAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0UGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVy
d3JpdGUpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2Nh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0gICAg
TmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIE5ldHdvcmtEYXRhVGFz
azo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZmlsZW5hbWUsIHsgfSwgYWxsb3dPdmVyd3Jp
dGUpOwogCiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2FuZGJveEV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lv
bikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OSArOTUsOSBAQCBTdHJpbmcgTmV0d29ya0RhdGFUYXNrU291cDo6c3VnZ2VzdGVkRmlsCiAgICAg
cmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3Jlc3BvbnNlLnVybCgpLmxhc3RQYXRo
Q29tcG9uZW50KCkpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNldFBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0
ZSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBOZXR3b3JrRGF0
YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGZpbGVuYW1lLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5k
aW5nRG93bmxvYWRMb2NhdGlvbihmaWxlbmFtZSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSwgYWxsb3dPdmVyd3JpdGUpOwogICAgIG1fYWxsb3dPdmVyd3JpdGVEb3dubG9hZCA9IGFs
bG93T3ZlcndyaXRlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgJKHJldmlzaW9uIDIyNTgyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
dmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICBOZXR3b3JrRGF0YVRhc2s6OlN0YXRl
IHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJv
b2wgLyphbGxvd092ZXJ3cml0ZSovKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBi
b29sIC8qYWxsb3dPdmVyd3JpdGUqLykgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHRpbWVvdXRGaXJlZCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkocmV2aXNpb24gMjI1ODI2
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAgICAgCi0gICAg
c3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoY29uc3QgSGFuZGxlJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFuZGxlJiYpOwogICAg
IHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUsIEhhbmRs
ZSYpOwogICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxlJik7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgSGFuZGxlJik7
IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4KQEAgLTEyOSw3ICsxMjks
NyBAQCBpbmxpbmUgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTCiBpbmxpbmUgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3Bl
cmF0b3JbXShzaXplX3QpIHsgcmV0dXJuIG1fZW1wdHlIYW5kbGU7IH0KIGlubGluZSB2b2lkIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Qg
eyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIEhhbmRsZUFycmF5JikgeyByZXR1cm4gdHJ1ZTsgfQotaW5saW5lIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQoraW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlu
bGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBU
eXBlLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmLCBUeXBl
LCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgSGFuZGxl
JikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5
U2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5
U2FtcGxlci5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
V2ViTWVtb3J5U2FtcGxlcjo6c3RhcnQoY29uc3QgZG91YmwKICAgICBpbml0aWFsaXplVGltZXJz
KGludGVydmFsKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzdGFydChjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYg
c2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkgCit2b2lkIFdlYk1lbW9y
eVNhbXBsZXI6OnN0YXJ0KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbXBsZUxvZ0ZpbGVI
YW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRl
cnZhbCkKIHsKICAgICBpZiAobV9pc1J1bm5pbmcpIAogICAgICAgICByZXR1cm47CkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RhcnQoY29uc3QgU2FuZGIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgaW5pdGlhbGl6ZVNhbmRib3hlZExvZ0Zp
bGUoc2FtcGxlTG9nRmlsZUhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgpOworICAgIGluaXRpYWxp
emVTYW5kYm94ZWRMb2dGaWxlKFdURk1vdmUoc2FtcGxlTG9nRmlsZUhhbmRsZSksIHNhbXBsZUxv
Z0ZpbGVQYXRoKTsKICAgICBpbml0aWFsaXplVGltZXJzKGludGVydmFsKTsKICAgIAogfQpAQCAt
MTMxLDkgKzEzMSw5IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVRlbXBMb2cK
ICAgICB3cml0ZUhlYWRlcnMoKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjppbml0aWFs
aXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBs
ZUxvZ1NhbmRib3hIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgpCit2b2lk
IFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2Ft
cGxlTG9nRmlsZVBhdGgpCiB7Ci0gICAgbV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOworICAgIG1fc2Ft
cGxlTG9nU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3Zl
KHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpKTsKICAgICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0
ZW5zaW9uKQogICAgICAgICBtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsK
ICAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRoID0gc2FtcGxlTG9nRmlsZVBhdGg7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDcgKzczLDcgQEAgY2xhc3MgV2ViTWVtb3J5U2FtcGxlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYk1lbW9yeVNhbXBsZXIqIHNpbmdsZXRvbigpOwogICAgIHZvaWQgc3RhcnQoY29uc3Qg
ZG91YmxlIGludGVydmFsID0gMCk7Ci0gICAgdm9pZCBzdGFydChjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUgaW50ZXJ2YWwgPSAwKTsK
KyAgICB2b2lkIHN0YXJ0KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBkb3VibGUgaW50ZXJ2YWwgPSAwKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICBib29s
IGlzUnVubmluZygpIGNvbnN0OwogICAgIApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAg
IH5XZWJNZW1vcnlTYW1wbGVyKCk7CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplVGVtcExvZ0Zp
bGUoKTsKLSAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVNh
bmRib3hlZExvZ0ZpbGUoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgd3JpdGVIZWFkZXJzKCk7CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRv
dWJsZSk7CiAgICAgdm9pZCBzYW1wbGVUaW1lckZpcmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkocmV2aXNpb24gMjI1ODI2
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCitS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYm
IGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUs
MTIgKzMzNSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiB9
CiAKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6
Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
cywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCit2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIGhhbmRsZXMp
CiB7CiAgICAgQVNTRVJUKHBhdGhzLnNpemUoKSA9PSBoYW5kbGVzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zLmFkZChwYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGhhbmRsZXNbaV0pKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnMuYWRkKHBhdGhzW2ld
LCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShoYW5kbGVzW2ldKSkpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgJKHJl
dmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogI2lmIEVOQUJM
RShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2Jz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkmJik7CiAgICAgdm9pZCBkaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50
NjRfdCByZXF1ZXN0SUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzI5LDMxICsxNzI5
LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllclRyZWVDb21taXRDb21wbGUKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbnRlcmVkKERyYWdEYXRh
JiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUpCiB7Ci0gICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXk7Ci0g
ICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRl
cmVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1wdHlBcnJheSk7CisgICAgcGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVkLCBkcmFnRGF0YSwgZHJhZ1N0
b3JhZ2VOYW1lLCB7IH0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnVXBkYXRl
ZChEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewot
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0
eUFycmF5OwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbjo6VXBkYXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXkpOworICAgIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZCwgZHJhZ0Rh
dGEsIGRyYWdTdG9yYWdlTmFtZSwgeyB9LCB7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZHJhZ0V4aXRlZChEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VO
YW1lKQogewotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25I
YW5kbGVFbXB0eUFycmF5OwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbjo6RXhpdGVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlRW1wdHlBcnJheSk7CisgICAg
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFeGl0ZWQs
IGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQordm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
cmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxv
YWQpCiB7Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbiwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpOworICAgIHBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbjo6UGVyZm9ybURy
YWdPcGVyYXRpb24sIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRi
b3hFeHRlbnNpb25zRm9yVXBsb2FkKQordm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFn
RGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODUyLDcgKzg1Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRyYWdFbnRlcmVkKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3Rv
cmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9pZCBkcmFnVXBkYXRlZChXZWJDb3JlOjpEcmFn
RGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkpOwogICAgIHZv
aWQgZHJhZ0V4aXRlZChXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lID0gU3RyaW5nKCkpOwotICAgIHZvaWQgcGVyZm9ybURyYWdPcGVyYXRpb24oV2ViQ29y
ZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
KTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKIAogICAgIHZvaWQgZGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QpOwogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOwpAQCAtMTYwNyw3ICsxNjA3
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7
CiAKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJs
ZVN0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzczNiw3ICszNzM2LDcgQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoKmZpbGVO
YW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnRGF0YS0+c2V0RmlsZU5hbWVzKCpmaWxlTmFt
ZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5wZXJmb3JtRHJhZ09wZXJhdGlv
bigqZHJhZ0RhdGEsIHBhc3RlYm9hcmROYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5k
Ym94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+
cGVyZm9ybURyYWdPcGVyYXRpb24oKmRyYWdEYXRhLCBwYXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2Fk
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZHJhZ0RhdGE7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgZmlsZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICB9CkBA
IC0zNzQ4LDcgKzM3NDgsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlv
bihpCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3BhZ2UtPnBlcmZvcm1EcmFnT3BlcmF0aW9uKCpk
cmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICBtX3BhZ2UtPnBl
cmZvcm1EcmFnT3BlcmF0aW9uKCpkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVi
b2FyZC5uYW1lLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25Gb3JVcGxvYWQpKTsKICAgICBkZWxldGUgZHJhZ0RhdGE7CiAKICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFn
QW5kRHJvcEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkz
LDkgKzI5Myw3IEBAIGJvb2wgRHJhZ0FuZERyb3BIYW5kbGVyOjpkcm9wKEdka0RyYWdDb24KICAg
ICBpZiAoZ2RrX2RyYWdfY29udGV4dF9nZXRfc2VsZWN0ZWRfYWN0aW9uKGNvbnRleHQpID09IEdE
S19BQ1RJT05fQ09QWSkKICAgICAgICAgZmxhZ3MgfD0gV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9u
SXNDb3B5S2V5RG93bjsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShkcm9wcGluZ0NvbnRleHQtPnNl
bGVjdGlvbkRhdGEucHRyKCksIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBv
aW50KG1fcGFnZS52aWV3V2lkZ2V0KCksIHBvc2l0aW9uKSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25zKGNvbnRleHQpKSwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7Ci0gICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkOwotICAgIG1fcGFnZS5wZXJmb3JtRHJhZ09wZXJh
dGlvbihkcmFnRGF0YSwgU3RyaW5nKCksIGhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9h
ZCk7CisgICAgbV9wYWdlLnBlcmZvcm1EcmFnT3BlcmF0aW9uKGRyYWdEYXRhLCBTdHJpbmcoKSwg
eyB9LCB7IH0pOwogICAgIGd0a19kcmFnX2ZpbmlzaChjb250ZXh0LCBUUlVFLCBGQUxTRSwgdGlt
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIy
NTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3ODMsNyArNDc4Myw3IEBAIC0gKHZvaWQpZHJv
cEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CiAgICAgICAgIHJldGFpbmVk
U2VsZi0+X3BhZ2UtPmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoZmlsZW5hbWVzLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKLSAgICAg
ICAgcmV0YWluZWRTZWxmLT5fcGFnZS0+cGVyZm9ybURyYWdPcGVyYXRpb24oY2FwdHVyZWREcmFn
RGF0YSwgImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIsIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOworICAgICAgICByZXRhaW5lZFNlbGYtPl9w
YWdlLT5wZXJmb3JtRHJhZ09wZXJhdGlvbihjYXB0dXJlZERyYWdEYXRhLCAiZGF0YSBpbnRlcmFj
dGlvbiBwYXN0ZWJvYXJkIiwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKSk7CiAKICAgICAgICAgcmV0YWluZWRTZWxmLT5f
dmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QgPSBbcmV0YWluZWRTZWxmIHNuYXBzaG90Vmlld0Fm
dGVyU2NyZWVuVXBkYXRlczpOT107CiAgICAgICAgIFtyZXRhaW5lZFNlbGYgc2V0U3VwcHJlc3NB
c3Npc3RhbnRTZWxlY3Rpb25WaWV3OllFU107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTUsMTAgKzExOTUsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdAogICAgIFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxh
Zyk7CiB9CiAgICAgCi12b2lkIFdlYlByb2Nlc3M6OnN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgV2ViUHJv
Y2Vzczo6c3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbXBs
ZUxvZ0ZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc2FtcGxlTG9nRmlsZVBhdGgsIGNvbnN0IGRv
dWJsZSBpbnRlcnZhbCkKIHsKICNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIpICAgIAotICAgIFdl
Yk1lbW9yeVNhbXBsZXI6OnNpbmdsZXRvbigpLT5zdGFydChzYW1wbGVMb2dGaWxlSGFuZGxlLCBz
YW1wbGVMb2dGaWxlUGF0aCwgaW50ZXJ2YWwpOworICAgIFdlYk1lbW9yeVNhbXBsZXI6OnNpbmds
ZXRvbigpLT5zdGFydChXVEZNb3ZlKHNhbXBsZUxvZ0ZpbGVIYW5kbGUpLCBzYW1wbGVMb2dGaWxl
UGF0aCwgaW50ZXJ2YWwpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlTG9nRmlsZUhh
bmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUxvZ0ZpbGVQYXRoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcg
KzI4Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShi
b29sKTsKICAgICAKLSAgICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOworICAgIHZvaWQg
c3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKICAgICAK
ICAgICB2b2lkIGdldFdlYkNvcmVTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OCwxMSArODgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0
ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9i
amVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5q
ZWN0ZWRCdW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKICAgICBhdXRvIGJ1
bmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGUocGFyYW1ldGVycykpOwogCi0gICAg
YnVuZGxlLT5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGFy
YW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIGJ1bmRsZS0+
bV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFy
YW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpKTsKICAgICBpZiAoIWJ1
bmRsZS0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzLCBpbml0aWFsaXphdGlvblVzZXJEYXRhKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAy
MjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBzdHJ1Y3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGUgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGU+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKIAog
ICAgIH5JbmplY3RlZEJ1bmRsZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDE0ICs2MCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW8KIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lk
cy5zaXplKCkgPT0gbV9oYW5kbGVzLnNpemUoKSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaSA8IG1faWRzLnNpemUoKSk7Ci0gICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShtX2hhbmRsZXNbaV0pIH07Ci19Ci0KLWNvbnN0IHN0ZDo6
cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9uczo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKLXsKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lkcy5zaXplKCkgPT0gbV9oYW5kbGVzLnNpemUoKSk7
Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1faWRzLnNpemUoKSk7
Ci0gICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShtX2hhbmRs
ZXNbaV0pIH07CisgICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKG1faGFuZGxlc1tpXSkpIH07CiB9CiAKIHNpemVfdCBNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zOjpzaXplKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuaAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYgaGFuZGxlcyk7CiAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+IG9wZXJhdG9yW10oc2l6ZV90IGkpOwotICAgIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcs
IFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAJKHJldmlzaW9uIDIyNTgyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDcsMTAgKzIwNywxMCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6CiAgICAgcmVxdWVzdC0+c2V0RGV2aWNlSW5mbyhkZXZpY2VMaXN0LCBXVEZN
b3ZlKG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgaGFzUGVyc2lzdGVudEFjY2Vzcyk7
CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMmIGV4dGVuc2lvbnMpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zJiYgZXh0ZW5zaW9ucykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGV4dGVuc2lvbnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgYXV0byYgZXh0ZW5zaW9uID0gZXh0
ZW5zaW9uc1tpXTsKKyAgICAgICAgY29uc3QgYXV0byYgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uc1tp
XTsKICAgICAgICAgZXh0ZW5zaW9uLnNlY29uZC0+Y29uc3VtZSgpOwogICAgICAgICBtX3VzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmFkZChleHRlbnNpb24uZmlyc3QsIGV4dGVuc2lv
bi5zZWNvbmQuY29weVJlZigpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lvbiAyMjU4MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24oV2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51bWVy
YXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRp
b24odWludDY0X3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgZGV2aWNl
TGlzdCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0LCBib29sIG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3MpOwogCi0gICAgdm9pZCBncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmKTsKKyAgICB2b2lk
IGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucyYmKTsKICAgICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UGF0aG5hbWVzCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRib3hF
eHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUoKSA9
PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKQorICAgICAg
ICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAg
ICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eTo6Z29Ub0l0ZW0oSAogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRl
bnNpb25IYW5kbGU7CiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVt
SUQpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpSZXBseShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgbV9wYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJh
Y2tlcigpLmJlZ2luTG9hZChtX3BhZ2UtPm1haW5XZWJGcmFtZSgpLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2Fk
KG1fcGFnZS0+bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkp
OwogfQogCiBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4
KGludCBpdGVtSW5kZXgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjI1ODI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDMsMTMgKzEyMDMs
MTMgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYQogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0ZXJzKQordm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxv
YWRQYXJhbWV0ZXJzKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVy
OwogCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlv
bklEOwogCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJh
bWUuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIG1f
c2FuZGJveEV4dGVuc2lvblRyYWNrZXIuYmVnaW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKIAogICAgIC8vIExl
dCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQs
IHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwg
dGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KQEAgLTEzMjgsMTQgKzEzMjgs
MTQgQEAgdm9pZCBXZWJQYWdlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFn
ZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpy
ZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lk
IFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9w
dGlvbnMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
CiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBBU1NF
UlQoIW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVIYXNMb2FkZWQoKSB8
fCAhbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBu
YXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZCht
X21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94
RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIFdURk1vdmUoc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgp
LnJlbG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgT3B0aW9uU2V0PFJlbG9hZE9w
dGlvbj46OmZyb21SYXcocmVsb2FkT3B0aW9ucykpOwogfQogCkBAIC0zMzE2LDcgKzMzMTYsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAjZWxzZQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFn
RGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRi
b3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRy
YWdEYXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5z
aW9uc0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdP
cGVyYXRpb25Ob25lLCBmYWxzZSwgMCwgeyB9KSk7CkBAIC0zMzQyLDkgKzMzNDIsOSBAQCB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgY2FzZSBEcmFnQ29udHJv
bGxlckFjdGlvbjo6UGVyZm9ybURyYWdPcGVyYXRpb246IHsKICAgICAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbik7CiAKLSAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRi
b3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXlbaV0pKQorICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
c0hhbmRsZUFycmF5W2ldKSkpCiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lv
bnNGb3JGaWxlVXBsb2FkLmFwcGVuZChleHRlbnNpb24pOwogICAgICAgICB9CiAKQEAgLTM2MTMs
OSArMzYxMyw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW0KICAg
ICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci0+ZGlkQ29tcGxldGVNZWRpYURl
dmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBkZXZpY2VzLCBXVEZNb3ZlKGRldmljZUlkZW50
aWZpZXJIYXNoU2FsdCksIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpOwogfQogI2lmIEVOQUJM
RShTQU5EQk9YX0VYVEVOU0lPTlMpCi12b2lkIFdlYlBhZ2U6OmdyYW50VXNlck1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYgZXh0
ZW5zaW9ucykKK3ZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYgZXh0ZW5zaW9ucykKIHsKLSAgICBt
X3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci0+Z3JhbnRVc2VyTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci0+Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhXVEZN
b3ZlKGV4dGVuc2lvbnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQpA
QCAtMzkzOSwxMSArMzkzOSwxMSBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFj
a2VyOjp3CiAgICAgc2V0UGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbihXVEZNb3Zl
KHBlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OlNhbmRi
b3hFeHRlbnNpb25UcmFja2VyOjpiZWdpbkxvYWQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVu
c2lvblRyYWNrZXI6OmJlZ2luTG9hZChXZWJGcmFtZSogZnJhbWUsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmIGhhbmRsZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGZyYW1lLCBmcmFtZS0+aXNN
YWluRnJhbWUoKSk7CiAKLSAgICBzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9u
KFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGUpKTsKKyAgICBzZXRQZW5kaW5nUHJvdmlz
aW9uYWxTYW5kYm94RXh0ZW5zaW9uKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGhh
bmRsZSkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6c2V0
UGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiBwZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjI1ODI1KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NTgsNyArNjU4LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwogCi0gICAgICAgIHZvaWQgYmVnaW5Mb2FkKFdlYkZyYW1lKiwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBoYW5kbGUpOworICAgICAgICB2b2lkIGJlZ2luTG9hZChXZWJGcmFtZSos
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUxv
YWREcmFnRGVzdGluYXRpb25BY3Rpb24oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgcGVuZGlu
Z0Ryb3BTYW5kYm94RXh0ZW5zaW9uKTsKICAgICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChXZWJGcmFtZSopOwogICAgICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChX
ZWJGcmFtZSopOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJh
Z0RhdGEmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTExMTEsMTIgKzExMTEsMTIg
QEAgcHJpdmF0ZToKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwogICAgIHZv
aWQgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMm
KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9p
ZCBsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhKGNvbnN0
IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0
ZXJzJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1l
dGVycyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29u
c3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6
OkludFBvaW50IHNjcmVlblBvaW50KTsKLSAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOworICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qg
cmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgZ29G
b3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29CYWNr
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3
YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKQEAgLTEyNjAsNyArMTI2
MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEVO
QUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBncmFudFVzZXJNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmKTsKKyAg
ICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucyYmKTsKICAgICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="348478"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>