<?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>127176</bug_id>
          
          <creation_ts>2014-01-17 09:20:33 -0800</creation_ts>
          <short_desc>Remove Nix files from WebCore</short_desc>
          <delta_ts>2014-01-18 09:15:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lauro Moura Maranhao Neto">lauro.neto</reporter>
          <assigned_to name="Lauro Moura Maranhao Neto">lauro.neto</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>kling</cc>
    
    <cc>luciano.wolf</cc>
    
    <cc>marcelo.lira</cc>
    
    <cc>ossy</cc>
    
    <cc>thiago.lacerda</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969149</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura Maranhao Neto">lauro.neto</who>
    <bug_when>2014-01-17 09:20:33 -0800</bug_when>
    <thetext>Nix-related ifdefs will be handled in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969170</commentid>
    <comment_count>1</comment_count>
      <attachid>221477</attachid>
    <who name="Lauro Moura Maranhao Neto">lauro.neto</who>
    <bug_when>2014-01-17 10:56:38 -0800</bug_when>
    <thetext>Created attachment 221477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969171</commentid>
    <comment_count>2</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2014-01-17 11:02:17 -0800</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969452</commentid>
    <comment_count>3</comment_count>
      <attachid>221477</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-18 09:15:36 -0800</bug_when>
    <thetext>Comment on attachment 221477
Patch

Clearing flags on attachment: 221477

Committed r162255: &lt;http://trac.webkit.org/changeset/162255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969453</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-18 09:15:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221477</attachid>
            <date>2014-01-17 10:56:38 -0800</date>
            <delta_ts>2014-01-18 09:15:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127176-20140117155646.patch</filename>
            <type>text/plain</type>
            <size>180022</size>
            <attacher name="Lauro Moura Maranhao Neto">lauro.neto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjlhYTcyMWQwNTBm
OWUzMTY5MDkyMDkwYjdkNTQ5NWZkNTk5Yy4uNjllMGI3YWFjZGNhMjIxNTA5ZTQzMjA3N2U2Yzdj
Y2Y5ZmI4OTE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTAxLTE3ICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlbW92ZSBOaXgg
ZmlsZXMgZnJvbSBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjcxNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFBsYXRmb3JtTml4LmNtYWtlOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9t
ZWRpYUNvbnRyb2xzTml4LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MvbWVkaWFDb250cm9s
c05peEZ1bGxzY3JlZW4uY3NzOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvbml4L0VkaXRv
ck5peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9uaXgvRXZlbnRIYW5kbGVyTml4LmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9uaXgvQXVkaW9CdXNOaXguY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL25peC9BdWRpb0Rlc3RpbmF0aW9u
Tml4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9uaXgvQXVkaW9EZXN0
aW5hdGlvbk5peC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL25peC9GRlRG
cmFtZU5peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L0lj
b25OaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25peC9JbWFn
ZU5peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L0N1cnNvck5peC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L0RyYWdEYXRhTml4LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvRHJhZ0ltYWdlTml4LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uaXgvRXJyb3JzTml4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uaXgvRXJyb3JzTml4Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4
L0ZpbGVTeXN0ZW1OaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9HYW1l
cGFkc05peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L0xhbmd1YWdlTml4
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvTG9jYWxpemVkU3RyaW5nc05p
eC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L01JTUVUeXBlUmVnaXN0cnlO
aXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9OaXhLZXlib2FyZFV0aWxp
dGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L05peEtleWJvYXJkVXRp
bGl0aWVzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXgu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9QbGF0Zm9ybUtleWJvYXJkRXZl
bnROaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9QbGF0Zm9ybVNjcmVl
bk5peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXguaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvU2Nyb2xsYmFyVGhlbWVOaXguY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9TY3JvbGxiYXJUaGVtZU5peC5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9TaGFyZWRUaW1lck5peC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbml4L1NvdW5kTml4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uaXgvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uaXgvV2lkZ2V0Tml4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uaXgvc3VwcG9ydC9NdWx0aUNoYW5uZWxQQ01EYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L25peC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTml4LmNwcDog
UmVtb3ZlZC4KKwogMjAxNC0wMS0xNyAgQWxiZXJ0byBHYXJjaWEgIDxiZXJ0b0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFdlYktpdEd0ay90ZXN0Y29weWFuZHBhc3RlIGZhaWxzIGluIGRl
YnVnIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1OaXguY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU5peC5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDU5ZTFhOWRjN2U5OGM3YmIwZGM4NGYyMzExYWJmMTU0Mjg4YjRjOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU5peC5jbWFrZQorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi1saXN0KEFQ
UEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAiJHtQTEFURk9STV9ESVJ9L25p
eC8iCi0gICAgcGxhdGZvcm0vYXVkaW8KLSAgICBwbGF0Zm9ybS9jYWlybwotICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nbHgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaXgKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZQotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzCi0gICAgcGxhdGZvcm0vbGludXgKLSAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbQotICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lcgotICAgIHBs
YXRmb3JtL25peAotKQotCi1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICBlZGl0aW5n
L1NtYXJ0UmVwbGFjZUlDVS5jcHAKLQotICAgIGVkaXRpbmcvbml4L0VkaXRvck5peC5jcHAKLQot
ICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNOaXguY3BwCi0KLSAgICBwYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAKLQotICAgIHBhZ2Uvbml4L0V2ZW50SGFuZGxlck5peC5jcHAKLQotICAgIHBs
YXRmb3JtL0NvbnRleHRNZW51SXRlbU5vbmUuY3BwCi0gICAgcGxhdGZvcm0vQ29udGV4dE1lbnVO
b25lLmNwcAotICAgIHBsYXRmb3JtL0N1cnNvci5jcHAKLQotICAgIHBsYXRmb3JtL2NhaXJvL1dp
ZGdldEJhY2tpbmdTdG9yZUNhaXJvLmNwcAotCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCi0KLSAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJv
LmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCi0gICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbnRSZWN0Q2Fpcm8uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
T3duUHRyQ2Fpcm8uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNw
cAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9U
aWxlQ2Fpcm8uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGlsZWRCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm8uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3Jt
YXRpb25NYXRyaXhDYWlyby5jcHAKLQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAotCi0gICAgcGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcAotCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L0lj
b25OaXguY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L0ltYWdlTml4LmNwcAotCi0gICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKLSAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcu
Y3BwCi0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKLQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5jcHAKLQotICAgIHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCi0gICAgcGxhdGZv
cm0vZ3RrL0xvZ2dpbmdHdGsuY3BwCi0gICAgcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5j
cHAKLQotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcAotCi0gICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcAotCi0gICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbml4L01lZGlhU3RyZWFtQ2VudGVyTml4LmNwcAotICAgIHBs
YXRmb3JtL21lZGlhc3RyZWFtL25peC9Vc2VyTWVkaWFDbGllbnROaXguY3BwCi0KLSAgICBwbGF0
Zm9ybS9uaXgvQ3Vyc29yTml4LmNwcAotICAgIHBsYXRmb3JtL25peC9EcmFnRGF0YU5peC5jcHAK
LSAgICBwbGF0Zm9ybS9uaXgvRHJhZ0ltYWdlTml4LmNwcAotICAgIHBsYXRmb3JtL25peC9FcnJv
cnNOaXguY3BwCi0gICAgcGxhdGZvcm0vbml4L0ZpbGVTeXN0ZW1OaXguY3BwCi0gICAgcGxhdGZv
cm0vbml4L0dhbWVwYWRzTml4LmNwcAotICAgIHBsYXRmb3JtL25peC9MYW5ndWFnZU5peC5jcHAK
LSAgICBwbGF0Zm9ybS9uaXgvTG9jYWxpemVkU3RyaW5nc05peC5jcHAKLSAgICBwbGF0Zm9ybS9u
aXgvTUlNRVR5cGVSZWdpc3RyeU5peC5jcHAKLSAgICBwbGF0Zm9ybS9uaXgvTml4S2V5Ym9hcmRV
dGlsaXRpZXMuY3BwCi0gICAgcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXguY3BwCi0gICAgcGxh
dGZvcm0vbml4L1BsYXRmb3JtS2V5Ym9hcmRFdmVudE5peC5jcHAKLSAgICBwbGF0Zm9ybS9uaXgv
UGxhdGZvcm1TY3JlZW5OaXguY3BwCi0gICAgcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmNw
cAotICAgIHBsYXRmb3JtL25peC9TY3JvbGxiYXJUaGVtZU5peC5jcHAKLSAgICBwbGF0Zm9ybS9u
aXgvU2hhcmVkVGltZXJOaXguY3BwCi0gICAgcGxhdGZvcm0vbml4L1NvdW5kTml4LmNwcAotICAg
IHBsYXRmb3JtL25peC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCi0gICAgcGxhdGZvcm0vbml4L1dp
ZGdldE5peC5jcHAKLQotICAgIHBsYXRmb3JtL25peC9zdXBwb3J0L011bHRpQ2hhbm5lbFBDTURh
dGEuY3BwCi0KLSAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCi0KLSAgICBwbGF0Zm9y
bS90ZXh0L25peC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTml4LmNwcAotCi0gICAgcGx1
Z2lucy9QbHVnaW5QYWNrYWdlTm9uZS5jcHAKLSAgICBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNw
cAotKQotCi1pZiAoV1RGX1VTRV9PUEVOR0xfRVNfMikKLSAgICBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTEVTLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xFUy5jcHAKLSAgICApCi0gICAgbGlzdChJTlNFUlQgV2ViQ29yZV9JTkNMVURF
X0RJUkVDVE9SSUVTIDAgJHtPUEVOR0xFUzJfSU5DTFVERV9ESVJTfSkKLSAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0xJQlJBUklFUyAke09QRU5HTEVTMl9MSUJSQVJJRVN9KQotICAgIGFkZF9kZWZp
bml0aW9ucygke09QRU5HTEVTMl9ERUZJTklUSU9OU30pCi1lbHNlICgpCi0gICAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0wuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKLSAgICApCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9M
SUJSQVJJRVMKLSAgICAgICAgJHtPUEVOR0xfZ2xfTElCUkFSWX0KLSAgICApCi1lbmRpZiAoKQot
Ci1pZiAoV1RGX1VTRV9FR0wpCi0gICAgbGlzdChJTlNFUlQgV2ViQ29yZV9JTkNMVURFX0RJUkVD
VE9SSUVTIDAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsCi0gICAgICAgICR7RUdMX0lO
Q0xVREVfRElSfQotICAgICkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCi0KLSAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKLQotICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RnJvbUN1cnJlbnRFR0wuY3BwCi0gICAgKQotICAgIGxp
c3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTICR7RUdMX0xJQlJBUll9KQotZWxzZSAoKQotICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwotICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZmwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4Ci0gICAgICAgICR7WDExX1gxMV9JTkNMVURFX1BBVEh9Ci0gICAgKQotICAgIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RFZmwuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwCi0KLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dMUGxhdGZvcm1Db250ZXh0LmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR0xQbGF0Zm9ybVN1cmZhY2UuY3BwCi0KLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCi0KLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAKLQotICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5jcHAKLSAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfTElCUkFSSUVTICR7WDExX1gxMV9MSUJ9ICR7WDExX1hjb21wb3NpdGVfTElCfSAk
e1gxMV9YcmVuZGVyX0xJQn0pCi0KLSAgICBpZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKLSAgICAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMgJHtYMTFfWGV4dF9MSUJ9KQotICAgIGVu
ZGlmICgpCi1lbmRpZiAoKQotCi1pZiAoRU5BQkxFX0JBVFRFUllfU1RBVFVTKQotICAgIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUyAke0RCVVNfSU5DTFVERV9ESVJTfSkK
LSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUyAke0RCVVNfTElCUkFSSUVTfSkKLWVu
ZGlmICgpCi0KLWxpc3QoQVBQRU5EIFdlYkNvcmVfVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMKLSAg
ICBjc3MvbWVkaWFDb250cm9sc05peC5jc3MKLSAgICBjc3MvbWVkaWFDb250cm9sc05peEZ1bGxz
Y3JlZW4uY3NzCi0pCi0KLWxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCi0gICAgJHtDQUlS
T19MSUJSQVJJRVN9Ci0gICAgJHtGT05UQ09ORklHX0xJQlJBUklFU30KLSAgICAke0ZSRUVUWVBF
Ml9MSUJSQVJJRVN9Ci0gICAgJHtHTElCX0dJT19MSUJSQVJJRVN9Ci0gICAgJHtHTElCX0dNT0RV
TEVfTElCUkFSSUVTfQotICAgICR7R0xJQl9HT0JKRUNUX0xJQlJBUklFU30KLSAgICAke0dMSUJf
TElCUkFSSUVTfQotICAgICR7SEFSRkJVWlpfTElCUkFSSUVTfQotICAgICR7SlBFR19MSUJSQVJZ
fQotICAgICR7TElCWE1MMl9MSUJSQVJJRVN9Ci0gICAgJHtMSUJYU0xUX0xJQlJBUklFU30KLSAg
ICAke1BOR19MSUJSQVJZfQotICAgICR7U1FMSVRFX0xJQlJBUklFU30KLSAgICAke1pMSUJfTElC
UkFSSUVTfQotICAgIFBsYXRmb3JtCi0pCi0KLWxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9E
SVJFQ1RPUklFUwotICAgICR7Q0FJUk9fSU5DTFVERV9ESVJTfQotICAgICR7Rk9OVENPTkZJR19J
TkNMVURFX0RJUn0KLSAgICAke0ZSRUVUWVBFMl9JTkNMVURFX0RJUlN9Ci0gICAgJHtHTElCX0lO
Q0xVREVfRElSU30KLSAgICAke0hBUkZCVVpaX0lOQ0xVREVfRElSU30KLSAgICAke0xJQlhNTDJf
SU5DTFVERV9ESVJ9Ci0gICAgJHtMSUJYU0xUX0lOQ0xVREVfRElSfQotICAgICR7U1FMSVRFX0lO
Q0xVREVfRElSfQotICAgICR7WkxJQl9JTkNMVURFX0RJUlN9Ci0pCi0KLWlmIChFTkFCTEVfV0VC
X0FVRElPKQotICBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICBw
bGF0Zm9ybS9hdWRpby9uaXgKLSAgKQotICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAg
ICBwbGF0Zm9ybS9hdWRpby9uaXgvQXVkaW9CdXNOaXguY3BwCi0gICAgcGxhdGZvcm0vYXVkaW8v
bml4L0F1ZGlvRGVzdGluYXRpb25OaXguY3BwCi0gICAgcGxhdGZvcm0vYXVkaW8vbml4L0ZGVEZy
YW1lTml4LmNwcAotICApCi0gIHNldChXRUJfQVVESU9fRElSICR7Q01BS0VfSU5TVEFMTF9QUkVG
SVh9LyR7REFUQV9JTlNUQUxMX0RJUn0vd2ViYXVkaW8vcmVzb3VyY2VzKQotICBmaWxlKEdMT0Ig
V0VCX0FVRElPX0RBVEEgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy8q
LndhdiIpCi0gIGluc3RhbGwoRklMRVMgJHtXRUJfQVVESU9fREFUQX0gREVTVElOQVRJT04gJHtX
RUJfQVVESU9fRElSfSkKLSAgYWRkX2RlZmluaXRpb25zKC1EVU5JTlNUQUxMRURfQVVESU9fUkVT
T1VSQ0VTX0RJUj0iJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzIikKLWVu
ZGlmICgpCi0KLWlmIChXVEZfVVNFX0NVUkwpCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNM
VURFX0RJUkVDVE9SSUVTCi0gICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybAotICAgICkKLQot
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwCi0KLSAgICAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcAotICAgICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZU1hbmFnZXIuY3BwCi0gICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVOb2RlLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llU3RvcmFnZUN1
cmwuY3BwCi0gICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DcmVkZW50aWFsU3RvcmFnZUN1
cmwuY3BwCi0gICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAK
LSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCi0gICAg
ICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAotICAgICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRm9ybURhdGFTdHJlYW1DdXJsLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUGFyc2VkQ29va2llLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlT
ZXJ2ZXJDdXJsLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcAot
ICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAK
LSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q3Vy
bC5jcHAKLSAgICApCi0KLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwotICAgICAg
ICAke0NVUkxfTElCUkFSSUVTfQotICAgICAgICAke09QRU5TU0xfTElCUkFSSUVTfQotICAgICkK
LWVsc2UgKCkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgbG9hZGVy
L3NvdXAvQ2FjaGVkUmF3UmVzb3VyY2VTb3VwLmNwcAotICAgICAgICBsb2FkZXIvc291cC9TdWJy
ZXNvdXJjZUxvYWRlclNvdXAuY3BwCi0KLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9z
b3VwL0NlcnRpZmljYXRlSW5mby5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZUphclNvdXAuY3BwCi0gICAgICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9y
YWdlU291cC5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9y
YWdlU291cC5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCi0g
ICAgICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKLSAgICAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCi0gICAgICAg
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVJlc29sdmVyU291cC5jcHAKLSAgICAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKLSAgICAgICAgcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAotICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBVUklVdGlscy5jcHAKLSAgICAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50U291cC5jcHAKLQotICAgICAgICBwbGF0Zm9ybS9zb3VwL1NoYXJl
ZEJ1ZmZlclNvdXAuY3BwCi0gICAgKQotCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURF
X0RJUkVDVE9SSUVTCi0gICAgICAgIHBsYXRmb3JtL25ldHdvcmsvc291cAotICAgICAgICAke0xJ
QlNPVVBfSU5DTFVERV9ESVJTfQotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElC
UkFSSUVTCi0gICAgICAgICR7TElCU09VUF9MSUJSQVJJRVN9Ci0gICAgKQotZW5kaWYgKCkKLQot
c2V0KENNQUtFX0NfQVJDSElWRV9DUkVBVEUgIjxDTUFLRV9BUj4gPExJTktfRkxBR1M+IGNydVQg
PFRBUkdFVD4gPE9CSkVDVFM+IikKLXNldChDTUFLRV9DX0FSQ0hJVkVfQVBQRU5EICI8Q01BS0Vf
QVI+IDxMSU5LX0ZMQUdTPiBydVQgPFRBUkdFVD4gPE9CSkVDVFM+IikKLXNldChDTUFLRV9DWFhf
QVJDSElWRV9DUkVBVEUgIjxDTUFLRV9BUj4gPExJTktfRkxBR1M+IGNydVQgPFRBUkdFVD4gPE9C
SkVDVFM+IikKLXNldChDTUFLRV9DWFhfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gPExJTktf
RkxBR1M+IHJ1VCA8VEFSR0VUPiA8T0JKRUNUUz4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL21lZGlhQ29udHJvbHNOaXguY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29u
dHJvbHNOaXguY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTU2ODBjMmU0NDc0
MmE1ZDUyZjA0ZGM2Y2FkY2NlNGY5ZmY3NmViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzTml4LmNz
cworKysgL2Rldi9udWxsCkBAIC0xLDM5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qIE5peCBkZWZhdWx0IG1lZGlhIGNvbnRyb2xz
ICovCi0KLWF1ZGlvIHsKLSAgICB3aWR0aDogMzAwcHg7Ci0gICAgaGVpZ2h0OiAzMHB4OwotfQot
Ci1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scywKLXZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzIHsKLSAgICB3aWR0aDogaW5oZXJpdDsKLSAgICBoZWlnaHQ6IGluaGVyaXQ7Ci0gICAg
cG9zaXRpb246IHJlbGF0aXZlOwotICAgIGRpcmVjdGlvbjogbHRyOwotICAgIGRpc3BsYXk6IGZs
ZXg7Ci0gICAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgt
ZW5kOwotICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWVuY2xvc3VyZSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW5jbG9z
dXJlIHsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBtYXgtd2lkdGg6IDgwMHB4OwotICAgIGhlaWdo
dDogMzBweDsKLSAgICBmbGV4LXNocmluazogMDsKLSAgICBib3R0b206IDA7Ci0gICAgdGV4dC1p
bmRlbnQ6IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owot
fQotCi12aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbmNsb3N1cmUgewotICAgIHBhZGRp
bmc6IDBweCA1cHggNXB4IDVweDsKLSAgICBoZWlnaHQ6IDM1cHg7Ci0gICAgZmxleC1zaHJpbms6
IDA7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4
LWRpcmVjdGlvbjogcm93OwotICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLyogV2UgdXNl
IGZsZXgtc3RhcnQgaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgcGxheSBidXR0b24gaXMgdmlzaWJs
ZSBldmVuCi0gICAgICogaWYgd2UgYXJlIHRvbyBzbWFsbCB0byBzaG93IGFsbCBjb250cm9scy4K
LSAgICAgKi8KLSAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Ci0gICAgLXdlYmtpdC11
c2VyLXNlbGVjdDogbm9uZTsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgd2lkdGg6IDEw
MCU7Ci0gICAgei1pbmRleDogMDsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIHRleHQtYWxp
Z246IHJpZ2h0OwotICAgIGJvdHRvbTogYXV0bzsKLSAgICBoZWlnaHQ6IDMwcHg7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiYSgyMCwgMjAsIDIwLCAwLjgpOwotICAgIGJvcmRlci1yYWRpdXM6
IDVweDsKLX0KLQotdmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEgewotICAgIG1hcmdpbjog
YXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAw
OwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotfQotCi1hdWRpbzotd2Via2l0LWZ1bGwt
cGFnZS1tZWRpYSwgdmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEgewotICAgIG1heC1oZWln
aHQ6IDEwMCU7Ci0gICAgbWF4LXdpZHRoOiAxMDAlOwotfQotCi1hdWRpbzotd2Via2l0LWZ1bGwt
cGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwKLXZpZGVvOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKLSAgICBib3R0
b206IDBweDsKLX0KLQotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24s
IHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uIHsKLSAgICAtd2Via2l0
LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOwotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAg
ZmxleDogbm9uZTsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJv
eDsKLSAgICB3aWR0aDogMzVweDsKLSAgICBoZWlnaHQ6IDMwcHg7Ci0gICAgbGluZS1oZWlnaHQ6
IDMwcHg7Ci0gICAgbWFyZ2luOiAwIDZweCAwIDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBpbml0aWFsOwotICAgIGNvbG9yOiBpbmhlcml0OwotfQotCi1hdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1vdmVybGF5LXBsYXktYnV0dG9uLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1vdmVybGF5LXBsYXktYnV0dG9uIHsKLSAgICBkaXNwbGF5OiBub25l
OwotfQotCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgdmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24gewotICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbWVkaWEtcGxheS1idXR0b247Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4OiBu
b25lOwotICAgIGJvcmRlcjogbm9uZTsKLSAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAg
IHdpZHRoOiAzMHB4OwotICAgIGhlaWdodDogMzBweDsKLSAgICBsaW5lLWhlaWdodDogMzBweDsK
LSAgICBtYXJnaW4tbGVmdDogOXB4OwotICAgIG1hcmdpbi1yaWdodDogOXB4OwotICAgIHBhZGRp
bmc6IDA7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDsKLSAgICBjb2xvcjogaW5oZXJp
dDsKLX0KLQotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgewotICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKLSAgICBkaXNw
bGF5OiBmbGV4OwotICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7Ci0gICAgYWxpZ24taXRlbXM6IGNl
bnRlcjsKLSAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwotICAgIGZsZXg6IDEgMTsKLSAg
ICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGhlaWdodDogMTZweDsKLSAgICBtaW4t
d2lkdGg6IDA7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGlt
ZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlz
cGxheSwKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkg
ewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY3VycmVudC10aW1lLWRpc3BsYXk7Ci0g
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICAtd2Via2l0LWZsZXg6IG5vbmU7Ci0g
ICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotICAgIGJvcmRlcjogbm9uZTsKLSAgICBjdXJzb3I6
IGRlZmF1bHQ7Ci0KLSAgICBoZWlnaHQ6IDMwcHg7Ci0gICAgbWFyZ2luOiAwIDlweCAwIDA7Ci0g
ICAgcGFkZGluZzogMDsKLQotICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwotICAgIGZvbnQtZmFtaWx5
OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTNweDsKLSAg
ICBmb250LXdlaWdodDogYm9sZDsKLSAgICBmb250LXN0eWxlOiBub3JtYWw7Ci0gICAgY29sb3I6
IHdoaXRlOwotCi0gICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKLSAgICB3b3JkLXNwYWNpbmc6
IG5vcm1hbDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXIKLSAgICB0ZXh0LXRyYW5zZm9ybTogbm9u
ZTsKLSAgICB0ZXh0LWluZGVudDogMDsKLSAgICB0ZXh0LXNoYWRvdzogbm9uZTsKLSAgICB0ZXh0
LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7Ci0gICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zbGlkZXI7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBm
bGV4OiAxIDEgYXV0bzsKLSAgICBoZWlnaHQ6IDhweDsKLSAgICBtYXJnaW46IDAgMTVweCAwIDA7
Ci0gICAgcGFkZGluZzogMDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKLSAgICBtaW4t
d2lkdGg6IDI1cHg7Ci0gICAgYm9yZGVyOiBpbml0aWFsOwotICAgIGJvcmRlci1yYWRpdXM6IDRw
eDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLX0KLQotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtdm9sdW1lLXNsaWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlciB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyOwotICAg
IGRpc3BsYXk6IGZsZXg7Ci0gICAgLyogVGhlIDEuOSB2YWx1ZSB3YXMgZW1waXJpY2FsbHkgY2hv
c2VuIHRvIG1hdGNoIG9sZC1mbGV4Ym94IGJlaGF2aW91cgotICAgICAqIGFuZCBiZSBhZXN0aGV0
aWNhbGx5IHBsZWFzaW5nLgotICAgICAqLwotICAgIGZsZXg6IDEgMS45IGF1dG87Ci0gICAgaGVp
Z2h0OiA4cHg7Ci0gICAgbWF4LXdpZHRoOiA3MHB4OwotICAgIG1hcmdpbjogMCAxNXB4IDAgMDsK
LSAgICBwYWRkaW5nOiAwOwotICAgIG1pbi13aWR0aDogMTVweDsKLSAgICBib3JkZXI6IGluaXRp
YWw7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7Ci0g
ICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi1pbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0
LW1lZGlhLXNsaWRlci1jb250YWluZXIgewotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgYWxpZ24t
aXRlbXM6IGNlbnRlcjsKLSAgICBmbGV4LWRpcmVjdGlvbjogcm93OyAvKiBUaGlzIHByb3BlcnR5
IGlzIHVwZGF0ZWQgYnkgQysrIGNvZGUuICovCi0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsK
LSAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYm9yZGVyOiAxcHggc29s
aWQgcmdiYSgyMzAsIDIzMCwgMjMwLCAwLjM1KTsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIEJhY2tncm91bmQgZHJhd2luZyBp
cyBtYW5hZ2VkIGJ5IEMrKyBjb2RlIHRvIGRyYXcgcmFuZ2VzLiAqLwotfQotCi0vKiBUaGUgbmVn
YXRpdmUgcmlnaHQgbWFyZ2luIGNhdXNlcyB0aGUgdHJhY2sgdG8gb3ZlcmZsb3cgaXRzIGNvbnRh
aW5lci4gKi8KLWlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtbWVkaWEtc2xpZGVyLWNvbnRh
aW5lciA+IGRpdiB7Ci0gICAgbWFyZ2luLXJpZ2h0OiAtMTRweDsKLX0KLQotaW5wdXRbdHlwZT0i
cmFuZ2UiXTo6LXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIgewotICAgIG1hcmdpbi1sZWZ0OiAt
N3B4OwotICAgIG1hcmdpbi1yaWdodDogLTdweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0
ZTsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNl
ZWstYmFjay1idXR0b24gewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtc2Vlay1iYWNr
LWJ1dHRvbjsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAgIHdpZHRoOiAxNnB4OwotICAgIGhlaWdo
dDogMTZweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsOwotICAgIGJvcmRlcjogaW5p
dGlhbDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLX0KLQotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
c2Vlay1mb3J3YXJkLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zZWVr
LWZvcndhcmQtYnV0dG9uOwotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgd2lkdGg6IDE2cHg7Ci0g
ICAgaGVpZ2h0OiAxNnB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7Ci0gICAgYm9y
ZGVyOiBpbml0aWFsOwotICAgIGNvbG9yOiBpbmhlcml0OwotfQotCi1hdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtZnVsbHNjcmVlbi1idXR0b24gewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEt
ZW50ZXItZnVsbHNjcmVlbi1idXR0b247Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4OiBu
b25lOwotICAgIGJvcmRlcjogbm9uZTsKLSAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAg
IHdpZHRoOiAzMHB4OwotICAgIGhlaWdodDogMzBweDsKLSAgICBsaW5lLWhlaWdodDogMzBweDsK
LSAgICBtYXJnaW4tbGVmdDogLTVweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDlweDsKLSAgICBwYWRk
aW5nOiAwOwotICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7Ci0gICAgY29sb3I6IGluaGVy
aXQ7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJld2luZC1idXR0b24sIHZp
ZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJld2luZC1idXR0b24gewotICAgIGRpc3BsYXk6
IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDsKLSAgICBib3JkZXI6IGluaXRp
YWw7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXJldHVybi10by1yZWFsdGltZS1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXJldHVybi10by1yZWFsdGltZS1idXR0b24gewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAg
YmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDsKLSAgICBib3JkZXI6IGluaXRpYWw7Ci0gICAgY29s
b3I6IGluaGVyaXQ7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRvZ2dsZS1j
bG9zZWQtY2FwdGlvbnMtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10b2dn
bGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRp
YS10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbjsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAg
IGZsZXg6IG5vbmU7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1i
b3g7Ci0gICAgd2lkdGg6IDMwcHg7Ci0gICAgaGVpZ2h0OiAzMHB4OwotICAgIGxpbmUtaGVpZ2h0
OiAzMHB4OwotICAgIG1hcmdpbi1sZWZ0OiAtNXB4OwotICAgIG1hcmdpbi1yaWdodDogOXB4Owot
ICAgIHBhZGRpbmc6IDA7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDsKLSAgICBjb2xv
cjogaW5oZXJpdDsKLX0KLQotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlci1tdXRlLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlci1tdXRlLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUt
c2xpZGVyLW11dGUtYnV0dG9uOwotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogaW5pdGlhbDsKLSAgICBib3JkZXI6IGluaXRpYWw7Ci0gICAgY29sb3I6IGluaGVyaXQ7
Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLXNs
aWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtc2xp
ZGVyIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1taW4tYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1taW4tYnV0dG9uIHsKLSAgICBkaXNwbGF5OiBub25l
OwotfQotCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1t
YXgtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVt
ZS1tYXgtYnV0dG9uIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi12aWRlbzo6LXdlYmtpdC1t
ZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IHdpZHRoOiAxMDAlOwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgcGFkZGluZy1ib3R0b206
IDVweDsKLQotICAgIGZvbnQ6IDIycHggc2Fucy1zZXJpZjsKLSAgICB0ZXh0LWFsaWduOiBjZW50
ZXI7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7Ci0KLSAgICBsZXR0ZXItc3Bh
Y2luZzogbm9ybWFsOwotICAgIHdvcmQtc3BhY2luZzogbm9ybWFsOwotICAgIHRleHQtdHJhbnNm
b3JtOiBub25lOwotICAgIHRleHQtaW5kZW50OiAwOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9u
ZTsKLSAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBu
b25lOwotICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Ci0KLSAgICBmbGV4OiAxIDE7Ci19Ci0K
LXZpZGVvOjpjdWUgewotICAgIGRpc3BsYXk6IGlubGluZTsKLQotICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKLSAgICBwYWRkaW5nOiAycHggMnB4OwotfQotCi12aWRl
bzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbiB7Ci0gICAgcG9zaXRpb246IGFic29s
dXRlOwotICAgIGxpbmUtaGVpZ2h0OiA1LjMzdmg7Ci0gICAgd3JpdGluZy1tb2RlOiBob3Jpem9u
dGFsLXRiOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKLSAgICBjb2xvcjog
cmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKLSAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7Ci0gICAg
b3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotfQotCi12
aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIgewotICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKLQotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgZmxleC1mbG93OiBj
b2x1bW47Ci0gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKLX0KLQotdmlkZW86Oi13ZWJraXQt
bWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyLnNjcm9sbGluZyB7Ci0gICAgdHJhbnNp
dGlvbjogdG9wIDQzM21zIGxpbmVhcjsKLX0KLQotCi12aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWRpc3BsYXkgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBvdmVyZmxvdzog
aGlkZGVuOwotICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKLSAgICAtd2Via2l0LWJveC1zaXpp
bmc6IGJvcmRlci1ib3g7Ci0gICAgZmxleDogMCAwIGF1dG87Ci19Ci12aWRlbzo6Y3VlKDpmdXR1
cmUpIHsKLSAgICBjb2xvcjogZ3JheTsKLX0KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1jb250YWluZXIgYiB7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLXZpZGVvOjot
d2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHUgewotICAgIHRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOwotfQotCi12aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRh
aW5lciBpIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzTml4RnVsbHNjcmVlbi5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWVkaWFDb250cm9sc05peEZ1bGxzY3JlZW4uY3NzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2MzNkNzA3ZGNhZWVmYzNlYmQwNWFjY2E2ZjA1MGQzNDc4M2Y5ZjY2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tZWRpYUNvbnRyb2xzTml4RnVsbHNjcmVlbi5jc3MKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLS8qIE5peFdlYktpdCBtZWRpYSBjb250cm9scyBmb3IgZnVsbHNjcmVl
bi4gKi8KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgewotICAgIGRpc3Bs
YXk6IC13ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKLSAg
ICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5v
bmU7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJvdHRvbTogMDsKLSAgICB3aWR0aDog
MTAwJTsKLSAgICB6LWluZGV4OiAwOwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgaGVpZ2h0
OiAyMHB4OwotICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi12aWRlbzotd2Via2l0LWZ1bGwt
cGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7Ci0gICAgZGlzcGxheTog
bm9uZTsKLX0KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24gewot
ICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLXZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBs
YXktYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOwot
ICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIHdpZHRoOiAyMHB4OwotICAgIGhlaWdodDog
MjBweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsOwotICAgIGJvcmRlcjogaW5pdGlh
bDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLX0KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtdGltZWxpbmUtY29udGFpbmVyIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNv
bnRyb2xzLWJhY2tncm91bmQ7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgLXdlYmtp
dC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwotICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7
Ci0gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwotICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Ci0g
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBoZWlnaHQ6IDIwcHg7Ci19Ci0KLXZp
ZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKLSAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWN1cnJlbnQtdGltZS1kaXNwbGF5OwotICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIGhl
aWdodDogMjBweDsKLSAgICBwYWRkaW5nOiA0cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwot
ICAgIGZvbnQtc2l6ZTogMTBweDsKLX0KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dGltZS1yZW1haW5pbmctZGlzcGxheSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotdmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUgewotICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtc2xpZGVyOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIC13ZWJraXQt
Ym94LWZsZXg6IDE7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIHBhZGRpbmc6IDBweCAycHg7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDsKLSAgICBib3JkZXI6IGluaXRpYWw7Ci0gICAg
Y29sb3I6IGluaGVyaXQ7Ci0gICAgbWFyZ2luOiBpbml0aWFsOwotfQotCi12aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7Ci0gICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcjsKLSAgICBkaXNwbGF5OiBu
b25lOwotfQotCi12aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsK
LSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXZvbHVtZS1zbGlkZXI7Ci0gICAgZGlzcGxh
eTogbm9uZTsKLX0KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1
dHRvbiB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotdmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24gewotICAgIGRpc3Bs
YXk6IG5vbmU7Ci19Ci0KLXZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJld2luZC1idXR0
b24gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLXZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXJldHVybi10by1yZWFsdGltZS1idXR0b24gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0K
LXZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMtYnV0
dG9uIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9uaXgvRWRpdG9yTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbml4L0Vk
aXRvck5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZDE0MjQ0MDZhYzE4
ZTg3Nzg2ZjRjNjJmYWNjNTA1NDNhYTg0NjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9uaXgvRWRpdG9yTml4LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVkaXRvci5oIgot
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0
ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9uaXgvRXZlbnRIYW5kbGVyTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvbml4L0V2ZW50
SGFuZGxlck5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMmZmZTkyZTI0
YWU3NjQwY2QyZWZjNmEwMmU5YzkxNzA2YjAyZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9uaXgvRXZlbnRIYW5kbGVy
Tml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAw
OCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykg
MjAwOSwyMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDksMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLQotI2luY2x1ZGUgIkNsaXBi
b2FyZC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
Ci0jaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAi
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlJlbmRlcldpZGdl
dC5oIgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotY29uc3QgZG91YmxlIEV2ZW50SGFuZGxlcjo6VGV4dERy
YWdEZWxheSA9IDAuMDsKLSNlbmRpZgotCi1ib29sIEV2ZW50SGFuZGxlcjo6dGFic1RvQWxsRm9y
bUNvbnRyb2xzKEtleWJvYXJkRXZlbnQqKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQotewotICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LnNldEZvY3VzZWRGcmFtZSgmbV9mcmFtZSk7Ci19Ci0KLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
V2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKLXsKLSAgICBSZW5kZXJPYmplY3QqIHRhcmdldCA9IGV2ZW50LnRhcmdl
dE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+cmVuZGVyZXIoKSA6IDA7Ci0KLSAgICBpZiAo
IXRhcmdldCB8fCAhdGFyZ2V0LT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gcGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQoc3RhdGljX2Nhc3Q8UmVuZGVy
V2lkZ2V0Kj4odGFyZ2V0KS0+d2lkZ2V0KCkpOwotfQotCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFz
c1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQoUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQp
Ci17Ci0gICAgcmV0dXJuIHBhc3NNb3VzZURvd25FdmVudFRvV2lkZ2V0KHJlbmRlcldpZGdldC0+
d2lkZ2V0KCkpOwotfQotCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93bkV2ZW50VG9X
aWRnZXQoV2lkZ2V0KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0aXZhdGVkVmlldyhjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdl
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZGdldCkKLXsKLSAg
ICBBU1NFUlQod2lkZ2V0KTsKLSAgICBpZiAoIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdp
ZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hlZWxFdmVudChldmVudCk7Ci19
Ci0KLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50
SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAotewotICAgIHJldHVybiBD
bGlwYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCk7Ci19Ci0jZW5kaWYKLQotYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQotewotICAgIHN1YmZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobWV2LmV2ZW50KCkpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJm
cmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSwg
SGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUpCi17Ci0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxl
cigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1ldi5ldmVudCgpLCBob3ZlcmVkTm9kZSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZl
bnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1
YmZyYW1lKQotewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChtZXYuZXZlbnQoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIEV2
ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6QWx0S2V5OwotfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbml4L0F1ZGlvQnVzTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L25peC9BdWRpb0J1c05peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0Yjc2
MTc0ZDdhNTcxNzE1NjdhOTFjZDgxOWY4NTkwNTAyMGRiZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bml4L0F1ZGlvQnVzTml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdF
Ql9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLSNpbmNsdWRlICJBdWRpb0ZpbGVS
ZWFkZXIuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8Y3N0ZGlvPgotI2lu
Y2x1ZGUgPHB1YmxpYy9NdWx0aUNoYW5uZWxQQ01EYXRhLmg+Ci0jaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPEF1ZGlvQnVzPiBkZWNvZGVBdWRpb0ZpbGVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLCBkb3VibGUgc2FtcGxlUmF0ZSkKLXsKLSAgICBP
d25QdHI8Tml4OjpNdWx0aUNoYW5uZWxQQ01EYXRhPiBwY21EYXRhID0gYWRvcHRQdHIoTml4OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5kZWNvZGVBdWRpb1Jlc291cmNlKGRhdGEsIHNpemUsIHNhbXBs
ZVJhdGUpKTsKLSAgICBpZiAocGNtRGF0YSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKHN0YXRp
Y19jYXN0PEF1ZGlvQnVzKj4ocGNtRGF0YS0+Z2V0SW50ZXJuYWxEYXRhKCkpKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQotUGFzc1JlZlB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXBsZVJhdGUpCi17Ci0gICAg
Ly8gRklYTUU6IFRoaXMgYXNzdW1lcyB0aGUgZmlsZSBzeXN0ZW0gdXNlcyBsYXRpbjEgb3IgVVRG
LTggZW5jb2RpbmcsIGJ1dCB0aGlzIGNvbW1lbnQgYWxzbyBhc3N1bWVzCi0gICAgLy8gdGhhdCBu
b24tYXNjaWkgZmlsZSBuYW1lcyB3b3VsZCBhcHBlYXIgaGVyZS4KLSAgICBDU3RyaW5nIGFic29s
dXRlRmlsZW5hbWUobWFrZVN0cmluZyhEQVRBX0RJUiwgIi93ZWJhdWRpby9yZXNvdXJjZXMvIiwg
bmFtZSwgIi53YXYiKS51dGY4KCkpOwotICAgIHN0cnVjdCBzdGF0IHN0YXREYXRhOwotICAgIGlm
ICg6OnN0YXQoYWJzb2x1dGVGaWxlbmFtZS5kYXRhKCksICZzdGF0RGF0YSkgPT0gLTEpCi0gICAg
ICAgIGFic29sdXRlRmlsZW5hbWUgPSBtYWtlU3RyaW5nKFVOSU5TVEFMTEVEX0FVRElPX1JFU09V
UkNFU19ESVIsICIvIiwgbmFtZSwgIi53YXYiKS51dGY4KCk7Ci0gICAgaWYgKDo6c3RhdChhYnNv
bHV0ZUZpbGVuYW1lLmRhdGEoKSwgJnN0YXREYXRhKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBGSUxFKiBmaWxlID0gZm9wZW4oYWJzb2x1dGVGaWxlbmFtZS5kYXRhKCks
ICJyYiIpOwotICAgIGlmICghZmlsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBX
VEY6OlZlY3RvcjxjaGFyPiBmaWxlQ29udGVudHM7Ci0gICAgZmlsZUNvbnRlbnRzLnJlc2l6ZShz
dGF0RGF0YS5zdF9zaXplKTsKLSAgICBzaXplX3QgYnl0ZXNSZWFkID0gZnJlYWQoJmZpbGVDb250
ZW50c1swXSwgMSwgZmlsZUNvbnRlbnRzLnNpemUoKSwgZmlsZSk7Ci0gICAgZmNsb3NlKGZpbGUp
OwotICAgIGlmIChieXRlc1JlYWQgPCBmaWxlQ29udGVudHMuc2l6ZSgpKQotICAgICAgICBmaWxl
Q29udGVudHMucmVzaXplKGJ5dGVzUmVhZCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlQXVkaW9GaWxl
RGF0YSgmZmlsZUNvbnRlbnRzWzBdLCBmaWxlQ29udGVudHMuc2l6ZSgpLCBzYW1wbGVSYXRlKTsK
LX0KLQotUGFzc1JlZlB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxl
KGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0
IHNhbXBsZVJhdGUpCi17Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IGRlY29kZUF1
ZGlvRmlsZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhU2l6ZSwgc2Ft
cGxlUmF0ZSk7Ci0gICAgaWYgKCFhdWRpb0J1cykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAvLyBJZiB0aGUgYnVzIG5lZWRzIG5vIGNvbnZlcnNpb24gdGhlbiByZXR1cm4gYXMgaXMu
Ci0gICAgaWYgKCFtaXhUb01vbm8gfHwgYXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSAx
KQotICAgICAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEF1ZGlv
QnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKGF1ZGlvQnVzLmdldCgpLCBtaXhUb01v
bm8sIHNhbXBsZVJhdGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVRElPKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9uaXgvQXVkaW9EZXN0aW5hdGlvbk5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9uaXgvQXVkaW9EZXN0aW5hdGlvbk5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDhkNDRjMWY4ODhkMzA0OTkwMDQ1ODhkZGZmZTZjMjM2M2RhNzBhYzcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbml4L0F1ZGlvRGVzdGluYXRpb25OaXguY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25OaXgu
aCIKLQotI2luY2x1ZGUgIkF1ZGlvRklGTy5oIgotI2luY2x1ZGUgIkF1ZGlvUHVsbEZJRk8uaCIK
LSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQnVmZmVyIHNpemUgYXQgd2hpY2ggdGhl
IHdlYiBhdWRpbyBlbmdpbmUgd2lsbCByZW5kZXIuCi1jb25zdCB1bnNpZ25lZCByZW5kZXJCdWZm
ZXJTaXplID0gMTI4OwotCi0vLyBTaXplIG9mIHRoZSBGSUZPCi1jb25zdCBzaXplX3QgZmlmb1Np
emUgPSA4MTkyOwotCi1QYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0
RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEF1ZGlvRGVzdGluYXRpb25OaXgoY2FsbGJhY2ssIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwot
fQotCi1BdWRpb0Rlc3RpbmF0aW9uTml4OjpBdWRpb0Rlc3RpbmF0aW9uTml4KEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQotICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyhudW1iZXJPZk91dHB1dENoYW5uZWxzKQotICAgICwgbV9pbnB1dEJ1
cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mSW5wdXRDaGFubmVscywgcmVuZGVyQnVmZmVyU2l6
ZSkpCi0gICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHJlbmRlckJ1ZmZlclNpemUsIGZhbHNlKSkKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQotICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCi0gICAgLCBtX2lucHV0RGV2aWNlSWQo
aW5wdXREZXZpY2VJZCkKLXsKLSAgICAvLyBVc2UgdGhlIG9wdGltYWwgYnVmZmVyIHNpemUgcmVj
b21tZW5kZWQgYnkgdGhlIGF1ZGlvIGJhY2tlbmQuCi0gICAgbV9jYWxsYmFja0J1ZmZlclNpemUg
PSBOaXg6OlBsYXRmb3JtOjpjdXJyZW50KCktPmF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplKCk7Ci0K
LSAgICAvLyBRdWljayBleGl0IGlmIHRoZSByZXF1ZXN0ZWQgc2l6ZSBpcyB0b28gbGFyZ2UuCi0g
ICAgQVNTRVJUKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVyQnVmZmVyU2l6ZSA8PSBmaWZv
U2l6ZSk7Ci0gICAgaWYgKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVyQnVmZmVyU2l6ZSA+
IGZpZm9TaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2F1ZGlvRGV2aWNlID0gYWRvcHRQ
dHIoTml4OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVBdWRpb0RldmljZShtX2lucHV0RGV2
aWNlSWQudXRmOCgpLmRhdGEoKSwgbV9jYWxsYmFja0J1ZmZlclNpemUsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhpcykpOwotCi0g
ICAgQVNTRVJUKG1fYXVkaW9EZXZpY2UpOwotCi0gICAgLy8gQ3JlYXRlIGEgRklGTyB0byBoYW5k
bGUgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSBjYWxsYmFjayBzaXplCi0gICAgLy8gbm90IGJlaW5n
IGEgbXVsdGlwbGUgb2YgdGhlIHJlbmRlciBzaXplLiBJZiB0aGUgRklGTyBhbHJlYWR5Ci0gICAg
Ly8gY29udGFpbnMgZW5vdWdoIGRhdGEsIHRoZSBkYXRhIHdpbGwgYmUgcHJvdmlkZWQgZGlyZWN0
bHkuCi0gICAgLy8gT3RoZXJ3aXNlLCB0aGUgRklGTyB3aWxsIGNhbGwgdGhlIHByb3ZpZGVyIGVu
b3VnaCB0aW1lcyB0bwotICAgIC8vIHNhdGlzZnkgdGhlIHJlcXVlc3QgZm9yIGRhdGEuCi0gICAg
bV9maWZvID0gYWRvcHRQdHIobmV3IEF1ZGlvUHVsbEZJRk8oKnRoaXMsIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZpZm9TaXplLCByZW5kZXJCdWZmZXJTaXplKSk7Ci0KLSAgICAvLyBJbnB1dCBi
dWZmZXJpbmcuCi0gICAgbV9pbnB1dEZpZm8gPSBhZG9wdFB0cihuZXcgQXVkaW9GSUZPKG51bWJl
ck9mSW5wdXRDaGFubmVscywgZmlmb1NpemUpKTsKLQotICAgIC8vIElmIHRoZSBjYWxsYmFjayBz
aXplIGRvZXMgbm90IG1hdGNoIHRoZSByZW5kZXIgc2l6ZSwgdGhlbiB3ZSBuZWVkIHRvIGJ1ZmZl
ciBzb21lCi0gICAgLy8gZXh0cmEgc2lsZW5jZSBmb3IgdGhlIGlucHV0LiBPdGhlcndpc2UsIHdl
IGNhbiBvdmVyLWNvbnN1bWUgdGhlIGlucHV0IEZJRk8uCi0gICAgaWYgKG1fY2FsbGJhY2tCdWZm
ZXJTaXplICE9IHJlbmRlckJ1ZmZlclNpemUpIHsKLSAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBt
dWx0aS1jaGFubmVsIGlucHV0IGFuZCBkb24ndCBoYXJkLWNvZGUgdG8gc3RlcmVvLgotICAgICAg
ICBSZWZQdHI8QXVkaW9CdXM+IHNpbGVuY2UgPSBBdWRpb0J1czo6Y3JlYXRlKDIsIHJlbmRlckJ1
ZmZlclNpemUpOwotICAgICAgICBtX2lucHV0Rmlmby0+cHVzaChzaWxlbmNlLmdldCgpKTsKLSAg
ICB9Ci19Ci0KLUF1ZGlvRGVzdGluYXRpb25OaXg6On5BdWRpb0Rlc3RpbmF0aW9uTml4KCkKLXsK
LSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbk5peDo6c3RhcnQoKQotewot
ICAgIGlmICghbV9pc1BsYXlpbmcgJiYgbV9hdWRpb0RldmljZSkgewotICAgICAgICBtX2F1ZGlv
RGV2aWNlLT5zdGFydCgpOwotICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7Ci0gICAgfQotfQot
Ci12b2lkIEF1ZGlvRGVzdGluYXRpb25OaXg6OnN0b3AoKQotewotICAgIGlmIChtX2lzUGxheWlu
ZyAmJiBtX2F1ZGlvRGV2aWNlKSB7Ci0gICAgICAgIG1fYXVkaW9EZXZpY2UtPnN0b3AoKTsKLSAg
ICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKLSAgICB9Ci19Ci0KLWJvb2wgQXVkaW9EZXN0aW5h
dGlvbk5peDo6aXNQbGF5aW5nKCkKLXsKLSAgICByZXR1cm4gbV9pc1BsYXlpbmc7Ci19Ci0KLWZs
b2F0IEF1ZGlvRGVzdGluYXRpb25OaXg6OnNhbXBsZVJhdGUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3NhbXBsZVJhdGU7Ci19Ci0KLWZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2Ft
cGxlUmF0ZSgpCi17Ci0gICAgcmV0dXJuIE5peDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+YXVkaW9I
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLX0KLQotdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9u
OjptYXhDaGFubmVsQ291bnQoKQotewotICAgIHJldHVybiBOaXg6OlBsYXRmb3JtOjpjdXJyZW50
KCktPmF1ZGlvSGFyZHdhcmVPdXRwdXRDaGFubmVscygpOwotfQotCi12b2lkIEF1ZGlvRGVzdGlu
YXRpb25OaXg6OnJlbmRlcihjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdCo+JiBzb3VyY2VEYXRhLCBj
b25zdCBzdGQ6OnZlY3RvcjxmbG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZyYW1l
cykKLXsKLSAgICBpZiAoIW1faXNQbGF5aW5nIHx8ICFtX2F1ZGlvRGV2aWNlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBib29sIGlzTnVtYmVyT2ZDaGFubmVsc0dvb2QgPSBhdWRpb0RhdGEuc2l6
ZSgpID09IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKLSAgICBpZiAoIWlzTnVtYmVyT2ZDaGFu
bmVsc0dvb2QpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBib29sIGlzQnVmZmVyU2l6ZUdvb2QgPSBudW1iZXJPZkZyYW1lcyA9
PSBtX2NhbGxiYWNrQnVmZmVyU2l6ZTsKLSAgICBpZiAoIWlzQnVmZmVyU2l6ZUdvb2QpIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBCdWZmZXIgb3B0aW9uYWwgbGl2ZSBpbnB1dC4KLSAgICBpZiAoc291cmNlRGF0YS5zaXpl
KCkpIHsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVzPiB3cmFwcGVyQnVzID0gQXVkaW9CdXM6OmNy
ZWF0ZShzb3VyY2VEYXRhLnNpemUoKSwgbnVtYmVyT2ZGcmFtZXMsIGZhbHNlKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZURhdGEuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICB3cmFwcGVyQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHNvdXJjZURhdGFbaV0sIG51bWJl
ck9mRnJhbWVzKTsKLSAgICAgICAgbV9pbnB1dEZpZm8tPnB1c2god3JhcHBlckJ1cy5nZXQoKSk7
Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZPdXRwdXRD
aGFubmVsczsgKytpKQotICAgICAgICBtX3JlbmRlckJ1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCBh
dWRpb0RhdGFbaV0sIG51bWJlck9mRnJhbWVzKTsKLQotICAgIG1fZmlmby0+Y29uc3VtZShtX3Jl
bmRlckJ1cy5nZXQoKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRp
b25OaXg6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQotewotICAgIFJlZlB0cjxBdWRpb0J1cz4gc291cmNlQnVzOwotICAgIGlmIChtX2lucHV0Rmlm
by0+ZnJhbWVzSW5GaWZvKCkgPj0gZnJhbWVzVG9Qcm9jZXNzKSB7Ci0gICAgICAgIG1faW5wdXRG
aWZvLT5jb25zdW1lKG1faW5wdXRCdXMuZ2V0KCksIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAg
IHNvdXJjZUJ1cyA9IG1faW5wdXRCdXM7Ci0gICAgfQotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIo
c291cmNlQnVzLmdldCgpLCBidXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9uaXgvQXVkaW9EZXN0aW5hdGlvbk5peC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbml4L0F1ZGlvRGVzdGluYXRpb25OaXguaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxMGNhNGQwZTE4MDdiNDY1YjM5MjgxOWE3
N2RjNThiMzcyZTc3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9uaXgvQXVkaW9EZXN0aW5hdGlvbk5p
eC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEF1ZGlvRGVzdGluYXRpb25OaXhfaAotI2RlZmluZSBBdWRpb0Rlc3RpbmF0aW9uTml4X2gKLQot
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgotI2lu
Y2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgotI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIu
aCIKLSNpbmNsdWRlIDxwdWJsaWMvQXVkaW9EZXZpY2UuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPOwotY2xhc3MgQXVkaW9QdWxs
RklGTzsKLQotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5peCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0
aW9uLCBwdWJsaWMgTml4OjpBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2ssIHB1YmxpYyBBdWRp
b1NvdXJjZVByb3ZpZGVyIHsKLXB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTml4KEF1ZGlv
SU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKLSAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uTml4KCk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIC8vIFdlYktpdDo6
V2ViQXVkaW9EZXZpY2U6OlJlbmRlckNhbGxiYWNrCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcihj
b25zdCBzdGQ6OnZlY3RvcjxmbG9hdCo+JiBzb3VyY2VEYXRhLCBjb25zdCBzdGQ6OnZlY3Rvcjxm
bG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgb3ZlcnJpZGU7Ci0KLSAg
ICAvLyBXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyCi0gICAgdmlydHVhbCB2b2lkIHByb3Zp
ZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotCi1w
cml2YXRlOgotICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKLSAgICB1bnNpZ25lZCBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHM7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2lucHV0QnVz
OwotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9yZW5kZXJCdXM7Ci0gICAgZmxvYXQgbV9zYW1wbGVS
YXRlOwotICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0gICAgT3duUHRyPE5peDo6QXVkaW9EZXZpY2U+
IG1fYXVkaW9EZXZpY2U7Ci0gICAgc2l6ZV90IG1fY2FsbGJhY2tCdWZmZXJTaXplOwotICAgIFN0
cmluZyBtX2lucHV0RGV2aWNlSWQ7Ci0KLSAgICBPd25QdHI8QXVkaW9GSUZPPiBtX2lucHV0Rmlm
bzsKLSAgICBPd25QdHI8QXVkaW9QdWxsRklGTz4gbV9maWZvOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXVkaW9EZXN0aW5hdGlvbk5peF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9uaXgvRkZURnJhbWVOaXguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbml4L0ZGVEZyYW1lTml4LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTZhZGYwMDA1MjQ3YmUzZDkxM2VlZjhjZTg4MmQwOWQ3MGVm
OGZhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9uaXgvRkZURnJhbWVOaXguY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0jaW5jbHVkZSAiRkZURnJhbWUuaCIK
LQotI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxw
dWJsaWMvRkZURnJhbWUuaD4KLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2NhbGVQbGFuYXJEYXRhKGZsb2F0
KiBkYXRhLCBjb25zdCB1bnNpZ25lZCBzaXplLCBjb25zdCBmbG9hdCBzY2FsZSkKLXsKLSAgICBW
ZWN0b3JNYXRoOjp2c211bChkYXRhLCAxLCAmc2NhbGUsIGRhdGEsIDEsIHNpemUpOwotfQotCi1G
RlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKLSAgICA6IG1fRkZUU2l6ZShmZnRT
aXplKQotICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihmZnRT
aXplKSkpCi17Ci0gICAgbV9mZnRGcmFtZSA9IGFkb3B0UHRyKE5peDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+Y3JlYXRlRkZURnJhbWUoZmZ0U2l6ZSkpOwotfQotCi1GRlRGcmFtZTo6RkZURnJhbWUo
Y29uc3QgRkZURnJhbWUmIGZyYW1lKQotICAgIDogbV9GRlRTaXplKGZyYW1lLm1fRkZUU2l6ZSkK
LSAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkKLXsKLSAgICBtX2ZmdEZy
YW1lID0gYWRvcHRQdHIoZnJhbWUubV9mZnRGcmFtZS0+Y29weSgpKTsKLX0KLQotRkZURnJhbWU6
On5GRlRGcmFtZSgpCi17Ci19Ci0KLXZvaWQgRkZURnJhbWU6Om11bHRpcGx5KGNvbnN0IEZGVEZy
YW1lJiBmcmFtZSkKLXsKLSAgICBmbG9hdCogcmVhbFAxID0gcmVhbERhdGEoKTsKLSAgICBmbG9h
dCogaW1hZ1AxID0gaW1hZ0RhdGEoKTsKLSAgICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJhbWUu
cmVhbERhdGEoKTsKLSAgICBjb25zdCBmbG9hdCogaW1hZ1AyID0gZnJhbWUuaW1hZ0RhdGEoKTsK
LQotICAgIGNvbnN0IHNpemVfdCBzaXplID0gbV9mZnRGcmFtZS0+ZnJlcXVlbmN5RG9tYWluU2Ft
cGxlQ291bnQoKTsKLSAgICBWZWN0b3JNYXRoOjp6dm11bChyZWFsUDEsIGltYWdQMSwgcmVhbFAy
LCBpbWFnUDIsIHJlYWxQMSwgaW1hZ1AxLCBzaXplKTsKLQotICAgIC8vIFNjYWxlIGFjY291bnRz
IHRoZSBwZWN1bGlhciBzY2FsaW5nIG9mIHZlY0xpYiBvbiB0aGUgTWFjLgotICAgIC8vIFRoaXMg
ZW5zdXJlcyB0aGUgcmlnaHQgc2NhbGluZyBhbGwgdGhlIHdheSBiYWNrIHRvIGludmVyc2UgRkZU
LgotICAgIC8vIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIHNjYWxpbmcgb24gdGhlIE1hYyB0aGVu
IHRoaXMgc2NhbGUKLSAgICAvLyBmYWN0b3Igd2lsbCBuZWVkIHRvIGNoYW5nZSB0b28uCi0gICAg
Y29uc3QgZmxvYXQgc2NhbGUgPSAwLjU7Ci0gICAgc2NhbGVQbGFuYXJEYXRhKHJlYWxQMSwgc2l6
ZSwgc2NhbGUpOwotICAgIHNjYWxlUGxhbmFyRGF0YShpbWFnUDEsIHNpemUsIHNjYWxlKTsKLX0K
LQotLy8gUHJvdmlkZXMgdGltZSBkb21haW4gc2FtcGxlcyBpbiBhcmd1bWVudCAiZGF0YSIuIEZy
YW1lIHdpbGwgc3RvcmUgdGhlIHRyYW5zZm9ybWVkIGRhdGEuCi12b2lkIEZGVEZyYW1lOjpkb0ZG
VChjb25zdCBmbG9hdCogZGF0YSkKLXsKLSAgICBtX2ZmdEZyYW1lLT5kb0ZGVChkYXRhKTsKLSAg
ICAvLyBTY2FsZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xpYidzIHNj
YWxlIGZhY3RvcgotICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIGRl
ZmluaXRpb24gb2YgRkZURnJhbWUgdG8KLSAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2FsZSBmYWN0
b3IgdGhlbiB0aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KLSAgICBjb25zdCBmbG9hdCBz
Y2FsZSA9IDI7Ci0gICAgY29uc3Qgc2l6ZV90IHNpemUgPSBtX2ZmdEZyYW1lLT5mcmVxdWVuY3lE
b21haW5TYW1wbGVDb3VudCgpOwotICAgIHNjYWxlUGxhbmFyRGF0YShyZWFsRGF0YSgpLCBzaXpl
LCBzY2FsZSk7Ci0gICAgc2NhbGVQbGFuYXJEYXRhKGltYWdEYXRhKCksIHNpemUsIHNjYWxlKTsK
LX0KLQotLy8gQ2FsY3VsYXRlcyBpbnZlcnNlIHRyYW5zZm9ybSBmcm9tIHRoZSBzdG9yZWQgZGF0
YSwgcHV0dGluZyB0aGUgcmVzdWx0cyBpbiBhcmd1bWVudCAnZGF0YScuCi12b2lkIEZGVEZyYW1l
Ojpkb0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpCi17Ci0gICAgbV9mZnRGcmFtZS0+ZG9JbnZlcnNl
RkZUKGRhdGEpOwotCi0gICAgLy8gU2NhbGUgc28gdGhhdCBhIGZvcndhcmQgdGhlbiBpbnZlcnNl
IEZGVCB5aWVsZHMgZXhhY3RseSB0aGUgb3JpZ2luYWwgZGF0YS4KLSAgICBjb25zdCBmbG9hdCBz
Y2FsZSA9IDEuMCAvICgyICogbV9GRlRTaXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9GRlRTaXplOyArK2kpCi0gICAgICAgIGRhdGFbaV0gPSBzY2FsZSAqIGRhdGFbaV07Ci19
Ci0KLXZvaWQgRkZURnJhbWU6OmluaXRpYWxpemUoKQotewotfQotCi12b2lkIEZGVEZyYW1lOjpj
bGVhbnVwKCkKLXsKLX0KLQotZmxvYXQqIEZGVEZyYW1lOjpyZWFsRGF0YSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fZmZ0RnJhbWUtPnJlYWxEYXRhKCk7Ci19Ci0KLWZsb2F0KiBGRlRGcmFtZTo6
aW1hZ0RhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2ZmdEZyYW1lLT5pbWFnRGF0YSgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L0ljb25O
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L0ljb25OaXguY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDNmOGQzMmU0ZDMwYjQ0ZGMwMzYxNzg5
NTQ5YzNiYTcyYjlhMmI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25peC9JY29uTml4LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJJY29uLmgiCi0KLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSWNvbjo6fkljb24oKQotewotfQotCi1QYXNzUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBJY29uOjpw
YWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaXgvSW1hZ2VOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bml4L0ltYWdlTml4LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2ZTEzYjQy
YjQ2MThiNWNlY2FjNTA2NjQ1YjBlNjM2OWE1MGJmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aXgvSW1hZ2VOaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04g
ZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcwotICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSW1hZ2UuaCIKLQotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBCaXRtYXBJbWFnZTo6aW52
YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCi17Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVyRmFsbGJhY2soKQotewotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyAvLyBGSVhNRTogZmFsbGJhY2sgaW1hZ2U/Ci19Ci0KLXN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobWFrZVN0cmluZyhEQVRBX0RJUiAi
L3dlYmtpdC0xLjAvaW1hZ2VzLyIsIG5hbWUsICIucG5nIikpOwotICAgIGlmIChidWZmZXIpCi0g
ICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOwotICAgIHJldHVybiBsb2FkUmVzb3VyY2VT
aGFyZWRCdWZmZXJGYWxsYmFjaygpOwotfQotCi1QYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBSZWZQdHI8Qml0bWFw
SW1hZ2U+IGltZyA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIobmFtZSk7Ci0gICAgaW1nLT5z
ZXREYXRhKGJ1ZmZlci5yZWxlYXNlKCksIHRydWUpOwotICAgIHJldHVybiBpbWcucmVsZWFzZSgp
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvQ3Vyc29y
Tml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9DdXJzb3JOaXguY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjg0YjliY2MyYzkzOTJhMWEzY2UzNjNhZGE4MzY3
OTNlNTQ1MDQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9DdXJzb3JOaXguY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11ZWxsZXIg
PG11ZWxsZXJAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8
c3RhaWtvc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA2IENoYXJsZXMgU2FtdWVscyA8
Y2hhcmxlc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4KLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkN1cnNvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUN1cnNvcjo6Q3Vyc29yKGNvbnN0IEN1cnNvciYgb3RoZXIpCi0gICAgOiBtX3R5cGUob3RoZXIu
bV90eXBlKQotICAgICwgbV9pbWFnZShvdGhlci5tX2ltYWdlKQotICAgICwgbV9ob3RTcG90KG90
aGVyLm1faG90U3BvdCkKLSAgICAsIG1fcGxhdGZvcm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9ybUN1
cnNvcikKLXsKLX0KLQotQ3Vyc29yOjp+Q3Vyc29yKCkKLXsKLX0KLQotQ3Vyc29yJiBDdXJzb3I6
Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQotewotICAgIG1fdHlwZSA9IG90aGVyLm1f
dHlwZTsKLSAgICBtX2ltYWdlID0gb3RoZXIubV9pbWFnZTsKLSAgICBtX2hvdFNwb3QgPSBvdGhl
ci5tX2hvdFNwb3Q7Ci0gICAgbV9wbGF0Zm9ybUN1cnNvciA9IG90aGVyLm1fcGxhdGZvcm1DdXJz
b3I7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1D
dXJzb3IoKSBjb25zdAotewotICAgIGlmIChtX3BsYXRmb3JtQ3Vyc29yKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9wbGF0Zm9ybUN1cnNvciA9IG1fdHlwZTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRHJhZ0Rh
dGFOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0RyYWdEYXRhTml4LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxOTZmMjYzMDc4YWJjNWJmYmM1OTlhOTcz
YjNlOTFjNDc5OTJhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRHJhZ0RhdGFOaXguY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEcmFnRGF0YS5oIgotCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBsYWNlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdAot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNGaWxlcygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBEcmFnRGF0YTo6bnVt
YmVyT2ZGaWxlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRHJhZ0RhdGE6
OmFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKLXsKLX0KLQotYm9vbCBEcmFnRGF0
YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
U3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChGcmFtZSopIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFN0cmluZygpOwotfQotCi1Db2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIENvbG9yKCk7Ci19Ci0KLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNv
bnRlbnQoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiwgRmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAotewotICAgIHJldHVybiBTdHJp
bmcoKTsKLX0KLQotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6YXNGcmFn
bWVudChGcmFtZSosIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9E
cmFnSW1hZ2VOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0RyYWdJbWFnZU5p
eC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNDcwYjY4Y2RiNTczYmI2NWEy
ZDczNGQ2ZmM1N2RmMTY0ZWQ3NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0RyYWdJbWFnZU5peC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVJTIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgotCi0jaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW50U2l6ZSBkcmFnSW1hZ2VT
aXplKERyYWdJbWFnZVJlZikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBJ
bnRTaXplKDAsIDApOwotfQotCi12b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdl
KERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGltYWdlOwotfQotCi1EcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VU
b0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gaW1hZ2U7Ci19Ci0KLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0Vycm9yc05peC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRXJyb3JzTml4LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTk5NGI1NjkwYjU3ODBlZmJlNjUwZDE2NjgzNzY1MGQ3ZmY5NGMzZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uaXgvRXJyb3JzTml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkVycm9yc05peC5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VF
cnJvci5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZXNvdXJjZUVycm9yIGNhbmNl
bGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVlc3QgY2FuY2Vs
bGVkIikpOwotfQotCi1SZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
b2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCku
c3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0
d29yayBwb3J0IikpOwotfQotCi1SZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJVUkwgY2Fubm90IGJlIHNob3duIikpOwotfQotCi1S
ZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Us
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiRnJhbWUgbG9hZCB3YXMgaW50
ZXJydXB0ZWQiKSk7Ci19Ci0KLVJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJDb250ZW50IHdpdGggdGhlIHNw
ZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOwotfQotCi1SZXNvdXJjZUVycm9y
IGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
LXsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtF
cnJvckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVy
YWwoIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7Ci19Ci0KLVJlc291cmNlRXJyb3IgcGx1Z2luV2ls
bEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxs
SGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2lu
IHdpbGwgaGFuZGxlIGxvYWQiKSk7Ci19Ci0KLVJlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3Jr
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0d29ya0Vycm9yKQotewotICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JOZXR3b3JrLCBu
ZXR3b3JrRXJyb3IuZmFpbGluZ1VSTCgpLCBuZXR3b3JrRXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKSk7Ci19Ci0KLVJlc291cmNlRXJyb3IgZG93bmxvYWRDYW5jZWxsZWRCeVVzZXJFcnJvcihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJVc2VyIGNhbmNlbGxlZCB0aGUg
ZG93bmxvYWQiKSk7Ci19Ci0KLVJlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKLXsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBE
b3dubG9hZEVycm9yRGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1l
c3NhZ2UpOwotfQotCi1SZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwgZmFpbGluZ1VSTCwgZXJy
b3JNZXNzYWdlKTsKLX0KLQotUmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihjb25z
dCBVUkwmIGZhaWxpbmdVUkwpCi17Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VSTCwgQVNDSUlMaXRl
cmFsKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKLX0KLQotUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFn
ZVJhbmdlVG9QcmludChjb25zdCBVUkwmIGZhaWxpbmdVUkwpCi17Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckludmFsaWRQYWdlUmFuZ2UsIGZh
aWxpbmdVUkwsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwYWdlIHJhbmdlIikpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25peC9FcnJvcnNOaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9FcnJvcnNOaXgu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU5NWIxZGQxMmYwNTZmMWM3MmU5ZGRl
YWVjODk0NDIxZTM3ZDFhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRXJyb3JzTml4LmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiwg
MjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRXJyb3JzTml4X2gKLSNkZWZpbmUgRXJyb3JzTml4X2gKLQotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgVVJMOwotCi1zdGF0aWMgY29uc3QgY2hhciBlcnJvckRvbWFpbk5ldHdv
cmtbXSA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotc3RhdGljIGNvbnN0IGNoYXIgZXJyb3JEb21h
aW5Qb2xpY3lbXSA9ICJXZWJLaXRQb2xpY3lFcnJvciI7Ci1zdGF0aWMgY29uc3QgY2hhciBlcnJv
ckRvbWFpblBsdWdpbltdID0gIldlYktpdFBsdWdpbkVycm9yIjsKLXN0YXRpYyBjb25zdCBjaGFy
IGVycm9yRG9tYWluRG93bmxvYWRbXSA9ICJXZWJLaXREb3dubG9hZEVycm9yIjsKLXN0YXRpYyBj
b25zdCBjaGFyIGVycm9yRG9tYWluUHJpbnRbXSA9ICJXZWJLaXRQcmludEVycm9yIjsKLQotZW51
bSBOZXR3b3JrRXJyb3IgewotICAgIE5ldHdvcmtFcnJvckZhaWxlZCA9IDM5OSwKLSAgICBOZXR3
b3JrRXJyb3JUcmFuc3BvcnQgPSAzMDAsCi0gICAgTmV0d29ya0Vycm9yVW5rbm93blByb3RvY29s
ID0gMzAxLAotICAgIE5ldHdvcmtFcnJvckNhbmNlbGxlZCA9IDMwMiwKLSAgICBOZXR3b3JrRXJy
b3JGaWxlRG9lc05vdEV4aXN0ID0gMzAzCi19OwotCi0vLyBTeW5jJ2Qgd2l0aCBNYWMncyBXZWJL
aXQgRXJyb3JzIGF0OgotLy8gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRFcnJvcnNbUHJp
dmF0ZV0uaAotZW51bSBQb2xpY3lFcnJvciB7Ci0gICAgUG9saWN5RXJyb3JGYWlsZWQgPSAxOTks
Ci0gICAgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUgPSAxMDAsCi0gICAgUG9saWN5RXJy
b3JDYW5ub3RTaG93VVJMID0gMTAxLAotICAgIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0
ZWRCeVBvbGljeUNoYW5nZSA9IDEwMiwKLSAgICBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0ID0gMTAzCi19OwotCi1lbnVtIFBsdWdpbkVycm9yIHsKLSAgICBQbHVnaW5FcnJvckZh
aWxlZCA9IDI5OSwKLSAgICBQbHVnaW5FcnJvckNhbm5vdEZpbmRQbHVnaW4gPSAyMDAsCi0gICAg
UGx1Z2luRXJyb3JDYW5ub3RMb2FkUGx1Z2luID0gMjAxLAotICAgIFBsdWdpbkVycm9ySmF2YVVu
YXZhaWxhYmxlID0gMjAyLAotICAgIFBsdWdpbkVycm9yQ29ubmVjdGlvbkNhbmNlbGxlZCA9IDIw
MywKLSAgICBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkID0gMjA0Ci19OwotCi1lbnVtIERvd25s
b2FkRXJyb3IgewotICAgIERvd25sb2FkRXJyb3JOZXR3b3JrID0gNDk5LAotICAgIERvd25sb2Fk
RXJyb3JDYW5jZWxsZWRCeVVzZXIgPSA0MDAsCi0gICAgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9u
ID0gNDAxCi19OwotCi1lbnVtIFByaW50RXJyb3IgewotICAgIFByaW50RXJyb3JHZW5lcmFsID0g
NTk5LAotICAgIFByaW50RXJyb3JQcmludGVyTm90Rm91bmQgPSA1MDAsCi0gICAgUHJpbnRFcnJv
ckludmFsaWRQYWdlUmFuZ2UgPSA1MDEKLX07Ci0KLVJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci1SZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLVJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBv
bGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotUmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci1SZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci1S
ZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotUmVzb3VyY2VFcnJvciBkb3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJik7Ci1SZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotUmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9u
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKLVJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLVJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJy
b3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKTsKLVJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5n
ZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5nVVJMKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRXJyb3JzTml4X2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbml4L0ZpbGVTeXN0ZW1OaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bml4L0ZpbGVTeXN0ZW1OaXguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGU4
ODFhNWUzNjdjNWM3ZjM3M2IzNjcxYWQ4NTE3MDVlMmRmZWU2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9G
aWxlU3lzdGVtTml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChj
KSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCi0KLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNsdWRl
ICJVVUlELmgiCi0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNs
dWRlIDxnbGliL2dzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xp
YlV0aWxpdGllcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBPbiBsaW51
eCBmaWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBieXRlcywgc28gYWxzbyBzdHJpbmdzIHRoYXQgY2Fu
bm90IGJlIGVuY29kZWQgaW4gYW55IHdheQotLy8gYXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRoaXMg
bWVhbiB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFzLWlzIGluIGEgU3Ry
aW5nCi0vLyBidXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCi0vLyBPbiBXaW5kb3dzIHRoZSBHTGli
IGZpbGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28gd2UgY2FuIG9wdGltaXplIHRo
aXMgY2FzZS4KLVN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQot
ewotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIEdP
d25QdHI8Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlbmFtZSwg
Ii86IiwgZmFsc2UpKTsKLSAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKLX0KLQotQ1N0
cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0Zjgo
KS5kYXRhKCksIDApKTsKLSAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7Ci19Ci0KLS8vIENvbnZl
cnRzIGEgc3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhl
IHVzZXIuCi1TdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQot
ewotICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RyaW5n
KTsKLSAgICBHT3duUHRyPGdjaGFyPiBkaXNwbGF5KGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFt
ZS5kYXRhKCksIDAsIDAsIDAsIDApKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAgIHJldHVy
biBzdHJpbmc7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5LmdldCgpKTsK
LX0KLQotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwotICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXN1
bHQgPSBnX2ZpbGVfdGVzdChmaWxlbmFtZS5kYXRhKCksIEdfRklMRV9URVNUX0VYSVNUUyk7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgQ1N0cmluZyBmaWxlbmFtZSA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZmlsZW5hbWUuaXNO
dWxsKCkpCi0gICAgICAgIHJlc3VsdCA9ICFnX3JlbW92ZShmaWxlbmFtZS5kYXRhKCkpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBDU3RyaW5nIGZp
bGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmaWxl
bmFtZS5pc051bGwoKSkKLSAgICAgICAgcmVzdWx0ID0gIWdfcm1kaXIoZmlsZW5hbWUuZGF0YSgp
KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCi17Ci0gICAgQ1N0cmluZyBmaWxlbmFt
ZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLSAgICBpZiAoZmlsZW5hbWUuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7
Ci0gICAgZ2ludCByZXN1bHQgPSBnX3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJlc3VsdCk7
Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0U2l6
ZSA9IHN0YXRSZXN1bHQuc3Rfc2l6ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgbW9kaWZpZWRU
aW1lKQotewotICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7Ci0gICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGdpbnQgcmVzdWx0ID0gZ19zdGF0KGZp
bGVuYW1lLmRhdGEoKSwgJnN0YXRSZXN1bHQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIG1vZGlmaWVkVGltZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBDU3RyaW5nIGZpbGVuYW1lID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAgIGlmIChmaWxlbmFtZS5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IHN0YXQgc3RhdFJlc3VsdDsK
LSAgICBnaW50IHJlc3VsdCA9IGdfc3RhdChmaWxlbmFtZS5kYXRhKCksICZzdGF0UmVzdWx0KTsK
LSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtZXRhZGF0YS5t
b2RpZmljYXRpb25UaW1lID0gc3RhdFJlc3VsdC5zdF9tdGltZTsKLSAgICBtZXRhZGF0YS5sZW5n
dGggPSBzdGF0UmVzdWx0LnN0X3NpemU7Ci0gICAgbWV0YWRhdGEudHlwZSA9IFNfSVNESVIoc3Rh
dFJlc3VsdC5zdF9tb2RlKSA/IEZpbGVNZXRhZGF0YTo6VHlwZURpcmVjdG9yeSA6IEZpbGVNZXRh
ZGF0YTo6VHlwZUZpbGU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVu
dCkKLXsKLSAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCi0gICAgICAg
IHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJB
VE9SX1MgKyBjb21wb25lbnQ7Ci19Ci0KLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOwotICAgIGlmIChmaWxlbmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgZ2ludCByZXN1bHQgPSBnX21rZGlyX3dpdGhfcGFyZW50cyhmaWxlbmFt
ZS5kYXRhKCksIFNfSVJXWFUpOwotCi0gICAgcmV0dXJuICFyZXN1bHQ7Ci19Ci0KLVN0cmluZyBo
b21lRGlyZWN0b3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuIGZpbGVuYW1lVG9TdHJpbmcoZ19nZXRf
aG9tZV9kaXIoKSk7Ci19Ci0KLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoTmFtZSkKLXsKLSAgICBpZiAocGF0aE5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
cGF0aE5hbWU7Ci0KLSAgICBDU3RyaW5nIHRtcEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGhOYW1lKTsKLSAgICBHT3duUHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0
X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmRhdGEoKSkpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGJhc2VOYW1lLmdldCgpKTsKLX0KLQotQ1N0cmluZyBhcHBsaWNhdGlvbkRpcmVjdG9yeVBh
dGgoKQotewotICAgIENTdHJpbmcgcGF0aCA9IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOwot
ICAgIGlmICghcGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHBhdGg7Ci0KLSAgICAvLyBJ
ZiB0aGUgYWJvdmUgZmFpbHMsIGNoZWNrIHRoZSBQQVRIIGVudiB2YXJpYWJsZS4KLSAgICBHT3du
UHRyPGNoYXI+IGN1cnJlbnRFeGVQYXRoKGdfZmluZF9wcm9ncmFtX2luX3BhdGgoZ19nZXRfcHJn
bmFtZSgpKSk7Ci0gICAgaWYgKCFjdXJyZW50RXhlUGF0aC5nZXQoKSkKLSAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKLQotICAgIEdPd25QdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5h
bWUoY3VycmVudEV4ZVBhdGguZ2V0KCkpKTsKLSAgICByZXR1cm4gZGlybmFtZS5nZXQoKTsKLX0K
LQotQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENTdHJpbmcsIGNhY2hlZFBhdGgsICgpKTsKLSAgICBpZiAoIWNhY2hlZFBhdGguaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBjYWNoZWRQYXRoOwotCi0gICAgR093blB0cjxnY2hhcj4gZGF0
YVBhdGgoZ19idWlsZF9maWxlbmFtZShEQVRBX0RJUiwgIndlYmtpdG5peCIsIE5VTEwpKTsKLQot
ICAgIGNhY2hlZFBhdGggPSBkYXRhUGF0aC5nZXQoKTsKLSAgICByZXR1cm4gY2FjaGVkUGF0aDsK
LX0KLQotdWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgp
Ci17Ci0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKHBhdGgpKTsKLSAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYo
Z19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRF
X0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOwotICAgIGlmICghZmlsZUluZm8pCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDY0KGZp
bGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7Ci19Ci0KLVN0
cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHT3duUHRyPGNo
YXI+IGRpcm5hbWUoZ19wYXRoX2dldF9kaXJuYW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgp
KTsKLX0KLQotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0K
LSAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwot
ICAgIEdEaXIqIGRpciA9IGdfZGlyX29wZW4oZmlsZW5hbWUuZGF0YSgpLCAwLCAwKTsKLSAgICBp
ZiAoIWRpcikKLSAgICAgICAgcmV0dXJuIGVudHJpZXM7Ci0KLSAgICBHUGF0dGVyblNwZWMqIHBz
cGVjID0gZ19wYXR0ZXJuX3NwZWNfbmV3KChmaWx0ZXIudXRmOCgpKS5kYXRhKCkpOwotICAgIHdo
aWxlIChjb25zdCBjaGFyKiBuYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpcikpIHsKLSAgICAgICAg
aWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVjLCBuYW1lKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUo
ZmlsZW5hbWUuZGF0YSgpLCBuYW1lLCBOVUxMKSk7Ci0gICAgICAgIGVudHJpZXMuYXBwZW5kKGZp
bGVuYW1lVG9TdHJpbmcoZW50cnkuZ2V0KCkpKTsKLSAgICB9Ci0gICAgZ19wYXR0ZXJuX3NwZWNf
ZnJlZShwc3BlYyk7Ci0gICAgZ19kaXJfY2xvc2UoZGlyKTsKLQotICAgIHJldHVybiBlbnRyaWVz
OwotfQotCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQotewotICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1l
KGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IHRl
bXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwg
TlVMTCkpOwotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwotCi0gICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9y
ZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKLSAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKLX0KLQotUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17
Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLSAg
ICBpZiAoZnNSZXAuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwotCi0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKGZzUmVwLmRhdGEoKSkpOwotICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0g
MDsKLSAgICBpZiAobW9kZSA9PSBPcGVuRm9yUmVhZCkKLSAgICAgICAgaW9TdHJlYW0gPSBnX2Zp
bGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9
PSBPcGVuRm9yV3JpdGUpIHsKLSAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZzUmVwLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9J
U19SRUdVTEFSKSkpCi0gICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0
ZShmaWxlLmdldCgpLCAwLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW9TdHJlYW0g
PSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUs
IDAsIDApOwotICAgIH0KLQotICAgIHJldHVybiBpb1N0cmVhbTsKLX0KLQotdm9pZCBjbG9zZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGhhbmRsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaW9fc3RyZWFtX2Nsb3NlKEdfSU9f
U1RSRUFNKGhhbmRsZSksIDAsIDApOwotICAgIGdfb2JqZWN0X3VucmVmKGhhbmRsZSk7Ci0gICAg
aGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLX0KLQotbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVr
T3JpZ2luIG9yaWdpbikKLXsKLSAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwot
ICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBTZWVrRnJvbUJlZ2lubmluZzoKLSAgICAg
ICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlZWtG
cm9tQ3VycmVudDoKLSAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFNlZWtGcm9tRW5kOgotICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLQotICAgIGlmICghZ19zZWVrYWJsZV9zZWVrKEdfU0VFS0FCTEUoZ19pb19z
dHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSksIG9mZnNldCwgc2Vl
a1R5cGUsIDAsIDApKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIGdfc2Vla2FibGVf
dGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0o
aGFuZGxlKSkpKTsKLX0KLQotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgZ3NpemUgYnl0ZXNXcml0
dGVuOwotICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1fZ2V0X291dHB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRl
biwgMCwgMCk7Ci0gICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKLX0KLQotaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewot
ICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBkbyB7Ci0gICAgICAgIGdzc2l6ZSBieXRl
c1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0o
R19JT19TVFJFQU0oaGFuZGxlKSksIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsK
LSAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzUmVh
ZDsKLSAgICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJST1JfSU5U
Uik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVs
ZSBtb2R1bGUpCi17Ci0gICAgcmV0dXJuIGdfbW9kdWxlX2Nsb3NlKG1vZHVsZSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbml4L0dhbWVwYWRzTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9HYW1l
cGFkc05peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MGE1YWE2MmY5Nzcy
YmM0MjAxYzg1MTg0YWM3OTBlZGFkY2JiZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0dhbWVwYWRzTml4
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLSAqIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2FtZXBhZHMuaCIK
LQotI2lmIEVOQUJMRShHQU1FUEFEKQotCi0jaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKLSNpbmNs
dWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
YW1lcGFkTGlzdDsKLQotdm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKLXsK
LSAgICBOaXg6OkdhbWVwYWRzIGdhbWVwYWRzOwotCi0gICAgTml4OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5zYW1wbGVHYW1lcGFkcyhnYW1lcGFkcyk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTml4OjpHYW1lcGFkczo6aXRlbXNMZW5ndGhDYXA7ICsraSkgewotICAgICAgICBOaXg6
OkdhbWVwYWQmIG5peEdhbWVwYWQgPSBnYW1lcGFkcy5pdGVtc1tpXTsKLSAgICAgICAgaWYgKGkg
PCBnYW1lcGFkcy5sZW5ndGggJiYgbml4R2FtZXBhZC5jb25uZWN0ZWQpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gaW50by0+aXRlbShpKTsKLSAgICAgICAgICAgIGlm
ICghZ2FtZXBhZCkKLSAgICAgICAgICAgICAgICBnYW1lcGFkID0gR2FtZXBhZDo6Y3JlYXRlKCk7
Ci0gICAgICAgICAgICBnYW1lcGFkLT5pZChTdHJpbmc6OmZyb21VVEY4KG5peEdhbWVwYWQuaWQp
KTsKLSAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOwotICAgICAgICAgICAgZ2FtZXBhZC0+
dGltZXN0YW1wKG5peEdhbWVwYWQudGltZXN0YW1wKTsKLSAgICAgICAgICAgIGdhbWVwYWQtPmF4
ZXMobml4R2FtZXBhZC5heGVzTGVuZ3RoLCBuaXhHYW1lcGFkLmF4ZXMpOwotICAgICAgICAgICAg
Z2FtZXBhZC0+YnV0dG9ucyhuaXhHYW1lcGFkLmJ1dHRvbnNMZW5ndGgsIG5peEdhbWVwYWQuYnV0
dG9ucyk7Ci0gICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgaW50by0+c2V0KGksIDApOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9MYW5ndWFnZU5peC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uaXgvTGFuZ3VhZ2VOaXguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkYzk5YjNhZmUxY2RlZWNjMmU4NDc0NTZjOWIxOWVhM2ZlMjIyZWIwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25peC9MYW5ndWFnZU5peC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8g
Tm9raWEgZGUgVGVjbm9sb2dpYQotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlIDxsb2NhbGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBjaGFyKiBs
b2NhbGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBFLCAwKTsKLQotICAgIGlmICghbG9jYWxl
RGVmYXVsdCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYyIpOwotCi0gICAgU3RyaW5n
IGxvY2FsZSA9IFN0cmluZyhsb2NhbGVEZWZhdWx0KTsKLSAgICBsb2NhbGUucmVwbGFjZSgnXycs
ICctJyk7Ci0gICAgc2l6ZV90IHBvc2l0aW9uID0gbG9jYWxlLmZpbmQoJy4nKTsKLSAgICBpZiAo
cG9zaXRpb24gIT0gbm90Rm91bmQpCi0gICAgICAgIGxvY2FsZSA9IGxvY2FsZS5sZWZ0KHBvc2l0
aW9uKTsKLQotICAgIHJldHVybiBsb2NhbGU7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IHBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcygpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKLSAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9y
bUxhbmd1YWdlKCkpOwotICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvTG9jYWxpemVkU3RyaW5n
c05peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvTG9jYWxpemVkU3RyaW5nc05p
eC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5Y2RhMDJiZjk0ODM4YjU4ZDE1
MTI2YjY2NTE4MjAxYTYyYzdjZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0xvY2FsaXplZFN0cmluZ3NO
aXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KLSAqIENvcHly
aWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgSW5z
dGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVN0cmluZyBzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQotewotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KCJTdWJtaXQiKTsKLX0KLQotU3RyaW5nIGlucHV0RWxlbWVudEFsdFRl
eHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJTdWJtaXQiKTsKLX0KLQotU3Ry
aW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOCgiUmVzZXQiKTsKLX0KLQotU3RyaW5nIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQot
ewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJEZXRhaWxzIik7Ci19Ci0KLVN0cmluZyBz
ZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KCJUaGlzIGlzIGEgc2VhcmNoYWJsZSBpbmRleC4gRW50ZXIgc2VhcmNoIGtleXdvcmRzOiAi
KTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKQotewotICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KCJDaG9vc2UgRmlsZSIpOwotfQotCi1TdHJpbmcgZmlsZUJ1dHRv
bkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoIkNob29zZSBGaWxlcyIpOwotfQotCi1TdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVk
TGFiZWwoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJObyBmaWxlIHNlbGVjdGVk
Iik7Ci19Ci0KLVN0cmluZyBmaWxlQnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJObyBmaWxlcyBzZWxlY3RlZCIpOwotfQotCi1TdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpCi17Ci0gICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoIk9wZW4gTGluayBpbiBOZXcgV2luZG93Iik7Ci19Ci0KLVN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQotewotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KCJEb3dubG9hZCBMaW5rZWQgRmlsZSIpOwotfQotCi1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoIkNvcHkgTGluayBMb2NhdGlvbiIpOwotfQotCi1TdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQotewotICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KCJPcGVuIEltYWdlIGluIE5ldyBXaW5kb3ciKTsKLX0KLQotU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQotewotICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KCJTYXZlIEltYWdlIEFzIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdD
b3B5SW1hZ2VUb0NsaXBib2FyZCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkNv
cHkgSW1hZ2UiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRv
Q2xpcGJvYXJkKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiQ29weSBJbWFnZSBB
ZGRyZXNzIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dp
bmRvdygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIk9wZW4gVmlkZW8gaW4gTmV3
IFdpbmRvdyIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdX
aW5kb3coKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJPcGVuIEF1ZGlvIGluIE5l
dyBXaW5kb3ciKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkVmlkZW9U
b0Rpc2soKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJEb3dubG9hZCBWaWRlbyIp
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRBdWRpb1RvRGlzaygpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkRvd25sb2FkIEF1ZGlvIik7Ci19Ci0KLVN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJDb3B5IFZpZGVvIExpbmsgTG9jYXRpb24iKTsKLX0K
LQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xpbmtUb0NsaXBib2FyZCgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkNvcHkgQXVkaW8gTGluayBMb2NhdGlvbiIp
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scygpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlRvZ2dsZSBNZWRpYSBDb250cm9scyIpOwot
fQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd01lZGlhQ29udHJvbHMoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJTaG93IE1lZGlhIENvbnRyb2xzIik7Ci19Ci0KLVN0
cmluZyBjb250ZXh0TWVudWl0ZW1UYWdIaWRlTWVkaWFDb250cm9scygpCi17Ci0gICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoIkhpZGUgTWVkaWEgQ29udHJvbHMiKTsKLX0KLQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoIlRvZ2dsZSBNZWRpYSBMb29wIFBsYXliYWNrIik7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoIlN3aXRjaCBWaWRlbyB0byBGdWxsc2NyZWVuIik7Ci19Ci0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KCJQbGF5Iik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkK
LXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiUGF1c2UiKTsKLX0KLQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoIk11dGUiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3
V2luZG93KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiT3BlbiBGcmFtZSBpbiBO
ZXcgV2luZG93Iik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5KCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiQ29weSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnRGVsZXRlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiRGVsZXRl
Iik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwoKQotewotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KCJTZWxlY3QgQWxsIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdVbmljb2RlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiSW5z
ZXJ0IFVuaWNvZGUgQ29udHJvbCBDaGFyYWN0ZXIiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0lucHV0TWV0aG9kcygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIklu
cHV0IE1ldGhvZHMiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkdvIEJhY2siKTsKLX0KLQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoIkdvIEZvcndhcmQiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKQot
ewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJTdG9wIik7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJS
ZWxvYWQiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgpCi17Ci0gICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoIkN1dCIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnUGFzdGUoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJQYXN0ZSIpOwotfQot
Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQotewotICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KCJObyBHdWVzc2VzIEZvdW5kIik7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoIklnbm9yZSBTcGVsbGluZyIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
TGVhcm5TcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkxlYXJuIFNw
ZWxsaW5nIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQotewot
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJTZWFyY2ggdGhlIFdlYiIpOwotfQotCi1TdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIpOwot
fQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQotewotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KCJPcGVuIExpbmsiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0lnbm9yZUdyYW1tYXIoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJJZ25v
cmUgR3JhbW1hciIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51
KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiU3BlbGxpbmcgYW5kIEdyYW1tYXIi
KTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wg
c2hvdykKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzaG93ID8gIlNob3cgU3BlbGxp
bmcgYW5kIEdyYW1tYXIiIDogIkhpZGUgU3BlbGxpbmcgYW5kIEdyYW1tYXIiKTsKLX0KLQotU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKQotewotICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KCJDaGVjayBEb2N1bWVudCBOb3ciKTsKLX0KLQotU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIpOwotfQotCi1TdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkKLXsKLSAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOCgiQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5nIik7Ci19Ci0K
LVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoIkZvbnQiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQo
KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJCb2xkIik7Ci19Ci0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KCJJdGFsaWMiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlVuZGVybGluZSIpOwotfQotCi1TdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoIk91dGxpbmUiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVt
ZW50KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiSW5zcGVjdCBFbGVtZW50Iik7
Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpCi17Ci0gICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoIlJpZ2h0IHRvIExlZnQiKTsKLX0KLQotU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OCgiTGVmdCB0byBSaWdodCIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGlu
Z0RpcmVjdGlvbk1lbnUoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJXcml0aW5n
IERpcmVjdGlvbiIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlv
bk1lbnUoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJUZXh0IERpcmVjdGlvbiIp
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCi17Ci0g
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkRlZmF1bHQiKTsKLX0KLQotU3RyaW5nIHNlYXJj
aE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoIk5vIHJlY2VudCBzZWFyY2hlcyIpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudVJlY2VudFNl
YXJjaGVzVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlJlY2VudCBzZWFy
Y2hlcyIpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkK
LXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiQ2xlYXIgcmVjZW50IHNlYXJjaGVzIik7
Ci19Ci0KLVN0cmluZyBBWERlZmluaXRpb25UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOCgiZGVmaW5pdGlvbiIpOwotfQotCi1TdHJpbmcgQVhEZXNjcmlwdGlvbkxpc3RUZXh0
KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiZGVzY3JpcHRpb24gbGlzdCIpOwot
fQotCi1TdHJpbmcgQVhEZXNjcmlwdGlvbkxpc3RUZXJtVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoInRlcm0iKTsKLX0KLQotU3RyaW5nIEFYRGVzY3JpcHRpb25MaXN0RGV0
YWlsVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoImRlc2NyaXB0aW9uIik7
Ci19Ci0KLVN0cmluZyBBWEZvb3RlclJvbGVEZXNjcmlwdGlvblRleHQoKQotewotICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KCJmb290ZXIiKTsKLX0KLQotU3RyaW5nIEFYU2VhcmNoRmllbGRD
YW5jZWxCdXR0b25UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiY2FuY2Vs
Iik7Ci19Ci0KLVN0cmluZyBBWEJ1dHRvbkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KCJwcmVzcyIpOwotfQotCi1TdHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZl
cmIoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJzZWxlY3QiKTsKLX0KLQotU3Ry
aW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoImFjdGl2YXRlIik7Ci19Ci0KLVN0cmluZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIo
KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJ1bmNoZWNrIik7Ci19Ci0KLVN0cmlu
ZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoImNoZWNrIik7Ci19Ci0KLVN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgianVtcCIpOwotfQotCi1TdHJpbmcgdW5rbm93bkZp
bGVTaXplVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlVua25vd24iKTsK
LX0KLQotU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmlu
ZyBBWExpc3RJdGVtQWN0aW9uVmVyYigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLSNpZiBFTkFCTEUoVklERU8pCi1TdHJpbmcgbG9jYWxpemVk
TWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgbG9jYWxpemVkTWVk
aWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRNZWRp
YVRpbWVEZXNjcmlwdGlvbihmbG9hdCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0
YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIkxvYWRpbmcuLi4iKTsK
LX0KLQotU3RyaW5nIG1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJMaXZlIEJyb2FkY2FzdCIpOwotfQotCi1TdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKLXsKLSAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOCgiUGxlYXNlIG1hdGNoIHRoZSByZXF1ZXN0ZWQgZm9ybWF0OiIpOwotfQot
Ci1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChjb25zdCBTdHJpbmcm
IG1heGltdW0pCi17Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgbXVzdCBiZSBsZXNz
IHRoYW4gb3IgZXF1YWwgdG8gIikgKyBtYXhpbXVtOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtaW5pbXVtKQotewotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
ICIpICsgbWluaW11bTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNo
VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KCJzdGVwIG1pc21hdGNoIik7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVRvb0xvbmdUZXh0KGludCwgaW50KQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJ0
b28gbG9uZyIpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0
KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgidHlwZSBtaXNtYXRjaCIpOwotfQot
Ci1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JFbWFpbFRleHQoKQotewot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBsZWFzZSBlbnRlciBhbiBlbWFpbCBhZGRyZXNzIik7
Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1h
aWxUZXh0KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbGVhc2UgZW50ZXIgYW4gZW1h
aWwgYWRkcmVzcyIpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hG
b3JVUkxUZXh0KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbGVhc2UgZW50ZXIgYSBV
UkwiKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlBsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxk
LiIpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JDaGVja2Jv
eFRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJQbGVhc2UgY2hlY2sgdGhp
cyBib3ggaWYgeW91IHdhbnQgdG8gcHJvY2VlZC4iKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nRm9yRmlsZVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KCJQbGVhc2Ugc2VsZWN0IGEgZmlsZS4iKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoIlBsZWFzZSBzZWxlY3Qgb25lIG9yIG1vcmUgZmlsZXMuIik7Ci19Ci0K
LVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclJhZGlvVGV4dCgpCi17Ci0g
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlBsZWFzZSBzZWxlY3Qgb25lIG9mIHRoZXNlIG9w
dGlvbnMuIik7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNl
bGVjdFRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJQbGVhc2Ugc2VsZWN0
IGFuIGl0ZW0gaW4gdGhlIGxpc3QuIik7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZUJh
ZElucHV0Rm9yTnVtYmVyVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoIlBs
ZWFzZSBlbnRlciBhIG51bWJlci4iKTsKLX0KLQotU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkK
LXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgibWlzc2luZyBwbHVnaW4iKTsKLX0KLQot
U3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7Ci19Ci0KLVN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJl
ck9mRmlsZXMpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG51bWJlck9mRmlsZXMpICsg
U3RyaW5nOjpmcm9tVVRGOCgiIGZpbGVzIik7Ci19Ci0KLVN0cmluZyBjcmFzaGVkUGx1Z2luVGV4
dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoInBsdWdpbiBjcmFzaGVkIik7Ci19
Ci0KLVN0cmluZyBibG9ja2VkUGx1Z2luQnlDb250ZW50U2VjdXJpdHlQb2xpY3lUZXh0KCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5n
IGluc2VjdXJlUGx1Z2luVmVyc2lvblRleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgaW5hY3RpdmVQbHVnaW5UZXh0KCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5n
IHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOCgiVW5hY2NlcHRhYmxlIFRMUyBjZXJ0aWZpY2F0ZSIpOwotfQotCi1TdHJpbmcgbG9jYWxp
emVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChrZXksIHN0cmxlbihrZXkpKTsKLX0KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLVN0cmlu
ZyB0ZXh0VHJhY2tDbG9zZWRDYXB0aW9uc1RleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KCJDbG9zZWQgQ2FwdGlvbnMiKTsKLX0KLQotU3RyaW5nIHRleHRUcmFja1N1YnRpdGxl
c1RleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCJTdWJ0aXRsZXMiKTsKLX0K
LQotU3RyaW5nIHRleHRUcmFja09mZk1lbnVJdGVtVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoIk9mZiIpOwotfQotCi1TdHJpbmcgdGV4dFRyYWNrQXV0b21hdGljTWVudUl0
ZW1UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiQXV0byIpOwotfQotCi1T
dHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KCJObyBsYWJlbCIpOwotfQotI2VuZGlmCi0KLVN0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxh
YmVsVGl0bGUoKQotewotICAgIHJldHVybiBTdHJpbmcoIlNuYXBzaG90dGVkIFBsdWctSW4iKTsK
LX0KLQotU3RyaW5nIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpCi17Ci0gICAgcmV0
dXJuIFN0cmluZygiQ2xpY2sgdG8gcmVzdGFydCIpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvTUlNRVR5cGVSZWdpc3RyeU5peC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uaXgvTUlNRVR5cGVSZWdpc3RyeU5peC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVkMzgxZmRjZDVmZmEwZWUwMzc1NGEwZTUxYjA2OTVjY2Q4YTIy
YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbml4L01JTUVUeXBlUmVnaXN0cnlOaXguY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggVG9yY2ggTW9iaWxlIEluYy4gIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKLQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgRXh0ZW5zaW9uTWFwIHsKLSAg
ICBjb25zdCBjaGFyKiBleHRlbnNpb247Ci0gICAgY29uc3QgY2hhciogbWltZVR5cGU7Ci19Owot
Ci1zdGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbk1hcFtdID0gewotICAgIHsgImJt
cCIsICJpbWFnZS9ibXAiIH0sCi0gICAgeyAiY3NzIiwgInRleHQvY3NzIiB9LAotICAgIHsgImdp
ZiIsICJpbWFnZS9naWYiIH0sCi0gICAgeyAiaHRtbCIsICJ0ZXh0L2h0bWwiIH0sCi0gICAgeyAi
aHRtIiwgInRleHQvaHRtbCIgfSwKLSAgICB7ICJpY28iLCAiaW1hZ2UveC1pY29uIiB9LAotICAg
IHsgImpwZWciLCAiaW1hZ2UvanBlZyIgfSwKLSAgICB7ICJqcGciLCAiaW1hZ2UvanBlZyIgfSwK
LSAgICB7ICJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiIH0sCi0gICAgeyAibW5nIiwg
InZpZGVvL3gtbW5nIiB9LAotICAgIHsgInBibSIsICJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCIg
fSwKLSAgICB7ICJwZ20iLCAiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiB9LAotICAgIHsgInBk
ZiIsICJhcHBsaWNhdGlvbi9wZGYiIH0sCi0gICAgeyAicG5nIiwgImltYWdlL3BuZyIgfSwKLSAg
ICB7ICJwcG0iLCAiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiIH0sCi0gICAgeyAicnNzIiwgImFw
cGxpY2F0aW9uL3Jzcyt4bWwiIH0sCi0gICAgeyAic3ZnIiwgImltYWdlL3N2Zyt4bWwiIH0sCi0g
ICAgeyAidGV4dCIsICJ0ZXh0L3BsYWluIiB9LAotICAgIHsgInRpZiIsICJpbWFnZS90aWZmIiB9
LAotICAgIHsgInRpZmYiLCAiaW1hZ2UvdGlmZiIgfSwKLSAgICB7ICJ0eHQiLCAidGV4dC9wbGFp
biIgfSwKLSAgICB7ICJ4Ym0iLCAiaW1hZ2UveC14Yml0bWFwIiB9LAotICAgIHsgInhtbCIsICJ0
ZXh0L3htbCIgfSwKLSAgICB7ICJ4cG0iLCAiaW1hZ2UveC14cG0iIH0sCi0gICAgeyAieHNsIiwg
InRleHQveHNsIiB9LAotICAgIHsgInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfSwK
LSAgICB7ICJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIgfSwKLSAgICB7ICJ3bWxjIiwgImFwcGxp
Y2F0aW9uL3ZuZC53YXAud21sYyIgfSwKLSAgICB7IDAsIDAgfQotfTsKLQotU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQot
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBTdHJpbmcgbG93ZXJDYXNlRXh0
ID0gZXh0Lmxvd2VyKCk7Ci0gICAgY29uc3QgRXh0ZW5zaW9uTWFwKiBleHRNYXAgPSBleHRlbnNp
b25NYXA7Ci0gICAgd2hpbGUgKGV4dE1hcC0+ZXh0ZW5zaW9uKSB7Ci0gICAgICAgIGlmIChsb3dl
ckNhc2VFeHQgPT0gZXh0TWFwLT5leHRlbnNpb24pCi0gICAgICAgICAgICByZXR1cm4gZXh0TWFw
LT5taW1lVHlwZTsKLSAgICAgICAgKytleHRNYXA7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCi1ib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1F
VHlwZShjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgv
Tml4S2V5Ym9hcmRVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L05p
eEtleWJvYXJkVXRpbGl0aWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUy
NTE0YzZiZDNiNTdhYmU1YmRjMzY4YTdmMmMyODE0OGZjNDM4Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgv
Tml4S2V5Ym9hcmRVdGlsaXRpZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICogQ29weXJp
Z2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJOaXhLZXlib2FyZFV0aWxpdGllcy5oIgotCi0jaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgotI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCi0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBLZXlNYXA7Ci10eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBpbnQ+IFdpbmRvd3NLZXlNYXA7Ci10eXBlZGVmIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4g
S2V5Q29tbWFuZE1hcDsKLQotc3RhdGljIEtleU1hcCYga2V5TWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEtleU1hcCwga2V5TWFwLCAoKSk7Ci0gICAgcmV0dXJuIGtleU1hcDsKLX0K
LQotc3RhdGljIFdpbmRvd3NLZXlNYXAmIHdpbmRvd3NLZXlNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoV2luZG93c0tleU1hcCwgd2luZG93c0tleU1hcCwgKCkpOwotICAgIHJldHVy
biB3aW5kb3dzS2V5TWFwOwotfQotCi1zdGF0aWMgS2V5Q29tbWFuZE1hcCYga2V5RG93bkNvbW1h
bmRzTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEtleUNvbW1hbmRNYXAsIGtleURv
d25Db21tYW5kc01hcCwgKCkpOwotICAgIHJldHVybiBrZXlEb3duQ29tbWFuZHNNYXA7Ci19Ci0K
LXN0YXRpYyBLZXlDb21tYW5kTWFwJiBrZXlQcmVzc0NvbW1hbmRzTWFwKCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEtleUNvbW1hbmRNYXAsIGtleVByZXNzQ29tbWFuZHNNYXAsICgpKTsK
LSAgICByZXR1cm4ga2V5UHJlc3NDb21tYW5kc01hcDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk
IGFkZENoYXJhY3RlcnNUb0tleU1hcChjb25zdCBjaGFyIGZyb20sIGNvbnN0IGNoYXIgdG8pCi17
Ci0gICAgZm9yIChjaGFyIGMgPSBmcm9tOyBjIDw9IHRvOyBjKyspCi0gICAgICAgIGtleU1hcCgp
LnNldChTdHJpbmcoJmMsIDEpLCBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgYykpOwotfQotCi1z
dGF0aWMgaW5saW5lIHZvaWQgYWRkQ2hhcmFjdGVyc1RvV2luS2V5TWFwKGNvbnN0IGNoYXIgZnJv
bSwgY29uc3QgY2hhciB0bywgY29uc3QgaW50IGJhc2VDb2RlKQotewotICAgIGludCBpID0gMDsK
LSAgICBmb3IgKGNoYXIgYyA9IGZyb207IGMgPD0gdG87IGMrKywgaSsrKQotICAgICAgICB3aW5k
b3dzS2V5TWFwKCkuc2V0KFN0cmluZygmYywgMSksIGJhc2VDb2RlICsgaSk7Ci19Ci0KLXN0YXRp
YyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEFsdEtleSA9IDEgPDwgMTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwg
MjsKLQotc3RydWN0IEtleURvd25FbnRyeSB7Ci0gICAgdW5zaWduZWQgdmlydHVhbEtleTsKLSAg
ICB1bnNpZ25lZCBtb2RpZmllcnM7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLX07Ci0KLXN0cnVj
dCBLZXlQcmVzc0VudHJ5IHsKLSAgICB1bnNpZ25lZCBjaGFyQ29kZTsKLSAgICB1bnNpZ25lZCBt
b2RpZmllcnM7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBLZXlE
b3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKLSAgICB7IFZLX0xFRlQsICAgMCwgICAgICAg
ICAgICAgICAgICAiTW92ZUxlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICB7IFZLX0xFRlQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0xFRlQsICAgQ3RybEtl
eSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICB7IFZLX0xFRlQsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRMZWZ0
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JJR0hULCAgMCwg
ICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVJpZ2h0
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JJR0hULCAg
Q3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRSaWdodCIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICB7IFZLX1JJR0hULCAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdv
cmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1VQLCAg
ICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICB7IFZLX1VQLCAgICAgU2hpZnRLZXksICAgICAgICAgICAiTW92
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1BS
SU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIg
ICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAi
TW92ZURvd24iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZL
X0RPV04sICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX05FWFQsICAgU2hpZnRLZXksICAgICAgICAg
ICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwKLSAgICB7
IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAg
ICAgICAiTW92ZVBhZ2VEb3duIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICB7IFZLX0hPTUUsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAg
ICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwK
LSAgICB7IFZLX0hPTUUsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudCIgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0hPTUUsICAgQ3RybEtleSB8
IFNoaWZ0S2V5LCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLQotICAgIHsgVktfRU5ELCAgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxp
bmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRU5ELCAgICBTaGlm
dEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAg
ICAgICB9LAotICAgIHsgVktfRU5ELCAgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9FbmRP
ZkRvY3VtZW50IiAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRU5ELCAgICBD
dHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICB9LAotCi0gICAgeyBWS19CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0
ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19CQUNL
LCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgeyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRl
bGV0ZUZvcndhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19C
QUNLLCAgIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCIgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAg
IkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0KLSAgICB7
ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAgICAg
ICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQot
ICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAgICAgICJDYW5jZWwiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfT0VNX1BFUklPRCwgQ3RybEtl
eSwgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfVEFCLCAgICBTaGlmdEtl
eSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgIHsgVktfUkVUVVJOLCAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUkVUVVJOLCBDdHJs
S2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgIHsgVktfUkVUVVJOLCBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXds
aW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUkVUVVJOLCBB
bHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAotfTsKLQotc3RhdGljIGNvbnN0IEtleVByZXNzRW50cnkga2V5UHJlc3NFbnRy
aWVzW10gPSB7Ci0gICAgeyAnXHQnLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHQnLCAgIFNoaWZ0
S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgeyAnXHInLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHInLCAgIEN0cmxLZXks
ICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgeyAnXHInLCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHInLCAgIEFsdEtleSB8IFNo
aWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
Ci19OwotCi1zdGF0aWMgdm9pZCBjcmVhdGVLZXlEb3duQ29tbWFuZE1hcCgpCi17Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtleURvd25FbnRyaWVzKTsgKytp
KQotICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAoKS5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9k
aWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJp
ZXNbaV0ubmFtZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNyZWF0ZUtleVByZXNzQ29tbWFuZE1hcCgp
Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtleVByZXNz
RW50cmllcyk7ICsraSkKLSAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcCgpLnNldChrZXlQcmVz
c0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2Rl
LCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7Ci19Ci0KLWNvbnN0IGNoYXIqIGdldEtleURvd25D
b21tYW5kTmFtZShjb25zdCBLZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLSAgICB1bnNpZ25lZCBt
b2RpZmllcnMgPSAwOwotICAgIGlmIChldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgbW9kaWZp
ZXJzIHw9IFNoaWZ0S2V5OwotICAgIGlmIChldmVudC0+YWx0S2V5KCkpCi0gICAgICAgIG1vZGlm
aWVycyB8PSBBbHRLZXk7Ci0gICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgIG1vZGlm
aWVycyB8PSBDdHJsS2V5OwotCi0gICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2
ZW50LT5rZXlDb2RlKCk7Ci0gICAgaWYgKCFtYXBLZXkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgaWYgKGtleURvd25Db21tYW5kc01hcCgpLmlzRW1wdHkoKSkKLSAgICAgICAgY3JlYXRlS2V5
RG93bkNvbW1hbmRNYXAoKTsKLQotICAgIHJldHVybiBrZXlEb3duQ29tbWFuZHNNYXAoKS5nZXQo
bWFwS2V5KTsKLX0KLQotY29uc3QgY2hhciogZ2V0S2V5UHJlc3NDb21tYW5kTmFtZShjb25zdCBL
ZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLSAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwotICAg
IGlmIChldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5Owot
ICAgIGlmIChldmVudC0+YWx0S2V5KCkpCi0gICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7Ci0g
ICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5Owot
Ci0gICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5jaGFyQ29kZSgpOwot
ICAgIGlmICghbWFwS2V5KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChrZXlQcmVzc0Nv
bW1hbmRzTWFwKCkuaXNFbXB0eSgpKQotICAgICAgICBjcmVhdGVLZXlQcmVzc0NvbW1hbmRNYXAo
KTsKLQotICAgIHJldHVybiBrZXlQcmVzc0NvbW1hbmRzTWFwKCkuZ2V0KG1hcEtleSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25peC9OaXhLZXlib2FyZFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bml4L05peEtleWJvYXJkVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVlMmNhZTg2MDNiMDMzZWMzNDFiZjcxNWU5ZDE4ODhjYjI0NjQ5MTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bml4L05peEtleWJvYXJkVXRpbGl0aWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5peEtleWJv
YXJkVXRpbGl0aWVzX2gKLSNkZWZpbmUgTml4S2V5Ym9hcmRVdGlsaXRpZXNfaAotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEtleWJvYXJkRXZlbnQ7Ci0KLWNvbnN0IGNoYXIqIGdldEtl
eURvd25Db21tYW5kTmFtZShjb25zdCBLZXlib2FyZEV2ZW50Kik7Ci1jb25zdCBjaGFyKiBnZXRL
ZXlQcmVzc0NvbW1hbmROYW1lKGNvbnN0IEtleWJvYXJkRXZlbnQqKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTml4S2V5Ym9hcmRVdGlsaXRpZXNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXguY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhOWY4Njg0MDU0OGRmNDEyODUzMGRiZDU5MWQxZDQ3OGE0YTc3YzQ5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEz
MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgotICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29t
PgotICogIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25v
bG9naWEKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcwotICogIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Q
YXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFj
ZU9wdGlvbikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLWJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRQbGFpblRleHQmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLVBhc3NP
d25QdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKLXsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhc3RlYm9hcmQpOwotfQotCi1QYXNzT3duUHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUoKQotewotICAgIHJldHVybiBjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKTsKLX0KLQotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi1QYXNz
T3duUHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKLXsK
LSAgICByZXR1cm4gY3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7Ci19Ci0KLVBhc3NPd25QdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEm
KQotewotICAgIHJldHVybiBjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKLX0KLSNlbmRpZgotCi1i
b29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmcoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKLX0KLQotYm9vbCBQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1WZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlcygpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKLX0KLQotVmVj
dG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKLX0KLQotI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi12b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2VSZWYs
IGNvbnN0IEludFBvaW50JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotI2VuZGlmCi0K
LXZvaWQgUGFzdGVib2FyZDo6d3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQmKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25peC9QbGF0Zm9ybUtleWJvYXJkRXZlbnROaXguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbml4L1BsYXRmb3JtS2V5Ym9hcmRFdmVudE5peC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJkMGVmNmMzNDBjOTgwM2FmZWFmYWZmMDE3N2E2NzIzYTMxYWE4
ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbml4L1BsYXRmb3JtS2V5Ym9hcmRFdmVudE5peC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4
IERpZWdvIEhpZGFsZ28gQy4gR29uemFsZXoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUg
dHlwZSwgYm9vbCkKLXsKLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOwotICAgIG1fdHlw
ZSA9IHR5cGU7Ci0KLSAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7
Ci0gICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwotICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0g
U3RyaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9rZXlJZGVudGlmaWVyID0gU3RyaW5n
KCk7Ci0gICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gMDsKLSAgICB9Ci19Ci0KLWJv
b2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtleSwgYm9v
bCYgY3RybEtleSwgYm9vbCYgYWx0S2V5LCBib29sJiBtZXRhS2V5KQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgc2hpZnRLZXkgPSBmYWxzZTsKLSAgICBjdHJsS2V5ID0gZmFsc2U7Ci0g
ICAgYWx0S2V5ID0gZmFsc2U7Ci0gICAgbWV0YUtleSA9IGZhbHNlOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUGxhdGZvcm1TY3JlZW5OaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1BsYXRmb3JtU2NyZWVuTml4LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyOWU1MzMwZDUzODVkOTBlNzllZmE0MzVhNjFiNDQw
MTJlZTE4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUGxhdGZvcm1TY3JlZW5OaXguY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgotCi0jaW5jbHVk
ZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCi0jaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgotI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1pbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQq
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBzY3Jl
ZW5WZXJ0aWNhbERQSShXaWRnZXQqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLWludCBzY3JlZW5EZXB0aChXaWRnZXQqKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChX
aWRnZXQqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJv
b2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lk
Z2V0KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaHJvbWUqPih3aWRnZXQtPnJvb3QoKS0+
aG9zdFdpbmRvdygpKS0+Y2xpZW50KCkuc2NyZWVuUmVjdCgpOwotfQotCi1GbG9hdFJlY3Qgc2Ny
ZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7Ci19Ci0KLXZvaWQgc2NyZWVuQ29sb3JQ
cm9maWxlKENvbG9yUHJvZmlsZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5peC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkYjM3YjliYWVlZjFiZWZhNzhkODE0MWRlNjM1ODM0
OTE3ODNhNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZU5peC5oIgotCi0jaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5j
bHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNp
bmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgInB1YmxpYy9DYW52YXMu
aCIKLSNpbmNsdWRlICJwdWJsaWMvUGxhdGZvcm0uaCIKLSNpbmNsdWRlICJwdWJsaWMvUmVjdC5o
IgotI2luY2x1ZGUgInB1YmxpYy9UaGVtZUVuZ2luZS5oIgotI2lmIEVOQUJMRShQUk9HUkVTU19F
TEVNRU5UKQotI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCi0jZW5kaWYKLSNpZiBFTkFCTEUo
TUVURVJfRUxFTUVOVCkKLSNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAi
UmVuZGVyTWV0ZXIuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyB2
b2lkIHNldFNpemVJZkF1dG8oUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiBzaXpl
KQotewotICAgIGlmIChzdHlsZS0+d2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQotICAgICAg
ICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICBpZiAo
c3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0
aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwotfQotCi1zdGF0aWMgTml4OjpUaGVtZUVuZ2luZSog
dGhlbWVFbmdpbmUoKQotewotICAgIHJldHVybiBOaXg6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCk7Ci19Ci0KLXN0YXRpYyBOaXg6OkNhbnZhcyogd2ViQ2FudmFzKGNvbnN0IFBh
aW50SW5mbyYgaW5mbykKLXsKLSAgICByZXR1cm4gaW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKTsKLX0KLQotc3RhdGljIEludFNpemUgdG9JbnRTaXplKGNvbnN0IE5peDo6U2l6
ZSYgc2l6ZSkKLXsKLSAgICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCk7
Ci19Ci0KLXN0YXRpYyBOaXg6OlJlY3QgdG9OaXhSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17
Ci0gICAgcmV0dXJuIE5peDo6UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1l
Ojp0aGVtZUZvclBhZ2UoUGFnZSopCi17Ci0gICAgcmV0dXJuIFJlbmRlclRoZW1lTml4OjpjcmVh
dGUoKTsKLX0KLQotUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVOaXg6OmNyZWF0
ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZU5peCk7Ci19Ci0KLVJl
bmRlclRoZW1lTml4OjpSZW5kZXJUaGVtZU5peCgpCi0gICAgOiBSZW5kZXJUaGVtZSgpCi17Ci19
Ci0KLVJlbmRlclRoZW1lTml4Ojp+UmVuZGVyVGhlbWVOaXgoKQotewotCi19Ci0KLVN0cmluZyBS
ZW5kZXJUaGVtZU5peDo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpCi17Ci0gICAgcmV0dXJuIHRo
ZW1lRW5naW5lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKLX0KLQotU3RyaW5nIFJlbmRl
clRoZW1lTml4OjpleHRyYVF1aXJrc1N0eWxlU2hlZXQoKQotewotICAgIHJldHVybiB0aGVtZUVu
Z2luZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKLX0KLQotU3RyaW5nIFJlbmRlclRoZW1l
Tml4OjpleHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkKLXsKLSAgICByZXR1cm4gdGhlbWVFbmdpbmUo
KS0+ZXh0cmFQbHVnSW5zU3R5bGVTaGVldCgpOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZU5peDo6
cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJl
dHVybiB0aGVtZUVuZ2luZSgpLT5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKS5hcmdi
MzIoKTsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5p
bmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLmFyZ2IzMigpOwotfQotCi1Db2xvciBS
ZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdAotewotICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKS5hcmdiMzIoKTsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3Jt
SW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiB0
aGVtZUVuZ2luZSgpLT5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpLmFyZ2IzMigp
OwotfQotCi1Db2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLmFyZ2IzMigpOwotfQotCi1D
b2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5pbmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKS5hcmdiMzIoKTsKLX0KLQotQ29sb3Ig
UmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRoZW1lRW5naW5lKCktPmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKS5hcmdiMzIoKTsKLX0KLQotQ29sb3IgUmVuZGVyVGhl
bWVOaXg6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+aW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkuYXJnYjMyKCk7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lTml4
OjpwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHRoZW1lRW5naW5lKCktPmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpLmFy
Z2IzMigpOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1JbmFjdGl2ZVRleHRT
ZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRoZW1lRW5naW5lKCkt
PmluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkuYXJnYjMyKCk7Ci19Ci0KLUNvbG9y
IFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gdGhlbWVFbmdpbmUoKS0+Zm9jdXNSaW5nQ29sb3IoKS5hcmdiMzIoKTsKLX0KLQotI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi1Db2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1UYXBI
aWdobGlnaHRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRoZW1lRW5naW5lKCktPnRhcEhp
Z2hsaWdodENvbG9yKCkuYXJnYjMyKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBSZW5kZXJUaGVtZU5p
eDo6c3lzdGVtRm9udChXZWJDb3JlOjpDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25z
dAotewotfQotCi1zdGF0aWMgTml4OjpUaGVtZUVuZ2luZTo6U3RhdGUgZ2V0V2ViVGhlbWVTdGF0
ZShjb25zdCBSZW5kZXJUaGVtZSogdGhlbWUsIGNvbnN0IFJlbmRlck9iamVjdCogbykKLXsKLSAg
ICBpZiAoIXRoZW1lLT5pc0VuYWJsZWQobykpCi0gICAgICAgIHJldHVybiBOaXg6OlRoZW1lRW5n
aW5lOjpTdGF0ZURpc2FibGVkOwotICAgIGlmICh0aGVtZS0+aXNQcmVzc2VkKG8pKQotICAgICAg
ICByZXR1cm4gTml4OjpUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgIGlmICh0aGVtZS0+
aXNIb3ZlcmVkKG8pKQotICAgICAgICByZXR1cm4gTml4OjpUaGVtZUVuZ2luZTo6U3RhdGVIb3Zl
cjsKLQotICAgIHJldHVybiBOaXg6OlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKLX0KLQotYm9v
bCBSZW5kZXJUaGVtZU5peDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgTml4OjpUaGVtZUVuZ2luZTo6
QnV0dG9uRXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgZXh0cmFQYXJhbXMuaXNEZWZhdWx0
ID0gaXNEZWZhdWx0KG8pOwotICAgIGV4dHJhUGFyYW1zLmhhc0JvcmRlciA9IHRydWU7Ci0gICAg
dGhlbWVFbmdpbmUoKS0+cGFpbnRCdXR0b24od2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRl
KHRoaXMsIG8pLCB0b05peFJlY3QocmVjdCksIGV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIC8v
IFdlYlRoZW1lRW5naW5lIGRvZXMgbm90IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIgYW5k
IGJhY2tncm91bmQgaW1hZ2UKLSAgICAvLyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBib3Jk
ZXIgYW5kIGJhY2tncm91bmQuCi0gICAgaWYgKG8tPnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkg
fHwgby0+c3R5bGUoKS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICB0aGVtZUVuZ2luZSgpLT5wYWludFRleHRGaWVsZCh3ZWJDYW52YXMoaSksIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksIHRvTml4UmVjdChyZWN0KSk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIFJlbmRlclRoZW1lTml4OjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIHJldHVy
biBwYWludFRleHRGaWVsZChvLCBpLCByZWN0KTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZU5peDo6
cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKLXsKLSAgICBOaXg6OlRoZW1lRW5naW5lOjpCdXR0b25FeHRyYVBhcmFt
cyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy5jaGVja2VkID0gaXNDaGVja2VkKG8pOwot
ICAgIGV4dHJhUGFyYW1zLmluZGV0ZXJtaW5hdGUgPSBpc0luZGV0ZXJtaW5hdGUobyk7Ci0KLSAg
ICB0aGVtZUVuZ2luZSgpLT5wYWludENoZWNrYm94KHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVT
dGF0ZSh0aGlzLCBvKSwgdG9OaXhSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIFJlbmRlclRoZW1lTml4OjpzZXRDaGVja2JveFNpemUoUmVuZGVy
U3R5bGUqIHN0eWxlKSBjb25zdAotewotICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFy
ZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCFz
dHlsZS0+d2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNB
dXRvKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IHRvSW50U2l6ZSh0
aGVtZUVuZ2luZSgpLT5nZXRDaGVja2JveFNpemUoKSk7Ci0gICAgc2V0U2l6ZUlmQXV0byhzdHls
ZSwgc2l6ZSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50UmFkaW8oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAg
Tml4OjpUaGVtZUVuZ2luZTo6QnV0dG9uRXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgZXh0
cmFQYXJhbXMuY2hlY2tlZCA9IGlzQ2hlY2tlZChvKTsKLSAgICBleHRyYVBhcmFtcy5pbmRldGVy
bWluYXRlID0gaXNJbmRldGVybWluYXRlKG8pOwotCi0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRS
YWRpbyh3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHRvTml4UmVjdChy
ZWN0KSwgZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJU
aGVtZU5peDo6c2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKLXsKLSAgICAv
LyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2
ZSBub3RoaW5nIHRvIGRvLgotICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1
dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBJbnRTaXplIHNpemUgPSB0b0ludFNpemUodGhlbWVFbmdpbmUoKS0+Z2V0UmFkaW9TaXplKCkp
OwotICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwotfQotCi1ib29sIFJlbmRlclRoZW1l
Tml4OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIHRoZW1lRW5naW5lKCktPnBhaW50TWVudUxpc3Qo
d2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCB0b05peFJlY3QocmVjdCkp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZU5peDo6YWRqdXN0TWVu
dUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50Kikg
Y29uc3QKLXsKLSAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKLSAgICBzdHlsZS0+c2V0V2hpdGVT
cGFjZShQUkUpOwotCi0gICAgaW50IHBhZGRpbmdUb3AgPSAwOwotICAgIGludCBwYWRkaW5nTGVm
dCA9IDA7Ci0gICAgaW50IHBhZGRpbmdCb3R0b20gPSAwOwotICAgIGludCBwYWRkaW5nUmlnaHQg
PSAwOwotICAgIHRoZW1lRW5naW5lKCktPmdldE1lbnVMaXN0UGFkZGluZyhwYWRkaW5nVG9wLCBw
YWRkaW5nTGVmdCwgcGFkZGluZ0JvdHRvbSwgcGFkZGluZ1JpZ2h0KTsKLSAgICBzdHlsZS0+c2V0
UGFkZGluZ1RvcChMZW5ndGgocGFkZGluZ1RvcCwgRml4ZWQpKTsKLSAgICBzdHlsZS0+c2V0UGFk
ZGluZ1JpZ2h0KExlbmd0aChwYWRkaW5nUmlnaHQsIEZpeGVkKSk7Ci0gICAgc3R5bGUtPnNldFBh
ZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmdCb3R0b20sIEZpeGVkKSk7Ci0gICAgc3R5bGUtPnNl
dFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nTGVmdCwgRml4ZWQpKTsKLX0KLQotI2lmIEVOQUJM
RShQUk9HUkVTU19FTEVNRU5UKQotdm9pZCBSZW5kZXJUaGVtZU5peDo6YWRqdXN0UHJvZ3Jlc3NC
YXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QKLXsKLSAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwotfQotCi1ib29sIFJlbmRl
clRoZW1lTml4OjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFJlbmRlclByb2dyZXNzKiByZW5k
ZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7Ci0gICAgTml4OjpUaGVtZUVuZ2luZTo6
UHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy5pc0Rl
dGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKTsKLSAgICBleHRyYVBh
cmFtcy5wb3NpdGlvbiA9IHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigpOwotICAgIGV4dHJhUGFy
YW1zLmFuaW1hdGlvblByb2dyZXNzID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblByb2dyZXNz
KCk7Ci0gICAgZXh0cmFQYXJhbXMuYW5pbWF0aW9uU3RhcnRUaW1lID0gcmVuZGVyUHJvZ3Jlc3Mt
PmFuaW1hdGlvblN0YXJ0VGltZSgpOwotICAgIHRoZW1lRW5naW5lKCktPnBhaW50UHJvZ3Jlc3NC
YXIod2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCB0b05peFJlY3QocmVj
dCksIGV4dHJhUGFyYW1zKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZG91YmxlIFJlbmRl
clRoZW1lTml4OjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclBy
b2dyZXNzKikgY29uc3QKLXsKLSAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+Z2V0QW5pbWF0aW9u
UmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcigpOwotfQotCi1kb3VibGUgUmVuZGVyVGhlbWVO
aXg6OmFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25z
dAotewotICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5nZXRBbmltYXRpb25EdXJhdGlvbkZvclBy
b2dyZXNzQmFyKCk7Ci19Ci0jZW5kaWYKLQotYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQotewotICAgIHRoZW1lRW5naW5lKCktPnBhaW50U2xpZGVyVHJhY2so
d2ViQ2FudmFzKGluZm8pLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG9iamVjdCksIHRvTml4UmVj
dChyZWN0KSk7Ci0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgcGFpbnRTbGlkZXJU
aWNrcyhvYmplY3QsIGluZm8sIHJlY3QpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIFJlbmRlclRoZW1lTml4OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAotewotICAgIHN0eWxlLT5z
ZXRCb3hTaGFkb3cobnVsbHB0cik7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50U2xp
ZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICB0aGVtZUVuZ2luZSgpLT5wYWludFNsaWRlclRodW1i
KHdlYkNhbnZhcyhpbmZvKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvYmplY3QpLCB0b05peFJl
Y3QocmVjdCkpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJlbmRlclRoZW1lTml4
OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBSZW5kZXJU
aGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVu
dCk7Ci0gICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKLX0KLQotY29uc3QgaW50IFNs
aWRlclRodW1iV2lkdGggPSAxMDsKLWNvbnN0IGludCBTbGlkZXJUaHVtYkhlaWdodCA9IDIwOwot
Ci12b2lkIFJlbmRlclRoZW1lTml4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3QKLXsKLSAgICBDb250cm9sUGFydCBwYXJ0ID0gc3R5bGUt
PmFwcGVhcmFuY2UoKTsKLSAgICBpZiAocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkg
ewotICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKFNsaWRlclRodW1iV2lkdGgsIEZpeGVk
KSk7Ci0gICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKFNsaWRlclRodW1iSGVpZ2h0LCBG
aXhlZCkpOwotICAgIH0gZWxzZSBpZiAocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0
KSB7Ci0gICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoU2xpZGVyVGh1bWJXaWR0aCwgRml4
ZWQpKTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoU2xpZGVyVGh1bWJIZWlnaHQs
IEZpeGVkKSk7Ci0gICAgfQotfQotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi1JbnRT
aXplIFJlbmRlclRoZW1lTml4OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IEludFNpemUoMSwgNik7Ci19Ci0KLWludCBSZW5kZXJUaGVtZU5peDo6c2xpZGVyVGlja09mZnNl
dEZyb21UcmFja0NlbnRlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIC0xMjsKLX0KLQotTGF5b3V0
VW5pdCBSZW5kZXJUaGVtZU5peDo6c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gNTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZU5peDo6c3VwcG9ydHNEYXRh
TGlzdFVJKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkgY29uc3QKLXsKLSAgICByZXR1cm4gdHlw
ZSA9PSBJbnB1dFR5cGVOYW1lczo6cmFuZ2UoKTsKLX0KLSNlbmRpZgotCi12b2lkIFJlbmRlclRo
ZW1lTml4OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKLXsKLSAgICBzdHlsZS0+cmVzZXRCb3JkZXIo
KTsKLSAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUpOwotCi0gICAgaW50IHBhZGRpbmdUb3Ag
PSAwOwotICAgIGludCBwYWRkaW5nTGVmdCA9IDA7Ci0gICAgaW50IHBhZGRpbmdCb3R0b20gPSAw
OwotICAgIGludCBwYWRkaW5nUmlnaHQgPSAwOwotICAgIHRoZW1lRW5naW5lKCktPmdldElubmVy
U3BpbkJ1dHRvblBhZGRpbmcocGFkZGluZ1RvcCwgcGFkZGluZ0xlZnQsIHBhZGRpbmdCb3R0b20s
IHBhZGRpbmdSaWdodCk7Ci0gICAgc3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKHBhZGRpbmdU
b3AsIEZpeGVkKSk7Ci0gICAgc3R5bGUtPnNldFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZ1Jp
Z2h0LCBGaXhlZCkpOwotICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aChwYWRkaW5n
Qm90dG9tLCBGaXhlZCkpOwotICAgIHN0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgocGFkZGlu
Z0xlZnQsIEZpeGVkKSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50SW5uZXJTcGlu
QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0
JiByZWN0KQotewotICAgIE5peDo6VGhlbWVFbmdpbmU6OklubmVyU3BpbkJ1dHRvbkV4dHJhUGFy
YW1zIGV4dHJhUGFyYW1zOwotICAgIGV4dHJhUGFyYW1zLnNwaW5VcCA9IGlzU3BpblVwQnV0dG9u
UGFydFByZXNzZWQobyk7Ci0gICAgZXh0cmFQYXJhbXMucmVhZE9ubHkgPSBpc1JlYWRPbmx5Q29u
dHJvbChvKTsKLQotICAgIHRoZW1lRW5naW5lKCktPnBhaW50SW5uZXJTcGluQnV0dG9uKHdlYkNh
bnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgdG9OaXhSZWN0KHJlY3QpLCBleHRy
YVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jaWYgRU5BQkxFKE1FVEVSX0VMRU1F
TlQpCi12b2lkIFJlbmRlclRoZW1lTml4OjphZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAotewotICAgIHN0eWxlLT5zZXRC
b3hTaGFkb3cobnVsbHB0cik7Ci19Ci0KLUludFNpemUgUmVuZGVyVGhlbWVOaXg6Om1ldGVyU2l6
ZUZvckJvdW5kcyhjb25zdCBSZW5kZXJNZXRlciosIGNvbnN0IEludFJlY3QmIGJvdW5kcykgY29u
c3QKLXsKLSAgICByZXR1cm4gYm91bmRzLnNpemUoKTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZU5p
eDo6c3VwcG9ydHNNZXRlcihDb250cm9sUGFydCBwYXJ0KSBjb25zdAotewotICAgIHN3aXRjaCAo
cGFydCkgewotICAgIGNhc2UgUmVsZXZhbmN5TGV2ZWxJbmRpY2F0b3JQYXJ0OgotICAgIGNhc2Ug
RGlzY3JldGVDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydDoKLSAgICBjYXNlIFJhdGluZ0xldmVs
SW5kaWNhdG9yUGFydDoKLSAgICBjYXNlIE1ldGVyUGFydDoKLSAgICBjYXNlIENvbnRpbnVvdXND
YXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYm9vbCBSZW5kZXJUaGVt
ZU5peDo6cGFpbnRNZXRlcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzTWV0ZXIoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJNZXRlciogcmVuZGVyTWV0ZXIgPSB0b1JlbmRlck1ldGVy
KG8pOwotICAgIEhUTUxNZXRlckVsZW1lbnQqIGUgPSByZW5kZXJNZXRlci0+bWV0ZXJFbGVtZW50
KCk7Ci0gICAgTml4OjpUaGVtZUVuZ2luZTo6TWV0ZXJFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
LSAgICBleHRyYVBhcmFtcy5taW4gPSBlLT5taW4oKTsKLSAgICBleHRyYVBhcmFtcy5tYXggPSBl
LT5tYXgoKTsKLSAgICBleHRyYVBhcmFtcy52YWx1ZSA9IGUtPnZhbHVlKCk7Ci0gICAgZXh0cmFQ
YXJhbXMubG93ID0gZS0+bG93KCk7Ci0gICAgZXh0cmFQYXJhbXMuaGlnaCA9IGUtPmhpZ2goKTsK
LSAgICBleHRyYVBhcmFtcy5vcHRpbXVtID0gZS0+b3B0aW11bSgpOwotCi0gICAgdGhlbWVFbmdp
bmUoKS0+cGFpbnRNZXRlcih3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyks
IHRvTml4UmVjdChyZWN0KSwgZXh0cmFQYXJhbXMpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoVklERU8pCi1TdHJpbmcgUmVuZGVyVGhlbWVOaXg6OmV4dHJh
TWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQotewotICAgIHJldHVybiBTdHJpbmcobWVkaWFDb250
cm9sc05peFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzTml4VXNlckFn
ZW50U3R5bGVTaGVldCkpOwotfQotCi1ib29sIFJlbmRlclRoZW1lTml4OjpwYWludE1lZGlhUGxh
eUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKLXsKLSAgICBhdXRvIHN0YXRlID0gdG9IVE1MTWVkaWFFbGVtZW50KG8tPm5vZGUo
KS0+c2hhZG93SG9zdCgpKS0+Y2FuUGxheSgpID8gTml4OjpUaGVtZUVuZ2luZTo6U3RhdGVQYXVz
ZWQgOiBOaXg6OlRoZW1lRW5naW5lOjpTdGF0ZVBsYXlpbmc7Ci0gICAgdGhlbWVFbmdpbmUoKS0+
cGFpbnRNZWRpYVBsYXlCdXR0b24od2ViQ2FudmFzKGkpLCBzdGF0ZSwgdG9OaXhSZWN0KHJlY3Qp
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWVk
aWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQotewotICAgIGF1dG8gc3RhdGUgPSB0b0hUTUxNZWRpYUVsZW1lbnQoby0+
bm9kZSgpLT5zaGFkb3dIb3N0KCkpLT5tdXRlZCgpID8gTml4OjpUaGVtZUVuZ2luZTo6U3RhdGVN
dXRlZCA6IE5peDo6VGhlbWVFbmdpbmU6OlN0YXRlTm90TXV0ZWQ7Ci0gICAgdGhlbWVFbmdpbmUo
KS0+cGFpbnRNZWRpYU11dGVCdXR0b24od2ViQ2FudmFzKGkpLCBzdGF0ZSwgdG9OaXhSZWN0KHJl
Y3QpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50
TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRNZWRpYVNlZWtC
YWNrQnV0dG9uKHdlYkNhbnZhcyhpKSwgdG9OaXhSZWN0KHJlY3QpKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Ci17Ci0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKHdlYkNh
bnZhcyhpKSwgdG9OaXhSZWN0KHJlY3QpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
UmVuZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpCi17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lTml4OjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lTml4OjpwYWludE1l
ZGlhUmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKLXsKLSAgICB0aGVtZUVuZ2luZSgpLT5wYWludE1lZGlhUmV3aW5kQnV0
dG9uKHdlYkNhbnZhcyhpKSwgdG9OaXhSZWN0KHJlY3QpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5peC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRhNmRmZGE0YjgyMzIwMTAwMDlhZDg4ZTUwYjJmMTc1MTQxMzYy
YzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJl
bmRlclRoZW1lTml4X2gKLSNkZWZpbmUgUmVuZGVyVGhlbWVOaXhfaAotCi0jaW5jbHVkZSAiUmVu
ZGVyVGhlbWUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZW5kZXJUaGVtZU5p
eCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwotCi0gICAgdmlydHVhbCB+UmVuZGVyVGhlbWVOaXgoKTsK
LQotICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChXZWJDb3JlOjpDU1NWYWx1ZUlELCBGb250RGVzY3Jp
cHRpb24mKSBjb25zdCBvdmVycmlkZTsKLQotI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQot
ICAgIC8vIFJldHVybnMgdGhlIHJlcGVhdCBpbnRlcnZhbCBvZiB0aGUgYW5pbWF0aW9uIGZvciB0
aGUgcHJvZ3Jlc3MgYmFyLgotICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVy
dmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdCBvdmVycmlkZTsKLSAgICAv
LyBSZXR1cm5zIHRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3Mg
YmFyLgotICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIo
UmVuZGVyUHJvZ3Jlc3MqKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1F
VEVSX0VMRU1FTlQpCi0gICAgdmlydHVhbCBJbnRTaXplIG1ldGVyU2l6ZUZvckJvdW5kcyhjb25z
dCBSZW5kZXJNZXRlciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNNZXRlcihDb250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5k
aWYKLQotcHJvdGVjdGVkOgotICAgIC8vIFRoZSBwbGF0Zm9ybSBzZWxlY3Rpb24gY29sb3IuCi0g
ICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3Ig
cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVM
aXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOwotCi0gICAgLy8gSGlnaGxpZ2h0aW5nIGNvbG9ycyBmb3IgVGV4dE1h
dGNoZXMuCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGln
aHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdo
bGlnaHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2ti
b3goUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqKSBjb25z
dCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVM
aXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gcGFpbnRNZW51
TGlzdChyZW5kZXJlciwgcGFpbnRJbmZvLCByZWN0KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVy
U3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7Ci0KLSNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jl
c3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0TWV0ZXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWV0ZXIoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoVklERU8pCi0gICAgdmlydHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNv
bnRyb2xzU3R5bGVTaGVldCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB1c2VzVmVydGlj
YWxWb2x1bWVTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCB1c2VzTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheSgpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1
dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVm9sdW1l
U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUmV3aW5kQnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
LSNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBwYWludFNs
aWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0IG92ZXJyaWRlOwotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAg
dmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBzbGlkZXJUaWNrU25hcHBpbmdUaHJlc2hvbGQoKSBj
b25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFMaXN0VUkoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBSZW5kZXJUaGVtZU5peCgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUmVuZGVyVGhlbWVOaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbml4L1Njcm9sbGJhclRoZW1lTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25p
eC9TY3JvbGxiYXJUaGVtZU5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQw
YzAxZmVmYTM5NjhhYjc3YjkzZDA2YzNiMjZmZDA4NWYwNTg3NTUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4
L1Njcm9sbGJhclRoZW1lTml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU2Nyb2xsYmFyVGhlbWVOaXguaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TY3JvbGxi
YXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKLXsKLSAgICBzdGF0aWMgU2Ny
b2xsYmFyVGhlbWVOaXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZTsKLX0KLQotU2Nyb2xsYmFy
VGhlbWVOaXg6On5TY3JvbGxiYXJUaGVtZU5peCgpCi17Ci19Ci0KLWludCBTY3JvbGxiYXJUaGVt
ZU5peDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQotewotICAgIHJl
dHVybiAwOwotfQotCi12b2lkIFNjcm9sbGJhclRoZW1lTml4OjpyZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCopCi17Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVOaXg6OnVu
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQotewotfQotCi19Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9TY3JvbGxiYXJUaGVtZU5peC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Njcm9sbGJhclRoZW1lTml4LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZjU0N2RjM2Q5MWQ4NzE0YTUwNTYzNDU2MzhlNzE4
MzhjOTYwYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Njcm9sbGJhclRoZW1lTml4LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBTY3JvbGxiYXJUaGVtZU5peF9oCi0jZGVmaW5lIFNjcm9sbGJhclRoZW1lTml4X2gKLQot
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgU2Nyb2xsYmFyVGhlbWVOaXggOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewotcHVibGljOgot
ICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lTml4KCk7Ci0KLSAgICB2aXJ0dWFsIGludCBzY3Jv
bGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKSBv
dmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJU
aGVtZUNsaWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7Ci19OwotCi19Ci0jZW5kaWYgLy8g
U2Nyb2xsYmFyVGhlbWVOaXhfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uaXgvU2hhcmVkVGltZXJOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1No
YXJlZFRpbWVyTml4LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYxYzBkZDJk
MDc3ZGIxNjdiN2UwNzI0ODYzNTA1ZGJlMTg0YjI4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvU2hhcmVk
VGltZXJOaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29t
Ci0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKLQotI2RlZmluZSBHREtfUFJJT1JJ
VFlfUkVEUkFXIChHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwKQotI2luY2x1ZGUgPGdsaWIuaD4K
LSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBndWludCBzaGFyZWRUaW1lcjsKLXN0
YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotCi12b2lkIHNldFNoYXJl
ZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZmlyZWRGdW5jdGlvbikoKSkKLXsKLSAgICBzaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24gPSBmaXJlZEZ1bmN0aW9uOwotfQotCi1zdGF0aWMgZ2Jvb2xl
YW4gdGltZW91dENhbGxiYWNrKGdwb2ludGVyKQotewotICAgIGlmIChzaGFyZWRUaW1lckZpcmVk
RnVuY3Rpb24pCi0gICAgICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOwotICAgIHJldHVy
biBGQUxTRTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICBn
dWludCBpbnRlcnZhbEluTVMgPSBzdGF0aWNfY2FzdDxndWludD4oaW50ZXJ2YWwgKiAxMDAwKTsK
LQotICAgIHN0b3BTaGFyZWRUaW1lcigpOwotICAgIHNoYXJlZFRpbWVyID0gZ190aW1lb3V0X2Fk
ZF9mdWxsKEdES19QUklPUklUWV9SRURSQVcsIGludGVydmFsSW5NUywgdGltZW91dENhbGxiYWNr
LCAwLCAwKTsKLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGlmICghc2hhcmVk
VGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdib29sZWFuIHJlbW92ZWRTb3VyY2UgPSBn
X3NvdXJjZV9yZW1vdmUoc2hhcmVkVGltZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFNv
dXJjZSwgcmVtb3ZlZFNvdXJjZSk7Ci0gICAgc2hhcmVkVGltZXIgPSAwOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25p
eC9Tb3VuZE5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvU291bmROaXguY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTFiYmVmZmU0OWMwM2RmM2QxMGVkMGY0
ZTU2NDYyOGY4YWU3MjVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9Tb3VuZE5peC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNvdW5kLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgc3lzdGVtQmVlcCgpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbml4L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uaXgvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWVlN2I2ZTJmMGU5NWMwNDEyZTIzNDRlZmQwOGEyZTMzOTVlNDRhYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uaXgvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTU0xLZXlHZW5l
cmF0b3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lk
IGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQotewotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uaXgvV2lkZ2V0Tml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25peC9XaWRnZXROaXguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGQzMDk3
M2QyMDA1NDYyYjJlOGNmMzM2ZmEyMmIzMGZkZjU1NGZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9XaWRn
ZXROaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIK
LQotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIkN1cnNvci5oIgotI2luY2x1
ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdpZGdldDo6
V2lkZ2V0KFBsYXRmb3JtV2lkZ2V0IHdpZGdldCkKLSAgICA6IG1fcGFyZW50KDApCi0gICAgLCBt
X3dpZGdldCgwKQotICAgICwgbV9zZWxmVmlzaWJsZShmYWxzZSkKLSAgICAsIG1fcGFyZW50Vmlz
aWJsZShmYWxzZSkKLSAgICAsIG1fZnJhbWUoMCwgMCwgMCwgMCkKLXsKLSAgICBpbml0KHdpZGdl
dCk7Ci19Ci0KLVdpZGdldDo6fldpZGdldCgpCi17Ci0gICAgQVNTRVJUKCFwYXJlbnQoKSk7Ci19
Ci0KLUludFJlY3QgV2lkZ2V0OjpmcmFtZVJlY3QoKSBjb25zdAotewotICAgIHJldHVybiBtX2Zy
YW1lOwotfQotCi12b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
Ci17Ci0gICAgbV9mcmFtZSA9IHJlY3Q7Ci0gICAgV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgp
OwotfQotCi12b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCkKLXsKLX0KLQotdm9pZCBXaWRnZXQ6
OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKLXsKLSAgICBTY3JvbGxWaWV3KiB2aWV3
ID0gcm9vdCgpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIHZpZXctPmhv
c3RXaW5kb3coKS0+c2V0Q3Vyc29yKGN1cnNvcik7Ci19Ci0KLXZvaWQgV2lkZ2V0OjpzaG93KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdpZGdldDo6aGlkZSgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgV2lkZ2V0OjpzZXRJc1NlbGVjdGVkKGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L3N1cHBvcnQv
TXVsdGlDaGFubmVsUENNRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvc3Vw
cG9ydC9NdWx0aUNoYW5uZWxQQ01EYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2YyMjk0YzM3MTM3M2Y0YmVmNzI1NDk5YjBkYmI2MDQyZjRiMjZlNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uaXgvc3VwcG9ydC9NdWx0aUNoYW5uZWxQQ01EYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlIDxwdWJsaWMvTXVsdGlDaGFubmVsUENNRGF0YS5oPgotCi0jaWYgRU5BQkxF
KFdFQl9BVURJTykKLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBO
aXggewotCi1zdGF0aWMgV2ViQ29yZTo6QXVkaW9CdXMqIHRvQXVkaW9CdXModm9pZCogZGF0YSkK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9CdXMqPihkYXRhKTsKLX0K
LQotTXVsdGlDaGFubmVsUENNRGF0YTo6TXVsdGlDaGFubmVsUENNRGF0YSh1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBkb3VibGUgc2FtcGxlUmF0ZSkKLXsKLSNpZiBF
TkFCTEUoV0VCX0FVRElPKQotICAgIFdlYkNvcmU6OkF1ZGlvQnVzKiBidXMgPSBXZWJDb3JlOjpB
dWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkubGVha1JlZigpOwotICAg
IGJ1cy0+c2V0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKTsKLSAgICBtX2RhdGEgPSBidXM7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShudW1iZXJPZkNoYW5uZWxzKTsKLSAgICBVTlVTRURfUEFSQU0o
bGVuZ3RoKTsKLSAgICBVTlVTRURfUEFSQU0oc2FtcGxlUmF0ZSk7Ci0gICAgbV9kYXRhID0gbnVs
bHB0cjsKLSNlbmRpZgotfQotCi1NdWx0aUNoYW5uZWxQQ01EYXRhOjp+TXVsdGlDaGFubmVsUENN
RGF0YSgpCi17Ci0gICAgZGVsZXRlIHRvQXVkaW9CdXMobV9kYXRhKTsKLX0KLQotdm9pZCogTXVs
dGlDaGFubmVsUENNRGF0YTo6Z2V0SW50ZXJuYWxEYXRhKCkKLXsKLSAgICAvLyBUaGlzIHRyYW5z
ZmVyIHRoZSBvd25lcnNoaXAgb2YgbV9kYXRhIHRvIHRoZSBjYWxsZXIuCi0gICAgdm9pZCogZGF0
YSA9IG1fZGF0YTsKLSAgICBtX2RhdGEgPSAwOwotICAgIHJldHVybiBkYXRhOwotfQotCi11bnNp
Z25lZCBNdWx0aUNoYW5uZWxQQ01EYXRhOjpudW1iZXJPZkNoYW5uZWxzKCkgY29uc3QKLXsKLSNp
ZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChtX2RhdGEpCi0gICAgICAgIHJldHVybiB0b0F1
ZGlvQnVzKG1fZGF0YSktPm51bWJlck9mQ2hhbm5lbHMoKTsKLSNlbmRpZgotICAgIHJldHVybiAw
OwotfQotCi1zaXplX3QgTXVsdGlDaGFubmVsUENNRGF0YTo6bGVuZ3RoKCkgY29uc3QKLXsKLSNp
ZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChtX2RhdGEpCi0gICAgICAgIHJldHVybiB0b0F1
ZGlvQnVzKG1fZGF0YSktPmxlbmd0aCgpOwotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWRv
dWJsZSBNdWx0aUNoYW5uZWxQQ01EYXRhOjpzYW1wbGVSYXRlKCkgY29uc3QKLXsKLSNpZiBFTkFC
TEUoV0VCX0FVRElPKQotICAgIGlmIChtX2RhdGEpCi0gICAgICAgIHJldHVybiB0b0F1ZGlvQnVz
KG1fZGF0YSktPnNhbXBsZVJhdGUoKTsKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1mbG9h
dCogTXVsdGlDaGFubmVsUENNRGF0YTo6Y2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4
KQotewotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYgKG1fZGF0YSkgewotICAgICAgICBB
U1NFUlQoY2hhbm5lbEluZGV4IDwgdG9BdWRpb0J1cyhtX2RhdGEpLT5udW1iZXJPZkNoYW5uZWxz
KCkpOwotICAgICAgICByZXR1cm4gdG9BdWRpb0J1cyhtX2RhdGEpLT5jaGFubmVsKGNoYW5uZWxJ
bmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hh
bm5lbEluZGV4KTsKLSNlbmRpZgotICAgIHJldHVybiBudWxscHRyOwotfQotCi19IC8vIG5hbWVz
cGFjZSBOaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbml4L1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9uaXgvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU5peC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZmE3NzM4OGRmN2M2YWZkNzFhZDEyNjc4NjllZjA1MDRi
NDY2ZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9uaXgvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VU5peC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVJTIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFy
KiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQotewotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3Qg
Y2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICByZXR1cm4gImVuX3VzIjsK
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNOaXguY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc05peC5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTIwMzIyOThlZjJhZDk0OGFlZjU4M2FlOTg0Mjk5YmQ2ZGMwZGI5Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc05peC5j
bWFrZQorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0jIE5peCB1c2VzIGEgZGlmZmVy
ZW50IHdheSB0byBzZXQvdW5zZXQgZGVmYXVsdCBmZWF0dXJlcyBiYXNlZCBvbiBXSyBidWcgMTEw
NzE3IChub3QgeWV0IGxhbmRlZCkuCi0jIFNvIHRoZSBpbXBsZW1lbnRhdGlvbiwgaS5lLiB0aGUg
bmV4dCB0d28gbWFjcm9zLCB3YXMgbW92ZWQgdG8gaGVyZSB0byBrZWVwIGEgbWluaW1hbCBhcyBw
b3NzaWJsZQotIyBpbnRlcmZlcmVuY2Ugb24gb3RoZXIgcG9ydHMgdW50aWwgc29tZSBkYXkgd2hl
bi9pZiBidWcgMTEwNzE3IGdldCBsYW5kZWQuCi0KLSMgQ29tcHV0ZSBhbmQgc2V0IGRlZmF1bHQg
dmFsdWVzIGZvciBmZWF0dXJlIGRlZmluZXMKLW1hY3JvKFdFQktJVF9PUFRJT05fREVGQVVMVFMg
X3BvcnQpCi0gICAgIyBVc2UgdGhlIHByZXByb2Nlc3NvciB0byBnZXQgdGhlIGRlZmF1bHQgdmFs
dWVzIGZvciBmZWF0dXJlIGRlZmluZXMKLSAgICBFWEVDX1BST0dSQU0oImdjYyAtRSAtUCAtZE0g
LURCVUlMRElOR18ke19wb3J0fV9fIC1JICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dURiAk
e0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggfCBncmVwICdeI2Rl
ZmluZSBFTkFCTEVfXFx3XFwrIFswMV0kJyB8IGN1dCAtZCcgJyAtZjItMyB8IHNvcnQiIE9VVFBV
VF9WQVJJQUJMRSBERUZJTklUSU9OUykKLSAgICBzdHJpbmcoUkVHRVggTUFUQ0hBTEwgIihbXlxu
XSt8W15cbl0rJCkiIERFRklOSVRJT05TX0xJU1QgJHtERUZJTklUSU9OU30pCi0KLSAgICBmb3Jl
YWNoIChERUZJTklUSU9OICR7REVGSU5JVElPTlNfTElTVH0pCi0gICAgICAgIHN0cmluZyhSRUdF
WCBSRVBMQUNFICJeKFteIF0rKSAoW14gXSspJCIgIlxcMSIgREVGSU5JVElPTl9OQU1FICIke0RF
RklOSVRJT059IikKLSAgICAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIl4oW14gXSspIChbXiBd
KykkIiAiXFwyIiBERUZJTklUSU9OX1ZBTFVFICIke0RFRklOSVRJT059IikKLSAgICAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoJHtERUZJTklUSU9OX05BTUV9ICJUb2dnbGUgJHtERUZJTklUSU9O
X05BTUV9IiAke0RFRklOSVRJT05fVkFMVUV9KQotICAgICAgICBvcHRpb24oJHtERUZJTklUSU9O
X05BTUV9ICJUb2dnbGUgJHtERUZJTklUSU9OX05BTUV9IiAke0RFRklOSVRJT05fVkFMVUV9KQot
ICAgIGVuZGZvcmVhY2ggKCkKLWVuZG1hY3JvKCkKLQotIyBTaG93IFdlYktpdCBvcHRpb25zIHN1
bW1hcnkgYW5kIGFkZCAtREZPT0JBUiB0byBlYWNoIG9wdGlvbiB3aXRoIGEgdmFsdWUgZGlmZmVy
ZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUuCi1tYWNybyhQUk9DRVNTX1dFQktJVF9PUFRJT05T
KQotICAgIG1lc3NhZ2UoU1RBVFVTICJFbmFibGVkIGZlYXR1cmVzOiIpCi0KLSAgICBzZXQoX01B
WF9GRUFUVVJFX0xFTkdUSCAwKQotICAgIGZvcmVhY2ggKF9uYW1lICR7X1dFQktJVF9BVkFJTEFC
TEVfT1BUSU9OU30pCi0gICAgICAgIHN0cmluZyhMRU5HVEggJHtfbmFtZX0gX05BTUVfTEVOR1RI
KQotICAgICAgICBpZiAoX05BTUVfTEVOR1RIIEdSRUFURVIgX01BWF9GRUFUVVJFX0xFTkdUSCkK
LSAgICAgICAgICAgIHNldChfTUFYX0ZFQVRVUkVfTEVOR1RIICR7X05BTUVfTEVOR1RIfSkKLSAg
ICAgICAgZW5kaWYgKCkKLSAgICBlbmRmb3JlYWNoICgpCi0KLSAgICBzZXQoX1NIT1VMRF9QUklO
VF9QT0lOVFMgT0ZGKQotICAgIGZvcmVhY2ggKF9uYW1lICR7X1dFQktJVF9BVkFJTEFCTEVfT1BU
SU9OU30pCi0gICAgICAgIHN0cmluZyhMRU5HVEggJHtfbmFtZX0gX05BTUVfTEVOR1RIKQotCi0g
ICAgICAgIHNldChfTUVTU0FHRSAiICR7X25hbWV9ICIpCi0KLSAgICAgICAgaWYgKF9TSE9VTERf
UFJJTlRfUE9JTlRTKQotICAgICAgICAgICAgZm9yZWFjaCAoSUdOT1JFIFJBTkdFICR7X05BTUVf
TEVOR1RIfSAke19NQVhfRkVBVFVSRV9MRU5HVEh9KQotICAgICAgICAgICAgICAgIHNldChfTUVT
U0FHRSAiJHtfTUVTU0FHRX0gIikKLSAgICAgICAgICAgIGVuZGZvcmVhY2ggKCkKLSAgICAgICAg
ICAgIHNldChfU0hPVUxEX1BSSU5UX1BPSU5UUyBPRkYpCi0gICAgICAgIGVsc2UgKCkKLSAgICAg
ICAgICAgIGZvcmVhY2ggKElHTk9SRSBSQU5HRSAke19OQU1FX0xFTkdUSH0gJHtfTUFYX0ZFQVRV
UkVfTEVOR1RIfSkKLSAgICAgICAgICAgICAgICBzZXQoX01FU1NBR0UgIiR7X01FU1NBR0V9LiIp
Ci0gICAgICAgICAgICBlbmRmb3JlYWNoICgpCi0gICAgICAgICAgICBzZXQoX1NIT1VMRF9QUklO
VF9QT0lOVFMgT04pCi0gICAgICAgIGVuZGlmICgpCi0KLSAgICAgICAgaWYgKCR7X25hbWV9KQot
ICAgICAgICAgICAgbGlzdChBUFBFTkQgRkVBVFVSRV9ERUZJTkVTICR7X25hbWV9KQotICAgICAg
ICAgICAgc2V0KEZFQVRVUkVfREVGSU5FU19XSVRIX1NQQUNFX1NFUEFSQVRPUiAiJHtGRUFUVVJF
X0RFRklORVNfV0lUSF9TUEFDRV9TRVBBUkFUT1J9ICR7X25hbWV9IikKLSAgICAgICAgZW5kaWYg
KCkKLQotICAgICAgICBzZXQoX01FU1NBR0UgIiR7X01FU1NBR0V9ICR7JHtfbmFtZX19IikKLSAg
ICAgICAgbWVzc2FnZShTVEFUVVMgIiR7X01FU1NBR0V9IikKLSAgICBlbmRmb3JlYWNoICgpCi0K
LSAgICAjIEFkZCBhZGRfZGVmaW5pdGlvbnMgdG8gdmFsdWVzIGRpZmZlcmVudCBmcm9tIHRoZSBk
ZWZhdWx0cwotICAgIGZvcmVhY2ggKF9uYW1lICR7X1dFQktJVF9BVkFJTEFCTEVfT1BUSU9OU30p
Ci0gICAgICAgICMgQ29udmVydCB2YWx1ZXMgZnJvbSBPTi9PRkYgdG8gMS8wIGJlY2F1c2UKLSAg
ICAgICAgIyBDTWFrZSBzYXlzICIxIEVRVUFMIE9OIiBpcyBmYWxzZS4KLSAgICAgICAgaWYgKCR7
X1dFQktJVF9BVkFJTEFCTEVfT1BUSU9OU19JTklUQUxWQUxVRV8ke19uYW1lfX0pCi0gICAgICAg
ICAgICBzZXQoX2EgMSkKLSAgICAgICAgZWxzZSAoKQotICAgICAgICAgICAgc2V0KF9hIDApCi0g
ICAgICAgIGVuZGlmICgpCi0gICAgICAgIGlmICgkeyR7X25hbWV9fSkKLSAgICAgICAgICAgIHNl
dChfYiAxKQotICAgICAgICBlbHNlICgpCi0gICAgICAgICAgICBzZXQoX2IgMCkKLSAgICAgICAg
ZW5kaWYgKCkKLSAgICAgICAgaWYgKE5PVCBfYSBFUVVBTCBfYikKLSAgICAgICAgICAgIGFkZF9k
ZWZpbml0aW9ucygiLUQke19uYW1lfT0ke19ifSIpCi0gICAgICAgIGVuZGlmICgpCi0gICAgZW5k
Zm9yZWFjaCAoKQotZW5kbWFjcm8oKQotCi1zZXQoUFJPSkVDVF9WRVJTSU9OX01BSk9SIDApCi1z
ZXQoUFJPSkVDVF9WRVJTSU9OX01JTk9SIDEpCi1zZXQoUFJPSkVDVF9WRVJTSU9OX1BBVENIIDAp
Ci1zZXQoUFJPSkVDVF9WRVJTSU9OICR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS4ke1BST0pFQ1Rf
VkVSU0lPTl9NSU5PUn0uJHtQUk9KRUNUX1ZFUlNJT05fUEFUQ0h9KQotCi1zZXQoU0hBUkVEX0NP
UkUgMCkKLXNldChFTkFCTEVfV0VCS0lUIDApCi1zZXQoRU5BQkxFX1dFQktJVDIgMSkKLQotc2V0
KFdlYktpdDJfT1VUUFVUX05BTUUgV2ViS2l0Tml4KQotCi1hZGRfZGVmaW5pdGlvbnMoLURCVUlM
RElOR19OSVhfXz0xKQotCi1maW5kX3BhY2thZ2UoQ2Fpcm8gMS4xMi44IFJFUVVJUkVEKQotZmlu
ZF9wYWNrYWdlKEZvbnRjb25maWcgMi44LjAgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoRnJlZXR5
cGUgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoR0xJQiAyLjM2LjAgUkVRVUlSRUQgQ09NUE9ORU5U
UyBnaW8gZ29iamVjdCBnbW9kdWxlIGd0aHJlYWQpCi1maW5kX3BhY2thZ2UoSGFyZkJ1enopCi1m
aW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotZmluZF9wYWNrYWdlKEpQRUcgUkVRVUlSRUQpCi1m
aW5kX3BhY2thZ2UoTGliWG1sMiAyLjYgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoTGliWHNsdCAx
LjEuNyBSRVFVSVJFRCkKLWZpbmRfcGFja2FnZShQTkcgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2Uo
U3FsaXRlIFJFUVVJUkVEKQotZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCi1maW5kX3Bh
Y2thZ2UoWkxJQiBSRVFVSVJFRCkKLQotIyBWYXJpYWJsZSB0aGF0IG11c3QgZXhpc3RzIG9uIENN
YWtlIHNwYWNlCi0jIHRvIGtlZXAgY29tbW9uIENNYWtlIGZpbGVzIHdvcmtpbmcgYXMgZGVzaXJl
ZCBmb3IgdXMKLXNldChXVEZfVVNFX0lDVV9VTklDT0RFIE9OKQotc2V0KFdURl9VU0VfTEVWRUxE
QiBPTikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9OKQotCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRT
KCJOSVgiKQotV0VCS0lUX09QVElPTl9ERUZJTkUoV1RGX1VTRV9PUEVOR0xfRVNfMiAiVXNlIEVH
TCArIE9wZW5HTEVTMiIgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZJTkUoV1RGX1VTRV9DVVJMICJV
c2UgbGliQ3VybCBhcyBuZXR3b3JrIGJhY2tlbmQiIE9GRikKLQotaWYgKFdURl9VU0VfQ1VSTCkK
LSAgICBmaW5kX3BhY2thZ2UoQ1VSTCBSRVFVSVJFRCkKLSAgICBzZXQoUkVRVUlSRURfTkVUV09S
SyBsaWJjdXJsKQotZWxzZSAoKQotICAgIGZpbmRfcGFja2FnZShMaWJTb3VwIDIuNDIuMCBSRVFV
SVJFRCkKLSAgICBzZXQoUkVRVUlSRURfTkVUV09SSyBsaWJzb3VwLTIuNCkKLWVuZGlmICgpCi0K
LWlmIChXVEZfVVNFX09QRU5HTF9FU18yKQotICAgIGZpbmRfcGFja2FnZShPcGVuR0xFUzIgUkVR
VUlSRUQpCi0gICAgZmluZF9wYWNrYWdlKEVHTCBSRVFVSVJFRCkKLSAgICBzZXQoV1RGX1VTRV9F
R0wgT04pCi0gICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9PUEVOR0xfRVNfMj0xKQotZWxz
ZSAoKQotICAgIGZpbmRfcGFja2FnZShYMTEgUkVRVUlSRUQpCi0gICAgZmluZF9wYWNrYWdlKE9w
ZW5HTCBSRVFVSVJFRCkKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURIQVZFX0dMWD0xKQotZW5kaWYg
KCkKLQotaWYgKE5PVCBFTkFCTEVfU1ZHKQotICAgIHNldChFTkFCTEVfU1ZHX0ZPTlRTIE9GRikK
LWVuZGlmICgpCi0KLVBST0NFU1NfV0VCS0lUX09QVElPTlMoKQotCi0KLQpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGIwNGEwMzNmOGRkMmQ1NTY5OGRkZTc4MjhmZDUx
ZDgwYzY3YTg1ZDYuLjM3MWYyN2E0NjRmNDdlNTM1MzJkZWJhNjM3MGJmMmQzN2JmNDZkMWQgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
NC0wMS0xNyAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAg
ICBSZW1vdmUgTml4IGZpbGVzIGZyb20gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc05peC5jbWFrZTog
UmVtb3ZlZC4KKwogMjAxNC0wMS0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIE9ubHkgdXNlIGNvbG9yIGluIG1ha2Ugb3V0cHV0IHdoZW4gaXTigJlzIGdvaW5n
IHRvIGEgdGVybWluYWwuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>