<?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>196167</bug_id>
          
          <creation_ts>2019-03-22 16:47:26 -0700</creation_ts>
          <short_desc>[WebKit2] Rename API::WebsitePolicies to API::WebpagePreferences</short_desc>
          <delta_ts>2019-03-29 15:27:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1520531</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-22 16:47:26 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520536</commentid>
    <comment_count>1</comment_count>
      <attachid>365779</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-22 17:00:34 -0700</bug_when>
    <thetext>Created attachment 365779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521454</commentid>
    <comment_count>2</comment_count>
      <attachid>366002</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-26 14:48:13 -0700</bug_when>
    <thetext>Created attachment 366002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522591</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-29 14:21:49 -0700</bug_when>
    <thetext>On second thought, maybe not :|</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365779</attachid>
            <date>2019-03-22 17:00:34 -0700</date>
            <delta_ts>2019-03-26 14:47:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196167-20190322170033.patch</filename>
            <type>text/plain</type>
            <size>133083</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkYjQwMzY0MzJjNzg0MWJl
N2ExZGMyYzIyMTA1Zjk1YzdiZDI0ODkuLjZiZjM0ZDE4OTA3NjAxYTYwNDU4ZmVmNDU4NjBiNjU2
OTRkM2QzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDE5LTAzLTIyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBSZW5h
bWUgQVBJOjpXZWJzaXRlUG9saWNpZXMgdG8gQVBJOjpXZWJzaXRlQmVoYXZpb3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYxNjcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MjI4MjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgV2Vic2l0ZVBvbGljaWVzIHRvIFdlYnNpdGVCZWhh
dmlvcnMsIGFuZCBXZWJzaXRlUG9saWNpZXNEYXRhIHRvIFdlYnNpdGVCZWhhdmlvcnNEYXRhLiBU
aGlzIG1hdGNoZXMKKyAgICAgICAgV0tXZWJzaXRlQmVoYXZpb3JzLCB3aGljaCBpcyB0aGUgbmV3
IEFQSSB2ZXJzaW9uIG9mIF9XS1dlYnNpdGVQb2xpY2llcy4gTm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6Cisg
ICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJzaXRlQmVoYXZpb3JzRGF0YS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcC4KKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZUJlaGF2aW9yc0RhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVCZWhhdmlvcnNEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlQmVo
YXZpb3JzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZUJlaGF2aW9yc0RhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVQb2xpY2llc0RhdGEuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVCZWhhdmlvcnMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAuCisgICAgICAgIChBUEk6OldlYnNp
dGVCZWhhdmlvcnM6OldlYnNpdGVCZWhhdmlvcnMpOgorICAgICAgICAoQVBJOjpXZWJzaXRlQmVo
YXZpb3JzOjp+V2Vic2l0ZUJlaGF2aW9ycyk6CisgICAgICAgIChBUEk6OldlYnNpdGVCZWhhdmlv
cnM6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpXZWJzaXRlQmVoYXZpb3Jz
OjpkYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVCZWhhdmlvcnMuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNp
ZXMuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgICh1c2VX
aXRoUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlVXBkYXRlV2Vic2l0ZVBvbGljaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNH
ZXRUeXBlSUQpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3VwZGF0ZVdlYnNpdGVQb2xpY2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZUJlaGF2aW9ycy5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlQmVoYXZpb3JzIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlQmVoYXZpb3JzIGluaXRdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlQmVoYXZpb3JzIHNldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ6XSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZUJlaGF2aW9ycyBjb250ZW50QmxvY2tlcnNFbmFibGVkXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZUJlaGF2aW9ycyBzZXRBbGxvd2VkQXV0b3BsYXlRdWlya3M6XSk6Cisg
ICAgICAgICgtW1dLV2Vic2l0ZUJlaGF2aW9ycyBhbGxvd2VkQXV0b3BsYXlRdWlya3NdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlQmVoYXZpb3JzIHNldEF1dG9wbGF5UG9saWN5Ol0pOgorICAgICAg
ICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgYXV0b3BsYXlQb2xpY3ldKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlQmVoYXZpb3JzIHNldERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NQb2xpY3ldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlQmVoYXZpb3JzIHNldFBv
cFVwUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgcG9wVXBQb2xpY3ld
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlQmVoYXZpb3JzIGN1c3RvbUhlYWRlckZpZWxkc10pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgc2V0Q3VzdG9tSGVhZGVyRmllbGRzOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgd2Vic2l0ZURhdGFTdG9yZV0pOgorICAgICAg
ICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgc2V0V2Vic2l0ZURhdGFTdG9yZTpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlQmVoYXZpb3JzIHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlQmVoYXZpb3JzIGN1c3RvbVVzZXJBZ2VudF0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVCZWhhdmlvcnMgc2V0Q3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVCZWhhdmlvcnMgY3VzdG9tSmF2YVNjcmlwdFVz
ZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZUJlaGF2
aW9ycyBzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRl
QmVoYXZpb3JzIGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZUJlaGF2aW9ycyBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVCZWhhdmlvcnNJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlz
aW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk6OnVzZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlV2Vic2l0ZUJlaGF2aW9ycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGFJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXZWJzaXRlQmVoYXZpb3Jz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXZWJzaXRlUG9saWNpZXMpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMDMtMjIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdIEludHJv
ZHVjZSBhIHB1YmxpYyB2ZXJzaW9uIG9mIFdLV2Vic2l0ZVBvbGljaWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggMWNhMWIyOWI3ZWFkMTIzZjgzMjAzYjE3YzMwMGNjMmVj
YTY4ZDhhMy4uNzliYzEyNzQ0ZDY3ZTMzZTEwYjY4NTE2YWMyMjA4MzgxMjViOGMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTYxLDEwICsxNjEsMTAgQEAgcHVibGlj
OgogICAgICAgICBWaWV3cG9ydEF0dHJpYnV0ZXMsCiAgICAgICAgIFZpc2l0ZWRMaW5rU3RvcmUs
CiAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAorICAgICAgICBXZWJz
aXRlQmVoYXZpb3JzLAogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCwKICAgICAgICAgV2Vic2l0
ZURhdGFTdG9yZSwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24sCi0gICAg
ICAgIFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgV2luZG93RmVhdHVyZXMsCiAKICNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpp
bmRleCA3NWM2ODUyYTBmNmUwZjcyNDk4ODk0MzI0NmVlZmViNmYxYTBlMGY0Li4yMzZiMGEwMjY1
YWY2M2I1YzNkNDczNmY5YmI1Mzg3YjUzN2ZkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tCkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmpl
Y3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBUeXBlOjpXZWJzaXRlUG9saWNpZXM6CisgICAgY2FzZSBUeXBlOjpXZWJzaXRlQmVoYXZpb3Jz
OgogICAgICAgICB3cmFwcGVyID0gW1dLV2Vic2l0ZUJlaGF2aW9ycyBhbGxvY107CiAgICAgICAg
IGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMDg4
MWI5MGJlYWUzYmM1N2YwMmEzMjkyNWIyYmIwMjcxOTRkMmZmNS4uMWQ2NzdiY2YyZjhmOWQ5ZmZj
NzBjYWIwODkxMTdkNDllODI1YTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYmFzZVVSTFN0cmluZzsK
ICAgICBlbmNvZGVyIDw8IHVucmVhY2hhYmxlVVJMU3RyaW5nOwogICAgIGVuY29kZXIgPDwgcHJv
dmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7Ci0gICAgZW5jb2RlciA8PCB3ZWJzaXRlUG9saWNp
ZXM7CisgICAgZW5jb2RlciA8PCB3ZWJzaXRlQmVoYXZpb3JzOwogICAgIGVuY29kZXIgPDwgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKICAgICBlbmNvZGVyIDw8IHNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDsKICAgICBlbmNvZGVyIDw8IHVzZXJEYXRhOwpAQCAtMTA2LDExICsxMDYs
MTEgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
TG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnByb3Zp
c2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4+IHdlYnNpdGVQb2xpY2llczsK
LSAgICBkZWNvZGVyID4+IHdlYnNpdGVQb2xpY2llczsKLSAgICBpZiAoIXdlYnNpdGVQb2xpY2ll
cykKKyAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4+IHdlYnNpdGVC
ZWhhdmlvcnM7CisgICAgZGVjb2RlciA+PiB3ZWJzaXRlQmVoYXZpb3JzOworICAgIGlmICghd2Vi
c2l0ZUJlaGF2aW9ycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRhdGEud2Vic2l0ZVBv
bGljaWVzID0gV1RGTW92ZSgqd2Vic2l0ZVBvbGljaWVzKTsKKyAgICBkYXRhLndlYnNpdGVCZWhh
dmlvcnMgPSBXVEZNb3ZlKCp3ZWJzaXRlQmVoYXZpb3JzKTsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggMTA4YjE5MTQz
NTU3Y2Y1ZjNjNzlkYzI1YTI2MDlkYzM5MjA0ZWQyYy4uZjI5NDI5YmYzNDAyZDU0MmRlNDVmMzFj
Y2Q3NjRiOTEwOTQ2NThmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgotI2luY2x1ZGUgIldlYnNp
dGVQb2xpY2llc0RhdGEuaCIKKyNpbmNsdWRlICJXZWJzaXRlQmVoYXZpb3JzRGF0YS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJz
IHsKICAgICBTdHJpbmcgdW5yZWFjaGFibGVVUkxTdHJpbmc7CiAgICAgU3RyaW5nIHByb3Zpc2lv
bmFsTG9hZEVycm9yVVJMU3RyaW5nOwogCi0gICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4gd2Vic2l0ZVBvbGljaWVzOworICAgIE9wdGlvbmFsPFdlYnNpdGVCZWhhdmlvcnNEYXRhPiB3
ZWJzaXRlQmVoYXZpb3JzOwogCiAgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTsKICAgICBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlQmVoYXZpb3JzRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlQmVoYXZpb3JzRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTZkM2UzZDRjM2QxMGIwNDQzYzliZjM3OWRlMjViYTJmMzk4MDVkNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVCZWhhdmlvcnNEYXRhLmNwcApAQCAt
MCwwICsxLDE4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVCZWhhdmlvcnNEYXRhLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJzaXRlQmVoYXZpb3JzRGF0
YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBhdXRvcGxheVBvbGljeTsK
KyAgICBlbmNvZGVyIDw8IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Cisg
ICAgZW5jb2RlciA8PCBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CisgICAgZW5jb2RlciA8PCBjdXN0
b21IZWFkZXJGaWVsZHM7CisgICAgZW5jb2RlciA8PCBwb3BVcFBvbGljeTsKKyAgICBlbmNvZGVy
IDw8IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworICAgIGVuY29kZXIgPDwgY3VzdG9tVXNl
ckFnZW50OworICAgIGVuY29kZXIgPDwgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNw
ZWNpZmljUXVpcmtzOworICAgIGVuY29kZXIgPDwgY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07Cit9
CisKK09wdGlvbmFsPFdlYnNpdGVCZWhhdmlvcnNEYXRhPiBXZWJzaXRlQmVoYXZpb3JzRGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxib29sPiBjb250
ZW50QmxvY2tlcnNFbmFibGVkOworICAgIGRlY29kZXIgPj4gY29udGVudEJsb2NrZXJzRW5hYmxl
ZDsKKyAgICBpZiAoIWNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiBhdXRv
cGxheVBvbGljeTsKKyAgICBkZWNvZGVyID4+IGF1dG9wbGF5UG9saWN5OworICAgIGlmICghYXV0
b3BsYXlQb2xpY3kpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxPcHRpb25hbDxib29sPj4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZTsK
KyAgICBkZWNvZGVyID4+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Cisg
ICAgaWYgKCFkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPE9wdGlvblNldDxXZWJzaXRl
QXV0b3BsYXlRdWlyaz4+IGFsbG93ZWRBdXRvcGxheVF1aXJrczsKKyAgICBkZWNvZGVyID4+IGFs
bG93ZWRBdXRvcGxheVF1aXJrczsKKyAgICBpZiAoIWFsbG93ZWRBdXRvcGxheVF1aXJrcykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6SFRUUEhlYWRlckZpZWxkPj4gY3VzdG9tSGVhZGVyRmllbGRzOworICAgIGRlY29kZXIg
Pj4gY3VzdG9tSGVhZGVyRmllbGRzOworICAgIGlmICghY3VzdG9tSGVhZGVyRmllbGRzKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8V2Vic2l0ZVBvcFVwUG9s
aWN5PiBwb3BVcFBvbGljeTsKKyAgICBkZWNvZGVyID4+IHBvcFVwUG9saWN5OworICAgIGlmICgh
cG9wVXBQb2xpY3kpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4+IHdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOworICAgIGRlY29kZXIgPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7Cisg
ICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50OworICAgIGRl
Y29kZXIgPj4gY3VzdG9tVXNlckFnZW50OworICAgIGlmICghY3VzdG9tVXNlckFnZW50KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21K
YXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CisgICAgZGVjb2RlciA+PiBj
dXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CisgICAgaWYgKCFj
dXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbU5hdmlnYXRv
clBsYXRmb3JtOworICAgIGRlY29kZXIgPj4gY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CisgICAg
aWYgKCFjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAKKyAgICByZXR1cm4geyB7CisgICAgICAgIFdURk1vdmUoKmNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpLAorICAgICAgICBXVEZNb3ZlKCphbGxvd2VkQXV0b3BsYXlRdWlya3MpLAorICAg
ICAgICBXVEZNb3ZlKCphdXRvcGxheVBvbGljeSksCisgICAgICAgIFdURk1vdmUoKmRldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUpLAorICAgICAgICBXVEZNb3ZlKCpjdXN0b21I
ZWFkZXJGaWVsZHMpLAorICAgICAgICBXVEZNb3ZlKCpwb3BVcFBvbGljeSksCisgICAgICAgIFdU
Rk1vdmUoKndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKSwKKyAgICAgICAgV1RGTW92ZSgqY3Vz
dG9tVXNlckFnZW50KSwKKyAgICAgICAgV1RGTW92ZSgqY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2Vu
dEFzU2l0ZVNwZWNpZmljUXVpcmtzKSwKKyAgICAgICAgV1RGTW92ZSgqY3VzdG9tTmF2aWdhdG9y
UGxhdGZvcm0pLAorICAgIH0gfTsKK30KKwordm9pZCBXZWJzaXRlQmVoYXZpb3JzRGF0YTo6YXBw
bHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVCZWhhdmlvcnNEYXRhJiYgd2Vic2l0ZUJlaGF2aW9y
cywgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQoreworICAgIGRvY3Vt
ZW50TG9hZGVyLnNldEN1c3RvbUhlYWRlckZpZWxkcyhXVEZNb3ZlKHdlYnNpdGVCZWhhdmlvcnMu
Y3VzdG9tSGVhZGVyRmllbGRzKSk7CisgICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3VzdG9tVXNlckFn
ZW50KHdlYnNpdGVCZWhhdmlvcnMuY3VzdG9tVXNlckFnZW50KTsKKyAgICBkb2N1bWVudExvYWRl
ci5zZXRDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3Mod2Vic2l0
ZUJlaGF2aW9ycy5jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3Mp
OworICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKHdlYnNpdGVC
ZWhhdmlvcnMuY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0pOworICAgIGRvY3VtZW50TG9hZGVyLnNl
dERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUod2Vic2l0ZUJlaGF2aW9ycy5k
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKTsKKyAgICAKKyAgICAvLyBPbmx5
IHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVl
biBkaXNhYmxlZCBieSByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorICAgIGlm
IChkb2N1bWVudExvYWRlci51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkpCisgICAgICAg
IGRvY3VtZW50TG9hZGVyLnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQod2Vic2l0ZUJl
aGF2aW9ycy5jb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKworICAgIE9wdGlvblNldDxXZWJDb3Jl
OjpBdXRvcGxheVF1aXJrPiBxdWlya3M7CisgICAgY29uc3QgYXV0byYgYWxsb3dlZFF1aXJrcyA9
IHdlYnNpdGVCZWhhdmlvcnMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzOworICAgIAorICAgIGlmIChh
bGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2Vy
R2VzdHVyZXMpKQorICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6Oklu
aGVyaXRlZFVzZXJHZXN0dXJlcyk7CisgICAgCisgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFp
bnMoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpKQorICAgICAg
ICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVu
dHMpOworICAgIAorICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxh
eVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpKQorICAgICAgICBxdWlya3MuYWRkKFdlYkNv
cmU6OkF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7CisKKyAgICBpZiAoYWxs
b3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6UGVyRG9jdW1lbnRBdXRv
cGxheUJlaGF2aW9yKSkKKyAgICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJr
OjpQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3IpOworCisgICAgZG9jdW1lbnRMb2FkZXIuc2V0
QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CisKKyAgICBzd2l0Y2ggKHdlYnNpdGVCZWhh
dmlvcnMuYXV0b3BsYXlQb2xpY3kpIHsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6
RGVmYXVsdDoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xpY3koV2ViQ29y
ZTo6QXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLnNldEF1
dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDoK
KyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xpY3koV2ViQ29yZTo6QXV0b3Bs
YXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLnNldEF1
dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpEZW55KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgc3dpdGNoICh3ZWJzaXRlQmVoYXZpb3JzLnBvcFVwUG9saWN5KSB7
CisgICAgY2FzZSBXZWJzaXRlUG9wVXBQb2xpY3k6OkRlZmF1bHQ6CisgICAgICAgIGRvY3VtZW50
TG9hZGVyLnNldFBvcFVwUG9saWN5KFdlYkNvcmU6OlBvcFVwUG9saWN5OjpEZWZhdWx0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJzaXRlUG9wVXBQb2xpY3k6OkFsbG93OgorICAgICAg
ICBkb2N1bWVudExvYWRlci5zZXRQb3BVcFBvbGljeShXZWJDb3JlOjpQb3BVcFBvbGljeTo6QWxs
b3cpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYnNpdGVQb3BVcFBvbGljeTo6QmxvY2s6
CisgICAgICAgIGRvY3VtZW50TG9hZGVyLnNldFBvcFVwUG9saWN5KFdlYkNvcmU6OlBvcFVwUG9s
aWN5OjpCbG9jayk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICh3ZWJzaXRlQmVo
YXZpb3JzLndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKSB7CisgICAgICAgIGlmIChhdXRvKiBm
cmFtZSA9IGRvY3VtZW50TG9hZGVyLmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uSUQo
d2Vic2l0ZUJlaGF2aW9ycy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy0+bmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNlc3Npb25JRCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZUJlaGF2aW9yc0RhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVCZWhhdmlvcnNEYXRhLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE0
NDdjMDhiYzgzOTQzYmExMjI2NWFhMmU5NDBlNjRmMzIyNzhkMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVCZWhhdmlvcnNEYXRhLmgKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJzaXRl
QXV0b3BsYXlQb2xpY3kuaCIKKyNpbmNsdWRlICJXZWJzaXRlQXV0b3BsYXlRdWlyay5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBv
cFVwUG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyRmllbGQuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsK
K2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3VtZW50
TG9hZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYnNpdGVCZWhhdmlv
cnNEYXRhIHsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZUJl
aGF2aW9yc0RhdGEmJiwgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKTsKKworICAgIGJvb2wgY29u
dGVudEJsb2NrZXJzRW5hYmxlZCB7IHRydWUgfTsKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZUF1dG9w
bGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrczsKKyAgICBXZWJzaXRlQXV0b3BsYXlQb2xp
Y3kgYXV0b3BsYXlQb2xpY3kgeyBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQgfTsKKyAg
ICBPcHRpb25hbDxib29sPiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IGN1c3RvbUhlYWRlckZpZWxkczsK
KyAgICBXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3kgeyBXZWJzaXRlUG9wVXBQb2xpY3k6
OkRlZmF1bHQgfTsKKyAgICBPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gd2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CisgICAgU3RyaW5nIGN1c3RvbVVzZXJBZ2VudDsKKyAg
ICBTdHJpbmcgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwor
ICAgIFN0cmluZyBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKKworICAgIHZvaWQgZW5jb2RlKElQ
Qzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3Jz
RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODg1Mjg5OTdiZDAwYjk1ZjVlOWZjNjE4OTQxMTZlMGMw
MTM3MTU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExv
YWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQ7Ci0gICAgZW5jb2RlciA8PCBhdXRvcGxheVBvbGljeTsKLSAg
ICBlbmNvZGVyIDw8IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Ci0gICAg
ZW5jb2RlciA8PCBhbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0gICAgZW5jb2RlciA8PCBjdXN0b21I
ZWFkZXJGaWVsZHM7Ci0gICAgZW5jb2RlciA8PCBwb3BVcFBvbGljeTsKLSAgICBlbmNvZGVyIDw8
IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwotICAgIGVuY29kZXIgPDwgY3VzdG9tVXNlckFn
ZW50OwotICAgIGVuY29kZXIgPDwgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNp
ZmljUXVpcmtzOwotICAgIGVuY29kZXIgPDwgY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07Ci19Ci0K
LU9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8Ym9vbD4gY29udGVudEJs
b2NrZXJzRW5hYmxlZDsKLSAgICBkZWNvZGVyID4+IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7Ci0g
ICAgaWYgKCFjb250ZW50QmxvY2tlcnNFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIAotICAgIE9wdGlvbmFsPFdlYnNpdGVBdXRvcGxheVBvbGljeT4gYXV0b3BsYXlQ
b2xpY3k7Ci0gICAgZGVjb2RlciA+PiBhdXRvcGxheVBvbGljeTsKLSAgICBpZiAoIWF1dG9wbGF5
UG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8Ym9vbD4+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Ci0gICAg
ZGVjb2RlciA+PiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwotICAgIGlm
ICghZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBPcHRpb25hbDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9w
bGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0gICAgZGVjb2RlciA+PiBhbGxvd2Vk
QXV0b3BsYXlRdWlya3M7Ci0gICAgaWYgKCFhbGxvd2VkQXV0b3BsYXlRdWlya3MpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkhUVFBIZWFkZXJGaWVsZD4+IGN1c3RvbUhlYWRlckZpZWxkczsKLSAgICBkZWNvZGVyID4+IGN1
c3RvbUhlYWRlckZpZWxkczsKLSAgICBpZiAoIWN1c3RvbUhlYWRlckZpZWxkcykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFdlYnNpdGVQb3BVcFBvbGljeT4g
cG9wVXBQb2xpY3k7Ci0gICAgZGVjb2RlciA+PiBwb3BVcFBvbGljeTsKLSAgICBpZiAoIXBvcFVw
UG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVyczsKLSAgICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwotICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbVVzZXJBZ2VudDsKLSAgICBkZWNvZGVy
ID4+IGN1c3RvbVVzZXJBZ2VudDsKLSAgICBpZiAoIWN1c3RvbVVzZXJBZ2VudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFN0cmluZz4gY3VzdG9tSmF2YVNj
cmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwotICAgIGRlY29kZXIgPj4gY3VzdG9t
SmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwotICAgIGlmICghY3VzdG9t
SmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybTsKLSAgICBkZWNvZGVyID4+IGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOwotICAgIGlmICgh
Y3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgCi0gICAgcmV0dXJuIHsgewotICAgICAgICBXVEZNb3ZlKCpjb250ZW50QmxvY2tlcnNFbmFi
bGVkKSwKLSAgICAgICAgV1RGTW92ZSgqYWxsb3dlZEF1dG9wbGF5UXVpcmtzKSwKLSAgICAgICAg
V1RGTW92ZSgqYXV0b3BsYXlQb2xpY3kpLAotICAgICAgICBXVEZNb3ZlKCpkZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKSwKLSAgICAgICAgV1RGTW92ZSgqY3VzdG9tSGVhZGVy
RmllbGRzKSwKLSAgICAgICAgV1RGTW92ZSgqcG9wVXBQb2xpY3kpLAotICAgICAgICBXVEZNb3Zl
KCp3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyksCi0gICAgICAgIFdURk1vdmUoKmN1c3RvbVVz
ZXJBZ2VudCksCi0gICAgICAgIFdURk1vdmUoKmN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1Np
dGVTcGVjaWZpY1F1aXJrcyksCi0gICAgICAgIFdURk1vdmUoKmN1c3RvbU5hdmlnYXRvclBsYXRm
b3JtKSwKLSAgICB9IH07Ci19Ci0KLXZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0Rv
Y3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMsIFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKLXsKLSAgICBkb2N1bWVudExvYWRl
ci5zZXRDdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMuY3VzdG9tSGVh
ZGVyRmllbGRzKSk7Ci0gICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3VzdG9tVXNlckFnZW50KHdlYnNp
dGVQb2xpY2llcy5jdXN0b21Vc2VyQWdlbnQpOwotICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3Rv
bUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyh3ZWJzaXRlUG9saWNpZXMu
Y3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKTsKLSAgICBkb2N1
bWVudExvYWRlci5zZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSh3ZWJzaXRlUG9saWNpZXMuY3Vz
dG9tTmF2aWdhdG9yUGxhdGZvcm0pOwotICAgIGRvY3VtZW50TG9hZGVyLnNldERldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUod2Vic2l0ZVBvbGljaWVzLmRldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUpOwotICAgIAotICAgIC8vIE9ubHkgc2V0VXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRpc2FibGVkIGJ5
IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMuCi0gICAgaWYgKGRvY3VtZW50TG9h
ZGVyLnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnRMb2Fk
ZXIuc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh3ZWJzaXRlUG9saWNpZXMuY29udGVu
dEJsb2NrZXJzRW5hYmxlZCk7Ci0KLSAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlRdWly
az4gcXVpcmtzOwotICAgIGNvbnN0IGF1dG8mIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRlUG9saWNp
ZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwotICAgIAotICAgIGlmIChhbGxvd2VkUXVpcmtzLmNv
bnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpKQotICAg
ICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0
dXJlcyk7Ci0gICAgCi0gICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9w
bGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpKQotICAgICAgICBxdWlya3MuYWRkKFdl
YkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwotICAgIAotICAg
IGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJh
cnlVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVp
cms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7Ci0KLSAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250
YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6UGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yKSkK
LSAgICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpQZXJEb2N1bWVudEF1
dG9wbGF5QmVoYXZpb3IpOwotCi0gICAgZG9jdW1lbnRMb2FkZXIuc2V0QWxsb3dlZEF1dG9wbGF5
UXVpcmtzKHF1aXJrcyk7Ci0KLSAgICBzd2l0Y2ggKHdlYnNpdGVQb2xpY2llcy5hdXRvcGxheVBv
bGljeSkgewotICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0OgotICAgICAg
ICBkb2N1bWVudExvYWRlci5zZXRBdXRvcGxheVBvbGljeShXZWJDb3JlOjpBdXRvcGxheVBvbGlj
eTo6RGVmYXVsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5OjpBbGxvdzoKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xpY3koV2Vi
Q29yZTo6QXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBX
ZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgotICAgICAgICBkb2N1bWVu
dExvYWRlci5zZXRBdXRvcGxheVBvbGljeShXZWJDb3JlOjpBdXRvcGxheVBvbGljeTo6QWxsb3dX
aXRob3V0U291bmQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBv
bGljeTo6RGVueToKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xpY3koV2Vi
Q29yZTo6QXV0b3BsYXlQb2xpY3k6OkRlbnkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBzd2l0Y2ggKHdlYnNpdGVQb2xpY2llcy5wb3BVcFBvbGljeSkgewotICAgIGNhc2UgV2Vic2l0
ZVBvcFVwUG9saWN5OjpEZWZhdWx0OgotICAgICAgICBkb2N1bWVudExvYWRlci5zZXRQb3BVcFBv
bGljeShXZWJDb3JlOjpQb3BVcFBvbGljeTo6RGVmYXVsdCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgV2Vic2l0ZVBvcFVwUG9saWN5OjpBbGxvdzoKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIu
c2V0UG9wVXBQb2xpY3koV2ViQ29yZTo6UG9wVXBQb2xpY3k6OkFsbG93KTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXZWJzaXRlUG9wVXBQb2xpY3k6OkJsb2NrOgotICAgICAgICBkb2N1bWVu
dExvYWRlci5zZXRQb3BVcFBvbGljeShXZWJDb3JlOjpQb3BVcFBvbGljeTo6QmxvY2spOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAod2Vic2l0ZVBvbGljaWVzLndlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50TG9h
ZGVyLmZyYW1lKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uSUQod2Vic2l0ZVBvbGljaWVzLndl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLT5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lv
bklEKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlUG9saWNpZXNEYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZGQw
MDViNGY0Yzg2NWRkM2RhYTA4NmNlNDIwNWNjNzA3NTQzNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBv
bGljaWVzRGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmgiCi0jaW5j
bHVkZSAiV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIgotI2luY2x1ZGUgIldlYnNpdGVQb3BVcFBvbGljeS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgot
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBEb2N1bWVudExvYWRlcjsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhIHsKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmLCBXZWJDb3JlOjpE
b2N1bWVudExvYWRlciYpOwotCi0gICAgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1
ZSB9OwotICAgIE9wdGlvblNldDxXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5
UXVpcmtzOwotICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSB7IFdlYnNp
dGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9OwotICAgIE9wdGlvbmFsPGJvb2w+IGRldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBI
ZWFkZXJGaWVsZD4gY3VzdG9tSGVhZGVyRmllbGRzOwotICAgIFdlYnNpdGVQb3BVcFBvbGljeSBw
b3BVcFBvbGljeSB7IFdlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIE9wdGlvbmFs
PFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsK
LSAgICBTdHJpbmcgY3VzdG9tVXNlckFnZW50OwotICAgIFN0cmluZyBjdXN0b21KYXZhU2NyaXB0
VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7Ci0gICAgU3RyaW5nIGN1c3RvbU5hdmlnYXRv
clBsYXRmb3JtOwotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggODUyN2NmYjlk
MGM5ZTcwYmQ3NWJhZDBjZTQ2YjA1NGIzMjdlZWE4NC4uMjcwMWFiN2M4MmNiNjhlOWZlZGI5NGY0
OTc4YzliNDQwYmZmYzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNjcsNyArMTY3LDcgQEAgU2hhcmVk
L1dlYlRvdWNoRXZlbnQuY3BwIEBuby11bmlmeQogU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAKIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBAbm8tdW5pZnkKIFNo
YXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKLVNoYXJlZC9XZWJzaXRlUG9saWNp
ZXNEYXRhLmNwcAorU2hhcmVkL1dlYnNpdGVCZWhhdmlvcnNEYXRhLmNwcAogCiBTaGFyZWQvQVBJ
L0FQSUFycmF5LmNwcAogU2hhcmVkL0FQSS9BUElEYXRhLmNwcApAQCAtMzA5LDggKzMwOSw4IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lVGFzay5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNl
ckNvbnRlbnRXb3JsZC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCitVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVC
ZWhhdmlvcnMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCi1VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2luZG93
RmVhdHVyZXMuY3BwCiAKIFVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50LmgKaW5kZXggY2NmODZkNjFlMDFiOWE1M2M2ZmY0YjQ3OWM3YzBlN2FhZmRmMGM5YS4uMjZl
YTBiZjE3NDFkN2I2YjhiNDI3MWZjNzJiOTJkMjZmMmRkODhmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJX
ZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgotI2lu
Y2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKKyNpbmNsdWRlICJXZWJzaXRlQmVoYXZpb3Jz
RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlQmVoYXZpb3Jz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlQmVoYXZpb3JzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MGU5Y2IzN2NlNmNmZWRhZmMwYmEwOWM1ZTJjZWM1OTMwMDE0MTlmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVC
ZWhhdmlvcnMuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlQmVoYXZpb3JzLmgiCisKKyNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZUJlaGF2aW9yc0RhdGEu
aCIKKworbmFtZXNwYWNlIEFQSSB7CisKK1dlYnNpdGVCZWhhdmlvcnM6OldlYnNpdGVCZWhhdmlv
cnMoKSA9IGRlZmF1bHQ7CisKK1dlYnNpdGVCZWhhdmlvcnM6OldlYnNpdGVCZWhhdmlvcnMoYm9v
bCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3Bs
YXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBv
bGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBj
dXN0b21IZWFkZXJGaWVsZHMsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5
LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAgIDogbV9j
b250ZW50QmxvY2tlcnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCisgICAgLCBtX2Fs
bG93ZWRBdXRvcGxheVF1aXJrcyhhbGxvd2VkQXV0b3BsYXlRdWlya3MpCisgICAgLCBtX2F1dG9w
bGF5UG9saWN5KGF1dG9wbGF5UG9saWN5KQorICAgICwgbV9jdXN0b21IZWFkZXJGaWVsZHMoV1RG
TW92ZShjdXN0b21IZWFkZXJGaWVsZHMpKQorICAgICwgbV9wb3BVcFBvbGljeShwb3BVcFBvbGlj
eSkKKyAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpKQor
eyB9CisKK1dlYnNpdGVCZWhhdmlvcnM6On5XZWJzaXRlQmVoYXZpb3JzKCkKK3sKK30KKwordm9p
ZCBXZWJzaXRlQmVoYXZpb3JzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJzaXRlRGF0
YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCit7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0g
V1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKTsKK30KKworV2ViS2l0OjpXZWJzaXRlQmVoYXZpb3Jz
RGF0YSBXZWJzaXRlQmVoYXZpb3JzOjpkYXRhKCkKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOworICAgIGlmIChtX3dlYnNpdGVE
YXRhU3RvcmUpCisgICAgICAgIHBhcmFtZXRlcnMgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCk7CisgICAgcmV0dXJuIHsgY29udGVudEJsb2NrZXJz
RW5hYmxlZCgpLCBhbGxvd2VkQXV0b3BsYXlRdWlya3MoKSwgYXV0b3BsYXlQb2xpY3koKSwgZGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSgpLAorICAgICAgICBjdXN0b21IZWFk
ZXJGaWVsZHMoKSwgcG9wVXBQb2xpY3koKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9jdXN0b21V
c2VyQWdlbnQsIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtz
LCBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtIH07Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVCZWhhdmlvcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlQmVoYXZpb3JzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJk
M2FhZjBhNTM5Mjg4OWQwMjAyYWM1ODc3ODg4ZGY1MjQ5MWQ4YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlQmVoYXZpb3JzLmgKQEAgLTAs
MCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCIKKyNpbmNsdWRl
ICJXZWJzaXRlQXV0b3BsYXlRdWlyay5oIgorI2luY2x1ZGUgIldlYnNpdGVQb3BVcFBvbGljeS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CitzdHJ1Y3QgV2Vic2l0ZUJlaGF2aW9yc0RhdGE7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBXZWJzaXRlRGF0YVN0b3JlOworCitjbGFzcyBXZWJzaXRlQmVoYXZpb3JzIGZpbmFsIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZUJlaGF2aW9y
cz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2Vic2l0ZUJlaGF2aW9ycz4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlQmVoYXZpb3JzKTsgfQorICAgIFdlYnNpdGVC
ZWhhdmlvcnMoKTsKKyAgICB+V2Vic2l0ZUJlaGF2aW9ycygpOworCisgICAgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50QmxvY2tlcnNFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgCisgICAgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcygpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOyB9CisgICAgdm9pZCBzZXRBbGxv
d2VkQXV0b3BsYXlRdWlya3MoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+
IHF1aXJrcykgeyBtX2FsbG93ZWRBdXRvcGxheVF1aXJrcyA9IHF1aXJrczsgfQorICAgIAorICAg
IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9hdXRvcGxheVBvbGljeTsgfQorICAgIHZvaWQgc2V0QXV0b3BsYXlQb2xpY3koV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgcG9saWN5KSB7IG1fYXV0b3BsYXlQb2xpY3kgPSBw
b2xpY3k7IH0KKworICAgIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBkZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc1N0YXRlOyB9CisgICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc1N0YXRlKE9wdGlvbmFsPGJvb2w+IHN0YXRlKSB7IG1fZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSA9IHN0YXRlOyB9CisgICAgCisgICAgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mIGN1c3RvbUhlYWRlckZpZWxkcygpIGNvbnN0IHsg
cmV0dXJuIG1fY3VzdG9tSGVhZGVyRmllbGRzOyB9CisgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBI
ZWFkZXJGaWVsZD4mJiB0YWtlQ3VzdG9tSGVhZGVyRmllbGRzKCkgeyByZXR1cm4gV1RGTW92ZSht
X2N1c3RvbUhlYWRlckZpZWxkcyk7IH0KKyAgICB2b2lkIHNldEN1c3RvbUhlYWRlckZpZWxkcyhW
ZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGZpZWxkcykgeyBtX2N1c3RvbUhlYWRl
ckZpZWxkcyA9IFdURk1vdmUoZmllbGRzKTsgfQorCisgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CisgICAg
dm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsg
bV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQorCisgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0
ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7
CisKKyAgICBXZWJLaXQ6OldlYnNpdGVCZWhhdmlvcnNEYXRhIGRhdGEoKTsKKworICAgIHZvaWQg
c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFdURjo6U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpIHsg
bV9jdXN0b21Vc2VyQWdlbnQgPSBjdXN0b21Vc2VyQWdlbnQ7IH0KKyAgICBjb25zdCBXVEY6OlN0
cmluZyYgY3VzdG9tVXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21Vc2VyQWdlbnQ7
IH0KKworICAgIHZvaWQgc2V0Q3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzKGNvbnN0IFdURjo6U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpIHsgbV9jdXN0b21KYXZh
U2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MgPSBjdXN0b21Vc2VyQWdlbnQ7IH0K
KyAgICBjb25zdCBXVEY6OlN0cmluZyYgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNw
ZWNpZmljUXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50
QXNTaXRlU3BlY2lmaWNRdWlya3M7IH0KKworICAgIHZvaWQgc2V0Q3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm0oY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKSB7IG1fY3Vz
dG9tTmF2aWdhdG9yUGxhdGZvcm0gPSBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsgfQorICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07IH0KKworcHJpdmF0ZToKKyAgICBXZWJzaXRlQmVo
YXZpb3JzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSwgVmVjdG9y
PFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3ks
IFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmKTsKKworICAgIGJvb2wgbV9jb250ZW50QmxvY2tl
cnNFbmFibGVkIHsgdHJ1ZSB9OworICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxh
eVF1aXJrPiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKKyAgICBXZWJLaXQ6OldlYnNpdGVBdXRv
cGxheVBvbGljeSBtX2F1dG9wbGF5UG9saWN5IHsgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xp
Y3k6OkRlZmF1bHQgfTsKKyAgICBPcHRpb25hbDxib29sPiBtX2RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzU3RhdGU7CisgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4g
bV9jdXN0b21IZWFkZXJGaWVsZHM7CisgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgbV9w
b3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0IH07CisgICAg
UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXVEY6OlN0
cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsKKyAgICBXVEY6OlN0cmluZyBtX2N1c3RvbUphdmFTY3Jp
cHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKKyAgICBXVEY6OlN0cmluZyBtX2N1c3Rv
bU5hdmlnYXRvclBsYXRmb3JtOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmZjYWMwNmU1MmNiZmQ1YzFlMWYzMDc3OWE5ZTE0MTg3
ZDIxMjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKLQotI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCi0KLW5hbWVzcGFj
ZSBBUEkgewotCi1XZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVmYXVsdDsK
LQotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNF
bmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1
dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGlj
eSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBjdXN0b21IZWFkZXJGaWVsZHMs
IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURh
dGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQotICAgIDogbV9jb250ZW50QmxvY2tlcnNFbmFi
bGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCi0gICAgLCBtX2FsbG93ZWRBdXRvcGxheVF1aXJr
cyhhbGxvd2VkQXV0b3BsYXlRdWlya3MpCi0gICAgLCBtX2F1dG9wbGF5UG9saWN5KGF1dG9wbGF5
UG9saWN5KQotICAgICwgbV9jdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZShjdXN0b21IZWFkZXJG
aWVsZHMpKQotICAgICwgbV9wb3BVcFBvbGljeShwb3BVcFBvbGljeSkKLSAgICAsIG1fd2Vic2l0
ZURhdGFTdG9yZShXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpKQoteyB9Ci0KLVdlYnNpdGVQb2xp
Y2llczo6fldlYnNpdGVQb2xpY2llcygpCi17Ci19Ci0KLXZvaWQgV2Vic2l0ZVBvbGljaWVzOjpz
ZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRh
U3RvcmUpCi17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV1RGTW92ZSh3ZWJzaXRlRGF0YVN0
b3JlKTsKLX0KLQotV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIFdlYnNpdGVQb2xpY2llczo6
ZGF0YSgpCi17Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cz4gcGFyYW1ldGVyczsKLSAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICBwYXJh
bWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVy
cygpOwotICAgIHJldHVybiB7IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSwgYWxsb3dlZEF1dG9w
bGF5UXVpcmtzKCksIGF1dG9wbGF5UG9saWN5KCksIGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzU3RhdGUoKSwKLSAgICAgICAgY3VzdG9tSGVhZGVyRmllbGRzKCksIHBvcFVwUG9saWN5
KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fY3VzdG9tVXNlckFnZW50LCBtX2N1c3RvbUphdmFT
Y3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcywgbV9jdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybSB9OwotfQotCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlUG9saWNpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkYTE5ZDRl
MTlmNDFmMjAzNzVjMThlOTI0NmI0MDJiMzIzYmQyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJz
aXRlQXV0b3BsYXlQb2xpY3kuaCIKLSNpbmNsdWRlICJXZWJzaXRlQXV0b3BsYXlRdWlyay5oIgot
I2luY2x1ZGUgIldlYnNpdGVQb3BVcFBvbGljeS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhl
YWRlckZpZWxkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0
YTsKLX0KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KLWNs
YXNzIFdlYnNpdGVQb2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcz4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVQ
b2xpY2llcyk7IH0KLSAgICBXZWJzaXRlUG9saWNpZXMoKTsKLSAgICB+V2Vic2l0ZVBvbGljaWVz
KCk7Ci0KLSAgICBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldENvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGVuYWJsZWQ7
IH0KLSAgICAKLSAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkQXV0b3BsYXlRdWly
a3M7IH0KLSAgICB2b2lkIHNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gcXVpcmtzKSB7IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtz
ID0gcXVpcmtzOyB9Ci0gICAgCi0gICAgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0
b3BsYXlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2F1dG9wbGF5UG9saWN5OyB9Ci0gICAgdm9p
ZCBzZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBwb2xpY3kp
IHsgbV9hdXRvcGxheVBvbGljeSA9IHBvbGljeTsgfQotCi0gICAgY29uc3QgT3B0aW9uYWw8Ym9v
bD4mIGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7IH0KLSAgICB2b2lkIHNl
dERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUoT3B0aW9uYWw8Ym9vbD4gc3Rh
dGUpIHsgbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlID0gc3RhdGU7IH0K
LSAgICAKLSAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYgY3VzdG9t
SGVhZGVyRmllbGRzKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21IZWFkZXJGaWVsZHM7IH0KLSAg
ICBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIHRha2VDdXN0b21IZWFkZXJGaWVs
ZHMoKSB7IHJldHVybiBXVEZNb3ZlKG1fY3VzdG9tSGVhZGVyRmllbGRzKTsgfQotICAgIHZvaWQg
c2V0Q3VzdG9tSGVhZGVyRmllbGRzKFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYg
ZmllbGRzKSB7IG1fY3VzdG9tSGVhZGVyRmllbGRzID0gV1RGTW92ZShmaWVsZHMpOyB9Ci0KLSAg
ICBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9wVXBQb2xpY3k7IH0KLSAgICB2b2lkIHNldFBvcFVwUG9saWN5KFdlYktpdDo6V2Vic2l0
ZVBvcFVwUG9saWN5IHBvbGljeSkgeyBtX3BvcFVwUG9saWN5ID0gcG9saWN5OyB9Ci0KLSAgICBX
ZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJz
aXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiYmKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0
YSBkYXRhKCk7Ci0KLSAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBXVEY6OlN0cmlu
ZyYgY3VzdG9tVXNlckFnZW50KSB7IG1fY3VzdG9tVXNlckFnZW50ID0gY3VzdG9tVXNlckFnZW50
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VzdG9tVXNlckFnZW50OyB9Ci0KLSAgICB2b2lkIHNldEN1c3RvbUphdmFTY3JpcHRV
c2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyhjb25zdCBXVEY6OlN0cmluZyYgY3VzdG9tVXNl
ckFnZW50KSB7IG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtz
ID0gY3VzdG9tVXNlckFnZW50OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbUphdmFT
Y3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOyB9Ci0KLSAgICB2b2lk
IHNldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKGNvbnN0IFdURjo6U3RyaW5nJiBjdXN0b21OYXZp
Z2F0b3JQbGF0Zm9ybSkgeyBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtID0gY3VzdG9tTmF2aWdh
dG9yUGxhdGZvcm07IH0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgY3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm0oKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgV2ViS2l0
OjpXZWJzaXRlUG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmKTsKLQotICAg
IGJvb2wgbV9jb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1ZSB9OwotICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKLSAg
ICBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBtX2F1dG9wbGF5UG9saWN5IHsgV2ViS2l0
OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQgfTsKLSAgICBPcHRpb25hbDxib29sPiBt
X2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Ci0gICAgVmVjdG9yPFdlYkNv
cmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9jdXN0b21IZWFkZXJGaWVsZHM7Ci0gICAgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9s
aWN5OjpEZWZhdWx0IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKLSAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsKLSAgICBXVEY6OlN0
cmluZyBtX2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKLSAg
ICBXVEY6OlN0cmluZyBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4
IGEzMGQ1OTc5M2I2YjRkZDVlZGUzMzA1MzVlN2Y1YjViNDFkNGY2MzYuLjg1MjI0ZDdiMzNlMTc1
ZmI4MjFiM2RjMTFiMTVlMDNkMDI5OWFiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oCkBAIC02Nyw4ICs2Nyw4IEBAIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9u
OwogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOwogY2xhc3MgU2Vzc2lvblN0YXRlOwog
Y2xhc3MgVXNlclNjcmlwdDsKK2NsYXNzIFdlYnNpdGVCZWhhdmlvcnM7CiBjbGFzcyBXZWJzaXRl
RGF0YVN0b3JlOwotY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVyZXM7
CiB9CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcgogV0tfQURE
X0FQSV9NQVBQSU5HKFdLVXNlclNjcmlwdFJlZiwgQVBJOjpVc2VyU2NyaXB0KQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBBUEk6OldlYnNpdGVE
YXRhU3RvcmUpCi1XS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVm
LCBBUEk6OldlYnNpdGVCZWhhdmlvcnMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tXaW5kb3dGZWF0
dXJlc1JlZiwgQVBJOjpXaW5kb3dGZWF0dXJlcykKIAogLyogRW51bSBjb252ZXJzaW9ucyAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lM
aXN0ZW5lci5jcHAKaW5kZXggYTg1YjViY2Q3Y2E1ZDY4NTJiNmI5ODBlMDVhYmNkZjViZDRkNGMz
YS4uNmY4N2YwNTc1YTEwYzM1ZTk4OTg5ZWQ5NjRiZjAxMGM4ZmQyMWFmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
S0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAorI2luY2x1ZGUgIkFQSVdlYnNpdGVCZWhhdmlvcnMu
aCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgor
I2luY2x1ZGUgIldlYnNpdGVCZWhhdmlvcnNEYXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHZvaWQgdXNlV2l0aFBvbGljaWVzKFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJzaXQKIHsKICAgICBp
ZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT53ZWJz
aXRlRGF0YVN0b3JlKCkpIHsKICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCBzZXNzaW9uSUQgPT0g
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgIklmIFdlYnNpdGVQb2xpY2llcyBz
cGVjaWZpZXMgYSBXZWJzaXRlRGF0YVN0b3JlLCB0aGUgZGF0YSBzdG9yZSdzIHNlc3Npb24gbXVz
dCBiZSBkZWZhdWx0IG9yIG5vbi1wZXJzaXN0ZW50LiIpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0Uoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgc2Vzc2lvbklEID09IFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksICJJZiBXZWJzaXRlQmVoYXZpb3JzIHNw
ZWNpZmllcyBhIFdlYnNpdGVEYXRhU3RvcmUsIHRoZSBkYXRhIHN0b3JlJ3Mgc2Vzc2lvbiBtdXN0
IGJlIGRlZmF1bHQgb3Igbm9uLXBlcnNpc3RlbnQuIik7CiAgICAgfQogCiAgICAgdG9JbXBsKHBv
bGljeUxpc3RlbmVyUmVmKS0+dXNlKHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCmluZGV4IGQ5Y2IzYzZmYjU2NTM0YzQ4ZjZmNDk4MmY3MmM0NDVhMmM3NjM0NmIuLjRjZjk0
OTI3MDI5OGNjODcyMDcwNzI1ZDRiM2RlMWMzNWIwOThkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIkFQSVBv
bGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIkFQ
SVVJQ2xpZW50LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAi
QVBJV2Vic2l0ZUJlaGF2aW9ycy5oIgogI2luY2x1ZGUgIkFQSVdpbmRvd0ZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKQEAgLTM1OSw4ICszNTksOCBAQCBib29s
IFdLUGFnZVdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKFdLUGFnZVJlZiBwYWdlUmVm
KQogdm9pZCBXS1BhZ2VVcGRhdGVXZWJzaXRlUG9saWNpZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
V2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNpdGVQb2xpY2llc1JlZikKIHsKICAgICBhdXRvIGRhdGEg
PSB0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+ZGF0YSgpOwotICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfTUVTU0FHRSghZGF0YS53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycywgIlNldHRpbmcg
V2Vic2l0ZVBvbGljaWVzLldlYnNpdGVEYXRhU3RvcmUgaXMgb25seSBzdXBwb3J0ZWQgZHVyaW5n
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcygpLiIpOwotICAgIHRvSW1wbChw
YWdlUmVmKS0+dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdURk1vdmUoZGF0YSkpOworICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghZGF0YS53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycywg
IlNldHRpbmcgV2Vic2l0ZUJlaGF2aW9ycy5XZWJzaXRlRGF0YVN0b3JlIGlzIG9ubHkgc3VwcG9y
dGVkIGR1cmluZyBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMoKS4iKTsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnVwZGF0ZVdlYnNpdGVCZWhhdmlvcnMoV1RGTW92ZShkYXRhKSk7
CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlUaXRsZShXS1BhZ2VSZWYgcGFnZVJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNw
cAppbmRleCA4YmZhZTY0ZTMyMDc4ZDJmYjczMWU0NTNmM2YwNTgxODY0ODc0ZjBmLi4yMDc2N2Nk
Mzg5YTcyNDYzMDg5MTRlNTM0MWUxZGU5M2JiYzU2MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC0yNiw4ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCisj
aW5jbHVkZSAiQVBJV2Vic2l0ZUJlaGF2aW9ycy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5Lmgi
CkBAIC0zOCwxMiArMzgsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQg
V0tXZWJzaXRlUG9saWNpZXNHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6Oldl
YnNpdGVQb2xpY2llczo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZUJl
aGF2aW9yczo6QVBJVHlwZSk7CiB9CiAKIFdLV2Vic2l0ZVBvbGljaWVzUmVmIFdLV2Vic2l0ZVBv
bGljaWVzQ3JlYXRlKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6V2Vic2l0ZVBvbGljaWVz
OjpjcmVhdGUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpXZWJzaXRlQmVo
YXZpb3JzOjpjcmVhdGUoKS5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZVBvbGljaWVz
U2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9s
aWNpZXMsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IGE0ODI1Zjc2NWY1MWI3M2I5YzA2MGU3ZDA2NmMzZjM3YzNi
ZGY5YmEuLmY4MzZjMjM4MThlYWExMGNhZjQxNTg1OTM5NzQ4ZjNhYTNmOWVkYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTEyNCwx
MCArNTEyNCwxMCBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1
cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbAogCiAtICh2b2lkKV91cGRhdGVX
ZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwogewot
ICAgIGF1dG8gZGF0YSA9IFt3ZWJzaXRlUG9saWNpZXMgYmVoYXZpb3JzXS0+X3dlYnNpdGVQb2xp
Y2llcy0+ZGF0YSgpOworICAgIGF1dG8gZGF0YSA9IFt3ZWJzaXRlUG9saWNpZXMgYmVoYXZpb3Jz
XS0+X3dlYnNpdGVCZWhhdmlvcnMtPmRhdGEoKTsKICAgICBpZiAoZGF0YS53ZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycykKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3Vt
ZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVwZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5
IHN1cHBvcnRlZCBkdXJpbmcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4iXTsKLSAg
ICBfcGFnZS0+dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdURk1vdmUoZGF0YSkpOworICAgIF9wYWdl
LT51cGRhdGVXZWJzaXRlQmVoYXZpb3JzKFdURk1vdmUoZGF0YSkpOwogfQogCiAtIChCT09MKV9h
bGxvd3NSZW1vdGVJbnNwZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlQmVoYXZpb3JzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZUJlaGF2aW9ycy5tbQppbmRleCAxZmVlOTIwMDlkNjZiZjAx
YTk0ZWQwZDA2MGZmNTQ4ZTUyOTllNGQ2Li4wMTdlMTg1ZjM3NDY1Y2I1NjJhOTM2YTkzNGExNjdi
NDhhODhiZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlQmVoYXZpb3JzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVCZWhhdmlvcnMubW0KQEAgLTQwLDcgKzQwLDcgQEAgKyAoaW5zdGFuY2V0
eXBlKWRlZmF1bHRCZWhhdmlvcnMKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgX3dlYnNpdGVQ
b2xpY2llcy0+QVBJOjpXZWJzaXRlUG9saWNpZXM6On5XZWJzaXRlUG9saWNpZXMoKTsKKyAgICBf
d2Vic2l0ZUJlaGF2aW9ycy0+QVBJOjpXZWJzaXRlQmVoYXZpb3JzOjp+V2Vic2l0ZUJlaGF2aW9y
cygpOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNTAsMTkgKzUwLDE5IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6
V2Vic2l0ZVBvbGljaWVzPihzZWxmKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFw
cGVyPEFQSTo6V2Vic2l0ZUJlaGF2aW9ycz4oc2VsZik7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
IAogLSAodm9pZClzZXRDb250ZW50QmxvY2tlcnNFbmFibGVkOihCT09MKWNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQKIHsKLSAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRDb250ZW50QmxvY2tlcnNFbmFi
bGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIF93ZWJzaXRlQmVoYXZpb3JzLT5zZXRD
b250ZW50QmxvY2tlcnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwogfQogCiAtIChC
T09MKWNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVQb2xpY2ll
cy0+Y29udGVudEJsb2NrZXJzRW5hYmxlZCgpOworICAgIHJldHVybiBfd2Vic2l0ZUJlaGF2aW9y
cy0+Y29udGVudEJsb2NrZXJzRW5hYmxlZCgpOwogfQogCiAtICh2b2lkKXNldEFsbG93ZWRBdXRv
cGxheVF1aXJrczooX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmspYWxsb3dlZFF1aXJrcwpAQCAtODEs
MTMgKzgxLDEzIEBAIC0gKHZvaWQpc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzOihfV0tXZWJzaXRl
QXV0b3BsYXlRdWlyaylhbGxvd2VkUXVpcmtzCiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tX
ZWJzaXRlQXV0b3BsYXlRdWlya1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvcikKICAgICAgICAg
cXVpcmtzLmFkZChXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpQZXJEb2N1bWVudEF1dG9w
bGF5QmVoYXZpb3IpOwogCi0gICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0QWxsb3dlZEF1dG9wbGF5
UXVpcmtzKHF1aXJrcyk7CisgICAgX3dlYnNpdGVCZWhhdmlvcnMtPnNldEFsbG93ZWRBdXRvcGxh
eVF1aXJrcyhxdWlya3MpOwogfQogCiAtIChfV0tXZWJzaXRlQXV0b3BsYXlRdWlyaylhbGxvd2Vk
QXV0b3BsYXlRdWlya3MKIHsKICAgICBfV0tXZWJzaXRlQXV0b3BsYXlRdWlyayBxdWlya3MgPSAw
OwotICAgIGF1dG8gYWxsb3dlZFF1aXJrcyA9IF93ZWJzaXRlUG9saWNpZXMtPmFsbG93ZWRBdXRv
cGxheVF1aXJrcygpOworICAgIGF1dG8gYWxsb3dlZFF1aXJrcyA9IF93ZWJzaXRlQmVoYXZpb3Jz
LT5hbGxvd2VkQXV0b3BsYXlRdWlya3MoKTsKIAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRh
aW5zKFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykp
CiAgICAgICAgIHF1aXJrcyB8PSBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya0luaGVyaXRlZFVzZXJH
ZXN0dXJlczsKQEAgLTEwOCwyMyArMTA4LDIzIEBAIC0gKHZvaWQpc2V0QXV0b3BsYXlQb2xpY3k6
KF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeSlwb2xpY3kKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkg
ewogICAgIGNhc2UgX1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5RGVmYXVsdDoKLSAgICAgICAgX3dl
YnNpdGVQb2xpY2llcy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQ
b2xpY3k6OkRlZmF1bHQpOworICAgICAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0QXV0b3BsYXlQ
b2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OgotICAgICAgICBf
d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxh
eVBvbGljeTo6QWxsb3cpOworICAgICAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0QXV0b3BsYXlQ
b2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lBbGxvd1dpdGhvdXRTb3VuZDoK
LSAgICAgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAgICAgX3dlYnNpdGVC
ZWhhdmlvcnMtPnNldEF1dG9wbGF5UG9saWN5KFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5
OjpBbGxvd1dpdGhvdXRTb3VuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgX1dLV2Vic2l0
ZUF1dG9wbGF5UG9saWN5RGVueToKLSAgICAgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3Bs
YXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnkpOworICAgICAgICBf
d2Vic2l0ZUJlaGF2aW9ycy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3Bs
YXlQb2xpY3k6OkRlbnkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIC0gKF9XS1dlYnNp
dGVBdXRvcGxheVBvbGljeSlhdXRvcGxheVBvbGljeQogewotICAgIHN3aXRjaCAoX3dlYnNpdGVQ
b2xpY2llcy0+YXV0b3BsYXlQb2xpY3koKSkgeworICAgIHN3aXRjaCAoX3dlYnNpdGVCZWhhdmlv
cnMtPmF1dG9wbGF5UG9saWN5KCkpIHsKICAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5
UG9saWN5OjpEZWZhdWx0OgogICAgICAgICByZXR1cm4gX1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5
RGVmYXVsdDsKICAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzoK
QEAgLTE0MCw0MiArMTQwLDQyIEBAIC0gKHZvaWQpc2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NQb2xpY3k6KF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlvbkFuCiB7CiAgICAgc3dp
dGNoIChwb2xpY3kpIHsKICAgICBjYXNlIF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc1BvbGljeUFzazoKLSAgICAgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0RGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZShXVEY6Om51bGxvcHQpOworICAgICAgICBf
d2Vic2l0ZUJlaGF2aW9ycy0+c2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0
ZShXVEY6Om51bGxvcHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIF9XS1dlYnNpdGVEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeUdyYW50OgotICAgICAgICBfd2Vic2l0
ZVBvbGljaWVzLT5zZXREZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKHRydWUp
OworICAgICAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NTdGF0ZSh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBfV0tXZWJzaXRl
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lEZW55OgotICAgICAgICBfd2Vi
c2l0ZVBvbGljaWVzLT5zZXREZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKGZh
bHNlKTsKKyAgICAgICAgX3dlYnNpdGVCZWhhdmlvcnMtPnNldERldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzU3RhdGUoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIC0g
KF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeSlkZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeQogewotICAgIGlmICghX3dlYnNpdGVQb2xp
Y2llcy0+ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSgpKQorICAgIGlmICgh
X3dlYnNpdGVCZWhhdmlvcnMtPmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUo
KSkKICAgICAgICAgcmV0dXJuIF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc1BvbGljeUFzazsKLSAgICByZXR1cm4gKl93ZWJzaXRlUG9saWNpZXMtPmRldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUoKSA/IF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc1BvbGljeUdyYW50IDogX1dLV2Vic2l0ZURldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzUG9saWN5RGVueTsKKyAgICByZXR1cm4gKl93ZWJzaXRlQmVoYXZpb3Jz
LT5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkgPyBfV0tXZWJzaXRlRGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lHcmFudCA6IF9XS1dlYnNpdGVEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeURlbnk7CiB9CiAKIC0gKHZvaWQpc2V0
UG9wVXBQb2xpY3k6KF9XS1dlYnNpdGVQb3BVcFBvbGljeSlwb2xpY3kKIHsKICAgICBzd2l0Y2gg
KHBvbGljeSkgewogICAgIGNhc2UgX1dLV2Vic2l0ZVBvcFVwUG9saWN5RGVmYXVsdDoKLSAgICAg
ICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3k6OkRlZmF1bHQpOworICAgICAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0UG9wVXBQb2xp
Y3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3k6OkRlZmF1bHQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIF9XS1dlYnNpdGVQb3BVcFBvbGljeUFsbG93OgotICAgICAgICBfd2Vic2l0ZVBv
bGljaWVzLT5zZXRQb3BVcFBvbGljeShXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6QWxsb3cp
OworICAgICAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJz
aXRlUG9wVXBQb2xpY3k6OkFsbG93KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBfV0tXZWJz
aXRlUG9wVXBQb2xpY3lCbG9jazoKLSAgICAgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0UG9wVXBQ
b2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3k6OkJsb2NrKTsKKyAgICAgICAgX3dlYnNp
dGVCZWhhdmlvcnMtPnNldFBvcFVwUG9saWN5KFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpC
bG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogLSAoX1dLV2Vic2l0ZVBvcFVwUG9s
aWN5KXBvcFVwUG9saWN5CiB7Ci0gICAgc3dpdGNoIChfd2Vic2l0ZVBvbGljaWVzLT5wb3BVcFBv
bGljeSgpKSB7CisgICAgc3dpdGNoIChfd2Vic2l0ZUJlaGF2aW9ycy0+cG9wVXBQb2xpY3koKSkg
ewogICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3k6OkRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBfV0tXZWJzaXRlUG9wVXBQb2xpY3lEZWZhdWx0OwogICAgIGNhc2UgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3k6OkFsbG93OgpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKF9XS1dlYnNp
dGVQb3BVcFBvbGljeSlwb3BVcFBvbGljeQogCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
TlNTdHJpbmcgKj4gKiljdXN0b21IZWFkZXJGaWVsZHMKIHsKLSAgICBjb25zdCBhdXRvJiBmaWVs
ZHMgPSBfd2Vic2l0ZVBvbGljaWVzLT5jdXN0b21IZWFkZXJGaWVsZHMoKTsKKyAgICBjb25zdCBh
dXRvJiBmaWVsZHMgPSBfd2Vic2l0ZUJlaGF2aW9ycy0+Y3VzdG9tSGVhZGVyRmllbGRzKCk7CiAg
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6ZmllbGRzLnNpemUoKV0gYXV0b3JlbGVhc2VdOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZmllbGQgOiBmaWVsZHMpCiAgICAgICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDpmaWVsZC52YWx1ZSgpIGZvcktleTpmaWVsZC5uYW1lKCldOwpAQCAtMjA0LDQ3
ICsyMDQsNDcgQEAgLSAodm9pZClzZXRDdXN0b21IZWFkZXJGaWVsZHM6KE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWZpZWxkcwogICAgICAgICBpZiAoZmllbGQgJiYgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWVsZC0+bmFtZSgpLCAieC0iKSkKICAg
ICAgICAgICAgIHBhcnNlZEZpZWxkcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqZmllbGQpKTsK
ICAgICB9Ci0gICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q3VzdG9tSGVhZGVyRmllbGRzKFdURk1v
dmUocGFyc2VkRmllbGRzKSk7CisgICAgX3dlYnNpdGVCZWhhdmlvcnMtPnNldEN1c3RvbUhlYWRl
ckZpZWxkcyhXVEZNb3ZlKHBhcnNlZEZpZWxkcykpOwogfQogCiAtIChXS1dlYnNpdGVEYXRhU3Rv
cmUgKil3ZWJzaXRlRGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVQb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZUJl
aGF2aW9ycy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKIH0KIAogLSAodm9pZClzZXRXZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3JlCiB7Ci0gICAgX3dl
YnNpdGVQb2xpY2llcy0+c2V0V2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlLT5fd2Vi
c2l0ZURhdGFTdG9yZS5nZXQoKSk7CisgICAgX3dlYnNpdGVCZWhhdmlvcnMtPnNldFdlYnNpdGVE
YXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwogfQog
CiAtICh2b2lkKXNldEN1c3RvbVVzZXJBZ2VudDooTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdlbnQK
IHsKLSAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRDdXN0b21Vc2VyQWdlbnQoY3VzdG9tVXNlckFn
ZW50KTsKKyAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0Q3VzdG9tVXNlckFnZW50KGN1c3RvbVVz
ZXJBZ2VudCk7CiB9CiAKIC0gKE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50CiB7Ci0gICAgcmV0
dXJuIF93ZWJzaXRlUG9saWNpZXMtPmN1c3RvbVVzZXJBZ2VudCgpOworICAgIHJldHVybiBfd2Vi
c2l0ZUJlaGF2aW9ycy0+Y3VzdG9tVXNlckFnZW50KCk7CiB9CiAKIC0gKHZvaWQpc2V0Q3VzdG9t
SmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOihOU1N0cmluZyAqKWN1c3Rv
bVVzZXJBZ2VudAogewotICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEN1c3RvbUphdmFTY3JpcHRV
c2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyhjdXN0b21Vc2VyQWdlbnQpOworICAgIF93ZWJz
aXRlQmVoYXZpb3JzLT5zZXRDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNR
dWlya3MoY3VzdG9tVXNlckFnZW50KTsKIH0KIAogLSAoTlNTdHJpbmcgKiljdXN0b21KYXZhU2Ny
aXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVQ
b2xpY2llcy0+Y3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKCk7
CisgICAgcmV0dXJuIF93ZWJzaXRlQmVoYXZpb3JzLT5jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50
QXNTaXRlU3BlY2lmaWNRdWlya3MoKTsKIH0KIAogLSAodm9pZClzZXRDdXN0b21OYXZpZ2F0b3JQ
bGF0Zm9ybTooTlNTdHJpbmcgKiljdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybQogewotICAgIF93ZWJz
aXRlUG9saWNpZXMtPnNldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKGN1c3RvbU5hdmlnYXRvclBs
YXRmb3JtKTsKKyAgICBfd2Vic2l0ZUJlaGF2aW9ycy0+c2V0Q3VzdG9tTmF2aWdhdG9yUGxhdGZv
cm0oY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0pOwogfQogCiAtIChOU1N0cmluZyAqKWN1c3RvbU5h
dmlnYXRvclBsYXRmb3JtCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmN1c3RvbU5h
dmlnYXRvclBsYXRmb3JtKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlQmVoYXZpb3JzLT5jdXN0b21O
YXZpZ2F0b3JQbGF0Zm9ybSgpOwogfQogCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCkBAIC0y
NTQsNyArMjU0LDcgQEAgLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqX3dlYnNpdGVQb2xpY2llczsKKyAgICByZXR1
cm4gKl93ZWJzaXRlQmVoYXZpb3JzOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlQmVoYXZpb3JzSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVCZWhhdmlvcnNJbnRlcm5h
bC5oCmluZGV4IDFiMTNmNDg3Y2RhODBmMjAxNjAwZTFlZmI0NGE2NjVhNDhmNjg0OTMuLjYyMTNk
N2FmOWQ3MzhhZTM2NTkwNjFhYjNkOTU5YmM2MDZjMmNmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVCZWhhdmlvcnNJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVCZWhhdmlvcnNJ
bnRlcm5hbC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQg
IkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2ltcG9ydCAiQVBJV2Vic2l0ZUJlaGF2aW9ycy5oIgog
I2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldLV2Vic2l0ZUJlaGF2aW9yc1ByaXZhdGUu
aCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnNpdGVQb2xpY2llcz4g
ewordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnNpdGVCZWhhdmlvcnM+
IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dlYnNpdGVCZWhhdmlvcnM7CiB9OwogCkBA
IC00MCw3ICs0MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJz
aXRlUG9saWNpZXM+IHsKIAogQGludGVyZmFjZSBXS1dlYnNpdGVCZWhhdmlvcnMgKCkgPFdLT2Jq
ZWN0PiB7CiBAcGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVQb2xp
Y2llcz4gX3dlYnNpdGVQb2xpY2llczsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpXZWJz
aXRlQmVoYXZpb3JzPiBfd2Vic2l0ZUJlaGF2aW9yczsKIH0KIAogQHByb3BlcnR5IChjbGFzcywg
bm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJzaXRlQmVoYXZpb3JzICpkZWZhdWx0QmVoYXZpb3Jz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CmluZGV4IGZhZDhjNDQxZTQ3ZjgzODA2YWM1YzI1MTkyYmZmYTlkODQ1Mzg3N2EuLmRiYTM3OWFl
NDVlYmNhZGYxYzI2ZWI3MmE3NzJkMDlkYTU3NDQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTU1MiwzMSArNTUyLDMxIEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgICAgIFJlZlB0cjxBUEk6
OldlYnNpdGVQb2xpY2llcz4gYXBpV2Vic2l0ZVBvbGljaWVzID0gW3dlYnNpdGVQb2xpY2llcyBi
ZWhhdmlvcnNdID8gW3dlYnNpdGVQb2xpY2llcyBiZWhhdmlvcnNdLT5fd2Vic2l0ZVBvbGljaWVz
LmdldCgpIDogbnVsbHB0cjsKLSAgICAgICAgaWYgKGFwaVdlYnNpdGVQb2xpY2llcykgewotICAg
ICAgICAgICAgaWYgKGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBhcGlXZWJzaXRlUG9saWNpZXMt
PndlYnNpdGVEYXRhU3RvcmUoKSkgeworICAgICAgICBSZWZQdHI8QVBJOjpXZWJzaXRlQmVoYXZp
b3JzPiBhcGlXZWJzaXRlQmVoYXZpb3JzID0gW3dlYnNpdGVQb2xpY2llcyBiZWhhdmlvcnNdID8g
W3dlYnNpdGVQb2xpY2llcyBiZWhhdmlvcnNdLT5fd2Vic2l0ZUJlaGF2aW9ycy5nZXQoKSA6IG51
bGxwdHI7CisgICAgICAgIGlmIChhcGlXZWJzaXRlQmVoYXZpb3JzKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IGFwaVdlYnNpdGVCZWhhdmlvcnMtPndlYnNpdGVE
YXRhU3RvcmUoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gc2Vzc2lvbklEID0gd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOwogICAgICAgICAgICAgICAg
IGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJfV0tXZWJzaXRlUG9s
aWNpZXMud2Vic2l0ZURhdGFTdG9yZSBtdXN0IGJlIG5pbCwgZGVmYXVsdCwgb3Igbm9uLXBlcnNp
c3RlbnQuIl07CiAgICAgICAgICAgICAgICAgaWYgKHN1YmZyYW1lTmF2aWdhdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIl9XS1dlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlIG11c3QgYmUg
bmlsIGZvciBzdWJmcmFtZSBuYXZpZ2F0aW9ucy4iXTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICghYXBpV2Vic2l0ZVBvbGljaWVzLT5jdXN0b21Vc2VyQWdlbnQoKS5pc051bGwoKSAm
JiBzdWJmcmFtZU5hdmlnYXRpb24pCisgICAgICAgICAgICBpZiAoIWFwaVdlYnNpdGVCZWhhdmlv
cnMtPmN1c3RvbVVzZXJBZ2VudCgpLmlzTnVsbCgpICYmIHN1YmZyYW1lTmF2aWdhdGlvbikKICAg
ICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRp
b24gZm9ybWF0OkAiX1dLV2Vic2l0ZVBvbGljaWVzLmN1c3RvbVVzZXJBZ2VudCBtdXN0IGJlIG5p
bCBmb3Igc3ViZnJhbWUgbmF2aWdhdGlvbnMuIl07Ci0gICAgICAgICAgICBpZiAoIWFwaVdlYnNp
dGVQb2xpY2llcy0+Y3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0oKS5pc051bGwoKSAmJiBzdWJmcmFt
ZU5hdmlnYXRpb24pCisgICAgICAgICAgICBpZiAoIWFwaVdlYnNpdGVCZWhhdmlvcnMtPmN1c3Rv
bU5hdmlnYXRvclBsYXRmb3JtKCkuaXNOdWxsKCkgJiYgc3ViZnJhbWVOYXZpZ2F0aW9uKQogICAg
ICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlv
biBmb3JtYXQ6QCJfV0tXZWJzaXRlUG9saWNpZXMuY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0gbXVz
dCBiZSBuaWwgZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLiJdOwogICAgICAgICB9CiAKICAgICAg
ICAgc3dpdGNoIChhY3Rpb25Qb2xpY3kpIHsKICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdzoKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3dJbk5ld1Byb2Nlc3M6Ci0gICAgICAgICAgICB0cnlJbnRlcmNlcHROYXZpZ2F0aW9uKFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94eSwgW2FjdGlvblBvbGljeSwgbG9jYWxM
aXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1v
dmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0oYm9vbCBpbnRlcmNlcHRlZE5hdmlnYXRpb24pIG11dGFi
bGUgeworICAgICAgICAgICAgdHJ5SW50ZXJjZXB0TmF2aWdhdGlvbihXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFthY3Rpb25Qb2xpY3ksIGxvY2FsTGlzdGVuZXIgPSBX
VEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJzaXRlQmVoYXZpb3JzID0gV1RGTW92ZShhcGlXZWJz
aXRlQmVoYXZpb3JzKV0oYm9vbCBpbnRlcmNlcHRlZE5hdmlnYXRpb24pIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGlmIChpbnRlcmNlcHRlZE5hdmlnYXRpb24pIHsKICAgICAgICAgICAgICAg
ICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51
c2Uod2Vic2l0ZVBvbGljaWVzLmdldCgpLCBhY3Rpb25Qb2xpY3kgPT0gX1dLTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID8gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dDo6WWVzIDogUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOworICAgICAgICAgICAg
ICAgIGxvY2FsTGlzdGVuZXItPnVzZSh3ZWJzaXRlQmVoYXZpb3JzLmdldCgpLCBhY3Rpb25Qb2xp
Y3kgPT0gX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID8gUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzIDogUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dDo6Tm8pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CkBA
IC01ODksMTMgKzU4OSwxMyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAg
bG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rOgot
ICAgICAgICAgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwg
d2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdl
YnNpdGVQb2xpY2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0aW1p
emVkTG9hZCkgeworICAgICAgICAgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxM
aXN0ZW5lciksIHdlYnNpdGVCZWhhdmlvcnMgPSBXVEZNb3ZlKGFwaVdlYnNpdGVCZWhhdmlvcnMp
XSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXplZExv
YWQpIHsKICAgICAgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBsb2NhbExpc3RlbmVyLT51c2Uod2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBsb2NhbExpc3RlbmVyLT51c2Uod2Vic2l0ZUJlaGF2aW9ycy5nZXQoKSk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggYmJmZjY4YjA4
YTRiNGQxOWU3ZjI1NzJiNDRkZDMwMTBlYmVhYjQ4My4uYzQ5NzYyNGY5YTcwZTI5MjU3MTk4ZTQz
N2U2MzhlNTZiYTA3NTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRl
ZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRh
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0
ZUJlaGF2aW9yc0RhdGE+JiYgd2Vic2l0ZUJlaGF2aW9ycykKIHsKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKSk7CiAKLSAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5j
b2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBtX3BhZ2UubG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBk
YXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlQmVoYXZpb3JzKSk7
CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYgd2Vic2l0ZUJlaGF2aW9ycykKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CiAKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgV2ViQ29yZTo6UmVzCiAgICAgaWYgKG5hdmlnYXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZp
Z2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRM
aXN0OjpZZXMpCiAgICAgICAgIG5hdmlnYXRpb24uZnJvbUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJ
ZGVudGlmaWVyKG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgbV9w
YWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIFdURk1vdmUocmVx
dWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlQmVoYXZpb3Jz
KSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0o
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBPcHRpb25hbDxXZWJz
aXRlQmVoYXZpb3JzRGF0YT4mJiB3ZWJzaXRlQmVoYXZpb3JzKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07
CiAgICAgfSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVC
YWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0ZXMpKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNr
Rm9yd2FyZEl0ZW0obmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5h
dmlnYXRpb24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0Jh
Y2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAq
bmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZUJlaGF2aW9ycykpLCBtX3Bh
Z2UucGFnZUlEKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oCmluZGV4IDFjZTk3ODBiZmYwMzA2MjBlMDk0MGVjZmFlYmFhMTQwZTMyZmNhYzYuLjE0ZDEz
NGQzY2RjYjFlOWYzYWZkNjlkYzQzYzY2NzczMzA2MjFkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUg
IldlYnNpdGVQb2xpY2llc0RhdGEuaCIKKyNpbmNsdWRlICJXZWJzaXRlQmVoYXZpb3JzRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzQsOSAr
NzQsOSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VBY2Nlc3NpYmlsaXR5VG9r
ZW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fYWNjZXNzaWJpbGl0eVRva2VuKTsgfQogI2VuZGlmCiAK
LSAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0
KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgZ29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBsb2FkRGF0YShB
UEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9y
c0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShB
UEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgT3B0aW9uYWw8V2Vic2l0
ZUJlaGF2aW9yc0RhdGE+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB2b2lkIHByb2Nl
c3NEaWRUZXJtaW5hdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCmluZGV4IDhlMzFmMDcwMTUzZmI2ZWFjZDRi
MGZkMmFjM2NkZDBkZmI0OWU5YzAuLjIxYzdlN2JmOTk4MDg4NzNhYTJiYjEyMGQ4NGFiZDQ4OWI2
MjFhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgi
CisjaW5jbHVkZSAiQVBJV2Vic2l0ZUJlaGF2aW9ycy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJT
YWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgorI2luY2x1
ZGUgIldlYnNpdGVCZWhhdmlvcnNEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTU1LDEzICs1NSwxMyBAQCB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6
ZGlkUmVjZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMoUmVmUHRyPFNhZmVCcm93cwogICAgICAgICBt
X3NhZmVCcm93c2luZ1dhcm5pbmcgPSBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpOwogfQog
Ci12b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50KQordm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OnVzZShB
UEk6OldlYnNpdGVCZWhhdmlvcnMqIGJlaGF2aW9ycywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KQogewogICAgIGlmIChtX3NhZmVCcm93
c2luZ1dhcm5pbmcpIHsKICAgICAgICAgaWYgKG1fcmVwbHkpCi0gICAgICAgICAgICBtX3JlcGx5
KFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlLCBwb2xpY2llcywgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgV1RGTW92ZSgqbV9zYWZlQnJvd3NpbmdXYXJuaW5nKSk7CisgICAgICAgICAg
ICBtX3JlcGx5KFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlLCBiZWhhdmlvcnMsIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUoKm1fc2FmZUJyb3dzaW5nV2FybmluZykpOwog
ICAgIH0gZWxzZSBpZiAoIW1fcG9saWN5UmVzdWx0KQotICAgICAgICBtX3BvbGljeVJlc3VsdCA9
IHt7IHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IH19OworICAgICAgICBt
X3BvbGljeVJlc3VsdCA9IHt7IGJlaGF2aW9ycywgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCB9fTsKIH0KIAogdm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmRvd25sb2FkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5LmgKaW5kZXggOWE2YmU5OWQ0MDczZWUxMDhiNGNiMjBmNzIxYzEwOGY3YzAxODhlOS4u
ZjM4ZDMzM2ZmOWQyMmVjOTUzMGFkYzE4NDkxZjFjOTYyMDllNGQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBBUEkg
ewotY2xhc3MgV2Vic2l0ZVBvbGljaWVzOworY2xhc3MgV2Vic2l0ZUJlaGF2aW9yczsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCwxNCArNDQsMTQgQEAgZW51bSBjbGFzcyBTaG91bGRF
eHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQgeyBObywgWWVzIH07CiBjbGFzcyBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpGcmFtZVBvbGljeUxpc3RlbmVyPiB7CiBwdWJsaWM6CiAKLSAgICB1c2luZyBSZXBseSA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQ
b2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3Np
bmdXYXJuaW5nPiYmKT47CisgICAgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlQmVoYXZpb3JzKiwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYpPjsKICAg
ICBzdGF0aWMgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gY3JlYXRlKFJlcGx5JiYg
cmVwbHksIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBleHBlY3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkoV1RG
TW92ZShyZXBseSksIGV4cGVjdCkpOwogICAgIH0KICAgICB+V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5KCk7CiAKLSAgICB2b2lkIHVzZShBUEk6OldlYnNpdGVQb2xpY2llcyogPSBudWxscHRy
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDo6Tm8pOworICAgIHZvaWQgdXNlKEFQSTo6V2Vic2l0ZUJlaGF2aW9ycyogPSBudWxscHRy
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDo6Tm8pOwogICAgIHZvaWQgZG93bmxvYWQoKTsKICAgICB2b2lkIGlnbm9yZSgpOwogICAg
IApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eShSZXBseSYmLCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQpOwog
Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4sIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ+PiBtX3BvbGljeVJlc3VsdDsKKyAgICBPcHRpb25h
bDxzdGQ6OnBhaXI8UmVmUHRyPEFQSTo6V2Vic2l0ZUJlaGF2aW9ycz4sIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQ+PiBtX3BvbGljeVJlc3VsdDsKICAgICBPcHRpb25hbDxSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4+IG1fc2FmZUJyb3dzaW5nV2FybmluZzsKICAgICBSZXBseSBtX3Jl
cGx5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXgg
N2JiODZiMWM4YmM2NjU5OWI0MGZiYjk2NTUwOTY0NmU2YTM5ZDcwOS4uYmQ4Yjk3NzAxNmZkNDAw
ODQ4OGExN2VhZWUxZWU2Nzc2ZjhkZGM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVCZWhhdmlvcnNEYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTE4NiwxMiArMTg2LDEyIEBAIHZvaWQgV2ViRnJh
bWVQcm94eTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBtX3RpdGxl
ID0gdGl0bGU7CiB9CiAKLVdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94
eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlciwg
U2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0IGV4cGVjdCkKK1dlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVCZWhhdmlvcnMqLCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBl
eHBlY3QpCiB7CiAgICAgaWYgKG1fYWN0aXZlTGlzdGVuZXIpCiAgICAgICAgIG1fYWN0aXZlTGlz
dGVuZXItPmlnbm9yZSgpOwotICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUG9saWN5
QWN0aW9uIGFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxT
YWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihhY3Rpb24sIHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpKTsKKyAgICBtX2FjdGl2
ZUxpc3RlbmVyID0gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpjcmVhdGUoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6V2Vic2l0ZUJl
aGF2aW9ycyogYmVoYXZpb3JzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVC
cm93c2luZ1dhcm5pbmcpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhY3Rp
b24sIGJlaGF2aW9ycywgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZShzYWZl
QnJvd3NpbmdXYXJuaW5nKSk7CiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBudWxscHRyOwog
ICAgIH0sIGV4cGVjdCk7CiAgICAgcmV0dXJuICptX2FjdGl2ZUxpc3RlbmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGFkOWFmOTI1OTM2NjgzN2Y4MTNkYjA2
MzUzOTQ3MzVkZjYwYzZlYmQuLjI3NDBhYmQyMDA5ZGVkYmY5MWI3NWQ5MmQ3YmNlMDIxNTIwMDk3
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTU1LDcgKzU1
LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGVudW0g
Y2xhc3MgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OwogZW51bSBjbGFzcyBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50Owotc3RydWN0IFdlYnNpdGVQb2xpY2llc0RhdGE7CitzdHJ1
Y3QgV2Vic2l0ZUJlaGF2aW9yc0RhdGE7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6
RGF0YSo+IERhdGFDYWxsYmFjazsKIApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJik7IC8vIGVnLiBhbmNob3Ig
bmF2aWdhdGlvbiwgc2Vzc2lvbiBzdGF0ZSBjaGFuZ2UuCiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRs
ZShjb25zdCBTdHJpbmcmKTsKIAotICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgc2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmKT4mJiwgU2hvdWxkRXhwZWN0U2Fm
ZUJyb3dzaW5nUmVzdWx0KTsKKyAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIHNldFVw
UG9saWN5TGlzdGVuZXJQcm94eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgQVBJOjpXZWJzaXRlQmVoYXZpb3JzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYpPiYmLCBTaG91bGRFeHBlY3RTYWZl
QnJvd3NpbmdSZXN1bHQpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZv
aWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSB7IG1fY29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyID0gV1RGTW92ZShjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyY2FiYTk3MTIyMjdk
YzZhODYxNjY2OTc4YWNlYTZlN2FkZGQzYzA0Li45ZDJiNjdmNGU2MzcxODEwYjNmY2NkZTQ0MTVm
ODU4Y2RmOTQwODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIkFQSVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUg
IkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIkFQSVdlYnNpdGVCZWhhdmlvcnMuaCIK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICByZXR1
cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYgd2Vic2l0ZUJlaGF2aW9ycykKIHsKICAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSAodWludDY0X3Qpc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKICAgICBsb2Fk
UGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXM7Ci0gICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBv
bGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOworICAgIGxvYWRQYXJhbWV0ZXJzLndl
YnNpdGVCZWhhdmlvcnMgPSBXVEZNb3ZlKHdlYnNpdGVCZWhhdmlvcnMpOwogICAgIGxvYWRQYXJh
bWV0ZXJzLmxvY2tIaXN0b3J5ID0gbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpOwogICAgIGxvYWRQ
YXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2Fy
ZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rv
cnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOwpAQCAtMTE4
Nyw3ICsxMTg3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICByZXR1cm4gbmF2aWdh
dGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVCZWhhdmlvcnNEYXRhPiYmIHdlYnNp
dGVCZWhhdmlvcnMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCkBAIC0xMjA1LDcgKzEyMDUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0
cmluZyA9IGJhc2VVUkw7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzOwogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEo
cHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwotICAg
IGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
KTsKKyAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlQmVoYXZpb3JzID0gV1RGTW92ZSh3ZWJzaXRl
QmVoYXZpb3JzKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJz
KTsKIAogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VV
UkwpOwpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKICAgICBh
dXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVsb2FkTmF2aWdhdGlv
bigpOwogCiAgICAgLy8gU3RvcmUgZGVjaXNpb24gdG8gcmVsb2FkIHdpdGhvdXQgY29udGVudCBi
bG9ja2VycyBvbiB0aGUgbmF2aWdhdGlvbiBzbyB0aGF0IHdlIGNhbiBsYXRlciBzZXQgdGhlIGNv
cnJlc3BvbmRpbmcKLSAgICAvLyBXZWJzaXRlUG9saWNpZXMgZmxhZyBpbiBXZWJQYWdlUHJveHk6
OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCkuCisgICAgLy8gV2Vic2l0ZUJlaGF2
aW9ycyBmbGFnIGluIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24oKS4KICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRp
c2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRVc2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIApAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQogCiBjbGFzcyBXZWJQ
YWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9saWN5
RGVjaXNpb25TZW5kZXI+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBTZW5kRnVuY3Rpb24gPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFBvbGljeUNoZWNrSWRlbnRpZmllciwgUG9saWN5QWN0aW9uLCB1
aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQsIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+KT47CisgICAgdXNpbmcgU2VuZEZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChQb2xpY3lDaGVja0lkZW50aWZpZXIsIFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2
aWdhdGlvbklELCBEb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4pPjsK
IAogICAgIHN0YXRpYyBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNyZWF0ZShQb2xpY3lDaGVj
a0lkZW50aWZpZXIgaWRlbnRpZmllciwgU2VuZEZ1bmN0aW9uJiYgc2VuZEZ1bmN0aW9uKQogICAg
IHsKQEAgLTI3MzIsMjEgKzI3MzIsMjEgQEAgcHJpdmF0ZToKICAgICBQb2xpY3lDaGVja0lkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpXZWJzaXRl
UG9saWNpZXMqIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgQVBJOjpXZWJzaXRlQmVoYXZpb3JzKiBiZWhhdmlvcnMsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuY29weVJlZigpOwotICAg
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRhdGE7Ci0gICAgaWYgKHBvbGljaWVzKSB7
Ci0gICAgICAgIGRhdGEgPSBwb2xpY2llcy0+ZGF0YSgpOwotICAgICAgICBpZiAocG9saWNpZXMt
PndlYnNpdGVEYXRhU3RvcmUoKSAmJiAmcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUucHRyKCkpIHsKLSAgICAgICAgICAg
IHdlYnNpdGVEYXRhU3RvcmUgPSBwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CisgICAgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+IGRhdGE7Cisg
ICAgaWYgKGJlaGF2aW9ycykgeworICAgICAgICBkYXRhID0gYmVoYXZpb3JzLT5kYXRhKCk7Cisg
ICAgICAgIGlmIChiZWhhdmlvcnMtPndlYnNpdGVEYXRhU3RvcmUoKSAmJiAmYmVoYXZpb3JzLT53
ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3Jl
LnB0cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gYmVoYXZpb3JzLT53ZWJz
aXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICAgICAgICAgIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgPSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpZZXM7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobmF2aWdhdGlvbiAmJiAhbmF2aWdhdGlvbi0+
dXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmICghZGF0YSkKLSAg
ICAgICAgICAgIGRhdGEgPSBXZWJzaXRlUG9saWNpZXNEYXRhIHsgfTsKKyAgICAgICAgICAgIGRh
dGEgPSBXZWJzaXRlQmVoYXZpb3JzRGF0YSB7IH07CiAgICAgICAgIGRhdGEtPmNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTI4MDcsNyArMjgwNyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCBBCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIFdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYgd2Vi
c2l0ZUJlaGF2aW9ycywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgV2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9s
aWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0KTsKQEAgLTI4
MzMsNyArMjgzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICAgICAgbV9kZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPSB7IH07CiAgICAgfQogCi0gICAgc2VuZGVyLT5zZW5k
KGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93
bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBzZW5kZXItPnNlbmQoYWN0
aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9h
ZElELCBXVEZNb3ZlKHdlYnNpdGVCZWhhdmlvcnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9w
dGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250
ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yODY5LDcgKzI4NjksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRAogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+JiYgc3VzcGVuZGVkUGFnZVByb3h5LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nl
c3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4m
JiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2Vzcywg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4mJiB3ZWJzaXRlQmVoYXZpb3JzKQogewog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51
aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5h
dmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKQEAg
LTI4ODksNyArMjg4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25J
bk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICAgICAgbV9w
YWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBpdGVtLT51
cmwoKSk7CiAKLSAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0o
bmF2aWdhdGlvbiwgKml0ZW0sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24sICppdGVtLCBX
VEZNb3ZlKHdlYnNpdGVCZWhhdmlvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjkwMiw5ICsyOTAyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICAvLyBGSVhNRTog
V29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdh
dGUsIGV0YwogICAgIEFTU0VSVCghbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHko
KSk7CiAgICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi5zdWJzdGl0dXRl
RGF0YSgpKQotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwg
eyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50
LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNv
ZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5n
ZXQoKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgbV9wcm92aXNpb25hbFBh
Z2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgp
LCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVU
eXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBz
dWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZUJlaGF2aW9ycykp
OwogICAgIGVsc2UKLSAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFs
U2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7
IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92
ZSh3ZWJzaXRlQmVoYXZpb3JzKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojppc1BhZ2VPcGVu
ZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpIGNvbnN0CkBAIC00NTY3LDEwICs0
NTY3LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgaWYgKCFtX3ByZWZlcmVuY2Vz
LT5zYWZlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHNob3VsZEV4cGVjdFNhZmVCcm93c2lu
Z1Jlc3VsdCA9IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm87CiAKLSAgICBhdXRv
IGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwg
c2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uXSAoUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJv
d3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgeworICAgIGF1dG8g
bGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBz
ZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVCZWhhdmlvcnMqIGJlaGF2aW9ycywgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJy
b3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBtdXRhYmxlIHsKIAotICAgICAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0
ZWRUaGlzLmNvcHlSZWYoKSwgZnJhbWUgPSBmcmFtZS5jb3B5UmVmKCksIHNlbmRlciA9IFdURk1v
dmUoc2VuZGVyKSwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIHBvbGljaWVzLmdldCgpLCBXVEZNb3Zl
KHNlbmRlcikpOworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgZnJhbWUgPSBmcmFtZS5jb3B5UmVm
KCksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdh
dGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGJlaGF2aW9ycyA9IG1ha2VSZWZQ
dHIoYmVoYXZpb3JzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAg
ICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBu
YXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgYmVo
YXZpb3JzLmdldCgpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICB9OwogCiAgICAgICAgIGlm
ICghbV9wYWdlQ2xpZW50KQpAQCAtNDc0MSw4ICs0NzQxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cmkKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0Vf
Q0hFQ0tfVVJMKG1fcHJvY2VzcywgcmVxdWVzdC51cmwoKSk7CiAKLSAgICBhdXRvIGxpc3RlbmVy
ID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSURd
IChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVm
UHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBu
dWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQ
b2xpY2llcyBnbyBhd2F5LgorICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRF0gKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6V2Vic2l0ZUJlaGF2aW9ycyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CisgICAgICAgIC8vIEZJWE1FOiBB
c3NlcnQgdGhlIEFQSTo6V2Vic2l0ZUJlaGF2aW9ycyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xp
ZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2Fm
ZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCkBAIC00NzkwLDggKzQ3
OTAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZp
Z2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtl
UmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdh
dGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3MgPSBwcm9jZXNzLmNv
cHlSZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nKSBt
dXRhYmxlIHsKLSAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVy
VXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCisgICAgICAgIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlS
ZWYoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZUJlaGF2aW9ycyos
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0
YWJsZSB7CisgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZUJlaGF2aW9y
cyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJV
c2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2lu
Z1dhcm5pbmcpOwogCkBAIC03Mzg2LDkgKzczODYsOSBAQCBib29sIFdlYlBhZ2VQcm94eTo6d2ls
bEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMoKSBjb25zdAogICAgIHJldHVybiAhbV9jYW5T
aG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVXZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xp
Y2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJzaXRlQmVoYXZpb3JzKFdlYnNpdGVC
ZWhhdmlvcnNEYXRhJiYgd2Vic2l0ZUJlaGF2aW9ycykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVXZWJzaXRlQmVoYXZpb3JzKHdlYnNpdGVCZWhhdmlvcnMpLCBtX3BhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92
aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDRjMDVjMjQ3MjM3YzQ4OWNiODNjYjlkZDBlYjIyOGZiY2Y4NWRhODguLmYyMTYxZTYw
YzgyMTE0ZmE2NzJmYzEzYzVlMzgzMzlmZDFjZDMxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiV2ViVW5kb1N0ZXBJRC5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKKyNp
bmNsdWRlICJXZWJzaXRlQmVoYXZpb3JzRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3IuaD4KQEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYpOworICAgIHZvaWQgdXBk
YXRlV2Vic2l0ZUJlaGF2aW9ycyhXZWJzaXRlQmVoYXZpb3JzRGF0YSYmKTsKIAogICAgIGJvb2wg
Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBAIC0xMDA2LDggKzEw
MDYsOCBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBl
bnVtIGNsYXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9
OwotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IEFQSTo6TmF2aWdhdGlvbiosIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKLSAgICB2b2lkIHJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYsIEFQSTo6V2Vi
c2l0ZVBvbGljaWVzKiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRp
b24qLCBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4mJiwgUmVmPFBvbGljeURlY2lzaW9u
U2VuZGVyPiYmLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgQVBJOjpXZWJzaXRlQmVoYXZpb3Jz
KiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRS
ZW1vdmVkSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAK
QEAgLTE0ODAsOCArMTQ4MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lk
IGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7Ci0gICAg
dm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVC
ZWhhdmlvcnNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4mJiA9IFdURjo6
bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZy
YW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCkBAIC0yMDAxLDcgKzIwMDEsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9
IHsgfSk7CiAKLSAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5h
dmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4mJik7CiAKICAgICB2b2lkIHNldE5l
ZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAgICAgdm9pZCB1cGRhdGVGb250QXR0cmlidXRlc0Fm
dGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYTE3ZmI0M2NlNzM2NzkwZWQxMWIyODVmMGNl
NWY2NzgxOTU0ZGJkLi4xY2M5M2NiYzhjNmY2MDlkZjBkNzMzMjFkNzFkYzFhZmVmZGZlYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xMDQsNyArMTA0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFBv
bGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50
NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVj
dFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNv
cmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwg
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBv
bGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
IC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0
X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9u
YWw8V2ViS2l0OjpXZWJzaXRlQmVoYXZpb3JzRGF0YT4gd2Vic2l0ZUJlaGF2aW9ycykgRGVsYXll
ZAogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVj
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxl
bWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ODdjMTU3YjQxZDRlOWM1MzkwZDI4MGE2
MjYwZDY2MzhmNjI3ODZiLi5iODkzMGZmMzFiZGJjYWU4MTMyM2NjMDhiMDBkZjk2YTViMDUwYTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM0NDksNyArMzQ0OSw3IEBACiAJCTVDMEIxNzdFMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3
b3JrU29ja2V0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtTb2NrZXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3N0Yx
RTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3ODAxRTdDODg4MDAwRTkxMjNDIC8qIFdlYlNv
Y2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJTb2NrZXRT
dHJlYW0ubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxMzAyNEExRkUzNDFBNzAwMEQ5
QjMxIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzEzMDI0QTFGRTM0MUE3MDAwRDlCMzEgLyogV2Vic2l0ZUJlaGF2aW9yc0RhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUJlaGF2aW9yc0RhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI2RTIxQzIzRjgwNTAwRDQxMTgzIC8qIE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI2RTMxQzIzRjgwNTAwRDQxMTgzIC8qIE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNkU0MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJv
Y2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDc0
LDcgKzM0NzQsNyBAQAogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25p
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBCOTFDRjcg
LyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBv
bGljaWVzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJz
aXRlUG9saWNpZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQUVB
OEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVCZWhhdmlvcnNEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVCZWhhdmlvcnNEYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NkMwQUMyMUI3MTk4QjAwQkM1OTkxIC8qIFdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NkMwQUQyMUI3MTk4QzAwQkM1OTkxIC8qIFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNDZDMEFFMjFCNzFBRTIwMEJDNTk5MSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM0OTcsOCArMzQ5Nyw4IEBACiAJCTVDODVDNzg2MUMzRjIzQzUwMDYx
QTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM4OURGNTYyMUFGNjFGRjAwNDY0NUU4IC8qIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM4QkM3OTYyMThDQjU4QTAwODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlci5hc3Nl
dGNhdGFsb2c7IG5hbWUgPSBTYWZlQnJvd3NpbmcueGNhc3NldHM7IHBhdGggPSBSZXNvdXJjZXMv
U2FmZUJyb3dzaW5nLnhjYXNzZXRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzhE
RDM3QzFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVdlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBv
bGljaWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnNp
dGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOEREMzdDMUZF
NDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlQmVoYXZpb3JzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSVdlYnNpdGVCZWhhdmlvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVCZWhhdmlv
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2Vic2l0ZUJl
aGF2aW9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOEREMzdGMUZFNDUx
OTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlR
dWlyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlQXV0b3BsYXlR
dWlyay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4MDFERjdGMDU1MDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTIxMSwxMCArNTIxMSwxMCBAQAogCQkJCTM3NjA4ODFEMTUwNDEzRTkwMEZDODJD
NyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLywKIAkJCQk1QzhERDM3RjFGRTQ1MTkyMDBGMkE1NTYg
LyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggKi8sCiAJCQkJNUM4REQzODExRkU0NTVDQTAwRjJB
NTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8sCisJCQkJNUMzQUVBOEUxRkUxRjFERjAw
MjMxOEQzIC8qIFdlYnNpdGVCZWhhdmlvcnNEYXRhLmNwcCAqLywKKwkJCQk1QzEzMDI0QTFGRTM0
MUE3MDAwRDlCMzEgLyogV2Vic2l0ZUJlaGF2aW9yc0RhdGEuaCAqLywKIAkJCQk1MTFGN0QzRjFF
QjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwICovLAogCQkJ
CTUxMUY3RDQwMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5o
ICovLAotCQkJCTVDM0FFQThFMUZFMUYxREYwMDIzMThEMyAvKiBXZWJzaXRlUG9saWNpZXNEYXRh
LmNwcCAqLywKLQkJCQk1QzEzMDI0QTFGRTM0MUE3MDAwRDlCMzEgLyogV2Vic2l0ZVBvbGljaWVz
RGF0YS5oICovLAogCQkJCTBFREU4NTAyMjAwNEU3NDkwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQ
b2xpY3kuaCAqLywKIAkJCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8sCkBAIC03Njc4LDEyICs3Njc4LDEyIEBACiAJCQkJ
N0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKIAkJCQkyRDg3
ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovLAogCQkJCTJE
ODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAorCQkJCTVD
OEREMzdEMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlQmVoYXZpb3JzLmNwcCAqLywKKwkJ
CQk1QzhERDM3QzFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZUJlaGF2aW9ycy5oICovLAog
CQkJCTFBRTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5jcHAg
Ki8sCiAJCQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3Jk
LmggKi8sCiAJCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3Rv
cmUuY3BwICovLAogCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0
YVN0b3JlLmggKi8sCi0JCQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQ
b2xpY2llcy5jcHAgKi8sCi0JCQkJNUM4REQzN0MxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNp
dGVQb2xpY2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5k
b3dGZWF0dXJlcy5jcHAgKi8sCiAJCQkJMUE2NTYzRTMxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdp
bmRvd0ZlYXR1cmVzLmggKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggNzM2OTQ5MTE5MzBkMjU3ZGU5NWIyY2RjOTllMmQ5NDAzMWQxM2E3NC4uODQ0M2E2MmQz
YjFiYjU5MTVlYjRkNGRkNTZlOGNjMDM5YTZlODQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKKyNpbmNsdWRlICJX
ZWJzaXRlQmVoYXZpb3JzRGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3Qu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2FjaGVkRnJhbWUuaD4KQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZp
Z2F0aQogICAgICAgICBmcmFtZU5hbWUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRM
b2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXZWJzaXRlQmVoYXZpb3JzRGF0
YSYmIHdlYnNpdGVCZWhhdmlvcnMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47CkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YXBwbHlU
b0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG8KICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJzaXRlUG9saWNpZXNE
YXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9j
dW1lbnRMb2FkZXIpOworICAgIFdlYnNpdGVCZWhhdmlvcnNEYXRhOjphcHBseVRvRG9jdW1lbnRM
b2FkZXIoV1RGTW92ZSh3ZWJzaXRlQmVoYXZpb3JzKSwgKmRvY3VtZW50TG9hZGVyKTsKIH0KIAog
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwKQEAgLTkwNywxMiArOTA3LDEyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
CiAgICAgICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50aWZp
ZXI7CiAgICAgICAgIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb247CiAgICAgICAgIERvd25sb2Fk
SUQgZG93bmxvYWRJRDsKLSAgICAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vi
c2l0ZVBvbGljaWVzOworICAgICAgICBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4gd2Vi
c2l0ZUJlaGF2aW9yczsKIAogICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJh
bWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoY29yZUZyYW1lKSwKICAgICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBk
b2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9u
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAogICAgICAgICAgICAgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHJlc3BvbnNlSWRlbnRp
ZmllciwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQ
b2xpY2llcykpKSB7CisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocmVzcG9uc2VJZGVudGlmaWVyLCBw
b2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZUJlaGF2aW9y
cykpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgcmVxdWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0s
IHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggOGY1NGM1Y2ZlNTc3MWIyOWRlOTQzMDJkNmE1NzRmZjViMGRmZTQ0Ny4u
ODU0NDBlODI4ODA3ZWU2NGM2YjQ5ZjQxMDkwYjUyYjg2MzRkZDgyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFBsdWdpblZpZXc7CiBjbGFzcyBXZWJGcmFtZTsKLXN0cnVjdCBXZWJzaXRlUG9saWNpZXNE
YXRhOworc3RydWN0IFdlYnNpdGVCZWhhdmlvcnNEYXRhOwogICAgIAogY2xhc3MgV2ViRnJhbWVM
b2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
cHVibGljOgpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVzZUljb25M
b2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpIHsgbV91c2VJY29uTG9hZGlu
Z0NsaWVudCA9IHVzZUljb25Mb2FkaW5nQ2xpZW50OyB9CiAKLSAgICB2b2lkIGFwcGx5VG9Eb2N1
bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOworICAgIHZvaWQgYXBwbHlUb0RvY3Vt
ZW50TG9hZGVyKFdlYnNpdGVCZWhhdmlvcnNEYXRhJiYpOwogCiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggYjk2MDU5ZmY2MzMzZjVhYTJmNDUzYzdkZjU4NWM0NDE2Yjk1NzcwZS4u
ODFlYTVmNTk1NzUyODg3OWZmNTkyMjhiYTUxYzVmOWIxODc1MjI5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDQsNyArNDQsNyBAQAog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgi
CisjaW5jbHVkZSAiV2Vic2l0ZUJlaGF2aW9yc0RhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC0yNTYsNyArMjU2LDcgQEAg
dm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKCkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJzaXRlQmVoYXZpb3JzRGF0YT4mJiB3ZWJzaXRlQmVo
YXZpb3JzKQogewogICAgIGlmICghbV9jb3JlRnJhbWUgfHwgIW1fcG9saWN5TGlzdGVuZXJJRCB8
fCBsaXN0ZW5lcklEICE9IG1fcG9saWN5TGlzdGVuZXJJRCB8fCAhbV9wb2xpY3lGdW5jdGlvbikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjY5LDggKzI2OSw4IEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lD
aGVjCiAKICAgICBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAotICAgIGlmIChmb3JOYXZp
Z2F0aW9uQWN0aW9uICYmIG1fZnJhbWVMb2FkZXJDbGllbnQgJiYgd2Vic2l0ZVBvbGljaWVzKQot
ICAgICAgICBtX2ZyYW1lTG9hZGVyQ2xpZW50LT5hcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92
ZSgqd2Vic2l0ZVBvbGljaWVzKSk7CisgICAgaWYgKGZvck5hdmlnYXRpb25BY3Rpb24gJiYgbV9m
cmFtZUxvYWRlckNsaWVudCAmJiB3ZWJzaXRlQmVoYXZpb3JzKQorICAgICAgICBtX2ZyYW1lTG9h
ZGVyQ2xpZW50LT5hcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSgqd2Vic2l0ZUJlaGF2aW9y
cykpOwogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsKICAgICBpZiAobmF2
aWdhdGlvbklEKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAppbmRleCA3MWIzOGY2MWFiMTk1MDU1YjQ0N2U4N2JmZmY3ZTk2NDA2ZGVlYTljLi5jZGY0ZjI1
ZjQyNDYwZDIzMDk3YjIyOGI5ZjI5N2M5MGVlOWVhYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBj
bGFzcyBXZWJQYWdlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7Ci1zdHJ1Y3QgV2Vic2l0ZVBvbGlj
aWVzRGF0YTsKK3N0cnVjdCBXZWJzaXRlQmVoYXZpb3JzRGF0YTsKIAogY2xhc3MgV2ViRnJhbWUg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVGcmFtZT4g
ewogcHVibGljOgpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGb3JO
YXZpZ2F0aW9uQWN0aW9uIHsgTm8sIFllcyB9OwogICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlz
dGVuZXIoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYsIEZvck5hdmlnYXRpb25BY3Rpb24pOwogICAgIHZvaWQgaW52YWxpZGF0ZVBv
bGljeUxpc3RlbmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24odWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwg
T3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYpOwogCiAgICAgdWludDY0X3Qgc2V0VXBX
aWxsU3VibWl0Rm9ybUxpc3RlbmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBjb250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzhjMjFlYzhjMThlMjJhOTNjZDM3
MTA1NzE0YTBjN2UzMDZhMjZkMy4uYjFjNmQzMDZiYTBmMjhjMWQ5ZWM2YmI4NTA2YWZlYTRiZTU3
NTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFt
ZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIg
c3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5h
dmlnYXRpb25JRDsKLSAgICBtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKGxvYWRQ
YXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyk7CisgICAgbV9wZW5kaW5nV2Vic2l0ZUJlaGF2aW9y
cyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZUJlaGF2aW9ycyk7CiAKICAgICBtX3Nh
bmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgV1RGTW92
ZShsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAKQEAgLTE0NjcsMTUg
KzE0NjcsMTUgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxv
YWRQYXJhbWV0ZXJzKQogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1
ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdO
YXZpZ2F0aW9uSUQpOwotICAgIEFTU0VSVCghbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzKTsKKyAg
ICBBU1NFUlQoIW1fcGVuZGluZ1dlYnNpdGVCZWhhdmlvcnMpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNv
bnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQg
V2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVCZWhhdmlvcnNEYXRhPiYmIHdl
YnNpdGVCZWhhdmlvcnMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBt
X3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7Ci0gICAgbV9wZW5kaW5nV2Vic2l0
ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOworICAgIG1fcGVuZGluZ1dlYnNp
dGVCZWhhdmlvcnMgPSBXVEZNb3ZlKHdlYnNpdGVCZWhhdmlvcnMpOwogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoYmFzZVVSTCk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShV
UkwoKSwgTUlNRVR5cGUsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGluZ05hbWUpOwpAQCAt
MTQ5Nyw3ICsxNDk3LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1ldGVycyYm
IGxvYWRQYXJhbWV0ZXJzKQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRh
LmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBVUkwgYmFzZVVSTCA9
IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkRGF0
YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGlj
aWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9h
ZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
dXNlckRhdGEpOworICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQs
IGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2Fk
UGFyYW1ldGVycy53ZWJzaXRlQmVoYXZpb3JzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2Fk
UGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJM
LCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omxv
YWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCkBAIC0xNTA5
LDcgKzE1MDksNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0
ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0g
bG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8g
VVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJM
U3RyaW5nKTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwg
bG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlz
aW9uYWxMb2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRC
dWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdO
YW1lLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwor
ICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0
ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53
ZWJzaXRlQmVoYXZpb3JzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5N
SU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCB1bnJlYWNoYWJs
ZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoeyB9
KTsKIH0KIApAQCAtMTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW4KICAg
ICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tGb3J3YXJkSXRl
bUlELCBGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2Fy
ZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiBiYWNrRm9yd2FyZEl0ZW1JRCwgRnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9w
dGlvbmFsPFdlYnNpdGVCZWhhdmlvcnNEYXRhPiYmIHdlYnNpdGVCZWhhdmlvcnMpCiB7CiAgICAg
U2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKQEAgLTE1ODcsNyArMTU4Nyw3
IEBAIHZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ05hdmln
YXRpb25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwotICAg
IG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKTsKKyAg
ICBtX3BlbmRpbmdXZWJzaXRlQmVoYXZpb3JzID0gV1RGTW92ZSh3ZWJzaXRlQmVoYXZpb3JzKTsK
IAogICAgIG1fcGFnZS0+Z29Ub0l0ZW0oKml0ZW0sIGJhY2tGb3J3YXJkVHlwZSwgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkKTsKIH0KQEAgLTMxNTMsMTIgKzMxNTMsMTIgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fcGFnZS0+
c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRvd25sb2FkSUQsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93
bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYgd2Vic2l0ZUJlaGF2aW9y
cykKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJh
bWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBpZGVudGlmaWVyLCBwb2xp
Y3lBY3Rpb24sIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNp
ZXMpKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlk
ZW50aWZpZXIsIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbklELCBkb3dubG9hZElELCBXVEZNb3Zl
KHdlYnNpdGVCZWhhdmlvcnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb250aW51ZVdpbGxTdWJt
aXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpCkBAIC02MDA1LDcg
KzYwMDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmZsdXNoUGVuZGluZ0VkaXRvclN0YXRlVXBkYXRlKCkK
ICAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVX
ZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xpY2llcykKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZUJlaGF2aW9ycyhXZWJzaXRlQmVoYXZpb3JzRGF0YSYm
IHdlYnNpdGVCZWhhdmlvcnMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsK
QEAgLTYwMTQsNyArNjAxNCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVz
KFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMpCiAgICAgaWYgKCFkb2N1bWVu
dExvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBw
bHlUb0RvY3VtZW50TG9hZGVyKFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgKmRvY3VtZW50TG9h
ZGVyKTsKKyAgICBXZWJzaXRlQmVoYXZpb3JzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdU
Rk1vdmUod2Vic2l0ZUJlaGF2aW9ycyksICpkb2N1bWVudExvYWRlcik7CiAgICAgCiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIG1fcGFnZS0+dXBkYXRlTWVkaWFFbGVtZW50UmF0ZUNoYW5nZVJlc3Ry
aWN0aW9ucygpOwpAQCAtNjA2OCw5ICs2MDY4LDkgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQ
YWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmUK
ICAgICAgICAgICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IDA7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAobV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzKSB7Ci0gICAgICAgICAgICBXZWJzaXRl
UG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSgqbV9wZW5kaW5nV2Vi
c2l0ZVBvbGljaWVzKSwgZG9jdW1lbnRMb2FkZXIpOwotICAgICAgICAgICAgbV9wZW5kaW5nV2Vi
c2l0ZVBvbGljaWVzID0gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAobV9wZW5kaW5nV2Vic2l0
ZUJlaGF2aW9ycykgeworICAgICAgICAgICAgV2Vic2l0ZUJlaGF2aW9yc0RhdGE6OmFwcGx5VG9E
b2N1bWVudExvYWRlcihXVEZNb3ZlKCptX3BlbmRpbmdXZWJzaXRlQmVoYXZpb3JzKSwgZG9jdW1l
bnRMb2FkZXIpOworICAgICAgICAgICAgbV9wZW5kaW5nV2Vic2l0ZUJlaGF2aW9ycyA9IFdURjo6
bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDBiYzY0MDZlNmIzZjRmYmMxNzQ0MDQyNTVjZmYyNTcxYjA4
M2JmZDQuLjVmNTE5Mjk0ODU1Yzc5ZWE2NThhYzZiNGE4MTNhZGJhMTJiM2QzZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTUyLDcgKzUyLDcgQEAK
ICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVW5kb1N0ZXBJ
RC5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIldl
YnNpdGVQb2xpY2llc0RhdGEuaCIKKyNpbmNsdWRlICJXZWJzaXRlQmVoYXZpb3JzRGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlv
bmFyeVBvcHVwSW5mby5oPgpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0cnVjdCBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlOwogc3RydWN0IFdlYlNlbGVjdGlvbkRhdGE7Ci1zdHJ1Y3QgV2Vi
c2l0ZVBvbGljaWVzRGF0YTsKK3N0cnVjdCBXZWJzaXRlQmVoYXZpb3JzRGF0YTsKIAogdXNpbmcg
U25hcHNob3RPcHRpb25zID0gdWludDMyX3Q7CiB1c2luZyBXS0V2ZW50TW9kaWZpZXJzID0gdWlu
dDMyX3Q7CkBAIC0xMjM4LDcgKzEyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJj
ZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAg
dm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGlu
Z1VSTCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNs
b3NlKCk7CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFsdGVy
bmF0ZUhUTUwoTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVs
b2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYpOwotICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYpOworICAgIHZvaWQgZ29U
b0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVCZWhhdmlvcnNE
YXRhPiYmKTsKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQg
c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRlSXNJ
bldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwpAQCAtMTM0NCw3ICsxMzQ0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBEb3dubG9hZElEJiwgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+JiYpOwogICAg
IHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CkBAIC0xNDUzLDcg
KzE0NTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAot
ICAgIHZvaWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7Cisg
ICAgdm9pZCB1cGRhdGVXZWJzaXRlQmVoYXZpb3JzKFdlYnNpdGVCZWhhdmlvcnNEYXRhJiYpOwog
CiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOwogICAgIHZvaWQg
Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CkBA
IC0xODI3LDcgKzE4MjcsNyBAQCBwcml2YXRlOgogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5
IG1fdXNlckFjdGl2aXR5SHlzdGVyZXNpczsKIAogICAgIHVpbnQ2NF90IG1fcGVuZGluZ05hdmln
YXRpb25JRCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBtX3BlbmRp
bmdXZWJzaXRlUG9saWNpZXM7CisgICAgT3B0aW9uYWw8V2Vic2l0ZUJlaGF2aW9yc0RhdGE+IG1f
cGVuZGluZ1dlYnNpdGVCZWhhdmlvcnM7CiAKICAgICBib29sIG1fbWFpbkZyYW1lUHJvZ3Jlc3ND
b21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1v
dmVFdmVudHMgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBkMjQ4NGE1YTE1NDU5N2M3MmFmNjc3NzQ0
ZmM4NDJmYWZmOTg0MTc0Li45Y2ExMmRhNWQ5OWNkM2I4OTM3NDFiZDA4NDA5MGVlMjk4MTk3OGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTE1MSw3ICsxNTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTY3JvbGxCeSh1aW50MzJfdCBzY3JvbGxEaXJlY3Rpb24sIHVpbnQz
Ml90IHNjcm9sbEdyYW51bGFyaXR5KQogICAgIENlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEo
KQogCi0gICAgR29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlELCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNp
dGVQb2xpY2llcykKKyAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJ
dGVtSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlw
ZSwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZUJlaGF2aW9yc0Rh
dGE+IHdlYnNpdGVCZWhhdmlvcnMpCiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAog
ICAgIExvYWRVUkxJbkZyYW1lKFVSTCB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0xNzMsOCAr
MTczLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBEaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKLSAgICBVcGRhdGVXZWJzaXRlUG9saWNpZXMoc3Ry
dWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNpZXMpCi0gICAgRGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxX
ZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykKKyAgICBVcGRhdGVX
ZWJzaXRlQmVoYXZpb3JzKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVCZWhhdmlvcnNEYXRhIHdlYnNp
dGVCZWhhdmlvcnMpCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVCZWhhdmlvcnNEYXRhPiB3ZWJzaXRl
QmVoYXZpb3JzKQogICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366002</attachid>
            <date>2019-03-26 14:48:13 -0700</date>
            <delta_ts>2019-03-29 15:27:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196167-20190326144813.patch</filename>
            <type>text/plain</type>
            <size>140395</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE0NzZkN2UyMWNmZDUzNjQ4
YzJkM2VjMmM5MTliNTUyNDg2MzQ2OWQuLjcyMDUwYjc0MTc0NjNmY2I5YmZlZTYyODg4MTlkZjkw
MzEwYTI5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIxIEBACisyMDE5LTAzLTIyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBSZW5h
bWUgQVBJOjpXZWJzaXRlUG9saWNpZXMgdG8gQVBJOjpXZWJwYWdlUHJlZmVyZW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjE2NworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDcyMjgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBXZWJzaXRlUG9saWNpZXMgdG8gV2VicGFnZVBy
ZWZlcmVuY2VzLCBhbmQgV2Vic2l0ZVBvbGljaWVzRGF0YSB0byBXZWJwYWdlUHJlZmVyZW5jZXNE
YXRhLiBUaGlzIG1hdGNoZXMKKyAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMsIHdoaWNoIGlz
IHRoZSBuZXcgQVBJIHZlcnNpb24gb2YgX1dLV2Vic2l0ZVBvbGljaWVzLiBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2Jq
ZWN0KToKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9h
ZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL1dlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAuCisgICAgICAg
IChXZWJLaXQ6OldlYnBhZ2VQcmVmZXJlbmNlc0RhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnBhZ2VQcmVmZXJlbmNlc0RhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnBhZ2VQcmVmZXJlbmNlc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcik6CisgICAg
ICAgICogU2hhcmVkL1dlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaC4KKyAgICAgICAgKiBTaGFyZWQv
V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg6CisKKyAgICAgICAgVW5pZmllZCBzb3VyY2VzIGJ1
aWxkIGZpeC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
cGFnZVByZWZlcmVuY2VzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwLgorICAgICAgICAoQVBJOjpXZWJwYWdlUHJlZmVy
ZW5jZXM6OldlYnBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChBUEk6OldlYnBhZ2VQcmVmZXJl
bmNlczo6fldlYnBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChBUEk6OldlYnBhZ2VQcmVmZXJl
bmNlczo6c2V0V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChBUEk6OldlYnBhZ2VQcmVmZXJl
bmNlczo6ZGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJwYWdlUHJlZmVyZW5j
ZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAg
ICh1c2VXaXRoUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlVXBkYXRlV2Vic2l0ZVBvbGljaWVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoV0tXZWJzaXRlUG9s
aWNpZXNHZXRUeXBlSUQpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3VwZGF0ZVdlYnNpdGVQb2xpY2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIGluaXRd
KToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5jZXMgc2V0Q29udGVudEJsb2NrZXJzRW5h
YmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5jZXMgY29udGVudEJsb2NrZXJz
RW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBzZXRBbGxvd2VkQXV0
b3BsYXlRdWlya3M6XSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG93ZWRB
dXRvcGxheVF1aXJrc10pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBzZXRBdXRv
cGxheVBvbGljeTpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5jZXMgYXV0b3BsYXlQ
b2xpY3ldKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5jZXMgc2V0RGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3k6XSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZl
cmVuY2VzIGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5XSk6CisgICAgICAg
ICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIHNldFBvcFVwUG9saWN5Ol0pOgorICAgICAgICAoLVtX
S1dlYnBhZ2VQcmVmZXJlbmNlcyBwb3BVcFBvbGljeV0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyBjdXN0b21IZWFkZXJGaWVsZHNdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgc2V0Q3VzdG9tSGVhZGVyRmllbGRzOl0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyB3ZWJzaXRlRGF0YVN0b3JlXSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZl
cmVuY2VzIHNldFdlYnNpdGVEYXRhU3RvcmU6XSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZl
cmVuY2VzIHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgY3VzdG9tVXNlckFnZW50XSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2Vz
IHNldEN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczpdKToKKyAg
ICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5jZXMgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFz
U2l0ZVNwZWNpZmljUXVpcmtzXSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIHNl
dEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOl0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybV0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eTo6dXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnb1RvQmFja0Zv
cndhcmRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlV2VicGFnZVByZWZlcmVu
Y2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXZWJzaXRlUG9saWNpZXMpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMDMtMjIgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdIElu
dHJvZHVjZSBhIHB1YmxpYyB2ZXJzaW9uIG9mIFdLV2Vic2l0ZVBvbGljaWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggMGFkZjVjNTFiMTZjZjNiMTU3NGQxYzdhZjg2ZjFm
YzY4NmIxYWY4MC4uODU5ZTI4NGVhOWYxMzlhYjAwOWJiMWEyZDFhOGMyZGEzNzM4YTA5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTYxLDEwICsxNjEsMTAgQEAgcHVi
bGljOgogICAgICAgICBWaWV3cG9ydEF0dHJpYnV0ZXMsCiAgICAgICAgIFZpc2l0ZWRMaW5rU3Rv
cmUsCiAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLAorICAgICAgICBX
ZWJwYWdlUHJlZmVyZW5jZXMsCiAgICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkLAogICAgICAgICBX
ZWJzaXRlRGF0YVN0b3JlLAogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiwK
LSAgICAgICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAogI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCmluZGV4IDM3YjkwMDkwYWY2MTgzZmQxOTAyMWY4NmExNGVmMjlhM2EzMWJiZjUuLmM2ZjNj
NWQyNTBmMjhlZjgyYzBlOGE4M2FkN2U0OGI5YmE4NGQ5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkKiBPYmplY3Q6Om5l
d09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIFR5cGU6OldlYnNpdGVQb2xpY2llczoKKyAgICBjYXNlIFR5cGU6OldlYnBhZ2VQcmVm
ZXJlbmNlczoKICAgICAgICAgd3JhcHBlciA9IFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY107
CiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAK
aW5kZXggMDg4MWI5MGJlYWUzYmM1N2YwMmEzMjkyNWIyYmIwMjcxOTRkMmZmNS4uY2E4ZDcyNGIx
YmU3YTE2Nzc4ZDAzYWU2N2IwNGQ5OGYxYWEwZTE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYmFzZVVS
TFN0cmluZzsKICAgICBlbmNvZGVyIDw8IHVucmVhY2hhYmxlVVJMU3RyaW5nOwogICAgIGVuY29k
ZXIgPDwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7Ci0gICAgZW5jb2RlciA8PCB3ZWJz
aXRlUG9saWNpZXM7CisgICAgZW5jb2RlciA8PCB3ZWJwYWdlUHJlZmVyZW5jZXM7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGVuY29kZXIgPDwgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOwogICAgIGVuY29kZXIgPDwgdXNlckRhdGE7CkBAIC0x
MDYsMTEgKzEwNiwxMSBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPj4gd2Vic2l0
ZVBvbGljaWVzOwotICAgIGRlY29kZXIgPj4gd2Vic2l0ZVBvbGljaWVzOwotICAgIGlmICghd2Vi
c2l0ZVBvbGljaWVzKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0Rh
dGE+PiB3ZWJwYWdlUHJlZmVyZW5jZXM7CisgICAgZGVjb2RlciA+PiB3ZWJwYWdlUHJlZmVyZW5j
ZXM7CisgICAgaWYgKCF3ZWJwYWdlUHJlZmVyZW5jZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBkYXRhLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUoKndlYnNpdGVQb2xpY2llcyk7Cisg
ICAgZGF0YS53ZWJwYWdlUHJlZmVyZW5jZXMgPSBXVEZNb3ZlKCp3ZWJwYWdlUHJlZmVyZW5jZXMp
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuaAppbmRleCAxMDhiMTkxNDM1NTdjZjVmM2M3OWRjMjVhMjYwOWRjMzkyMDRlZDJjLi45
NTFhOTE0ZWEyNWJiZjNlZWJmZjRlZGQwZmJlNTcyYzliOWY5MjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJE
YXRhLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorI2luY2x1ZGUgIldlYnBh
Z2VQcmVmZXJlbmNlc0RhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC02MSw3ICs2MSw3
IEBAIHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIHVucmVhY2hhYmxlVVJMU3Ry
aW5nOwogICAgIFN0cmluZyBwcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZzsKIAotICAgIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llczsKKyAgICBPcHRpb25h
bDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiB3ZWJwYWdlUHJlZmVyZW5jZXM7CiAKICAgICB1aW50
NjRfdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGJvb2wgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggYjM4MjMyMGQyYTIyN2MzZGQyZTU5OWZkZjk1
NDJkM2UwYWFiY2NiMC4uZWI5MjkzNzE5NjIzMjA3YmE3NDU2ZGUwNjlkMWVlNzQzYmNiNDBhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBdXhpbGlhcnlQ
cm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJwYWdlUHJl
ZmVyZW5jZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnBhZ2VQcmVmZXJlbmNl
c0RhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4ZGE4NGUxMzllZTkxOTQ4ZjQ2MzEyNmM0ZTJmYWVmZGQ3
ZjYwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJwYWdlUHJl
ZmVyZW5jZXNEYXRhLmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuaCIKKwor
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjb250ZW50QmxvY2tlcnNFbmFibGVkOworICAgIGVu
Y29kZXIgPDwgYXV0b3BsYXlQb2xpY3k7CisgICAgZW5jb2RlciA8PCBkZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc1N0YXRlOworICAgIGVuY29kZXIgPDwgYWxsb3dlZEF1dG9wbGF5UXVp
cmtzOworICAgIGVuY29kZXIgPDwgY3VzdG9tSGVhZGVyRmllbGRzOworICAgIGVuY29kZXIgPDwg
cG9wVXBQb2xpY3k7CisgICAgZW5jb2RlciA8PCB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsK
KyAgICBlbmNvZGVyIDw8IGN1c3RvbVVzZXJBZ2VudDsKKyAgICBlbmNvZGVyIDw8IGN1c3RvbUph
dmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKKyAgICBlbmNvZGVyIDw8IGN1
c3RvbU5hdmlnYXRvclBsYXRmb3JtOworfQorCitPcHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNE
YXRhPiBXZWJwYWdlUHJlZmVyZW5jZXNEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIE9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CisgICAgZGVj
b2RlciA+PiBjb250ZW50QmxvY2tlcnNFbmFibGVkOworICAgIGlmICghY29udGVudEJsb2NrZXJz
RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25h
bDxXZWJzaXRlQXV0b3BsYXlQb2xpY3k+IGF1dG9wbGF5UG9saWN5OworICAgIGRlY29kZXIgPj4g
YXV0b3BsYXlQb2xpY3k7CisgICAgaWYgKCFhdXRvcGxheVBvbGljeSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBkZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOworICAgIGRlY29kZXIgPj4gZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZTsKKyAgICBpZiAoIWRldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzU3RhdGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisg
ICAgT3B0aW9uYWw8T3B0aW9uU2V0PFdlYnNpdGVBdXRvcGxheVF1aXJrPj4gYWxsb3dlZEF1dG9w
bGF5UXVpcmtzOworICAgIGRlY29kZXIgPj4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzOworICAgIGlm
ICghYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIAorICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+PiBjdXN0
b21IZWFkZXJGaWVsZHM7CisgICAgZGVjb2RlciA+PiBjdXN0b21IZWFkZXJGaWVsZHM7CisgICAg
aWYgKCFjdXN0b21IZWFkZXJGaWVsZHMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxXZWJzaXRlUG9wVXBQb2xpY3k+IHBvcFVwUG9saWN5OworICAgIGRlY29k
ZXIgPj4gcG9wVXBQb2xpY3k7CisgICAgaWYgKCFwb3BVcFBvbGljeSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CisgICAgZGVjb2RlciA+PiB3
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKKyAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBjdXN0b21Vc2VyQWdlbnQ7CisgICAgZGVjb2RlciA+PiBjdXN0b21Vc2VyQWdlbnQ7Cisg
ICAgaWYgKCFjdXN0b21Vc2VyQWdlbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVj
aWZpY1F1aXJrczsKKyAgICBkZWNvZGVyID4+IGN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1Np
dGVTcGVjaWZpY1F1aXJrczsKKyAgICBpZiAoIWN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1Np
dGVTcGVjaWZpY1F1aXJrcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPFN0cmluZz4gY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CisgICAgZGVjb2RlciA+PiBj
dXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKKyAgICBpZiAoIWN1c3RvbU5hdmlnYXRvclBsYXRmb3Jt
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiB7IHsKKyAg
ICAgICAgV1RGTW92ZSgqY29udGVudEJsb2NrZXJzRW5hYmxlZCksCisgICAgICAgIFdURk1vdmUo
KmFsbG93ZWRBdXRvcGxheVF1aXJrcyksCisgICAgICAgIFdURk1vdmUoKmF1dG9wbGF5UG9saWN5
KSwKKyAgICAgICAgV1RGTW92ZSgqZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0
ZSksCisgICAgICAgIFdURk1vdmUoKmN1c3RvbUhlYWRlckZpZWxkcyksCisgICAgICAgIFdURk1v
dmUoKnBvcFVwUG9saWN5KSwKKyAgICAgICAgV1RGTW92ZSgqd2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMpLAorICAgICAgICBXVEZNb3ZlKCpjdXN0b21Vc2VyQWdlbnQpLAorICAgICAgICBXVEZN
b3ZlKCpjdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MpLAorICAg
ICAgICBXVEZNb3ZlKCpjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSksCisgICAgfSB9OworfQorCit2
b2lkIFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXZWJwYWdl
UHJlZmVyZW5jZXNEYXRhJiYgd2VicGFnZVByZWZlcmVuY2VzLCBXZWJDb3JlOjpEb2N1bWVudExv
YWRlciYgZG9jdW1lbnRMb2FkZXIpCit7CisgICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3VzdG9tSGVh
ZGVyRmllbGRzKFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzLmN1c3RvbUhlYWRlckZpZWxkcykp
OworICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3RvbVVzZXJBZ2VudCh3ZWJwYWdlUHJlZmVyZW5j
ZXMuY3VzdG9tVXNlckFnZW50KTsKKyAgICBkb2N1bWVudExvYWRlci5zZXRDdXN0b21KYXZhU2Ny
aXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3Mod2VicGFnZVByZWZlcmVuY2VzLmN1c3Rv
bUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyk7CisgICAgZG9jdW1lbnRM
b2FkZXIuc2V0Q3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0od2VicGFnZVByZWZlcmVuY2VzLmN1c3Rv
bU5hdmlnYXRvclBsYXRmb3JtKTsKKyAgICBkb2N1bWVudExvYWRlci5zZXREZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKHdlYnBhZ2VQcmVmZXJlbmNlcy5kZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKTsKKyAgICAKKyAgICAvLyBPbmx5IHNldFVzZXJDb250
ZW50RXh0ZW5zaW9uc0VuYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNhYmxlZCBi
eSByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorICAgIGlmIChkb2N1bWVudExv
YWRlci51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkpCisgICAgICAgIGRvY3VtZW50TG9h
ZGVyLnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQod2VicGFnZVByZWZlcmVuY2VzLmNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworCisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5
UXVpcms+IHF1aXJrczsKKyAgICBjb25zdCBhdXRvJiBhbGxvd2VkUXVpcmtzID0gd2VicGFnZVBy
ZWZlcmVuY2VzLmFsbG93ZWRBdXRvcGxheVF1aXJrczsKKyAgICAKKyAgICBpZiAoYWxsb3dlZFF1
aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVz
KSkKKyAgICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRV
c2VyR2VzdHVyZXMpOworICAgIAorICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNp
dGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKSkKKyAgICAgICAgcXVpcmtz
LmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKKyAg
ICAKKyAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6
QXJiaXRyYXJ5VXNlckdlc3R1cmVzKSkKKyAgICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRv
cGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOworCisgICAgaWYgKGFsbG93ZWRRdWly
a3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OlBlckRvY3VtZW50QXV0b3BsYXlCZWhh
dmlvcikpCisgICAgICAgIHF1aXJrcy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6UGVyRG9j
dW1lbnRBdXRvcGxheUJlaGF2aW9yKTsKKworICAgIGRvY3VtZW50TG9hZGVyLnNldEFsbG93ZWRB
dXRvcGxheVF1aXJrcyhxdWlya3MpOworCisgICAgc3dpdGNoICh3ZWJwYWdlUHJlZmVyZW5jZXMu
YXV0b3BsYXlQb2xpY3kpIHsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVs
dDoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xpY3koV2ViQ29yZTo6QXV0
b3BsYXlQb2xpY3k6OkRlZmF1bHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYnNpdGVB
dXRvcGxheVBvbGljeTo6QWxsb3c6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLnNldEF1dG9wbGF5
UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDoKKyAgICAg
ICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xpY3koV2ViQ29yZTo6QXV0b3BsYXlQb2xp
Y3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJzaXRl
QXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLnNldEF1dG9wbGF5
UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpEZW55KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgc3dpdGNoICh3ZWJwYWdlUHJlZmVyZW5jZXMucG9wVXBQb2xpY3kpIHsKKyAg
ICBjYXNlIFdlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdDoKKyAgICAgICAgZG9jdW1lbnRMb2Fk
ZXIuc2V0UG9wVXBQb2xpY3koV2ViQ29yZTo6UG9wVXBQb2xpY3k6OkRlZmF1bHQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYnNpdGVQb3BVcFBvbGljeTo6QWxsb3c6CisgICAgICAgIGRv
Y3VtZW50TG9hZGVyLnNldFBvcFVwUG9saWN5KFdlYkNvcmU6OlBvcFVwUG9saWN5OjpBbGxvdyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZVBvcFVwUG9saWN5OjpCbG9jazoKKyAg
ICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0UG9wVXBQb2xpY3koV2ViQ29yZTo6UG9wVXBQb2xpY3k6
OkJsb2NrKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHdlYnBhZ2VQcmVmZXJl
bmNlcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykgeworICAgICAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudExvYWRlci5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFn
ZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+c2V0U2Vzc2lvbklEKHdl
YnBhZ2VQcmVmZXJlbmNlcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy0+bmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNlc3Npb25JRCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2VicGFnZVByZWZlcmVuY2VzRGF0YS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2VicGFnZVByZWZlcmVuY2VzRGF0YS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBhMjEzYjdhODM2N2E3ZjlkZGFmZDBiZTM4MGZlYjFkNGEyZDRhZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmgKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJX
ZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCIKKyNpbmNsdWRlICJXZWJzaXRlQXV0b3BsYXlRdWlyay5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2Vi
c2l0ZVBvcFVwUG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyRmllbGQuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVj
b2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERv
Y3VtZW50TG9hZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYnBhZ2VQ
cmVmZXJlbmNlc0RhdGEgeworICAgIHN0YXRpYyB2b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRlcihX
ZWJwYWdlUHJlZmVyZW5jZXNEYXRhJiYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJik7CisKKyAg
ICBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CisgICAgT3B0aW9uU2V0PFdl
YnNpdGVBdXRvcGxheVF1aXJrPiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CisgICAgV2Vic2l0ZUF1
dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5IHsgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZh
dWx0IH07CisgICAgT3B0aW9uYWw8Ym9vbD4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NTdGF0ZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiBjdXN0b21IZWFk
ZXJGaWVsZHM7CisgICAgV2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5IHsgV2Vic2l0ZVBv
cFVwUG9saWN5OjpEZWZhdWx0IH07CisgICAgT3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworICAgIFN0cmluZyBjdXN0b21Vc2Vy
QWdlbnQ7CisgICAgU3RyaW5nIGN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZp
Y1F1aXJrczsKKyAgICBTdHJpbmcgY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CisKKyAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2VicGFn
ZVByZWZlcmVuY2VzRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9s
aWNpZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODg1Mjg5OTdiZDAwYjk1ZjVlOWZj
NjE4OTQxMTZlMGMwMTM3MTU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgotCi0jaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudExvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2Vic2l0ZVBv
bGljaWVzRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7Ci0gICAgZW5jb2RlciA8PCBhdXRvcGxh
eVBvbGljeTsKLSAgICBlbmNvZGVyIDw8IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
U3RhdGU7Ci0gICAgZW5jb2RlciA8PCBhbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0gICAgZW5jb2Rl
ciA8PCBjdXN0b21IZWFkZXJGaWVsZHM7Ci0gICAgZW5jb2RlciA8PCBwb3BVcFBvbGljeTsKLSAg
ICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwotICAgIGVuY29kZXIgPDwg
Y3VzdG9tVXNlckFnZW50OwotICAgIGVuY29kZXIgPDwgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2Vu
dEFzU2l0ZVNwZWNpZmljUXVpcmtzOwotICAgIGVuY29kZXIgPDwgY3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm07Ci19Ci0KLU9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2ll
c0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gY29udGVudEJsb2NrZXJzRW5hYmxlZDsKLSAgICBkZWNvZGVyID4+IGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQ7Ci0gICAgaWYgKCFjb250ZW50QmxvY2tlcnNFbmFibGVkKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIAotICAgIE9wdGlvbmFsPFdlYnNpdGVBdXRvcGxheVBvbGlj
eT4gYXV0b3BsYXlQb2xpY3k7Ci0gICAgZGVjb2RlciA+PiBhdXRvcGxheVBvbGljeTsKLSAgICBp
ZiAoIWF1dG9wbGF5UG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
U3RhdGU7Ci0gICAgZGVjb2RlciA+PiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0
YXRlOwotICAgIGlmICghZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBPcHRpb25hbDxPcHRpb25TZXQ8
V2Vic2l0ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0gICAgZGVjb2Rl
ciA+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0gICAgaWYgKCFhbGxvd2VkQXV0b3BsYXlRdWly
a3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4+IGN1c3RvbUhlYWRlckZpZWxkczsKLSAgICBk
ZWNvZGVyID4+IGN1c3RvbUhlYWRlckZpZWxkczsKLSAgICBpZiAoIWN1c3RvbUhlYWRlckZpZWxk
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFdlYnNpdGVQ
b3BVcFBvbGljeT4gcG9wVXBQb2xpY3k7Ci0gICAgZGVjb2RlciA+PiBwb3BVcFBvbGljeTsKLSAg
ICBpZiAoIXBvcFVwUG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVyczsKLSAgICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOwotICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbVVzZXJBZ2VudDsK
LSAgICBkZWNvZGVyID4+IGN1c3RvbVVzZXJBZ2VudDsKLSAgICBpZiAoIWN1c3RvbVVzZXJBZ2Vu
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFN0cmluZz4g
Y3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwotICAgIGRlY29k
ZXIgPj4gY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwotICAg
IGlmICghY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21O
YXZpZ2F0b3JQbGF0Zm9ybTsKLSAgICBkZWNvZGVyID4+IGN1c3RvbU5hdmlnYXRvclBsYXRmb3Jt
OwotICAgIGlmICghY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgCi0gICAgcmV0dXJuIHsgewotICAgICAgICBXVEZNb3ZlKCpjb250ZW50
QmxvY2tlcnNFbmFibGVkKSwKLSAgICAgICAgV1RGTW92ZSgqYWxsb3dlZEF1dG9wbGF5UXVpcmtz
KSwKLSAgICAgICAgV1RGTW92ZSgqYXV0b3BsYXlQb2xpY3kpLAotICAgICAgICBXVEZNb3ZlKCpk
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKSwKLSAgICAgICAgV1RGTW92ZSgq
Y3VzdG9tSGVhZGVyRmllbGRzKSwKLSAgICAgICAgV1RGTW92ZSgqcG9wVXBQb2xpY3kpLAotICAg
ICAgICBXVEZNb3ZlKCp3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyksCi0gICAgICAgIFdURk1v
dmUoKmN1c3RvbVVzZXJBZ2VudCksCi0gICAgICAgIFdURk1vdmUoKmN1c3RvbUphdmFTY3JpcHRV
c2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyksCi0gICAgICAgIFdURk1vdmUoKmN1c3RvbU5h
dmlnYXRvclBsYXRmb3JtKSwKLSAgICB9IH07Ci19Ci0KLXZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0
YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG9s
aWNpZXMsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKLXsKLSAgICBk
b2N1bWVudExvYWRlci5zZXRDdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZSh3ZWJzaXRlUG9saWNp
ZXMuY3VzdG9tSGVhZGVyRmllbGRzKSk7Ci0gICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3VzdG9tVXNl
ckFnZW50KHdlYnNpdGVQb2xpY2llcy5jdXN0b21Vc2VyQWdlbnQpOwotICAgIGRvY3VtZW50TG9h
ZGVyLnNldEN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyh3ZWJz
aXRlUG9saWNpZXMuY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtz
KTsKLSAgICBkb2N1bWVudExvYWRlci5zZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSh3ZWJzaXRl
UG9saWNpZXMuY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0pOwotICAgIGRvY3VtZW50TG9hZGVyLnNl
dERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUod2Vic2l0ZVBvbGljaWVzLmRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUpOwotICAgIAotICAgIC8vIE9ubHkg
c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVu
IGRpc2FibGVkIGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMuCi0gICAgaWYg
KGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkKLSAgICAgICAg
ZG9jdW1lbnRMb2FkZXIuc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh3ZWJzaXRlUG9s
aWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCk7Ci0KLSAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
QXV0b3BsYXlRdWlyaz4gcXVpcmtzOwotICAgIGNvbnN0IGF1dG8mIGFsbG93ZWRRdWlya3MgPSB3
ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwotICAgIAotICAgIGlmIChhbGxv
d2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2Vz
dHVyZXMpKQotICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVy
aXRlZFVzZXJHZXN0dXJlcyk7Ci0gICAgCi0gICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMo
V2Vic2l0ZUF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpKQotICAgICAgICBx
dWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMp
OwotICAgIAotICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1
aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6
OkF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7Ci0KLSAgICBpZiAoYWxsb3dl
ZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6UGVyRG9jdW1lbnRBdXRvcGxh
eUJlaGF2aW9yKSkKLSAgICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpQ
ZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3IpOwotCi0gICAgZG9jdW1lbnRMb2FkZXIuc2V0QWxs
b3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7Ci0KLSAgICBzd2l0Y2ggKHdlYnNpdGVQb2xpY2ll
cy5hdXRvcGxheVBvbGljeSkgewotICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZh
dWx0OgotICAgICAgICBkb2N1bWVudExvYWRlci5zZXRBdXRvcGxheVBvbGljeShXZWJDb3JlOjpB
dXRvcGxheVBvbGljeTo6RGVmYXVsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2Vic2l0
ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzoKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3Bs
YXlQb2xpY3koV2ViQ29yZTo6QXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgotICAg
ICAgICBkb2N1bWVudExvYWRlci5zZXRBdXRvcGxheVBvbGljeShXZWJDb3JlOjpBdXRvcGxheVBv
bGljeTo6QWxsb3dXaXRob3V0U291bmQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYnNp
dGVBdXRvcGxheVBvbGljeTo6RGVueToKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3Bs
YXlQb2xpY3koV2ViQ29yZTo6QXV0b3BsYXlQb2xpY3k6OkRlbnkpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICBzd2l0Y2ggKHdlYnNpdGVQb2xpY2llcy5wb3BVcFBvbGljeSkgewotICAg
IGNhc2UgV2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0OgotICAgICAgICBkb2N1bWVudExvYWRl
ci5zZXRQb3BVcFBvbGljeShXZWJDb3JlOjpQb3BVcFBvbGljeTo6RGVmYXVsdCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV2Vic2l0ZVBvcFVwUG9saWN5OjpBbGxvdzoKLSAgICAgICAgZG9j
dW1lbnRMb2FkZXIuc2V0UG9wVXBQb2xpY3koV2ViQ29yZTo6UG9wVXBQb2xpY3k6OkFsbG93KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJzaXRlUG9wVXBQb2xpY3k6OkJsb2NrOgotICAg
ICAgICBkb2N1bWVudExvYWRlci5zZXRQb3BVcFBvbGljeShXZWJDb3JlOjpQb3BVcFBvbGljeTo6
QmxvY2spOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAod2Vic2l0ZVBvbGljaWVz
LndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmcmFtZSA9
IGRvY3VtZW50TG9hZGVyLmZyYW1lKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uSUQod2Vic2l0
ZVBvbGljaWVzLndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLT5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklEKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQzZGQwMDViNGY0Yzg2NWRkM2RhYTA4NmNlNDIwNWNjNzA3NTQzNzAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgIldlYnNpdGVQb3BVcFBvbGljeS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmg+Ci0jaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNv
ZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBEb2N1bWVudExvYWRlcjsKLX0K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhIHsKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYm
LCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpOwotCi0gICAgYm9vbCBjb250ZW50QmxvY2tlcnNF
bmFibGVkIHsgdHJ1ZSB9OwotICAgIE9wdGlvblNldDxXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzOwotICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBv
bGljeSB7IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9OwotICAgIE9wdGlvbmFsPGJv
b2w+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Ci0gICAgVmVjdG9yPFdl
YkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gY3VzdG9tSGVhZGVyRmllbGRzOwotICAgIFdlYnNpdGVQ
b3BVcFBvbGljeSBwb3BVcFBvbGljeSB7IFdlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9Owot
ICAgIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB3ZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczsKLSAgICBTdHJpbmcgY3VzdG9tVXNlckFnZW50OwotICAgIFN0cmluZyBjdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7Ci0gICAgU3RyaW5nIGN1
c3RvbU5hdmlnYXRvclBsYXRmb3JtOwotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRlY29kZShJ
UEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggODAzYjU3Njg4YzAzZDRlODA2OTgzODllODVjYjU5ZWM5ZmI3MTczNS4uYmUwNDM4ZWFmYzU5
OGMyNzY5MzRhMjAzOWNkNWZmNWJlZTZiNzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNjcsNyArMTY3
LDcgQEAgU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwIEBuby11bmlmeQogU2hhcmVkL1dlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAKIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBA
bm8tdW5pZnkKIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKLVNoYXJlZC9X
ZWJzaXRlUG9saWNpZXNEYXRhLmNwcAorU2hhcmVkL1dlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuY3Bw
CiAKIFNoYXJlZC9BUEkvQVBJQXJyYXkuY3BwCiBTaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0z
MTAsOCArMzEwLDggQEAgVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2Ny
aXB0LmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKK1VJUHJvY2Vzcy9B
UEkvQVBJV2VicGFnZVByZWZlcmVuY2VzLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcAotVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAogCiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDExMDU3ODAxYzVlOGJkZDFmYmMxZmNjNTAyZDhi
ODNlOTY0M2RkZTQuLjZmNjNlNTIwMjBmNDllNTZiNGU4ZDA0MWM2ZThlYzAwYWVmZTQ5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCisjaW5jbHVkZSAi
V2VicGFnZVByZWZlcmVuY2VzRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJU
eXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJwYWdlUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnBhZ2VQcmVmZXJlbmNlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YzZTBhNjMzOTBmYTJlZjIzY2U2
Y2Q1Y2E3YjQzZTA4MTA0ZTYxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJwYWdlUHJlZmVyZW5jZXMuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJwYWdl
UHJlZmVyZW5jZXMuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNs
dWRlICJXZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitXZWJw
YWdlUHJlZmVyZW5jZXM6OldlYnBhZ2VQcmVmZXJlbmNlcygpID0gZGVmYXVsdDsKKworV2VicGFn
ZVByZWZlcmVuY2VzOjpXZWJwYWdlUHJlZmVyZW5jZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9w
bGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwg
VmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBjdXN0b21IZWFkZXJGaWVsZHMsIFdl
YktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFT
dG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAgIDogbV9jb250ZW50QmxvY2tlcnNFbmFibGVk
KGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCisgICAgLCBtX2FsbG93ZWRBdXRvcGxheVF1aXJrcyhh
bGxvd2VkQXV0b3BsYXlRdWlya3MpCisgICAgLCBtX2F1dG9wbGF5UG9saWN5KGF1dG9wbGF5UG9s
aWN5KQorICAgICwgbV9jdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZShjdXN0b21IZWFkZXJGaWVs
ZHMpKQorICAgICwgbV9wb3BVcFBvbGljeShwb3BVcFBvbGljeSkKKyAgICAsIG1fd2Vic2l0ZURh
dGFTdG9yZShXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpKQoreyB9CisKK1dlYnBhZ2VQcmVmZXJl
bmNlczo6fldlYnBhZ2VQcmVmZXJlbmNlcygpCit7Cit9CisKK3ZvaWQgV2VicGFnZVByZWZlcmVu
Y2VzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNp
dGVEYXRhU3RvcmUpCit7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV1RGTW92ZSh3ZWJzaXRl
RGF0YVN0b3JlKTsKK30KKworV2ViS2l0OjpXZWJwYWdlUHJlZmVyZW5jZXNEYXRhIFdlYnBhZ2VQ
cmVmZXJlbmNlczo6ZGF0YSgpCit7CisgICAgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycz4gcGFyYW1ldGVyczsKKyAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQor
ICAgICAgICBwYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucGFyYW1ldGVycygpOworICAgIHJldHVybiB7IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSwg
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKCksIGF1dG9wbGF5UG9saWN5KCksIGRldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUoKSwKKyAgICAgICAgY3VzdG9tSGVhZGVyRmllbGRzKCks
IHBvcFVwUG9saWN5KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fY3VzdG9tVXNlckFnZW50LCBt
X2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcywgbV9jdXN0b21O
YXZpZ2F0b3JQbGF0Zm9ybSB9OworfQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJwYWdlUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJwYWdlUHJlZmVyZW5jZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzE3MDYwZDk0
MzA4YTkwNjg4NWVkZjhmODcxMmVmY2RiNmJiNTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnBhZ2VQcmVmZXJlbmNlcy5oCkBAIC0wLDAgKzEs
OTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmgiCisjaW5jbHVkZSAiV2Vi
c2l0ZUF1dG9wbGF5UXVpcmsuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9wVXBQb2xpY3kuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworc3Ry
dWN0IFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlOworCitjbGFzcyBXZWJwYWdlUHJlZmVyZW5jZXMgZmluYWwgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJwYWdlUHJlZmVyZW5j
ZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnBhZ2VQcmVmZXJlbmNlcz4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJwYWdlUHJlZmVyZW5jZXMpOyB9CisgICAgV2Vi
cGFnZVByZWZlcmVuY2VzKCk7CisgICAgfldlYnBhZ2VQcmVmZXJlbmNlcygpOworCisgICAgYm9v
bCBjb250ZW50QmxvY2tlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50QmxvY2tl
cnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgCisgICAg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1
aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOyB9CisgICAgdm9p
ZCBzZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UXVpcms+IHF1aXJrcykgeyBtX2FsbG93ZWRBdXRvcGxheVF1aXJrcyA9IHF1aXJrczsgfQor
ICAgIAorICAgIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9hdXRvcGxheVBvbGljeTsgfQorICAgIHZvaWQgc2V0QXV0b3BsYXlQ
b2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgcG9saWN5KSB7IG1fYXV0b3BsYXlQ
b2xpY3kgPSBwb2xpY3k7IH0KKworICAgIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBkZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOyB9CisgICAgdm9pZCBzZXREZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKE9wdGlvbmFsPGJvb2w+IHN0YXRlKSB7IG1fZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSA9IHN0YXRlOyB9CisgICAgCisgICAgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mIGN1c3RvbUhlYWRlckZpZWxkcygp
IGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tSGVhZGVyRmllbGRzOyB9CisgICAgVmVjdG9yPFdlYkNv
cmU6OkhUVFBIZWFkZXJGaWVsZD4mJiB0YWtlQ3VzdG9tSGVhZGVyRmllbGRzKCkgeyByZXR1cm4g
V1RGTW92ZShtX2N1c3RvbUhlYWRlckZpZWxkcyk7IH0KKyAgICB2b2lkIHNldEN1c3RvbUhlYWRl
ckZpZWxkcyhWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGZpZWxkcykgeyBtX2N1
c3RvbUhlYWRlckZpZWxkcyA9IFdURk1vdmUoZmllbGRzKTsgfQorCisgICAgV2ViS2l0OjpXZWJz
aXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvcFVwUG9saWN5
OyB9CisgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBw
b2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQorCisgICAgV2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2Vic2l0ZURhdGFT
dG9yZT4mJik7CisKKyAgICBXZWJLaXQ6OldlYnBhZ2VQcmVmZXJlbmNlc0RhdGEgZGF0YSgpOwor
CisgICAgdm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVz
ZXJBZ2VudCkgeyBtX2N1c3RvbVVzZXJBZ2VudCA9IGN1c3RvbVVzZXJBZ2VudDsgfQorICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2N1c3Rv
bVVzZXJBZ2VudDsgfQorCisgICAgdm9pZCBzZXRDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNT
aXRlU3BlY2lmaWNRdWlya3MoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkgeyBt
X2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcyA9IGN1c3RvbVVz
ZXJBZ2VudDsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBjdXN0b21KYXZhU2NyaXB0VXNlckFn
ZW50QXNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUphdmFTY3Jp
cHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsgfQorCisgICAgdm9pZCBzZXRDdXN0b21O
YXZpZ2F0b3JQbGF0Zm9ybShjb25zdCBXVEY6OlN0cmluZyYgY3VzdG9tTmF2aWdhdG9yUGxhdGZv
cm0pIHsgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSA9IGN1c3RvbU5hdmlnYXRvclBsYXRmb3Jt
OyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsgfQorCitwcml2YXRlOgorICAg
IFdlYnBhZ2VQcmVmZXJlbmNlcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQ
b2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFdlYktpdDo6V2Vic2l0
ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisKKyAgICBib29sIG1f
Y29udGVudEJsb2NrZXJzRW5hYmxlZCB7IHRydWUgfTsKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlRdWlyaz4gbV9hbGxvd2VkQXV0b3BsYXlRdWlya3M7CisgICAgV2ViS2l0
OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxheVBvbGljeSB7IFdlYktpdDo6V2Vic2l0
ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0IH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9kZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOworICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQ
SGVhZGVyRmllbGQ+IG1fY3VzdG9tSGVhZGVyRmllbGRzOworICAgIFdlYktpdDo6V2Vic2l0ZVBv
cFVwUG9saWN5IG1fcG9wVXBQb2xpY3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVm
YXVsdCB9OworICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7
CisgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CisgICAgV1RGOjpTdHJpbmcgbV9j
dXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CisgICAgV1RGOjpT
dHJpbmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xp
Y2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZmY2FjMDZlNTJjYmZkNWMxZTFm
MzA3NzlhOWUxNDE4N2QyMTI2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCi0KLSNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgotCi1uYW1lc3BhY2UgQVBJIHsKLQotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMo
KSA9IGRlZmF1bHQ7Ci0KLVdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29u
dGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVp
cms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kg
YXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKLSAgICA6IG1fY29udGVu
dEJsb2NrZXJzRW5hYmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQotICAgICwgbV9hbGxvd2Vk
QXV0b3BsYXlRdWlya3MoYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQotICAgICwgbV9hdXRvcGxheVBv
bGljeShhdXRvcGxheVBvbGljeSkKLSAgICAsIG1fY3VzdG9tSGVhZGVyRmllbGRzKFdURk1vdmUo
Y3VzdG9tSGVhZGVyRmllbGRzKSkKLSAgICAsIG1fcG9wVXBQb2xpY3kocG9wVXBQb2xpY3kpCi0g
ICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSkKLXsgfQot
Ci1XZWJzaXRlUG9saWNpZXM6On5XZWJzaXRlUG9saWNpZXMoKQotewotfQotCi12b2lkIFdlYnNp
dGVQb2xpY2llczo6c2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4m
JiB3ZWJzaXRlRGF0YVN0b3JlKQotewotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdURk1vdmUo
d2Vic2l0ZURhdGFTdG9yZSk7Ci19Ci0KLVdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBXZWJz
aXRlUG9saWNpZXM6OmRhdGEoKQotewotICAgIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgcGFyYW1ldGVycyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnBhcmFtZXRlcnMoKTsKLSAgICByZXR1cm4geyBjb250ZW50QmxvY2tlcnNFbmFibGVkKCks
IGFsbG93ZWRBdXRvcGxheVF1aXJrcygpLCBhdXRvcGxheVBvbGljeSgpLCBkZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCksCi0gICAgICAgIGN1c3RvbUhlYWRlckZpZWxkcygp
LCBwb3BVcFBvbGljeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX2N1c3RvbVVzZXJBZ2VudCwg
bV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MsIG1fY3VzdG9t
TmF2aWdhdG9yUGxhdGZvcm0gfTsKLX0KLQotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdlZGExOWQ0ZTE5ZjQxZjIwMzc1YzE4ZTkyNDZiNDAyYjMyM2JkMjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0j
aW5jbHVkZSAiV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZUF1dG9w
bGF5UXVpcmsuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9wVXBQb2xpY3kuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotc3RydWN0IFdlYnNp
dGVQb2xpY2llc0RhdGE7Ci19Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBXZWJzaXRlRGF0
YVN0b3JlOwotCi1jbGFzcyBXZWJzaXRlUG9saWNpZXMgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlUG9saWNpZXM+IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVQb2xpY2llcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJzaXRlUG9saWNpZXMpOyB9Ci0gICAgV2Vic2l0ZVBvbGljaWVzKCk7Ci0gICAgfldl
YnNpdGVQb2xpY2llcygpOwotCi0gICAgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50QmxvY2tlcnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRDb250
ZW50QmxvY2tlcnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQgPSBlbmFibGVkOyB9Ci0gICAgCi0gICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzOyB9Ci0gICAgdm9pZCBzZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MoT3B0
aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IHF1aXJrcykgeyBtX2FsbG93ZWRB
dXRvcGxheVF1aXJrcyA9IHF1aXJrczsgfQotICAgIAotICAgIFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvcGxheVBvbGlj
eTsgfQotICAgIHZvaWQgc2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQ
b2xpY3kgcG9saWN5KSB7IG1fYXV0b3BsYXlQb2xpY3kgPSBwb2xpY3k7IH0KLQotICAgIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOyB9
Ci0gICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKE9wdGlv
bmFsPGJvb2w+IHN0YXRlKSB7IG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0
ZSA9IHN0YXRlOyB9Ci0gICAgCi0gICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJG
aWVsZD4mIGN1c3RvbUhlYWRlckZpZWxkcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tSGVhZGVy
RmllbGRzOyB9Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiB0YWtlQ3Vz
dG9tSGVhZGVyRmllbGRzKCkgeyByZXR1cm4gV1RGTW92ZShtX2N1c3RvbUhlYWRlckZpZWxkcyk7
IH0KLSAgICB2b2lkIHNldEN1c3RvbUhlYWRlckZpZWxkcyhWZWN0b3I8V2ViQ29yZTo6SFRUUEhl
YWRlckZpZWxkPiYmIGZpZWxkcykgeyBtX2N1c3RvbUhlYWRlckZpZWxkcyA9IFdURk1vdmUoZmll
bGRzKTsgfQotCi0gICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3BvcFVwUG9saWN5OyB9Ci0gICAgdm9pZCBzZXRQb3BVcFBvbGljeShX
ZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGlj
eTsgfQotCi0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURh
dGFTdG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7Ci0KLSAgICBXZWJLaXQ6OldlYnNp
dGVQb2xpY2llc0RhdGEgZGF0YSgpOwotCi0gICAgdm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkgeyBtX2N1c3RvbVVzZXJBZ2VudCA9IGN1
c3RvbVVzZXJBZ2VudDsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQo
KSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVVzZXJBZ2VudDsgfQotCi0gICAgdm9pZCBzZXRDdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MoY29uc3QgV1RGOjpTdHJp
bmcmIGN1c3RvbVVzZXJBZ2VudCkgeyBtX2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVT
cGVjaWZpY1F1aXJrcyA9IGN1c3RvbVVzZXJBZ2VudDsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBjdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsg
fQotCi0gICAgdm9pZCBzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybShjb25zdCBXVEY6OlN0cmlu
ZyYgY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0pIHsgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSA9
IGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3Rv
bU5hdmlnYXRvclBsYXRmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybTsgfQotCi1wcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmll
bGQ+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7Ci0KLSAgICBib29sIG1fY29udGVudEJsb2NrZXJzRW5hYmxlZCB7IHRydWUgfTsKLSAg
ICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gbV9hbGxvd2VkQXV0b3Bs
YXlRdWlya3M7Ci0gICAgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxheVBv
bGljeSB7IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0IH07Ci0gICAgT3B0
aW9uYWw8Ym9vbD4gbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwotICAg
IFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fY3VzdG9tSGVhZGVyRmllbGRzOwot
ICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xpY3kgeyBXZWJLaXQ6Oldl
YnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3Jl
PiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci0gICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7
Ci0gICAgV1RGOjpTdHJpbmcgbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lm
aWNRdWlya3M7Ci0gICAgV1RGOjpTdHJpbmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAppbmRleCBhMzBkNTk3OTNiNmI0ZGQ1ZWRlMzMwNTM1ZTdmNWI1YjQxZDRmNjM2Li5j
YmU5Mzk1Zjk4MTg3NmFmMGE4MWY4MzFmZmNlOGYxNzlmNGIwZmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNjcsOCArNjcsOCBAQCBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNl
c3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7CitjbGFzcyBXZWJwYWdlUHJlZmVyZW5jZXM7
CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwotY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3Mg
V2luZG93RmVhdHVyZXM7CiB9CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBXS19BRERfQVBJX01BUFBJ
TkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcgogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlclNjcmlwdFJlZiwgQVBJOjpVc2VyU2Ny
aXB0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3
cG9ydEF0dHJpYnV0ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LCBBUEk6OldlYnNpdGVEYXRhU3RvcmUpCi1XS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9s
aWNpZXNSZWYsIEFQSTo6V2Vic2l0ZVBvbGljaWVzKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vi
c2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnBhZ2VQcmVmZXJlbmNlcykKIFdLX0FERF9BUElfTUFQ
UElORyhXS1dpbmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQogCiAvKiBFbnVt
IGNvbnZlcnNpb25zICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBhODViNWJjZDdjYTVkNjg1MmI2Yjk4
MGUwNWFiY2RmNWJkNGQ0YzNhLi5jNDFhMWIxNjUyYmVlN2I0NmYzNWM3YjNkYzQwYmQwMGJiMzk4
YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTI2LDEzICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIgogCisjaW5jbHVkZSAiQVBJ
V2VicGFnZVByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgot
I2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYnNp
dGVQb2xpY2llc0RhdGEuaCIKKyNpbmNsdWRlICJXZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHZvaWQg
dXNlV2l0aFBvbGljaWVzKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJl
ZiwgV0tXZWJzaXQKIHsKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbCh3
ZWJzaXRlUG9saWNpZXMpLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKICAgICAgICAgYXV0byBzZXNz
aW9uSUQgPSB3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSB8fCBzZXNzaW9uSUQgPT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwg
IklmIFdlYnNpdGVQb2xpY2llcyBzcGVjaWZpZXMgYSBXZWJzaXRlRGF0YVN0b3JlLCB0aGUgZGF0
YSBzdG9yZSdzIHNlc3Npb24gbXVzdCBiZSBkZWZhdWx0IG9yIG5vbi1wZXJzaXN0ZW50LiIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uoc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkgfHwgc2Vzc2lvbklEID09IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksICJJ
ZiBXZWJwYWdlUHJlZmVyZW5jZXMgc3BlY2lmaWVzIGEgV2Vic2l0ZURhdGFTdG9yZSwgdGhlIGRh
dGEgc3RvcmUncyBzZXNzaW9uIG11c3QgYmUgZGVmYXVsdCBvciBub24tcGVyc2lzdGVudC4iKTsK
ICAgICB9CiAKICAgICB0b0ltcGwocG9saWN5TGlzdGVuZXJSZWYpLT51c2UodG9JbXBsKHdlYnNp
dGVQb2xpY2llcyksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggY2MzYzc2NDE2MzU4ZWUwMGI3MjQ0ZGMz
NjQ2NmY5YzM2ZGIxZDQ5Yy4uODRkODA4NDliN2IzZmQzNDFlN2U3NjNlMzFjYWNkYjAzYzFmNTJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBACiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJU2Vzc2lv
blN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRl
UG9saWNpZXMuaCIKKyNpbmNsdWRlICJBUElXZWJwYWdlUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRl
ICJBUElXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgi
CkBAIC0zNjAsOCArMzYwLDggQEAgYm9vbCBXS1BhZ2VXaWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9s
bEV2ZW50cyhXS1BhZ2VSZWYgcGFnZVJlZikKIHZvaWQgV0tQYWdlVXBkYXRlV2Vic2l0ZVBvbGlj
aWVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9saWNp
ZXNSZWYpCiB7CiAgICAgYXV0byBkYXRhID0gdG9JbXBsKHdlYnNpdGVQb2xpY2llc1JlZiktPmRh
dGEoKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGEud2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMsICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy5XZWJzaXRlRGF0YVN0b3Jl
IGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9s
aWNpZXMoKS4iKTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhX
VEZNb3ZlKGRhdGEpKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGEud2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMsICJTZXR0aW5nIFdlYnBhZ2VQcmVmZXJlbmNlcy5XZWJz
aXRlRGF0YVN0b3JlIGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJVc2VXaXRoUG9saWNpZXMoKS4iKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnVwZGF0ZVdlYnBh
Z2VQcmVmZXJlbmNlcyhXVEZNb3ZlKGRhdGEpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tQYWdlQ29w
eVRpdGxlKFdLUGFnZVJlZiBwYWdlUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCmluZGV4IDY0ZGJlZjg2Y2UzYWRlZTg3NTQw
NGE3YjVjMmQ0NzUzY2I0MWM3ZTcuLjcyYjZiMmRlNTIzMTAzYzA0NjllYzVhNTU4MjgzNDJkM2Mw
ZTY1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVQb2xpY2llcy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJXS1dlYnNpdGVQb2xp
Y2llcy5oIgogCiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkFQSVdlYnBh
Z2VQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCkBAIC0zOCwxMiArMzgs
MTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tXZWJzaXRlUG9saWNp
ZXNHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVQb2xpY2llczo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6V2VicGFnZVByZWZlcmVuY2VzOjpBUElU
eXBlKTsKIH0KIAogV0tXZWJzaXRlUG9saWNpZXNSZWYgV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUo
KQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpXZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgpLmxl
YWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OldlYnBhZ2VQcmVmZXJlbmNlczo6Y3Jl
YXRlKCkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVQb2xpY2llc1NldENvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBvbGljaWVzLCBib29s
IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCA5MzcwOGM3ZmRiNGQ5MmM1OThiZDJjNTBhYjMyNDFlNTdjYTk1YTdjLi4xNmU1
OWIyYjhlOWIzMGFhMjg3YWU4ODgyNDJjMWY4ZWMzNDQ3OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTUxMzAsMTAgKzUxMzAsMTAg
QEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmlu
ZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGwKIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGlj
aWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKIHsKLSAgICBhdXRvIGRh
dGEgPSBbd2Vic2l0ZVBvbGljaWVzIHdlYlBhZ2VQcmVmZXJlbmNlc10tPl93ZWJzaXRlUG9saWNp
ZXMtPmRhdGEoKTsKKyAgICBhdXRvIGRhdGEgPSBbd2Vic2l0ZVBvbGljaWVzIHdlYnBhZ2VQcmVm
ZXJlbmNlc10tPl93ZWJwYWdlUHJlZmVyZW5jZXMtPmRhdGEoKTsKICAgICBpZiAoZGF0YS53ZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycykKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVwZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9y
ZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bi4iXTsKLSAgICBfcGFnZS0+dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdURk1vdmUoZGF0YSkpOwor
ICAgIF9wYWdlLT51cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXMoV1RGTW92ZShkYXRhKSk7CiB9CiAK
IC0gKEJPT0wpX2FsbG93c1JlbW90ZUluc3BlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQppbmRleCA5
MDM2OGMzY2E1MzY4OWYwOGQ2ZDMzYTEzZjc3ODljOGU4ZGUyY2I3Li5hNTI4NTMxY2I5ZWNhZjBk
NTM0MWViNTNiMWU4YTJkODY3NzM1NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCkBAIC00MCw3ICs0
MCw3IEBAICsgKGluc3RhbmNldHlwZSlkZWZhdWx0UHJlZmVyZW5jZXMKIAogLSAodm9pZClkZWFs
bG9jCiB7Ci0gICAgX3dlYnNpdGVQb2xpY2llcy0+QVBJOjpXZWJzaXRlUG9saWNpZXM6On5XZWJz
aXRlUG9saWNpZXMoKTsKKyAgICBfd2VicGFnZVByZWZlcmVuY2VzLT5BUEk6OldlYnBhZ2VQcmVm
ZXJlbmNlczo6fldlYnBhZ2VQcmVmZXJlbmNlcygpOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQpAQCAtNTAsMTkgKzUwLDE5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPihzZWxmKTsKKyAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6V2VicGFnZVByZWZlcmVuY2VzPihz
ZWxmKTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXNldENvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQ6KEJPT0wpY29udGVudEJsb2NrZXJzRW5hYmxlZAogewotICAgIF93ZWJzaXRlUG9s
aWNpZXMtPnNldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoY29udGVudEJsb2NrZXJzRW5hYmxlZCk7
CisgICAgX3dlYnBhZ2VQcmVmZXJlbmNlcy0+c2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZChjb250
ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogLSAoQk9PTCljb250ZW50QmxvY2tlcnNFbmFibGVk
CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQo
KTsKKyAgICByZXR1cm4gX3dlYnBhZ2VQcmVmZXJlbmNlcy0+Y29udGVudEJsb2NrZXJzRW5hYmxl
ZCgpOwogfQogCiAtICh2b2lkKXNldEFsbG93ZWRBdXRvcGxheVF1aXJrczooX1dLV2Vic2l0ZUF1
dG9wbGF5UXVpcmspYWxsb3dlZFF1aXJrcwpAQCAtODEsMTMgKzgxLDEzIEBAIC0gKHZvaWQpc2V0
QWxsb3dlZEF1dG9wbGF5UXVpcmtzOihfV0tXZWJzaXRlQXV0b3BsYXlRdWlyaylhbGxvd2VkUXVp
cmtzCiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya1BlckRv
Y3VtZW50QXV0b3BsYXlCZWhhdmlvcikKICAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNp
dGVBdXRvcGxheVF1aXJrOjpQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3IpOwogCi0gICAgX3dl
YnNpdGVQb2xpY2llcy0+c2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CisgICAgX3dl
YnBhZ2VQcmVmZXJlbmNlcy0+c2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CiB9CiAK
IC0gKF9XS1dlYnNpdGVBdXRvcGxheVF1aXJrKWFsbG93ZWRBdXRvcGxheVF1aXJrcwogewogICAg
IF9XS1dlYnNpdGVBdXRvcGxheVF1aXJrIHF1aXJrcyA9IDA7Ci0gICAgYXV0byBhbGxvd2VkUXVp
cmtzID0gX3dlYnNpdGVQb2xpY2llcy0+YWxsb3dlZEF1dG9wbGF5UXVpcmtzKCk7CisgICAgYXV0
byBhbGxvd2VkUXVpcmtzID0gX3dlYnBhZ2VQcmVmZXJlbmNlcy0+YWxsb3dlZEF1dG9wbGF5UXVp
cmtzKCk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpKQogICAgICAgICBxdWlya3MgfD0g
X1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CkBAIC0xMDgsMjMg
KzEwOCwyMyBAQCAtICh2b2lkKXNldEF1dG9wbGF5UG9saWN5OihfV0tXZWJzaXRlQXV0b3BsYXlQ
b2xpY3kpcG9saWN5CiB7CiAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICBjYXNlIF9XS1dlYnNp
dGVBdXRvcGxheVBvbGljeURlZmF1bHQ6Ci0gICAgICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEF1
dG9wbGF5UG9saWN5KFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0KTsKKyAg
ICAgICAgX3dlYnBhZ2VQcmVmZXJlbmNlcy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIF9X
S1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OgotICAgICAgICBfd2Vic2l0ZVBvbGljaWVzLT5z
ZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3cpOwor
ICAgICAgICBfd2VicGFnZVByZWZlcmVuY2VzLT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6Oldl
YnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3cpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIF9X
S1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93V2l0aG91dFNvdW5kOgotICAgICAgICBfd2Vic2l0
ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGlj
eTo6QWxsb3dXaXRob3V0U291bmQpOworICAgICAgICBfd2VicGFnZVByZWZlcmVuY2VzLT5zZXRB
dXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0
U291bmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIF9XS1dlYnNpdGVBdXRvcGxheVBvbGlj
eURlbnk6Ci0gICAgICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEF1dG9wbGF5UG9saWN5KFdlYktp
dDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55KTsKKyAgICAgICAgX3dlYnBhZ2VQcmVmZXJl
bmNlcy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRl
bnkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIC0gKF9XS1dlYnNpdGVBdXRvcGxheVBv
bGljeSlhdXRvcGxheVBvbGljeQogewotICAgIHN3aXRjaCAoX3dlYnNpdGVQb2xpY2llcy0+YXV0
b3BsYXlQb2xpY3koKSkgeworICAgIHN3aXRjaCAoX3dlYnBhZ2VQcmVmZXJlbmNlcy0+YXV0b3Bs
YXlQb2xpY3koKSkgewogICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lEZWZhdWx0Owog
ICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93OgpAQCAtMTQwLDQy
ICsxNDAsNDIgQEAgLSAodm9pZClzZXREZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1Bv
bGljeTooX1dLV2Vic2l0ZURldmljZU9yaWVudGF0aW9uQW4KIHsKICAgICBzd2l0Y2ggKHBvbGlj
eSkgewogICAgIGNhc2UgX1dLV2Vic2l0ZURldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
UG9saWN5QXNrOgotICAgICAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXREZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc1N0YXRlKFdURjo6bnVsbG9wdCk7CisgICAgICAgIF93ZWJwYWdlUHJl
ZmVyZW5jZXMtPnNldERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUoV1RGOjpu
dWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBfV0tXZWJzaXRlRGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lHcmFudDoKLSAgICAgICAgX3dlYnNpdGVQb2xpY2ll
cy0+c2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZSh0cnVlKTsKKyAgICAg
ICAgX3dlYnBhZ2VQcmVmZXJlbmNlcy0+c2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NTdGF0ZSh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBfV0tXZWJzaXRlRGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lEZW55OgotICAgICAgICBfd2Vic2l0ZVBv
bGljaWVzLT5zZXREZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKGZhbHNlKTsK
KyAgICAgICAgX3dlYnBhZ2VQcmVmZXJlbmNlcy0+c2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NTdGF0ZShmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogLSAoX1dL
V2Vic2l0ZURldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5KWRldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5CiB7Ci0gICAgaWYgKCFfd2Vic2l0ZVBvbGljaWVz
LT5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkpCisgICAgaWYgKCFfd2Vi
cGFnZVByZWZlcmVuY2VzLT5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkp
CiAgICAgICAgIHJldHVybiBfV0tXZWJzaXRlRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NQb2xpY3lBc2s7Ci0gICAgcmV0dXJuICpfd2Vic2l0ZVBvbGljaWVzLT5kZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkgPyBfV0tXZWJzaXRlRGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NQb2xpY3lHcmFudCA6IF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc1BvbGljeURlbnk7CisgICAgcmV0dXJuICpfd2VicGFnZVByZWZlcmVuY2Vz
LT5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlKCkgPyBfV0tXZWJzaXRlRGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lHcmFudCA6IF9XS1dlYnNpdGVEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeURlbnk7CiB9CiAKIC0gKHZvaWQpc2V0
UG9wVXBQb2xpY3k6KF9XS1dlYnNpdGVQb3BVcFBvbGljeSlwb2xpY3kKIHsKICAgICBzd2l0Y2gg
KHBvbGljeSkgewogICAgIGNhc2UgX1dLV2Vic2l0ZVBvcFVwUG9saWN5RGVmYXVsdDoKLSAgICAg
ICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3k6OkRlZmF1bHQpOworICAgICAgICBfd2VicGFnZVByZWZlcmVuY2VzLT5zZXRQb3BVcFBv
bGljeShXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgX1dLV2Vic2l0ZVBvcFVwUG9saWN5QWxsb3c6Ci0gICAgICAgIF93ZWJzaXRl
UG9saWNpZXMtPnNldFBvcFVwUG9saWN5KFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpBbGxv
dyk7CisgICAgICAgIF93ZWJwYWdlUHJlZmVyZW5jZXMtPnNldFBvcFVwUG9saWN5KFdlYktpdDo6
V2Vic2l0ZVBvcFVwUG9saWN5OjpBbGxvdyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgX1dL
V2Vic2l0ZVBvcFVwUG9saWN5QmxvY2s6Ci0gICAgICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldFBv
cFVwUG9saWN5KFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpCbG9jayk7CisgICAgICAgIF93
ZWJwYWdlUHJlZmVyZW5jZXMtPnNldFBvcFVwUG9saWN5KFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9s
aWN5OjpCbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogLSAoX1dLV2Vic2l0ZVBv
cFVwUG9saWN5KXBvcFVwUG9saWN5CiB7Ci0gICAgc3dpdGNoIChfd2Vic2l0ZVBvbGljaWVzLT5w
b3BVcFBvbGljeSgpKSB7CisgICAgc3dpdGNoIChfd2VicGFnZVByZWZlcmVuY2VzLT5wb3BVcFBv
bGljeSgpKSB7CiAgICAgY2FzZSBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIF9XS1dlYnNpdGVQb3BVcFBvbGljeURlZmF1bHQ7CiAgICAgY2FzZSBX
ZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6QWxsb3c6CkBAIC0xODcsNyArMTg3LDcgQEAgLSAo
X1dLV2Vic2l0ZVBvcFVwUG9saWN5KXBvcFVwUG9saWN5CiAKIC0gKE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqKWN1c3RvbUhlYWRlckZpZWxkcwogewotICAgIGNvbnN0IGF1
dG8mIGZpZWxkcyA9IF93ZWJzaXRlUG9saWNpZXMtPmN1c3RvbUhlYWRlckZpZWxkcygpOworICAg
IGNvbnN0IGF1dG8mIGZpZWxkcyA9IF93ZWJwYWdlUHJlZmVyZW5jZXMtPmN1c3RvbUhlYWRlckZp
ZWxkcygpOwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmZpZWxkcy5zaXplKCldIGF1dG9y
ZWxlYXNlXTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxkIDogZmllbGRzKQogICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6ZmllbGQudmFsdWUoKSBmb3JLZXk6ZmllbGQubmFtZSgpXTsK
QEAgLTIwNCw0NyArMjA0LDQ3IEBAIC0gKHZvaWQpc2V0Q3VzdG9tSGVhZGVyRmllbGRzOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilmaWVsZHMKICAgICAgICAgaWYgKGZp
ZWxkICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmllbGQtPm5hbWUoKSwg
IngtIikpCiAgICAgICAgICAgICBwYXJzZWRGaWVsZHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
KmZpZWxkKSk7CiAgICAgfQotICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEN1c3RvbUhlYWRlckZp
ZWxkcyhXVEZNb3ZlKHBhcnNlZEZpZWxkcykpOworICAgIF93ZWJwYWdlUHJlZmVyZW5jZXMtPnNl
dEN1c3RvbUhlYWRlckZpZWxkcyhXVEZNb3ZlKHBhcnNlZEZpZWxkcykpOwogfQogCiAtIChXS1dl
YnNpdGVEYXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIo
X3dlYnNpdGVQb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBl
cihfd2VicGFnZVByZWZlcmVuY2VzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogfQogCiAtICh2b2lk
KXNldFdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKXdlYnNpdGVEYXRhU3Rv
cmUKIHsKLSAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRXZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVE
YXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKKyAgICBfd2VicGFnZVByZWZlcmVu
Y2VzLT5zZXRXZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0
b3JlLmdldCgpKTsKIH0KIAogLSAodm9pZClzZXRDdXN0b21Vc2VyQWdlbnQ6KE5TU3RyaW5nICop
Y3VzdG9tVXNlckFnZW50CiB7Ci0gICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q3VzdG9tVXNlckFn
ZW50KGN1c3RvbVVzZXJBZ2VudCk7CisgICAgX3dlYnBhZ2VQcmVmZXJlbmNlcy0+c2V0Q3VzdG9t
VXNlckFnZW50KGN1c3RvbVVzZXJBZ2VudCk7CiB9CiAKIC0gKE5TU3RyaW5nICopY3VzdG9tVXNl
ckFnZW50CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmN1c3RvbVVzZXJBZ2VudCgp
OworICAgIHJldHVybiBfd2VicGFnZVByZWZlcmVuY2VzLT5jdXN0b21Vc2VyQWdlbnQoKTsKIH0K
IAogLSAodm9pZClzZXRDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWly
a3M6KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50CiB7Ci0gICAgX3dlYnNpdGVQb2xpY2llcy0+
c2V0Q3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKGN1c3RvbVVz
ZXJBZ2VudCk7CisgICAgX3dlYnBhZ2VQcmVmZXJlbmNlcy0+c2V0Q3VzdG9tSmF2YVNjcmlwdFVz
ZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKGN1c3RvbVVzZXJBZ2VudCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzCiB7
Ci0gICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRB
c1NpdGVTcGVjaWZpY1F1aXJrcygpOworICAgIHJldHVybiBfd2VicGFnZVByZWZlcmVuY2VzLT5j
dXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MoKTsKIH0KIAogLSAo
dm9pZClzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTooTlNTdHJpbmcgKiljdXN0b21OYXZpZ2F0
b3JQbGF0Zm9ybQogewotICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEN1c3RvbU5hdmlnYXRvclBs
YXRmb3JtKGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKTsKKyAgICBfd2VicGFnZVByZWZlcmVuY2Vz
LT5zZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybShjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSk7CiB9
CiAKIC0gKE5TU3RyaW5nICopY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0KIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVQb2xpY2llcy0+Y3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0oKTsKKyAgICByZXR1cm4g
X3dlYnBhZ2VQcmVmZXJlbmNlcy0+Y3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0oKTsKIH0KIAogLSAo
TlNTdHJpbmcgKilkZXNjcmlwdGlvbgpAQCAtMjU0LDcgKzI1NCw3IEBAIC0gKE5TU3RyaW5nICop
ZGVzY3JpcHRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4g
Kl93ZWJzaXRlUG9saWNpZXM7CisgICAgcmV0dXJuICpfd2VicGFnZVByZWZlcmVuY2VzOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaAppbmRleCA2ZDgxMzBmMzQzOTgz
YmVhODFkNDEyYTJhZDMzM2Y0YjI3MzY0MmM1Li5jYWQ4OTI1NzhlYjFlZjgzOTc0ZDlhMmNhMTky
MjdjN2I2ZDljZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmgKQEAgLTI1LDE0
ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiQVBJV2Vic2l0ZVBvbGljaWVz
LmgiCisjaW1wb3J0ICJBUElXZWJwYWdlUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0
LmgiCiAjaW1wb3J0ICJXS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCIKICNpbXBvcnQgIl9X
S1dlYnNpdGVQb2xpY2llcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnNpdGVQb2xpY2llcz4gewordGVtcGxhdGU8PiBz
dHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnBhZ2VQcmVmZXJlbmNlcz4gewogICAgIHVzaW5n
IFdyYXBwZXJDbGFzcyA9IFdLV2VicGFnZVByZWZlcmVuY2VzOwogfTsKIApAQCAtNDAsNyArNDAs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiB7CiAKIEBpbnRlcmZhY2UgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVQb2xpY2llcz4gX3dl
YnNpdGVQb2xpY2llczsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpXZWJwYWdlUHJlZmVy
ZW5jZXM+IF93ZWJwYWdlUHJlZmVyZW5jZXM7CiB9CiAKIEBwcm9wZXJ0eSAoY2xhc3MsIG5vbmF0
b21pYywgcmVhZG9ubHkpIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZVBvbGljaWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVQb2xpY2llcy5tbQppbmRleCBjOTI3MDlkZGQ4YzcxNGQ1YWQxNDA1ZWYxOGEzNDMyZDFiODZj
NzM4Li40MGNiZTNkN2JlYzIyOTg4MTc1ZWUxOTcwYTlhOWZhMTRlZGJjYjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXMubW0KQEAgLTM2LDEyMyArMzYsMTIzIEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfd2Vi
UGFnZVByZWZlcmVuY2VzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSk7CisgICAgX3dlYnBhZ2VQcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqKXdlYlBhZ2VQcmVmZXJlbmNlcworLSAoV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKIHsKLSAgICByZXR1cm4gX3dlYlBhZ2VQcmVmZXJlbmNl
cy5nZXQoKTsKKyAgICByZXR1cm4gX3dlYnBhZ2VQcmVmZXJlbmNlcy5nZXQoKTsKIH0KIAogLSAo
dm9pZClzZXRDb250ZW50QmxvY2tlcnNFbmFibGVkOihCT09MKWNvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQKIHsKLSAgICBbX3dlYlBhZ2VQcmVmZXJlbmNlcyBzZXRDb250ZW50QmxvY2tlcnNFbmFibGVk
OmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWRdOworICAgIFtfd2VicGFnZVByZWZlcmVuY2VzIHNldENv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQ6Y29udGVudEJsb2NrZXJzRW5hYmxlZF07CiB9CiAKIC0gKEJP
T0wpY29udGVudEJsb2NrZXJzRW5hYmxlZAogewotICAgIHJldHVybiBbX3dlYlBhZ2VQcmVmZXJl
bmNlcyBjb250ZW50QmxvY2tlcnNFbmFibGVkXTsKKyAgICByZXR1cm4gW193ZWJwYWdlUHJlZmVy
ZW5jZXMgY29udGVudEJsb2NrZXJzRW5hYmxlZF07CiB9CiAKIC0gKHZvaWQpc2V0QWxsb3dlZEF1
dG9wbGF5UXVpcmtzOihfV0tXZWJzaXRlQXV0b3BsYXlRdWlyaylhbGxvd2VkUXVpcmtzCiB7Ci0g
ICAgW193ZWJQYWdlUHJlZmVyZW5jZXMgc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzOmFsbG93ZWRR
dWlya3NdOworICAgIFtfd2VicGFnZVByZWZlcmVuY2VzIHNldEFsbG93ZWRBdXRvcGxheVF1aXJr
czphbGxvd2VkUXVpcmtzXTsKIH0KIAogLSAoX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmspYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzCiB7Ci0gICAgcmV0dXJuIFtfd2ViUGFnZVByZWZlcmVuY2VzIGFsbG93
ZWRBdXRvcGxheVF1aXJrc107CisgICAgcmV0dXJuIFtfd2VicGFnZVByZWZlcmVuY2VzIGFsbG93
ZWRBdXRvcGxheVF1aXJrc107CiB9CiAKIC0gKHZvaWQpc2V0QXV0b3BsYXlQb2xpY3k6KF9XS1dl
YnNpdGVBdXRvcGxheVBvbGljeSlwb2xpY3kKIHsKLSAgICBbX3dlYlBhZ2VQcmVmZXJlbmNlcyBz
ZXRBdXRvcGxheVBvbGljeTpwb2xpY3ldOworICAgIFtfd2VicGFnZVByZWZlcmVuY2VzIHNldEF1
dG9wbGF5UG9saWN5OnBvbGljeV07CiB9CiAKIC0gKF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeSlh
dXRvcGxheVBvbGljeQogewotICAgIHJldHVybiBbX3dlYlBhZ2VQcmVmZXJlbmNlcyBhdXRvcGxh
eVBvbGljeV07CisgICAgcmV0dXJuIFtfd2VicGFnZVByZWZlcmVuY2VzIGF1dG9wbGF5UG9saWN5
XTsKIH0KIAogLSAodm9pZClzZXREZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGlj
eTooX1dLV2Vic2l0ZURldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5KXBvbGlj
eQogewotICAgIFtfd2ViUGFnZVByZWZlcmVuY2VzIHNldERldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzUG9saWN5OnBvbGljeV07CisgICAgW193ZWJwYWdlUHJlZmVyZW5jZXMgc2V0RGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3k6cG9saWN5XTsKIH0KIAogLSAoX1dL
V2Vic2l0ZURldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5KWRldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5CiB7Ci0gICAgcmV0dXJuIFtfd2ViUGFnZVByZWZl
cmVuY2VzIGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5XTsKKyAgICByZXR1
cm4gW193ZWJwYWdlUHJlZmVyZW5jZXMgZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQ
b2xpY3ldOwogfQogCiAtICh2b2lkKXNldFBvcFVwUG9saWN5OihfV0tXZWJzaXRlUG9wVXBQb2xp
Y3kpcG9saWN5CiB7Ci0gICAgW193ZWJQYWdlUHJlZmVyZW5jZXMgc2V0UG9wVXBQb2xpY3k6cG9s
aWN5XTsKKyAgICBbX3dlYnBhZ2VQcmVmZXJlbmNlcyBzZXRQb3BVcFBvbGljeTpwb2xpY3ldOwog
fQogCiAtIChfV0tXZWJzaXRlUG9wVXBQb2xpY3kpcG9wVXBQb2xpY3kKIHsKLSAgICByZXR1cm4g
W193ZWJQYWdlUHJlZmVyZW5jZXMgcG9wVXBQb2xpY3ldOworICAgIHJldHVybiBbX3dlYnBhZ2VQ
cmVmZXJlbmNlcyBwb3BVcFBvbGljeV07CiB9CiAKIC0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBOU1N0cmluZyAqPiAqKWN1c3RvbUhlYWRlckZpZWxkcwogewotICAgIHJldHVybiBbX3dlYlBh
Z2VQcmVmZXJlbmNlcyBjdXN0b21IZWFkZXJGaWVsZHNdOworICAgIHJldHVybiBbX3dlYnBhZ2VQ
cmVmZXJlbmNlcyBjdXN0b21IZWFkZXJGaWVsZHNdOwogfQogCiAtICh2b2lkKXNldEN1c3RvbUhl
YWRlckZpZWxkczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZmllbGRz
CiB7Ci0gICAgW193ZWJQYWdlUHJlZmVyZW5jZXMgc2V0Q3VzdG9tSGVhZGVyRmllbGRzOmZpZWxk
c107CisgICAgW193ZWJwYWdlUHJlZmVyZW5jZXMgc2V0Q3VzdG9tSGVhZGVyRmllbGRzOmZpZWxk
c107CiB9CiAKIC0gKFdLV2Vic2l0ZURhdGFTdG9yZSAqKXdlYnNpdGVEYXRhU3RvcmUKIHsKLSAg
ICByZXR1cm4gW193ZWJQYWdlUHJlZmVyZW5jZXMgd2Vic2l0ZURhdGFTdG9yZV07CisgICAgcmV0
dXJuIFtfd2VicGFnZVByZWZlcmVuY2VzIHdlYnNpdGVEYXRhU3RvcmVdOwogfQogCiAtICh2b2lk
KXNldFdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKXdlYnNpdGVEYXRhU3Rv
cmUKIHsKLSAgICBbX3dlYlBhZ2VQcmVmZXJlbmNlcyBzZXRXZWJzaXRlRGF0YVN0b3JlOndlYnNp
dGVEYXRhU3RvcmVdOworICAgIFtfd2VicGFnZVByZWZlcmVuY2VzIHNldFdlYnNpdGVEYXRhU3Rv
cmU6d2Vic2l0ZURhdGFTdG9yZV07CiB9CiAKIC0gKHZvaWQpc2V0Q3VzdG9tVXNlckFnZW50OihO
U1N0cmluZyAqKWN1c3RvbVVzZXJBZ2VudAogewotICAgIFtfd2ViUGFnZVByZWZlcmVuY2VzIHNl
dEN1c3RvbVVzZXJBZ2VudDpjdXN0b21Vc2VyQWdlbnRdOworICAgIFtfd2VicGFnZVByZWZlcmVu
Y2VzIHNldEN1c3RvbVVzZXJBZ2VudDpjdXN0b21Vc2VyQWdlbnRdOwogfQogCiAtIChOU1N0cmlu
ZyAqKWN1c3RvbVVzZXJBZ2VudAogewotICAgIHJldHVybiBbX3dlYlBhZ2VQcmVmZXJlbmNlcyBj
dXN0b21Vc2VyQWdlbnRdOworICAgIHJldHVybiBbX3dlYnBhZ2VQcmVmZXJlbmNlcyBjdXN0b21V
c2VyQWdlbnRdOwogfQogCiAtICh2b2lkKXNldEN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1Np
dGVTcGVjaWZpY1F1aXJrczooTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdlbnQKIHsKLSAgICBbX3dl
YlBhZ2VQcmVmZXJlbmNlcyBzZXRDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lm
aWNRdWlya3M6Y3VzdG9tVXNlckFnZW50XTsKKyAgICBbX3dlYnBhZ2VQcmVmZXJlbmNlcyBzZXRD
dXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M6Y3VzdG9tVXNlckFn
ZW50XTsKIH0KIAogLSAoTlNTdHJpbmcgKiljdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRl
U3BlY2lmaWNRdWlya3MKIHsKLSAgICByZXR1cm4gW193ZWJQYWdlUHJlZmVyZW5jZXMgY3VzdG9t
SmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzXTsKKyAgICByZXR1cm4gW193
ZWJwYWdlUHJlZmVyZW5jZXMgY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzXTsKIH0KIAogLSAodm9pZClzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTooTlNTdHJp
bmcgKiljdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybQogewotICAgIFtfd2ViUGFnZVByZWZlcmVuY2Vz
IHNldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOmN1c3RvbU5hdmlnYXRvclBsYXRmb3JtXTsKKyAg
ICBbX3dlYnBhZ2VQcmVmZXJlbmNlcyBzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTpjdXN0b21O
YXZpZ2F0b3JQbGF0Zm9ybV07CiB9CiAKIC0gKE5TU3RyaW5nICopY3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm0KIHsKLSAgICByZXR1cm4gW193ZWJQYWdlUHJlZmVyZW5jZXMgY3VzdG9tTmF2aWdhdG9y
UGxhdGZvcm1dOworICAgIHJldHVybiBbX3dlYnBhZ2VQcmVmZXJlbmNlcyBjdXN0b21OYXZpZ2F0
b3JQbGF0Zm9ybV07CiB9CiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgJUA+Iiwgc2VsZi5jbGFzcywgW193
ZWJQYWdlUHJlZmVyZW5jZXMgZGVzY3JpcHRpb25dXTsKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCI8JUAgJUA+Iiwgc2VsZi5jbGFzcywgW193ZWJwYWdlUHJlZmVyZW5j
ZXMgZGVzY3JpcHRpb25dXTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAg
ICByZXR1cm4gW193ZWJQYWdlUHJlZmVyZW5jZXMgX2FwaU9iamVjdF07CisgICAgcmV0dXJuIFtf
d2VicGFnZVByZWZlcmVuY2VzIF9hcGlPYmplY3RdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXNJbnRlcm5hbC5oCmluZGV4IDkxZmJiOTk5NWE0MWU3NzZkZDY2YmRhM2QwZmNlODNmMzk5ZjVi
OTMuLjIzZTU0NjEzMzhlOTBmNzM0NmZlODBjMjVhOWJiMmU1ODAyODU5OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXNJbnRlcm5hbC5oCkBAIC0zMSw5ICszMSw5IEBACiBAaW50ZXJmYWNlIF9XS1dlYnNp
dGVQb2xpY2llcyAoKQogewogQHBhY2thZ2UKLSAgICBSZXRhaW5QdHI8V0tXZWJwYWdlUHJlZmVy
ZW5jZXM+IF93ZWJQYWdlUHJlZmVyZW5jZXM7CisgICAgUmV0YWluUHRyPFdLV2VicGFnZVByZWZl
cmVuY2VzPiBfd2VicGFnZVByZWZlcmVuY2VzOwogfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJQYWdlUHJlZmVyZW5jZXM7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJwYWdl
UHJlZmVyZW5jZXM7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA1NjNhNTI3NWI1NTM5ZTgyMzY2MmZiZmNjNmFiMDU2
ZWU3MzkxYWZhLi4yNzI0ZWIyMDZmYzJhZDFhYmY4MWQyOTcxMmM2NzZiOTFmZDU3MDY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC01NTcsMzEgKzU1NywzMSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKIAot
ICAgICAgICBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+IGFwaVdlYnNpdGVQb2xpY2llcyA9
IFt3ZWJzaXRlUG9saWNpZXMgd2ViUGFnZVByZWZlcmVuY2VzXSA/IFt3ZWJzaXRlUG9saWNpZXMg
d2ViUGFnZVByZWZlcmVuY2VzXS0+X3dlYnNpdGVQb2xpY2llcy5nZXQoKSA6IG51bGxwdHI7Ci0g
ICAgICAgIGlmIChhcGlXZWJzaXRlUG9saWNpZXMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiB3
ZWJzaXRlRGF0YVN0b3JlID0gYXBpV2Vic2l0ZVBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCkp
IHsKKyAgICAgICAgUmVmUHRyPEFQSTo6V2VicGFnZVByZWZlcmVuY2VzPiBhcGlXZWJwYWdlUHJl
ZmVyZW5jZXMgPSBbd2Vic2l0ZVBvbGljaWVzIHdlYnBhZ2VQcmVmZXJlbmNlc10gPyBbd2Vic2l0
ZVBvbGljaWVzIHdlYnBhZ2VQcmVmZXJlbmNlc10tPl93ZWJwYWdlUHJlZmVyZW5jZXMuZ2V0KCkg
OiBudWxscHRyOworICAgICAgICBpZiAoYXBpV2VicGFnZVByZWZlcmVuY2VzKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IGFwaVdlYnBhZ2VQcmVmZXJlbmNlcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSB3
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uSUQgIT0gUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIl9XS1dl
YnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlIG11c3QgYmUgbmlsLCBkZWZhdWx0LCBvciBu
b24tcGVyc2lzdGVudC4iXTsKICAgICAgICAgICAgICAgICBpZiAoc3ViZnJhbWVOYXZpZ2F0aW9u
KQogICAgICAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiX1dLV2Vic2l0ZVBvbGljaWVzLndlYnNpdGVEYXRhU3RvcmUg
bXVzdCBiZSBuaWwgZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLiJdOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKCFhcGlXZWJzaXRlUG9saWNpZXMtPmN1c3RvbVVzZXJBZ2VudCgpLmlz
TnVsbCgpICYmIHN1YmZyYW1lTmF2aWdhdGlvbikKKyAgICAgICAgICAgIGlmICghYXBpV2VicGFn
ZVByZWZlcmVuY2VzLT5jdXN0b21Vc2VyQWdlbnQoKS5pc051bGwoKSAmJiBzdWJmcmFtZU5hdmln
YXRpb24pCiAgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3Vt
ZW50RXhjZXB0aW9uIGZvcm1hdDpAIl9XS1dlYnNpdGVQb2xpY2llcy5jdXN0b21Vc2VyQWdlbnQg
bXVzdCBiZSBuaWwgZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLiJdOwotICAgICAgICAgICAgaWYg
KCFhcGlXZWJzaXRlUG9saWNpZXMtPmN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKCkuaXNOdWxsKCkg
JiYgc3ViZnJhbWVOYXZpZ2F0aW9uKQorICAgICAgICAgICAgaWYgKCFhcGlXZWJwYWdlUHJlZmVy
ZW5jZXMtPmN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKCkuaXNOdWxsKCkgJiYgc3ViZnJhbWVOYXZp
Z2F0aW9uKQogICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJfV0tXZWJzaXRlUG9saWNpZXMuY3VzdG9tTmF2aWdhdG9y
UGxhdGZvcm0gbXVzdCBiZSBuaWwgZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLiJdOwogICAgICAg
ICB9CiAKICAgICAgICAgc3dpdGNoIChhY3Rpb25Qb2xpY3kpIHsKICAgICAgICAgY2FzZSBXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdzoKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3dJbk5ld1Byb2Nlc3M6Ci0gICAgICAgICAgICB0cnlJbnRlcmNlcHROYXZp
Z2F0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94eSwgW2FjdGlvblBv
bGljeSwgbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xp
Y2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0oYm9vbCBpbnRlcmNlcHRlZE5hdmln
YXRpb24pIG11dGFibGUgeworICAgICAgICAgICAgdHJ5SW50ZXJjZXB0TmF2aWdhdGlvbihXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFthY3Rpb25Qb2xpY3ksIGxvY2Fs
TGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJwYWdlUHJlZmVyZW5jZXMgPSBX
VEZNb3ZlKGFwaVdlYnBhZ2VQcmVmZXJlbmNlcyldKGJvb2wgaW50ZXJjZXB0ZWROYXZpZ2F0aW9u
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoaW50ZXJjZXB0ZWROYXZpZ2F0aW9uKSB7
CiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
bG9jYWxMaXN0ZW5lci0+dXNlKHdlYnNpdGVQb2xpY2llcy5nZXQoKSwgYWN0aW9uUG9saWN5ID09
IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd0luTmV3UHJvY2VzcyA/IFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQ6OlllcyA6IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5v
KTsKKyAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2Uod2VicGFnZVByZWZlcmVuY2Vz
LmdldCgpLCBhY3Rpb25Qb2xpY3kgPT0gX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5O
ZXdQcm9jZXNzID8gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzIDogUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAogICAg
ICAgICAgICAgYnJlYWs7CkBAIC01OTQsMTMgKzU5NCwxMyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQ
YWdlUAogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhv
dXRUcnlpbmdBcHBMaW5rOgotICAgICAgICAgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUo
bG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGlj
aWVzKV0gKGJvb2wgb3B0aW1pemVkTG9hZCkgeworICAgICAgICAgICAgdHJ5T3B0aW1pemluZ0xv
YWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5l
ciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnBhZ2VQcmVmZXJlbmNlcyA9IFdURk1vdmUo
YXBpV2VicGFnZVByZWZlcmVuY2VzKV0gKGJvb2wgb3B0aW1pemVkTG9hZCkgewogICAgICAgICAg
ICAgICAgIGlmIChvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTGlz
dGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKHdlYnNpdGVQb2xp
Y2llcy5nZXQoKSk7CisgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKHdlYnBhZ2VQ
cmVmZXJlbmNlcy5nZXQoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKaW5kZXggMGY3NTRjMzc2OTBmMGM4NDY5OTE2N2UzNTgxZDI3OTE2YTVjN2IzNS4u
NTI5MzRlZjEzOTBhOTYzMDIxMWUyNDA1MTk4NTk4MmM2YjBkYmQ5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTQ3LDE0ICsx
NDcsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQog
ICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0ZWRMaW5r
U3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJiB3ZWJwYWdlUHJlZmVy
ZW5jZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOwogCi0gICAgbV9w
YWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2
aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSk7CisgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNl
VVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMs
IFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJiB3
ZWJwYWdlUHJlZmVyZW5jZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkpOwogCkBAIC0xNjQsMTAgKzE2NCwxMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAg
IGlmIChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRM
aXN0KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZp
Z2F0aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIFdURk1vdmUocmVx
dWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
KTsKKyAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkOjpZZXMsIFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzKSk7CiB9CiAKLXZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJiBpdGVtLCBPcHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiYm
IHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
YWdlLnBhZ2VJRCgpKTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBX
ZWJCCiAgICAgICAgIHJldHVybiAmaXRlbSAhPSB0YXJnZXRJdGVtOwogICAgIH0pOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9y
UmVhdHRhY2goV1RGTW92ZShpdGVtU3RhdGVzKSksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmln
YXRpb24ubmF2aWdhdGlvbklEKCksIGl0ZW0uaXRlbUlEKCksICpuYXZpZ2F0aW9uLmJhY2tGb3J3
YXJkRnJhbWVMb2FkVHlwZSgpLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2
aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5hdmlnYXRpb24uYmFja0Zv
cndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzLCBXVEZNb3ZlKHdlYnBhZ2VQcmVmZXJlbmNlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwog
ICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGI2MTg5
NGJmNjdlN2I5MjUyZDViNGRhMTA5ZjY5YmVmNDY3NGU5MDguLmEyMDBkOTZjNGYzMzAzZDM0NTM1
MjA4ZDdiOGRhMjVjZjNjYjc0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2ll
c0RhdGEuaCIKKyNpbmNsdWRlICJXZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC03NCw5ICs3NCw5IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8dWludDhfdD4gdGFrZUFjY2Vzc2liaWxpdHlUb2tlbigpIHsgcmV0dXJu
IFdURk1vdmUobV9hY2Nlc3NpYmlsaXR5VG9rZW4pOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9h
ZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0
aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJ
dGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKKyAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlv
biYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBPcHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiYmID0gV1RGOjpudWxs
b3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmln
YXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVu
Y2VzRGF0YT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHZvaWQgcHJvY2Vzc0RpZFRl
cm1pbmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggOGUzMWYwNzAxNTNmYjZlYWNkNGIwZmQyYWMz
Y2RkMGRmYjQ5ZTljMC4uYmZhNjBkODBiOWQ4NjVkZTQ3MzUyOGY0MTAyM2ZmZTU0MzliYTQ4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKKyNpbmNs
dWRlICJBUElXZWJwYWdlUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiU2FmZUJy
b3dzaW5nV2FybmluZy5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgot
I2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTU1LDEzICs1NSwxMyBAQCB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6ZGlk
UmVjZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMoUmVmUHRyPFNhZmVCcm93cwogICAgICAgICBtX3Nh
ZmVCcm93c2luZ1dhcm5pbmcgPSBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpOwogfQogCi12
b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50KQordm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OnVzZShBUEk6
OldlYnBhZ2VQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCkKIHsKICAgICBpZiAobV9zYWZlQnJv
d3NpbmdXYXJuaW5nKSB7CiAgICAgICAgIGlmIChtX3JlcGx5KQotICAgICAgICAgICAgbV9yZXBs
eShXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZSwgcG9saWNpZXMsIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdURk1vdmUoKm1fc2FmZUJyb3dzaW5nV2FybmluZykpOworICAgICAgICAg
ICAgbV9yZXBseShXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZSwgcHJlZmVyZW5jZXMsIHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUoKm1fc2FmZUJyb3dzaW5nV2FybmluZykp
OwogICAgIH0gZWxzZSBpZiAoIW1fcG9saWN5UmVzdWx0KQotICAgICAgICBtX3BvbGljeVJlc3Vs
dCA9IHt7IHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IH19OworICAgICAg
ICBtX3BvbGljeVJlc3VsdCA9IHt7IHByZWZlcmVuY2VzLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IH19OwogfQogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6ZG93bmxv
YWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuaAppbmRleCA5YTZiZTk5ZDQwNzNlZTEwOGI0Y2IyMGY3MjFjMTA4ZjdjMDE4
OGU5Li42NWFhMmQwYmU3ZDdiMThmYWUwMzRmZWQ0N2ZkYTJhMTUyYzhmMTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEFQSSB7Ci1jbGFzcyBXZWJzaXRlUG9saWNpZXM7CitjbGFzcyBXZWJwYWdlUHJlZmVyZW5jZXM7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsMTQgKzQ0LDE0IEBAIGVudW0gY2xhc3Mg
U2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0IHsgTm8sIFllcyB9OwogY2xhc3MgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6RnJhbWVQb2xpY3lMaXN0ZW5lcj4gewogcHVibGljOgogCi0gICAgdXNpbmcgUmVw
bHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpX
ZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJik+OworICAgIHVzaW5nIFJlcGx5ID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2VicGFnZVByZWZlcmVuY2VzKiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYpPjsKICAgICBzdGF0aWMgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gY3JlYXRl
KFJlcGx5JiYgcmVwbHksIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBleHBlY3QpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkoV1RGTW92ZShyZXBseSksIGV4cGVjdCkpOwogICAgIH0KICAgICB+V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5KCk7CiAKLSAgICB2b2lkIHVzZShBUEk6OldlYnNpdGVQb2xpY2llcyog
PSBudWxscHRyLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0gUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudDo6Tm8pOworICAgIHZvaWQgdXNlKEFQSTo6V2VicGFnZVByZWZlcmVuY2Vz
KiA9IG51bGxwdHIsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPSBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgdm9pZCBkb3dubG9hZCgpOwogICAgIHZvaWQgaWdu
b3JlKCk7CiAgICAgCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KFJlcGx5JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2lu
Z1Jlc3VsdCk7CiAKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8UmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudD4+IG1fcG9saWN5UmVzdWx0Owor
ICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxSZWZQdHI8QVBJOjpXZWJwYWdlUHJlZmVyZW5jZXM+LCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50Pj4gbV9wb2xpY3lSZXN1bHQ7CiAgICAgT3B0aW9u
YWw8UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+PiBtX3NhZmVCcm93c2luZ1dhcm5pbmc7CiAg
ICAgUmVwbHkgbV9yZXBseTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwCmluZGV4IDdiYjg2YjFjOGJjNjY1OTliNDBmYmI5NjU1MDk2NDZlNmEzOWQ3MDkuLmIx
ZmEzNDI4NWU3MzY5NDI0MTY1Njk2YmNjMmMxM2U1YzljNGIwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2ll
c0RhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTE4NiwxMiArMTg2LDEy
IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSkKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLVdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0IGV4cGVjdCkKK1dl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0
ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnBh
Z2VQcmVmZXJlbmNlcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZl
QnJvd3NpbmdXYXJuaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgU2hvdWxkRXhwZWN0U2Fm
ZUJyb3dzaW5nUmVzdWx0IGV4cGVjdCkKIHsKICAgICBpZiAobV9hY3RpdmVMaXN0ZW5lcikKICAg
ICAgICAgbV9hY3RpdmVMaXN0ZW5lci0+aWdub3JlKCk7Ci0gICAgbV9hY3RpdmVMaXN0ZW5lciA9
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9s
aWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2Fybmlu
ZykgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFjdGlvbiwgcG9saWNpZXMs
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUoc2FmZUJyb3dzaW5nV2Fybmlu
ZykpOworICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6
OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUG9saWN5QWN0aW9uIGFjdGlv
biwgQVBJOjpXZWJwYWdlUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJv
d3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhY3Rpb24sIHByZWZlcmVuY2VzLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpKTsKICAgICAgICAgbV9hY3Rp
dmVMaXN0ZW5lciA9IG51bGxwdHI7CiAgICAgfSwgZXhwZWN0KTsKICAgICByZXR1cm4gKm1fYWN0
aXZlTGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXgg
YWQ5YWY5MjU5MzY2ODM3ZjgxM2RiMDYzNTM5NDczNWRmNjBjNmViZC4uMTE1MmU1ZjkxYWQ1NjVm
MGU2ZjdmMmFkMDg4Nzg4ZGJiZjc1OTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlOwogZW51bSBjbGFzcyBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1
bHQ7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7Ci1zdHJ1Y3QgV2Vi
c2l0ZVBvbGljaWVzRGF0YTsKK3N0cnVjdCBXZWJwYWdlUHJlZmVyZW5jZXNEYXRhOwogCiB0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7CiAKQEAgLTExOCw3
ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNv
bnN0IFVSTCYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdl
LgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHkmIHNldFVwUG9saWN5TGlzdGVuZXJQcm94eShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMq
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2Fybmlu
Zz4mJik+JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCk7CisgICAgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2VicGFnZVByZWZlcmVuY2Vz
KiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYpPiYmLCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQpOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92ZShjb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAzNjJlOTg0MmZlYWI3MGY5MGE0Zjg1YjA3NjMxMjg2ZTVhN2IzNGIzLi5i
MjNkNjlkNGY4OGM2YmZlMDEzOWE3NGMxOWY4NmY0OWEzZTM1ODZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJB
UElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1
ZGUgIkFQSVdlYnBhZ2VQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
aCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNobwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNE
YXRhPiYmIHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwog
CkBAIC0xMTA4LDcgKzExMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGxvYWRQ
YXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAodWludDY0X3Qpc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVz
ZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgp
KTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPSBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZ
ZXM7Ci0gICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpOworICAgIGxvYWRQYXJhbWV0ZXJzLndlYnBhZ2VQcmVmZXJlbmNlcyA9IFdURk1v
dmUod2VicGFnZVByZWZlcmVuY2VzKTsKICAgICBsb2FkUGFyYW1ldGVycy5sb2NrSGlzdG9yeSA9
IG5hdmlnYXRpb24ubG9ja0hpc3RvcnkoKTsKICAgICBsb2FkUGFyYW1ldGVycy5sb2NrQmFja0Zv
cndhcmRMaXN0ID0gbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbG9hZFBh
cmFtZXRlcnMuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gbmF2aWdhdGlvbi5jbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKQEAgLTExOTAsNyArMTE5MCw3IEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiYmIHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CiAKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywKICAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsK
ICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPSBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXM7
CiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzLT50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7Ci0gICAgbG9hZFBhcmFtZXRlcnMu
d2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOworICAgIGxvYWRQYXJh
bWV0ZXJzLndlYnBhZ2VQcmVmZXJlbmNlcyA9IFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzKTsK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIHBy
b2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwpAQCAtMTM0
NSw3ICsxMzQ1LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKICAgICBhdXRvIG5hdmlnYXRp
b24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVsb2FkTmF2aWdhdGlvbigpOwogCiAgICAg
Ly8gU3RvcmUgZGVjaXNpb24gdG8gcmVsb2FkIHdpdGhvdXQgY29udGVudCBibG9ja2VycyBvbiB0
aGUgbmF2aWdhdGlvbiBzbyB0aGF0IHdlIGNhbiBsYXRlciBzZXQgdGhlIGNvcnJlc3BvbmRpbmcK
LSAgICAvLyBXZWJzaXRlUG9saWNpZXMgZmxhZyBpbiBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKCkuCisgICAgLy8gV2VicGFnZVByZWZlcmVuY2VzIGZsYWcg
aW4gV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpLgogICAg
IGlmIChvcHRpb25zLmNvbnRhaW5zKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRl
bnRCbG9ja2VycykpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldFVzZXJDb250ZW50RXh0ZW5zaW9u
c0VuYWJsZWQoZmFsc2UpOwogCkBAIC0yNzEzLDcgKzI3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6
UG9saWN5RGVjaXNpb25TZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lvblNl
bmRlcj4gewogcHVibGljOgotICAgIHVzaW5nIFNlbmRGdW5jdGlvbiA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5l
d05hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4p
PjsKKyAgICB1c2luZyBTZW5kRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBvbGlj
eUNoZWNrSWRlbnRpZmllciwgUG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQs
IERvd25sb2FkSUQsIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE+KT47CiAKICAgICBz
dGF0aWMgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiBjcmVhdGUoUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFNlbmRGdW5jdGlvbiYmIHNlbmRGdW5jdGlvbikKICAgICB7CkBAIC0y
NzM1LDIxICsyNzM1LDIxIEBAIHByaXZhdGU6CiAgICAgUG9saWN5Q2hlY2tJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6V2VicGFnZVByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcywgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
d2Vic2l0ZURhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7Ci0gICAgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKLSAgICBpZiAocG9saWNpZXMpIHsKLSAg
ICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xpY2llcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRl
RGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICBPcHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiBkYXRhOworICAg
IGlmIChwcmVmZXJlbmNlcykgeworICAgICAgICBkYXRhID0gcHJlZmVyZW5jZXMtPmRhdGEoKTsK
KyAgICAgICAgaWYgKHByZWZlcmVuY2VzLT53ZWJzaXRlRGF0YVN0b3JlKCkgJiYgJnByZWZlcmVu
Y2VzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0
YVN0b3JlLnB0cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gcHJlZmVyZW5j
ZXMtPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogICAgICAgICAgICAg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQ6OlllczsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChuYXZpZ2F0aW9uICYmICFuYXZp
Z2F0aW9uLT51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkpIHsKICAgICAgICAgaWYgKCFk
YXRhKQotICAgICAgICAgICAgZGF0YSA9IFdlYnNpdGVQb2xpY2llc0RhdGEgeyB9OworICAgICAg
ICAgICAgZGF0YSA9IFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGEgeyB9OwogICAgICAgICBkYXRhLT5j
b250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7CiAgICAgfQogCkBAIC0yODEwLDcgKzI4MTAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNl
c0RhdGE+JiYgd2VicGFnZVByZWZlcmVuY2VzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5l
d1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIHNl
bmRlci0+c2VuZChQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51
bGxvcHQpOwpAQCAtMjgzNiw3ICsyODM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAg
ICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IHsgfTsKICAgICB9CiAKLSAg
ICBzZW5kZXItPnNlbmQoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIHNl
bmRlci0+c2VuZChhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1Bs
dWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjg3Miw3
ICsyODcyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25J
bk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8
U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZVByb3h5LCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJiB3ZWJw
YWdlUHJlZmVyZW5jZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKICAgICBM
T0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEg
bmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5s
b2dnaW5nU3RyaW5nKCkpOwpAQCAtMjg5Miw3ICsyODkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIHMKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOwogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwo
dHJhbnNhY3Rpb24sIGl0ZW0tPnVybCgpKTsKIAotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+
Z29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3ZWJzaXRlUG9s
aWNpZXMpKTsKKyAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0o
bmF2aWdhdGlvbiwgKml0ZW0sIFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI5MDUsOSArMjkwNSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBzCiAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGgg
dGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKICAgICBBU1NFUlQoIW5hdmlnYXRpb24uY3Vy
cmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwogICAgIGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9
IG5hdmlnYXRpb24uc3Vic3RpdHV0ZURhdGEoKSkKLSAgICAgICAgbV9wcm92aXNpb25hbFBhZ2Ut
PmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBz
dWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBl
LCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJz
dGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7Cisg
ICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1
dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0s
IHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJz
dGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBXVEZN
b3ZlKHdlYnBhZ2VQcmVmZXJlbmNlcykpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm92aXNpb25h
bFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRp
b24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpKTsKKyAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFs
U2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJwYWdlUHJlZmVyZW5jZXMpKTsKIH0KIAogYm9v
bCBXZWJQYWdlUHJveHk6OmlzUGFnZU9wZW5lZEJ5RE9NU2hvd2luZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KCkgY29uc3QKQEAgLTQ1NzAsMTAgKzQ1NzAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXMKICAgICBpZiAoIW1fcHJlZmVyZW5jZXMtPnNhZmVCcm93c2luZ0VuYWJsZWQoKSkKICAgICAg
ICAgc2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID0gU2hvdWxkRXhwZWN0U2FmZUJyb3dz
aW5nUmVzdWx0OjpObzsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVw
UG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmln
YXRpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyog
cG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2Fy
bmluZykgbXV0YWJsZSB7CisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdh
dGlvbl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2VicGFnZVByZWZlcmVuY2Vz
KiBwcmVmZXJlbmNlcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3Np
bmdXYXJuaW5nKSBtdXRhYmxlIHsKIAotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgZnJhbWUgPSBm
cmFtZS5jb3B5UmVmKCksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiA9IFdU
Rk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVz
ID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBvbGlj
eUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
ZnJhbWUsIHBvbGljaWVzLmdldCgpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNv
cHlSZWYoKSwgZnJhbWUgPSBmcmFtZS5jb3B5UmVmKCksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVy
KSwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIHByZWZlcmVuY2VzID0gbWFrZVJlZlB0cihwcmVmZXJlbmNlcyldIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIHByZWZlcmVuY2VzLmdldCgpLCBXVEZNb3Zl
KHNlbmRlcikpOwogICAgICAgICB9OwogCiAgICAgICAgIGlmICghbV9wYWdlQ2xpZW50KQpAQCAt
NDc0NCw4ICs0NzQ0LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cmkKICAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2Vzcywg
cmVxdWVzdC51cmwoKSk7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSURdIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
c3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGll
bnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgorICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVu
ZXJJRCwgZnJhbWVJRF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2VicGFnZVBy
ZWZlcmVuY2VzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdX
YXJuaW5nKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJw
YWdlUHJlZmVyZW5jZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBv
bGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcs
ICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIApAQCAtNDc5Myw4ICs0NzkzLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywKIAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24g
PSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9u
SUQpIDogbnVsbHB0cjsKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5h
dmlnYXRpb24pLAotICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhl
cmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBn
byBhd2F5LgorICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnBhZ2VQcmVmZXJlbmNlcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CisgICAgICAg
IC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2VicGFnZVByZWZlcmVuY2VzKiBpcyBudWxscHRy
IGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2ll
cyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAK
QEAgLTczOTgsOSArNzM5OCw5IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpv
bnRhbFNjcm9sbEV2ZW50cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NhblNob3J0Q2lyY3VpdEhv
cml6b250YWxXaGVlbEV2ZW50czsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNp
dGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlcyhXZWJwYWdlUHJlZmVyZW5jZXNE
YXRhJiYgd2VicGFnZVByZWZlcmVuY2VzKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcyksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnBh
Z2VQcmVmZXJlbmNlcyh3ZWJwYWdlUHJlZmVyZW5jZXMpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRl
cihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGFSZWZlcmVuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDE0NDczNTE0YTA4MWY3NWU0NmJiOTEyYjc2Nzk4MTI5ZjU5MWViZDUuLmY5YzVjMTJmYmNh
ZTc3ZGU1MDM3NjdiM2NhMWYxZmQ5YjFhZTljNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC02MCwxMyArNjAsMTMgQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgiCi0jaW5jbHVkZSAi
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJh
Y2tlci5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwSUQuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9s
aWNpZXNEYXRhLmgiCisjaW5jbHVkZSAiV2VicGFnZVByZWZlcmVuY2VzRGF0YS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0b3BsYXlF
dmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KQEAgLTUzOCw3ICs1MzgsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIHdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29u
c3Q7CiAKLSAgICB2b2lkIHVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRh
JiYpOworICAgIHZvaWQgdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzKFdlYnBhZ2VQcmVmZXJlbmNl
c0RhdGEmJik7CiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKIApAQCAtMTAxMiw4ICsxMDEyLDggQEAgcHVibGljOgogCiAgICAgY2xhc3MgUG9saWN5
RGVjaXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
V2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIFdpbGxDb250aW51
ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7Ci0g
ICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdl
YkZyYW1lUHJveHkmLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFJlZjxQb2xpY3lEZWNpc2lvblNl
bmRlcj4mJik7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0
YT4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBXaWxsQ29udGludWVMb2FkSW5OZXdQ
cm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQgcmVj
ZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5
JiwgQVBJOjpXZWJwYWdlUHJlZmVyZW5jZXMqLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYp
OwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXImKTsKIApAQCAtMTQ4NCw4ICsxNDg0LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCiAg
ICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3Rh
cnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFVSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAg
ICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJiA9IFdURjo6bnVsbG9w
dCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vi
cGFnZVByZWZlcmVuY2VzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBm
cmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LApAQCAtMjAwOSw3ICsyMDA5LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
PSB7IH0pOwogCi0gICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpO
YXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiwgUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJik7CiAKICAgICB2b2lkIHNl
dE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAgICAgdm9pZCB1cGRhdGVGb250QXR0cmlidXRl
c0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMWZmZmU0YTkxYmRjNjUxYzVkZTI2NDQ3
NmVjM2E3NDM3NDY2MzA0Li4xMzI1MWI5ODRhY2FjZGU0MDJlMjc5OTRiMmQ3MDQ4ZGU3Nzg5M2E5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMDQsNyArMTA0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAj
IFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1
aW50NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRp
cmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25J
RCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0
ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cworICAgIERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRl
bnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IE9wdGlvbmFsPFdlYktpdDo6V2VicGFnZVByZWZlcmVuY2VzRGF0YT4gd2VicGFnZVByZWZlcmVu
Y2VzKSBTeW5jaHJvbm91cwogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1l
TmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAg
ICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMzgwNjEzZTEy
ZGRlZTMwOWYwNTQzNGIzNmRmOWE5MzllNTg4NGQzLi4yZmFjMzEwMjU0YmIxMWEyYmNjZmFjMmRk
NmE3YTMyOGUyMmMwMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTM0NTgsNyArMzQ1OCw3IEBACiAJCTVDMEIxNzdFMUU3Qzg4Njcw
MEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMwQjE3N0YxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0ubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1NvY2tldFN0cmVhbS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3ODAxRTdDODg4MDAw
RTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBXZWJTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxMzAy
NEExRkUzNDFBNzAwMEQ5QjMxIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzEzMDI0QTFGRTM0MUE3MDAwRDlCMzEgLyogV2VicGFnZVByZWZl
cmVuY2VzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJwYWdlUHJl
ZmVyZW5jZXNEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNkUyMUMy
M0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNkUzMUMy
M0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjZFNDFDMjNGODA1MDBE
NDExODMgLyogTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzQ4OSw2ICszNDg5LDcgQEAKIAkJNUM0NjA5RTQyMjQzMEU0RDAwOTk0
M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDYwOUU1MjI0MzBGQTYwMDk5NDNDMiAvKiBB
UElDb250ZW50UnVsZUxpc3RBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM0NjA5RTYyMjQzMEZBNzAwOTk0M0MyIC8qIEFQSUNvbnRlbnRSdWxlTGlz
dEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZW50UnVs
ZUxpc3RBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQUVBOEUxRkUx
RjFERjAwMjMxOEQzIC8qIFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2VicGFnZVByZWZlcmVuY2VzRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDZDMEFDMjFCNzE5OEIwMEJDNTk5MSAvKiBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNDZDMEFEMjFCNzE5OEMwMEJDNTk5MSAvKiBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzQ2QzBBRTIxQjcxQUUyMDBCQzU5OTEgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNTExLDggKzM1MTIsOCBAQAogCQk1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0
RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBlbmRpbmdEb3dubG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDODlERjU2MjFBRjYxRkYwMDQ2NDVFOCAvKiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOEJDNzk2MjE4Q0I1OEEwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXIuYXNzZXRj
YXRhbG9nOyBuYW1lID0gU2FmZUJyb3dzaW5nLnhjYXNzZXRzOyBwYXRoID0gUmVzb3VyY2VzL1Nh
ZmVCcm93c2luZy54Y2Fzc2V0czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM4REQz
N0MxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJzaXRl
UG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzhERDM3QzFGRTQ1
MDExMDBGMkE1NTYgLyogQVBJV2VicGFnZVByZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSVdlYnBhZ2VQcmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2VicGFnZVByZWZl
cmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnBh
Z2VQcmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOEREMzdG
MUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0
b3BsYXlRdWlyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlQXV0
b3BsYXlRdWlyay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4MDFERjdG
MDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTIyNSwxMCArNTIyNiwxMCBAQAogCQkJCTM3NjA4ODFEMTUwNDEzRTkw
MEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLywKIAkJCQk1QzhERDM3RjFGRTQ1MTkyMDBG
MkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggKi8sCiAJCQkJNUM4REQzODExRkU0NTVD
QTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8sCisJCQkJNUMzQUVBOEUxRkUx
RjFERjAwMjMxOEQzIC8qIFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuY3BwICovLAorCQkJCTVDMTMw
MjRBMUZFMzQxQTcwMDBEOUIzMSAvKiBXZWJwYWdlUHJlZmVyZW5jZXNEYXRhLmggKi8sCiAJCQkJ
NTExRjdEM0YxRUIxQkNFRTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNw
cCAqLywKIAkJCQk1MTFGN0Q0MDFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuaCAqLywKLQkJCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBv
bGljaWVzRGF0YS5jcHAgKi8sCi0JCQkJNUMxMzAyNEExRkUzNDFBNzAwMEQ5QjMxIC8qIFdlYnNp
dGVQb2xpY2llc0RhdGEuaCAqLywKIAkJCQkwRURFODUwMjIwMDRFNzQ5MDAwMzA1NjAgLyogV2Vi
c2l0ZVBvcFVwUG9saWN5LmggKi8sCiAJCQkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJODM2MDM0OUUxQUNCMzRENjAwNjI2
NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovLApAQCAtNzY5OSwxMiArNzcwMCwx
MiBAQAogCQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmggKi8s
CiAJCQkJMkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmNwcCAq
LywKIAkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAq
LywKKwkJCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2VicGFnZVByZWZlcmVuY2Vz
LmNwcCAqLywKKwkJCQk1QzhERDM3QzFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2VicGFnZVByZWZl
cmVuY2VzLmggKi8sCiAJCQkJMUFFMjg2ODExQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVE
YXRhUmVjb3JkLmNwcCAqLywKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vi
c2l0ZURhdGFSZWNvcmQuaCAqLywKIAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJ
V2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8q
IEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKLQkJCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYg
LyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKLQkJCQk1QzhERDM3QzFGRTQ1MDExMDBGMkE1
NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIxQjdBOEM1MDAwOUNG
Nzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKIAkJCQkxQTY1NjNFMzFCN0E4QzUwMDA5
Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA1MGM3OWVhZDlkZDZlNTFkODk4NWVjMTdkZTkzZDc2NzY3MWYz
NTJkLi42YzkzZTcwZmMzOTVmZGU2MjJjNjEzNDhiMjZmNzU2MTIxY2U0NzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgorI2luY2x1ZGUgIldlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZyYW1lLmg+CkBAIC04MzEsNyArODMxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oY29uc3QgTmF2aWdhdGkKICAgICAgICAgZnJhbWVOYW1lLCBsaXN0ZW5lcklELCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vi
cGFnZVByZWZlcmVuY2VzRGF0YSYmIHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYm
IHdlYnNpdGVQbwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcyksICpkb2N1bWVudExvYWRlcik7CisgICAgV2VicGFnZVByZWZlcmVuY2Vz
RGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdURk1vdmUod2VicGFnZVByZWZlcmVuY2VzKSwg
KmRvY3VtZW50TG9hZGVyKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwKQEAgLTkzNSwxMiArOTM1LDEyIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciByZXNwb25zZUlkZW50aWZpZXI7CiAgICAgICAgIFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb247CiAgICAgICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKLSAgICAgICAgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzOworICAgICAgICBPcHRpb25hbDxX
ZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiB3ZWJwYWdlUHJlZmVyZW5jZXM7CiAKICAgICAgICAgaWYg
KCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFp
bkZyYW1lKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksCiAgICAg
ICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgp
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5h
dGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwK
ICAgICAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkg
fSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwKLSAgICAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jOjpSZXBseShyZXNwb25zZUlkZW50aWZpZXIsIHBvbGljeUFjdGlvbiwgbmV3TmF2aWdh
dGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgeworICAgICAgICAgICAgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6
OlJlcGx5KHJlc3BvbnNlSWRlbnRpZmllciwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQs
IGRvd25sb2FkSUQsIHdlYnBhZ2VQcmVmZXJlbmNlcykpKSB7CiAgICAgICAgICAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcmVxdWVzdElkZW50aWZpZXIs
IFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOGY1NGM1Y2ZlNTc3
MWIyOWRlOTQzMDJkNmE1NzRmZjViMGRmZTQ0Ny4uY2M0YWFkNzZiZGNjNDUxN2JjNDBiNDczYzFm
ZGZiNDA1ZDlmYzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM1LDcgKzM1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpblZpZXc7CiBjbGFzcyBXZWJG
cmFtZTsKLXN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOworc3RydWN0IFdlYnBhZ2VQcmVmZXJl
bmNlc0RhdGE7CiAgICAgCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29u
TG9hZGluZ0NsaWVudCkgeyBtX3VzZUljb25Mb2FkaW5nQ2xpZW50ID0gdXNlSWNvbkxvYWRpbmdD
bGllbnQ7IH0KIAotICAgIHZvaWQgYXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2ll
c0RhdGEmJik7CisgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2VicGFnZVByZWZlcmVu
Y2VzRGF0YSYmKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5h
bDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGI5NjA1OWZm
NjMzM2Y1YWEyZjQ1M2M3ZGY1ODVjNDQxNmI5NTc3MGUuLjAzYjhkMTBmMzBkZGM2MzRlZWNlOGFk
OWEyYjFhNzY3NTMyZjE3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
Ci0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorI2luY2x1ZGUgIldlYnBhZ2VQcmVm
ZXJlbmNlc0RhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxp
ZGF0ZVBvbGljeUxpc3RlbmVyKCkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAot
dm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBQb2xpY3lBY3Rp
b24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdl
YkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbiBhY3Rp
b24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25h
bDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRhPiYmIHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsKICAgICBp
ZiAoIW1fY29yZUZyYW1lIHx8ICFtX3BvbGljeUxpc3RlbmVySUQgfHwgbGlzdGVuZXJJRCAhPSBt
X3BvbGljeUxpc3RlbmVySUQgfHwgIW1fcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTI2OSw4ICsyNjksOCBAQCB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24odWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlYwogCiAgICAgaW52YWxp
ZGF0ZVBvbGljeUxpc3RlbmVyKCk7CiAKLSAgICBpZiAoZm9yTmF2aWdhdGlvbkFjdGlvbiAmJiBt
X2ZyYW1lTG9hZGVyQ2xpZW50ICYmIHdlYnNpdGVQb2xpY2llcykKLSAgICAgICAgbV9mcmFtZUxv
YWRlckNsaWVudC0+YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdURk1vdmUoKndlYnNpdGVQb2xpY2ll
cykpOworICAgIGlmIChmb3JOYXZpZ2F0aW9uQWN0aW9uICYmIG1fZnJhbWVMb2FkZXJDbGllbnQg
JiYgd2VicGFnZVByZWZlcmVuY2VzKQorICAgICAgICBtX2ZyYW1lTG9hZGVyQ2xpZW50LT5hcHBs
eVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSgqd2VicGFnZVByZWZlcmVuY2VzKSk7CiAKICAgICBt
X3BvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOwogICAgIGlmIChuYXZpZ2F0aW9uSUQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDcxYjM4
ZjYxYWIxOTUwNTViNDQ3ZTg3YmZmZjdlOTY0MDZkZWVhOWMuLjk2NDBjMzRiMzE0YzE0YTdlMGVm
YTRhZWMwMDRlZDRiZjRiMDZiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYlBhZ2U7
CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKLXN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOworc3Ry
dWN0IFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE7CiAKIGNsYXNzIFdlYkZyYW1lIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlRnJhbWU+IHsKIHB1YmxpYzoK
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgRm9yTmF2aWdhdGlvbkFj
dGlvbiB7IE5vLCBZZXMgfTsKICAgICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
LCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKICAgICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5l
cigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6UG9saWN5QWN0aW9u
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQsIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQsIE9wdGlvbmFsPFdl
YnBhZ2VQcmVmZXJlbmNlc0RhdGE+JiYpOwogCiAgICAgdWludDY0X3Qgc2V0VXBXaWxsU3VibWl0
Rm9ybUxpc3RlbmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjb250
aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTdjZjE4ZTZlZWRkMWRjNzM3ODI4NmUwZTNjMDFk
NmYwYmE1Mjg2My4uNzUwNjQ1MzRiZjI2YjcxMDA0MTYxOTc2NjFkMTNiMmJiODA1MDQ4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0NDcs
NyArMTQ0Nyw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBs
b2FkUGFyYW1ldGVycykKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsK
IAogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25J
RDsKLSAgICBtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJz
LndlYnNpdGVQb2xpY2llcyk7CisgICAgbV9wZW5kaW5nV2VicGFnZVByZWZlcmVuY2VzID0gV1RG
TW92ZShsb2FkUGFyYW1ldGVycy53ZWJwYWdlUHJlZmVyZW5jZXMpOwogCiAgICAgbV9zYW5kYm94
RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIFdURk1vdmUobG9h
ZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogCkBAIC0xNDcwLDE1ICsxNDcw
LDE1IEBAIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycykKICAgICBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5sb2FkUmVxdWVzdChX
VEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdh
dGlvbklEKTsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyk7CisgICAgQVNT
RVJUKCFtX3BlbmRpbmdXZWJwYWdlUHJlZmVyZW5jZXMpOwogfQogCi12b2lkIFdlYlBhZ2U6Omxv
YWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0
IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2Vi
UGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE+JiYgd2Vi
cGFnZVByZWZlcmVuY2VzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCiAgICAg
bV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwotICAgIG1fcGVuZGluZ1dlYnNp
dGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKTsKKyAgICBtX3BlbmRpbmdXZWJw
YWdlUHJlZmVyZW5jZXMgPSBXVEZNb3ZlKHdlYnBhZ2VQcmVmZXJlbmNlcyk7CiAKICAgICBSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlVVJMKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlKFVSTCgpLCBNSU1FVHlwZSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIGVuY29kaW5nTmFtZSk7
CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0
ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJz
LmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIFVSTCBiYXNl
VVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5r
VVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOwotICAgIGxv
YWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRl
UG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSk7CisgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzLndlYnBhZ2VQcmVmZXJlbmNlcyksIFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwg
YmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQpA
QCAtMTUxMiw3ICsxNTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2Fk
UGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJv
clVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRF
cnJvclVSTFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRh
dGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBtX21haW5GcmFtZS0+Y29y
ZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJM
KHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsgICAgCi0gICAgbG9hZERhdGFJbXBsKGxvYWRQYXJh
bWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUo
c2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVu
Y29kaW5nTmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJE
YXRhKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2Fk
UGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMud2VicGFnZVByZWZlcmVuY2VzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFy
YW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCB1
bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogICAgIG1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRs
ZWRVUkwoeyB9KTsKIH0KIApAQCAtMTU3NSw3ICsxNTc1LDcgQEAgdm9pZCBXZWJQYWdlOjpyZWxv
YWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94
RXh0ZW4KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tG
b3J3YXJkSXRlbUlELCBGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2U6OmdvVG9C
YWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBiYWNrRm9yd2FyZEl0ZW1JRCwgRnJhbWVMb2FkVHlwZSBiYWNrRm9yd2Fy
ZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE+JiYgd2VicGFnZVByZWZlcmVu
Y2VzKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCkBAIC0x
NTkwLDcgKzE1OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAogCiAgICAgQVNTRVJUKCFt
X3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmln
YXRpb25JRDsKLSAgICBtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcyk7CisgICAgbV9wZW5kaW5nV2VicGFnZVByZWZlcmVuY2VzID0gV1RGTW92ZSh3ZWJw
YWdlUHJlZmVyZW5jZXMpOwogCiAgICAgbV9wYWdlLT5nb1RvSXRlbSgqaXRlbSwgYmFja0Zvcndh
cmRUeXBlLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQpOwogfQpAQCAtMzE1NiwxMiArMzE1
NiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYg
ZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmll
ciwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBEb3dubG9hZElEJiBkb3dubG9hZElELCBPcHRpb25hbDxXZWJwYWdlUHJlZmVyZW5jZXNEYXRh
PiYmIHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5l
cklELCBpZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwg
V1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbklE
LCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnBhZ2VQcmVmZXJlbmNlcykpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCkKQEAgLTYwMDgsNyArNjAwOCw3IEBAIHZvaWQgV2ViUGFnZTo6Zmx1c2hQZW5k
aW5nRWRpdG9yU3RhdGVVcGRhdGUoKQogICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRh
JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlOjp1cGRhdGVXZWJwYWdlUHJlZmVyZW5j
ZXMoV2VicGFnZVByZWZlcmVuY2VzRGF0YSYmIHdlYnBhZ2VQcmVmZXJlbmNlcykKIHsKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjAxNyw3ICs2MDE3LDcgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVXZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNp
dGVQb2xpY2llcykKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIpOworICAgIFdlYnBhZ2VQcmVmZXJlbmNl
c0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXVEZNb3ZlKHdlYnBhZ2VQcmVmZXJlbmNlcyks
ICpkb2N1bWVudExvYWRlcik7CiAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIG1fcGFnZS0+
dXBkYXRlTWVkaWFFbGVtZW50UmF0ZUNoYW5nZVJlc3RyaWN0aW9ucygpOwpAQCAtNjA3MSw5ICs2
MDcxLDkgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRl
cihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgIG1fcGVuZGluZ05h
dmlnYXRpb25JRCA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9wZW5kaW5nV2Vic2l0
ZVBvbGljaWVzKSB7Ci0gICAgICAgICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9j
dW1lbnRMb2FkZXIoV1RGTW92ZSgqbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzKSwgZG9jdW1lbnRM
b2FkZXIpOwotICAgICAgICAgICAgbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzID0gV1RGOjpudWxs
b3B0OworICAgICAgICBpZiAobV9wZW5kaW5nV2VicGFnZVByZWZlcmVuY2VzKSB7CisgICAgICAg
ICAgICBXZWJwYWdlUHJlZmVyZW5jZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92
ZSgqbV9wZW5kaW5nV2VicGFnZVByZWZlcmVuY2VzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgICAg
ICAgICAgbV9wZW5kaW5nV2VicGFnZVByZWZlcmVuY2VzID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggODFiNjkyYzZmZDg5YWE3YjkzOTdiZGZiMWJhNTE1ODFhZWJkNjNmZS4uNjRkZmFmNjFk
NzE1MzEzNWRlZDY1OTk2ZjA4NGFiMjgzYjg3ZmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTIsNyArNTIsNyBAQAogI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcElELmgiCiAjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0
YS5oIgorI2luY2x1ZGUgIldlYnBhZ2VQcmVmZXJlbmNlc0RhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8u
aD4KQEAgLTI1OCw3ICsyNTgsNyBAQCBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Owog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNT
dG9yZTsKIHN0cnVjdCBXZWJTZWxlY3Rpb25EYXRhOwotc3RydWN0IFdlYnNpdGVQb2xpY2llc0Rh
dGE7CitzdHJ1Y3QgV2VicGFnZVByZWZlcmVuY2VzRGF0YTsKIAogdXNpbmcgU25hcHNob3RPcHRp
b25zID0gdWludDMyX3Q7CiB1c2luZyBXS0V2ZW50TW9kaWZpZXJzID0gdWludDMyX3Q7CkBAIC0x
MjUwLDcgKzEyNTAsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdl
YkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAg
LTEyNjAsNyArMTI2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChM
b2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50
LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAgICAgdm9pZCByZWxvYWQodWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJik7Ci0gICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFdlYkNv
cmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2VicGFnZVByZWZlcmVuY2VzRGF0YT4mJik7
CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3co
Ym9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKQEAgLTEzNTYsNyArMTM1Niw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93
bmxvYWRJRCYsIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE+JiYpOwogICAgIHZvaWQg
Y29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5l
cklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNl
dEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CkBAIC0xNDYzLDcgKzE0NjMs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAotICAgIHZv
aWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CisgICAgdm9p
ZCB1cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXMoV2VicGFnZVByZWZlcmVuY2VzRGF0YSYmKTsKIAog
ICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsKICAgICB2b2lkIGNo
YW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOwpAQCAt
MTg0MCw3ICsxODQwLDcgQEAgcHJpdmF0ZToKICAgICBQQUw6Okh5c3RlcmVzaXNBY3Rpdml0eSBt
X3VzZXJBY3Rpdml0eUh5c3RlcmVzaXM7CiAKICAgICB1aW50NjRfdCBtX3BlbmRpbmdOYXZpZ2F0
aW9uSUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gbV9wZW5kaW5n
V2Vic2l0ZVBvbGljaWVzOworICAgIE9wdGlvbmFsPFdlYnBhZ2VQcmVmZXJlbmNlc0RhdGE+IG1f
cGVuZGluZ1dlYnBhZ2VQcmVmZXJlbmNlczsKIAogICAgIGJvb2wgbV9tYWluRnJhbWVQcm9ncmVz
c0NvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNl
TW92ZUV2ZW50cyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDg3YzMzOTY0YWUxNjgxMzlmZjZkNDgw
NTZkNTExYTAyNWQxYThjNzcuLjZlMGExNGE4OWM2MGUzZmJmMjM2ZmYyZTI3ZmUxZmI1NWI1NWRi
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMTUzLDcgKzE1Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNjcm9sbEJ5KHVpbnQzMl90IHNjcm9sbERpcmVjdGlvbiwgdWlu
dDMyX3Qgc2Nyb2xsR3JhbnVsYXJpdHkpCiAgICAgQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJl
YSgpCiAKLSAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQs
IGVudW06dWludDhfdCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vi
c2l0ZVBvbGljaWVzKQorICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlv
bklELCBzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2Fy
ZEl0ZW1JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRU
eXBlLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJwYWdlUHJlZmVyZW5j
ZXNEYXRhPiB3ZWJwYWdlUHJlZmVyZW5jZXMpCiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9u
KCkKIAogICAgIExvYWRVUkxJbkZyYW1lKFVSTCB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0x
NzUsOCArMTc1LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAg
ICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKLSAgICBVcGRhdGVXZWJzaXRlUG9saWNp
ZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNpZXMpCi0g
ICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRp
b25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykKKyAgICBV
cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXMoc3RydWN0IFdlYktpdDo6V2VicGFnZVByZWZlcmVuY2Vz
RGF0YSB3ZWJwYWdlUHJlZmVyZW5jZXMpCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnBhZ2VQcmVmZXJlbmNl
c0RhdGE+IHdlYnBhZ2VQcmVmZXJlbmNlcykKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAKICAgICBDbGVhclNlbGVjdGlv
bigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>