<?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>162777</bug_id>
          
          <creation_ts>2016-09-30 03:02:22 -0700</creation_ts>
          <short_desc>[SOUP] Cleanup persistent credential storage code</short_desc>
          <delta_ts>2016-10-03 03:35:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Local 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>Gtk, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1235173</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-30 03:02:22 -0700</bug_when>
    <thetext>We have this feature behind ENABLE_CREDENTIAL_STORAGE flag, which is confusing, because we use credential storage unconditionally and this is only about persistent storage. Also the flag assumes libsecret is available, and since it&apos;s only used by GTK sometimes we use GTK ifdefs instead of CREDENTIAL_STORAGE. So, I think we should use USE(LIBSECRET) instead, and reduce a bit the ifdefs in common soup code. Another problem is that current implementation is always used, while it should depend on the current network storage session and never used in ephemeral sessions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235175</commentid>
    <comment_count>1</comment_count>
      <attachid>290313</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-30 03:07:27 -0700</bug_when>
    <thetext>Created attachment 290313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235176</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-30 03:10:18 -0700</bug_when>
    <thetext>Attachment 290313 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235186</commentid>
    <comment_count>3</comment_count>
      <attachid>290320</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-30 03:28:14 -0700</bug_when>
    <thetext>Created attachment 290320
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235187</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-30 03:30:54 -0700</bug_when>
    <thetext>Attachment 290320 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235190</commentid>
    <comment_count>5</comment_count>
      <attachid>290322</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-30 03:39:42 -0700</bug_when>
    <thetext>Created attachment 290322
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235193</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-30 03:41:37 -0700</bug_when>
    <thetext>Attachment 290322 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235215</commentid>
    <comment_count>7</comment_count>
      <attachid>290322</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-30 07:23:22 -0700</bug_when>
    <thetext>Comment on attachment 290322
Try to fix EFL build

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

&gt; Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:201
&gt; +    completionHandler(Credential());

{ }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235771</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-03 03:35:32 -0700</bug_when>
    <thetext>Committed r206731: &lt;http://trac.webkit.org/changeset/206731&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290313</attachid>
            <date>2016-09-30 03:07:27 -0700</date>
            <delta_ts>2016-09-30 03:28:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-persisent-storage.diff</filename>
            <type>text/plain</type>
            <size>32192</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTQ2ZmJlLi42Y2MzNTAx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBFTkFCTEUoQ1JFREVOVElBTF9TVE9SQUdFKSBidWlsZCBmbGFnIGFuZCByZXBsYWNlIGl0IGJ5
IFVTRShMSUJTRUNSRVQpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE2
LTA5LTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSZW1vdmUgb2Jzb2xldGUgY29tbWVudCBmcm9tIE9wdGlvbnNHVEsuY21ha2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMDM4MTg4Li4zMGQ0NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjc3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGhhdmUgdGhpcyBmZWF0dXJlIGJlaGluZCBFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFIGZsYWcs
IHdoaWNoIGlzIGNvbmZ1c2luZywgYmVjYXVzZSB3ZSB1c2UgY3JlZGVudGlhbAorICAgICAgICBz
dG9yYWdlIHVuY29uZGl0aW9uYWxseSBhbmQgdGhpcyBpcyBvbmx5IGFib3V0IHBlcnNpc3RlbnQg
c3RvcmFnZS4gQWxzbyB0aGUgZmxhZyBhc3N1bWVzIGxpYnNlY3JldCBpcyBhdmFpbGFibGUsCisg
ICAgICAgIGFuZCBzaW5jZSBpdCdzIG9ubHkgdXNlZCBieSBHVEsgc29tZXRpbWVzIHdlIHVzZSBH
VEsgaWZkZWZzIGluc3RlYWQgb2YgQ1JFREVOVElBTF9TVE9SQUdFLiBTbywgSSB0aGluayB3ZSBz
aG91bGQKKyAgICAgICAgdXNlIFVTRShMSUJTRUNSRVQpIGluc3RlYWQsIGFuZCByZWR1Y2UgYSBi
aXQgdGhlIGlmZGVmcyBpbiBjb21tb24gc291cCBjb2RlLiBBbm90aGVyIHByb2JsZW0gaXMgdGhh
dCBjdXJyZW50CisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIGFsd2F5cyB1c2VkLCB3aGlsZSBp
dCBzaG91bGQgZGVwZW5kIG9uIHRoZSBjdXJyZW50IG5ldHdvcmsgc3RvcmFnZSBzZXNzaW9uIGFu
ZCBuZXZlciB1c2VkIGluCisgICAgICAgIGVwaGVtZXJhbCBzZXNzaW9ucy4gVGhpcyBwYXRjaCBt
b3ZlcyB0aGUgY29kZSBmcm9tIENyZWRlbnRpYWxCYWNraW5nU3RvcmUgdG8gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cCBhbmQKKyAgICAgICAgbW9kZXJuaXplcyBhIGJpdC4KKworICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOiBSZW1vdmUgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOiBVc2UgVVNFKExJQlNFQ1JFVCkK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVGcm9tUHJvdGVjdGlvblNwYWNl
U2VydmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjphdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVu
dFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnb3RIZWFkZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlv
bik6IERlbGV0ZWQuCisKIDIwMTYtMDktMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUgV2ViQ29yZVN5bmNocm9ub3Vz
TG9hZGVyIGZyb20gUmVzb3VyY2VIYW5kbGVTb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IGIxNTNlNDAuLjQxYmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjIs
OCArMTYyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9ndGsvU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2VHdGsuY3BwCiAKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAotCiAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dSZWZQdHJHdGsuY3BwCmluZGV4IDdiNGQ2OTIuLmZlZDdhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaWYgRU5BQkxFKENSRURFTlRJQUxf
U1RPUkFHRSkKKyNpZiBVU0UoTElCU0VDUkVUKQogI2RlZmluZSBTRUNSRVRfV0lUSF9VTlNUQUJM
RSAxCiAjZGVmaW5lIFNFQ1JFVF9BUElfU1VCSkVDVF9UT19DSEFOR0UgMQogI2luY2x1ZGUgPGxp
YnNlY3JldC9zZWNyZXQuaD4KQEAgLTQ0LDcgKzQ0LDcgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJl
ZkdQdHIoR3RrVGFyZ2V0TGlzdCogcHRyKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYo
cHRyKTsKIH0KIAotI2lmIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCisjaWYgVVNFKExJQlNF
Q1JFVCkKIHRlbXBsYXRlIDw+IFNlY3JldFZhbHVlKiByZWZHUHRyKFNlY3JldFZhbHVlKiBwdHIp
CiB7CiAgICAgaWYgKHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HUmVmUHRyR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5o
CmluZGV4IGM3MzdlM2QuLmJhMWQ2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HUmVmUHRyR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+
IEd0a1RhcmdldExpc3QqIHJlZkdQdHIoR3RrVGFyZ2V0TGlzdCogcHRyKTsKIHRlbXBsYXRlIDw+
IHZvaWQgZGVyZWZHUHRyKEd0a1RhcmdldExpc3QqIHB0cik7CiAKLSNpZiBFTkFCTEUoQ1JFREVO
VElBTF9TVE9SQUdFKQorI2lmIFVTRShMSUJTRUNSRVQpCiB0ZW1wbGF0ZSA8PiBTZWNyZXRWYWx1
ZSogcmVmR1B0cihTZWNyZXRWYWx1ZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRy
KFNlY3JldFZhbHVlKiBwdHIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA1ODliNjZlLi4y
YTRhN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDExIEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKQEAgLTY2LDcgKzcxLDgg
QEAgcHVibGljOgogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIAogICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbiYgc291cE5ldHdvcmtTZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTb3Vw
TmV0d29ya1Nlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4pOworICAg
IHZvaWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9u
U3BhY2UmLCBGdW5jdGlvbjx2b2lkIChDcmVkZW50aWFsJiYpPiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogI2Vsc2UKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oU2Vzc2lvbklELCBOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKTsKQEAgLTgyLDYgKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogI2VsaWYgVVNFKFNP
VVApCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwor
I2lmIFVTRShMSUJTRUNSRVQpCisgICAgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4gbV9w
ZXJzaXNlbnRTdG9yYWdlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFi
bGU+IG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxhYmxlOworI2VuZGlmCiAjZWxzZQogICAgIFJl
ZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CmluZGV4IDYxMjNmMTQuLmNkY2MxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xNzgsMTEgKzE3
OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fcmVkaXJlY3RDb3VudDsK
ICAgICAgICAgc2l6ZV90IG1fcHJldmlvdXNQb3NpdGlvbjsKICAgICAgICAgYm9vbCBtX3VzZUF1
dGhlbnRpY2F0aW9uTWFuYWdlcjsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKLSAgICAgICAgICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKKyAgICAgICAgICAgIFByb3RlY3Rp
b25TcGFjZSBwcm90ZWN0aW9uU3BhY2U7CiAgICAgICAgIH0gbV9jcmVkZW50aWFsRGF0YVRvU2F2
ZUluUGVyc2lzdGVudFN0b3JlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDhmMmMuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgSUdBTElBIFMuTC4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyZWRlbnRpYWxCYWNr
aW5nU3RvcmUuaCIKLQotI2lmIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCi0jZGVmaW5lIFNF
Q1JFVF9XSVRIX1VOU1RBQkxFIDEKLSNkZWZpbmUgU0VDUkVUX0FQSV9TVUJKRUNUX1RPX0NIQU5H
RSAxCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJHUmVm
UHRyR3RrLmgiCi0jaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDxsaWJzZWNy
ZXQvc2VjcmV0Lmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNyZWRlbnRpYWxCYWNraW5nU3RvcmUmIGNyZWRlbnRp
YWxCYWNraW5nU3RvcmUoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
cmVkZW50aWFsQmFja2luZ1N0b3JlLCBiYWNraW5nU3RvcmUsICgpKTsKLSAgICByZXR1cm4gYmFj
a2luZ1N0b3JlOwotfQotCi0jaWYgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkKLXN0YXRpYyBH
UmVmUHRyPEdIYXNoVGFibGU+IGNyZWF0ZUF0dHJpYnV0ZUhhc2hUYWJsZUZyb21DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoKSkKLXsKLSAgICBjb25zdCBjaGFyKiByZWFsbSA9
IHNvdXBfYXV0aF9nZXRfcmVhbG0oY2hhbGxlbmdlLnNvdXBBdXRoKCkpOwotICAgIGlmICghcmVh
bG0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgU291cFVSSSogdXJpID0gc291cF9t
ZXNzYWdlX2dldF91cmkoY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOwotICAgIEdSZWZQdHI8R0hh
c2hUYWJsZT4gYXR0cmlidXRlcyA9IGFkb3B0R1JlZihzZWNyZXRfYXR0cmlidXRlc19idWlsZCgK
LSAgICAgICAgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywKLSAgICAgICAgImRvbWFpbiIs
IHJlYWxtLAotICAgICAgICAic2VydmVyIiwgdXJpLT5ob3N0LAotICAgICAgICAicHJvdG9jb2wi
LCB1cmktPnNjaGVtZSwKLSAgICAgICAgImF1dGh0eXBlIiwgc291cF9hdXRoX2dldF9zY2hlbWVf
bmFtZShjaGFsbGVuZ2Uuc291cEF1dGgoKSksCi0gICAgICAgICJwb3J0IiwgdXJpLT5wb3J0LAot
ICAgICAgICBOVUxMKSk7Ci0gICAgaWYgKGNyZWRlbnRpYWwuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlczsKLQotICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoYXR0cmlidXRlcy5n
ZXQoKSwgZ19zdHJkdXAoInVzZXIiKSwgZ19zdHJkdXAoY3JlZGVudGlhbC51c2VyKCkudXRmOCgp
LmRhdGEoKSkpOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOwotfQotCi1zdHJ1Y3QgQ3JlZGVudGlh
bEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFja0RhdGEgewotICAgIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmU6OkNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VDYWxsYmFjayBjYWxsYmFjazsKLSAgICB2
b2lkKiBkYXRhOwotfTsKLQotc3RhdGljIHZvaWQgY3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5j
UmVhZHlDYWxsYmFjayhTZWNyZXRTZXJ2aWNlKiBzZXJ2aWNlLCBHQXN5bmNSZXN1bHQqIGFzeW5j
UmVzdWx0LCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrRGF0YSogY2Fs
bGJhY2tEYXRhKQotewotICAgIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OkNyZWRlbnRpYWxGb3JD
aGFsbGVuZ2VDYWxsYmFjayBjYWxsYmFjayA9IGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2s7Ci0gICAg
dm9pZCogZGF0YSA9IGNhbGxiYWNrRGF0YS0+ZGF0YTsKLSAgICBkZWxldGUgY2FsbGJhY2tEYXRh
OwotCi0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8R0xp
c3Q+IGVsZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJjaF9maW5pc2goc2VydmljZSwgYXN5bmNS
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvciB8fCAhZWxlbWVudHMgfHwg
IWVsZW1lbnRzLT5kYXRhKSB7Ci0gICAgICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPFNlY3JldEl0ZW0+IHNlY3Jl
dEl0ZW0gPSBhZG9wdEdSZWYoc3RhdGljX2Nhc3Q8U2VjcmV0SXRlbSo+KGVsZW1lbnRzLT5kYXRh
KSk7Ci0gICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKHNlY3Jl
dF9pdGVtX2dldF9hdHRyaWJ1dGVzKHNlY3JldEl0ZW0uZ2V0KCkpKTsKLSAgICBTdHJpbmcgdXNl
ciA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGdfaGFzaF90YWJs
ZV9sb29rdXAoYXR0cmlidXRlcy5nZXQoKSwgInVzZXIiKSkpOwotICAgIGlmICh1c2VyLmlzRW1w
dHkoKSkgewotICAgICAgICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc2l6ZV90IGxlbmd0aDsKLSAgICBHUmVmUHRyPFNlY3JldFZh
bHVlPiBzZWNyZXRWYWx1ZSA9IGFkb3B0R1JlZihzZWNyZXRfaXRlbV9nZXRfc2VjcmV0KHNlY3Jl
dEl0ZW0uZ2V0KCkpKTsKLSAgICBjb25zdCBjaGFyKiBwYXNzd29yZERhdGEgPSBzZWNyZXRfdmFs
dWVfZ2V0KHNlY3JldFZhbHVlLmdldCgpLCAmbGVuZ3RoKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQg
PSBTdHJpbmc6OmZyb21VVEY4KHBhc3N3b3JkRGF0YSwgbGVuZ3RoKTsKLQotICAgIGNhbGxiYWNr
KENyZWRlbnRpYWwodXNlciwgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVu
dCksIGRhdGEpOwotfQotI2VuZGlmIC8vIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCi0KLXZv
aWQgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdl
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEpCi17Ci0jaWYgRU5BQkxFKENSRURFTlRJQUxf
U1RPUkFHRSkKLSAgICAvLyBUaGUgZGVmYXVsdCBmbGFnIG9ubHkgcmV0dXJucyB0aGUgbW9zdCBy
ZWNlbnQgaXRlbSwgbm90IGFsbCBvZiB0aGVtLgotICAgIFNlY3JldFNlYXJjaEZsYWdzIHNlYXJj
aEZsYWdzID0gc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5M
T0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpOwotICAgIENyZWRlbnRpYWxGb3JDaGFs
bGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2tEYXRhKiBjYWxsYmFja0RhdGEgPSBuZXcgQ3JlZGVudGlh
bEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFja0RhdGE7Ci0gICAgY2FsbGJhY2tEYXRhLT5j
YWxsYmFjayA9IGNhbGxiYWNrOwotICAgIGNhbGxiYWNrRGF0YS0+ZGF0YSA9IGRhdGE7Ci0KLSAg
ICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBjcmVhdGVBdHRyaWJ1dGVIYXNoVGFi
bGVGcm9tQ2hhbGxlbmdlKGNoYWxsZW5nZSk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzZWNyZXRfc2VydmljZV9zZWFyY2goCi0gICAgICAgIDAsIC8vIFRoZSBkZWZhdWx0
IFNlY3JldFNlcnZpY2UuCi0gICAgICAgIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssCi0g
ICAgICAgIGF0dHJpYnV0ZXMuZ2V0KCksCi0gICAgICAgIHNlYXJjaEZsYWdzLAotICAgICAgICAw
LCAvLyBjYW5jZWxsYWJsZQotICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2spLAotICAgICAg
ICBjYWxsYmFja0RhdGEpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hhbGxlbmdlKTsKLSAg
ICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwotI2VuZGlmIC8vIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpCi19Ci0KLXZvaWQgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6c3RvcmVDcmVk
ZW50aWFsc0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotI2lmIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpCi0gICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gY3JlYXRl
QXR0cmlidXRlSGFzaFRhYmxlRnJvbUNoYWxsZW5nZShjaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOwot
ICAgIGlmICghYXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1N0cmluZyB1dGY4
UGFzc3dvcmQgPSBjcmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOCgpOwotICAgIEdSZWZQdHI8U2Vj
cmV0VmFsdWU+IG5ld1NlY3JldFZhbHVlID0gYWRvcHRHUmVmKHNlY3JldF92YWx1ZV9uZXcodXRm
OFBhc3N3b3JkLmRhdGEoKSwgdXRmOFBhc3N3b3JkLmxlbmd0aCgpLCAidGV4dC9wbGFpbiIpKTsK
LQotICAgIHNlY3JldF9zZXJ2aWNlX3N0b3JlKAotICAgICAgICAwLCAvLyBUaGUgZGVmYXVsdCBT
ZWNyZXRTZXJ2aWNlLgotICAgICAgICBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLAotICAg
ICAgICBhdHRyaWJ1dGVzLmdldCgpLAotICAgICAgICBTRUNSRVRfQ09MTEVDVElPTl9ERUZBVUxU
LAotICAgICAgICBfKCJXZWJLaXRHVEsrIHBhc3N3b3JkIiksCi0gICAgICAgIG5ld1NlY3JldFZh
bHVlLmdldCgpLAotICAgICAgICAwLCAvLyBjYW5jZWxsYWJsZQotICAgICAgICAwLCAvLyBjYWxs
YmFjawotICAgICAgICAwKTsgLy8gZGF0YQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hhbGxl
bmdlKTsKLSAgICBVTlVTRURfUEFSQU0oY3JlZGVudGlhbCk7Ci0jZW5kaWYgLy8gRU5BQkxFKENS
RURFTlRJQUxfU1RPUkFHRSkKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODRmODAwLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIElHQUxJQSBTLkwuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZV9oCi0jZGVmaW5l
IENyZWRlbnRpYWxCYWNraW5nU3RvcmVfaAotCi0jaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotCi1j
bGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3JlIHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKENyZWRl
bnRpYWxCYWNraW5nU3RvcmUpOwotcHVibGljOgotICAgIGZyaWVuZCBDcmVkZW50aWFsQmFja2lu
Z1N0b3JlJiBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCk7Ci0gICAgdmlydHVhbCB+Q3JlZGVudGlh
bEJhY2tpbmdTdG9yZSgpIHsgfQotCi0gICAgdHlwZWRlZiB2b2lkICgqQ3JlZGVudGlhbEZvckNo
YWxsZW5nZUNhbGxiYWNrKShjb25zdCBDcmVkZW50aWFsJiwgdm9pZCogZGF0YSk7Ci0KLSAgICB2
b2lkIGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdlQ2FsbGJhY2ssIHZvaWQqIGRhdGEpOwotICAgIHZvaWQg
c3RvcmVDcmVkZW50aWFsc0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKLXByaXZhdGU6Ci0gICAgQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZSgpIHsgfQotfTsKLQotQ3JlZGVudGlhbEJhY2tpbmdTdG9yZSYgY3JlZGVudGlhbEJhY2tp
bmdTdG9yZSgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50
aWFsQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCA3ZjA3MWExLi5iODFiNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBT
emVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOCArMzIsMTggQEAK
IAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNz
aW9uLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworI2lmIFVTRShM
SUJTRUNSRVQpCisjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgorI2RlZmluZSBTRUNSRVRfV0lUSF9V
TlNUQUJMRSAxCisjZGVmaW5lIFNFQ1JFVF9BUElfU1VCSkVDVF9UT19DSEFOR0UgMQorI2luY2x1
ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0LDYgKzU1LDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHQKIAogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKIHsKKyNpZiBVU0UoTElCU0VDUkVU
KQorICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxhYmxl
LmdldCgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4mIGRlZmF1bHRTZXNzaW9uKCkKQEAgLTc4LDExICs5MiwxNDkgQEAgU291cE5l
dHdvcmtTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNvdXBOZXR3b3JrU2Vzc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vzc2lvbiA/ICptX3Nlc3Npb24gOiBTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRTb3VwTmV0d29ya1Nlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lv
bj4gc2Vzc2lvbikKKyNpZiBVU0UoTElCU0VDUkVUKQorc3RhdGljIGNvbnN0IGNoYXIqIHNjaGVt
ZUZyb21Qcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlKFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUg
c2VydmVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNlcnZlclR5cGUpIHsKKyAgICBjYXNlIFByb3Rl
Y3Rpb25TcGFjZVNlcnZlckhUVFA6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFA6
CisgICAgICAgIHJldHVybiBTT1VQX1VSSV9TQ0hFTUVfSFRUUDsKKyAgICBjYXNlIFByb3RlY3Rp
b25TcGFjZVNlcnZlckhUVFBTOgorICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQUzoK
KyAgICAgICAgcmV0dXJuIFNPVVBfVVJJX1NDSEVNRV9IVFRQUzsKKyAgICBjYXNlIFByb3RlY3Rp
b25TcGFjZVNlcnZlckZUUDoKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVByb3h5RlRQOgorICAg
ICAgICByZXR1cm4gU09VUF9VUklfU0NIRU1FX0ZUUDsKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFj
ZVNlcnZlckZUUFM6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VQcm94eVNPQ0tTOgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U09VUF9VUklfU0NIRU1FX0hUVFA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBhdXRoVHlwZUZy
b21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZSBzY2hlbWUpCiB7Ci0gICAgbV9zZXNzaW9uID0gV1RGTW92ZShzZXNz
aW9uKTsKKyAgICBzd2l0Y2ggKHNjaGVtZSkgeworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVIVFRQQmFzaWM6CisgICAgICAgIHJldHVybiAiQmFzaWMiOworICAgIGNh
c2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQRGlnZXN0OgorICAgICAg
ICByZXR1cm4gIkRpZ2VzdCI7CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZU5UTE06CisgICAgICAgIHJldHVybiAiTlRMTSI7CisgICAgY2FzZSBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZToKKyAgICAgICAgcmV0dXJuICJOZWdv
dGlhdGUiOworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1M
Rm9ybToKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xpZW50
Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duOgorICAgICAgICByZXR1cm4gInVua25vd24iOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAidW5rbm93biI7
CiB9CisjZW5kaWYgLy8gVVNFKExJQlNFQ1JFVCkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+IGNvbXBs
ZXRpb25IYW5kbGVyKQoreworI2lmIFVTRShMSUJTRUNSRVQpCisgICAgaWYgKG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ3JlZGVudGlhbCgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgcmVhbG0gPSBw
cm90ZWN0aW9uU3BhY2UucmVhbG0oKTsKKyAgICBpZiAocmVhbG0uaXNFbXB0eSgpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENyZWRlbnRpYWwoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoc2Vj
cmV0X2F0dHJpYnV0ZXNfYnVpbGQoU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywKKyAgICAg
ICAgImRvbWFpbiIsIHJlYWxtLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICJzZXJ2ZXIiLCBwcm90
ZWN0aW9uU3BhY2UuaG9zdCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICJwb3J0IiwgcHJvdGVj
dGlvblNwYWNlLnBvcnQoKSwKKyAgICAgICAgInByb3RvY29sIiwgc2NoZW1lRnJvbVByb3RlY3Rp
b25TcGFjZVNlcnZlclR5cGUocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSksCisgICAgICAg
ICJhdXRodHlwZSIsIGF1dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lKHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSwKKyAgICAgICAgbnVs
bHB0cikpOworICAgIGlmICghYXR0cmlidXRlcykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDcmVkZW50aWFsKCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgbV9wZXJzaXNl
bnRTdG9yYWdlQ2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7Cisg
ICAgbV9wZXJzaXNlbnRTdG9yYWdlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1ND
SEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJD
SF9MT0FEX1NFQ1JFVFMpLCBtX3BlcnNpc2VudFN0b3JhZ2VDYW5jZWxsYWJsZS5nZXQoKSwKKyAg
ICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICAgICAgICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGVsZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJj
aF9maW5pc2goU0VDUkVUX1NFUlZJQ0Uoc291cmNlKSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKKyAgICAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMgKGVycm9yLmdldCgpLCBHX0lPX0VS
Uk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24qPih1c2VyRGF0YSk7CisgICAgICAgICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShzZXNzaW9uLT5tX3BlcnNpc2VudFN0b3JhZ2VD
b21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIWVs
ZW1lbnRzIHx8ICFlbGVtZW50cy0+ZGF0YSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKENyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBHUmVmUHRyPFNlY3JldEl0ZW0+IHNlY3JldEl0ZW0gPSBhZG9w
dEdSZWYoc3RhdGljX2Nhc3Q8U2VjcmV0SXRlbSo+KGVsZW1lbnRzLT5kYXRhKSk7CisgICAgICAg
ICAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoc2VjcmV0X2l0
ZW1fZ2V0X2F0dHJpYnV0ZXMoc2VjcmV0SXRlbS5nZXQoKSkpOworICAgICAgICAgICAgU3RyaW5n
IHVzZXIgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hf
dGFibGVfbG9va3VwKGF0dHJpYnV0ZXMuZ2V0KCksICJ1c2VyIikpKTsKKyAgICAgICAgICAgIGlm
ICh1c2VyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENy
ZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICAgICAgR1JlZlB0cjxTZWNyZXRWYWx1
ZT4gc2VjcmV0VmFsdWUgPSBhZG9wdEdSZWYoc2VjcmV0X2l0ZW1fZ2V0X3NlY3JldChzZWNyZXRJ
dGVtLmdldCgpKSk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXNzd29yZERhdGEgPSBzZWNy
ZXRfdmFsdWVfZ2V0KHNlY3JldFZhbHVlLmdldCgpLCAmbGVuZ3RoKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENyZWRlbnRpYWwodXNlciwgU3RyaW5nOjpmcm9tVVRGOChwYXNzd29y
ZERhdGEsIGxlbmd0aCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCkpOworICAgIH0s
IHRoaXMpOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihDcmVkZW50aWFsKCkpOworI2Vu
ZGlmCiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVy
c2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisjaWYgVVNFKExJQlNFQ1JFVCkKKyAgICBp
ZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGNyZWRlbnRpYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBTdHJp
bmcmIHJlYWxtID0gcHJvdGVjdGlvblNwYWNlLnJlYWxtKCk7CisgICAgaWYgKHJlYWxtLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1
dGVzID0gYWRvcHRHUmVmKHNlY3JldF9hdHRyaWJ1dGVzX2J1aWxkKFNFQ1JFVF9TQ0hFTUFfQ09N
UEFUX05FVFdPUkssCisgICAgICAgICJkb21haW4iLCByZWFsbS51dGY4KCkuZGF0YSgpLAorICAg
ICAgICAic2VydmVyIiwgcHJvdGVjdGlvblNwYWNlLmhvc3QoKS51dGY4KCkuZGF0YSgpLAorICAg
ICAgICAicG9ydCIsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCksCisgICAgICAgICJwcm90b2NvbCIs
IHNjaGVtZUZyb21Qcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlKHByb3RlY3Rpb25TcGFjZS5zZXJ2
ZXJUeXBlKCkpLAorICAgICAgICAiYXV0aHR5cGUiLCBhdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZShwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hl
bWUoKSksCisgICAgICAgIG51bGxwdHIpKTsKKyAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoYXR0cmlidXRlcy5nZXQoKSwgZ19z
dHJkdXAoInVzZXIiKSwgZ19zdHJkdXAoY3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSkp
OworICAgIENTdHJpbmcgdXRmOFBhc3N3b3JkID0gY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0Zjgo
KTsKKyAgICBHUmVmUHRyPFNlY3JldFZhbHVlPiBuZXdTZWNyZXRWYWx1ZSA9IGFkb3B0R1JlZihz
ZWNyZXRfdmFsdWVfbmV3KHV0ZjhQYXNzd29yZC5kYXRhKCksIHV0ZjhQYXNzd29yZC5sZW5ndGgo
KSwgInRleHQvcGxhaW4iKSk7CisgICAgc2VjcmV0X3NlcnZpY2Vfc3RvcmUobnVsbHB0ciwgU0VD
UkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwgU0VDUkVUX0NPTExF
Q1RJT05fREVGQVVMVCwgXygiV2ViS2l0R1RLKyBwYXNzd29yZCIpLAorICAgICAgICBuZXdTZWNy
ZXRWYWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwcm90ZWN0aW9uU3BhY2UpOworICAgIFVOVVNFRF9QQVJBTShjcmVkZW50aWFs
KTsKICNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
U09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNTdhMTAxZi4uMzc3Y2Y0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHAKQEAgLTY2LDEwICs2Niw2IEBACiAjaW5jbHVkZSAiQmxvYkRhdGEu
aCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCiAKLSNpZiBQTEFURk9STShHVEspCi0j
aW5jbHVkZSAiQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplID0g
ODE5MjsKQEAgLTIzMCwxNyArMjI2LDE1IEBAIHN0YXRpYyB2b2lkIGdvdEhlYWRlcnNDYWxsYmFj
ayhTb3VwTWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkKIAogICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CiAKLSNpZiBQTEFURk9STShH
VEspCiAgICAgLy8gV2UgYXJlIGEgYml0IG1vcmUgY29uc2VydmF0aXZlIHdpdGggdGhlIHBlcnNp
c3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIHRoYW4gdGhlIHNlc3Npb24gc3RvcmUsCiAgICAgLy8g
c2luY2Ugd2UgYXJlIHdhaXRpbmcgdW50aWwgd2Uga25vdyB0aGF0IHRoaXMgYXV0aGVudGljYXRp
b24gc3VjY2VlZGVkIGJlZm9yZSBhY3R1YWxseSBzdG9yaW5nLgogICAgIC8vIFRoaXMgaXMgYmVj
YXVzZSB3ZSB3YW50IHRvIGF2b2lkIGhpdHRpbmcgdGhlIGRpc2sgdHdpY2UgKG9uY2UgdG8gYWRk
IGFuZCBvbmNlIHRvIHJlbW92ZSkgZm9yCiAgICAgLy8gaW5jb3JyZWN0IGNyZWRlbnRpYWxzIG9y
IHBvbGx1dGluZyB0aGUga2V5Y2hhaW4gd2l0aCBpbnZhbGlkIGNyZWRlbnRpYWxzLgotICAgIGlm
ICghaXNBdXRoZW50aWNhdGlvbkZhaWx1cmVTdGF0dXNDb2RlKG1lc3NhZ2UtPnN0YXR1c19jb2Rl
KSAmJiBtZXNzYWdlLT5zdGF0dXNfY29kZSA8IDUwMCAmJiAhZC0+bV9jcmVkZW50aWFsRGF0YVRv
U2F2ZUluUGVyc2lzdGVudFN0b3JlLmNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNy
ZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5zdG9yZUNyZWRlbnRpYWxzRm9yQ2hhbGxlbmdlKAotICAg
ICAgICAgICAgZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLmNoYWxs
ZW5nZSwKKyAgICBpZiAoIWlzQXV0aGVudGljYXRpb25GYWlsdXJlU3RhdHVzQ29kZShtZXNzYWdl
LT5zdGF0dXNfY29kZSkgJiYgbWVzc2FnZS0+c3RhdHVzX2NvZGUgPCA1MDApIHsKKyAgICAgICAg
ZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnNhdmVDcmVkZW50aWFsVG9QZXJzaXN0ZW50
U3RvcmFnZSgKKyAgICAgICAgICAgIGQtPm1fY3JlZGVudGlhbERhdGFUb1NhdmVJblBlcnNpc3Rl
bnRTdG9yZS5wcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRh
VG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY3JlZGVudGlhbCk7CiAgICAgfQotI2VuZGlmCiAKICAg
ICAvLyBUaGUgb3JpZ2luYWwgcmVzcG9uc2Ugd2lsbCBiZSBuZWVkZWQgbGF0ZXIgdG8gZmVlZCB0
byB3aWxsU2VuZFJlcXVlc3QgaW4KICAgICAvLyBkb1JlZGlyZWN0KCkgaW4gY2FzZSB3ZSBhcmUg
cmVkaXJlY3RlZC4gRm9yIHRoaXMgcmVhc29uLCB3ZSBzdG9yZSBpdCBoZXJlLgpAQCAtOTcwLDEz
ICs5NjQsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBp
Z25vcmVTU0xFcnJvcnMpCiAgICAgZ0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsK
IH0KIAotI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50
U3RvcmVDYWxsYmFjayhjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCB2b2lkKiBkYXRhKQot
ewotICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSktPmNvbnRpbnVlRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNyZWRlbnRpYWwpOwotfQotI2VuZGlmCi0KIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpCiB7
CiAgICAgQVNTRVJUKCFkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtMTAz
MCwxNiArMTAxNywxNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbAogICAgIGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKICAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2Fn
ZShjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSwgY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOwogCi0j
aWYgUExBVEZPUk0oR1RLKQogICAgIC8vIFdlIGNvdWxkIGFsc28gZG8gdGhpcyBiZWZvcmUgd2Ug
ZXZlbiBzdGFydCB0aGUgcmVxdWVzdCwgYnV0IHRoYXQgd291bGQgYmUgYXQgdGhlIGV4cGVuc2UK
ICAgICAvLyBvZiBhbGwgcmVxdWVzdCBsYXRlbmN5LCB2ZXJzdXMgYSBvbmUtdGltZSBsYXRlbmN5
IGZvciB0aGUgc21hbGwgc3Vic2V0IG9mIHJlcXVlc3RzIHRoYXQKICAgICAvLyB1c2UgSFRUUCBh
dXRoZW50aWNhdGlvbi4gSW4gdGhlIGVuZCwgdGhpcyBkb2Vzbid0IG1hdHRlciBtdWNoLCBiZWNh
dXNlIHBlcnNpc3RlbnQgY3JlZGVudGlhbHMKICAgICAvLyB3aWxsIGJlY29tZSBzZXNzaW9uIGNy
ZWRlbnRpYWxzIGFmdGVyIHRoZSBmaXJzdCB1c2UuCiAgICAgaWYgKHVzZUNyZWRlbnRpYWxTdG9y
YWdlKSB7Ci0gICAgICAgIGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5jcmVkZW50aWFsRm9yQ2hh
bGxlbmdlKGNoYWxsZW5nZSwgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFj
aywgdGhpcyk7CisgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5nZXRDcmVk
ZW50aWFsRnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKENyZWRlbnRpYWwmJiBjcmVk
ZW50aWFsKSB7CisgICAgICAgICAgICBjb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXVEZNb3ZlKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKENyZWRlbnRpYWwoKSk7CiB9CkBAIC0xMDc0LDEyICsxMDYxLDEwIEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkg
PT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiB8fCBjcmVkZW50aWFsLnBlcnNpc3Rl
bmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50KQogICAgICAgICAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OmRlZmF1bHRDcmVkZW50aWFsU3RvcmFnZSgpLnNldChjcmVkZW50aWFs
LCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2Uo
KS51cmwoKSk7CiAKLSNpZiBQTEFURk9STShHVEspCiAgICAgICAgIGlmIChjcmVkZW50aWFsLnBl
cnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50KSB7CiAgICAgICAg
ICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY3JlZGVudGlh
bCA9IGNyZWRlbnRpYWw7Ci0gICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5Q
ZXJzaXN0ZW50U3RvcmUuY2hhbGxlbmdlID0gY2hhbGxlbmdlOworICAgICAgICAgICAgZC0+bV9j
cmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLnByb3RlY3Rpb25TcGFjZSA9IGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCiAg
ICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VwU2Vzc2lvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2ZGVjZDNk
Li4xZWUxODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDktMzAgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBD
bGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc3NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBVU0UoTElCU0VDUkVUKSBpbnN0
ZWFkIG9mIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtp
dF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2Nhbl9zYXZlX2NyZWRlbnRpYWxzKToKKwogMjAxNi0w
OS0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTmV0d29ya1Nlc3Npb246IEhUVFAgYXV0aGVudGljYXRpb24gZG9lc24ndCB3b3JrIGlmIFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSyBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdC5jcHAKaW5kZXggZjc5ZDAzYS4uOGUyZTcyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuX3NhdmVfY3JlZGVudGlhbHMoV2ViS2l0QXV0aGVudGlj
YXRpb24KIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJ
T05fUkVRVUVTVChyZXF1ZXN0KSwgRkFMU0UpOwogCi0jaWYgRU5BQkxFKENSRURFTlRJQUxfU1RP
UkFHRSkKKyNpZiBVU0UoTElCU0VDUkVUKQogICAgIHJldHVybiAhcmVxdWVzdC0+cHJpdi0+cHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZDsKICNlbHNlCiAgICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZQppbmRleCA3OTRkZmU4Li4xN2MyYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAt
ODcsNiArODcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfWDExX1RBUkdFVCAiV2hl
dGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFgxMSB3aQogV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX1dBWUxBTkRfVEFSR0VUICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0
aGUgV2F5bGFuZCB3aW5kb3dpbmcgdGFyZ2V0LiIgUFVCTElDICR7R1RLM19TVVBQT1JUU19XQVlM
QU5EfSkKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9MSUJOT1RJRlkgIldoZXRoZXIgdG8gZW5h
YmxlIHRoZSBkZWZhdWx0IHdlYiBub3RpZmljYXRpb24gaW1wbGVtZW50YXRpb24uIiBQVUJMSUMg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfTElCSFlQSEVOICJXaGV0aGVyIHRvIGVuYWJs
ZSB0aGUgZGVmYXVsdCBhdXRvbWF0aWMgaHlwaGVuYXRpb24gaW1wbGVtZW50YXRpb24uIiBQVUJM
SUMgT04pCitXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfTElCU0VDUkVUICJXaGV0aGVyIHRvIGVu
YWJsZSB0aGUgcGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgdXNpbmcgbGlic2VjcmV0LiIg
UFVCTElDIE9OKQogCiAjIFByaXZhdGUgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgR1RLKyBwb3J0
LiBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzCiAjIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuIFRo
ZXkgYXJlIGludGVuZGVkIGZvciB1c2Ugb25seSBieSBXZWJLaXQgZGV2ZWxvcGVycy4KQEAgLTEz
Myw3ICsxMzQsNiBAQCBlbmRpZiAoKQogIyB3aXRob3V0IGFwcHJvdmFsIGZyb20gYSBHVEsrIHJl
dmlld2VyLiBUaGVyZSBtdXN0IGJlIHN0cm9uZyByZWFzb24gdG8gc3VwcG9ydAogIyBjaGFuZ2lu
ZyB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbi4KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMgUFVCTElDIE9GRikKLVdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DUkVERU5USUFMX1NUT1JBR0UgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQ
VUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9D
QVRJT04gUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0lDT05EQVRBQkFTRSBQVUJMSUMgT04pCkBAIC0yMjgsMTAgKzIyOCwxMCBAQCBpZiAoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAotaWYgKEVO
QUJMRV9DUkVERU5USUFMX1NUT1JBR0UpCitpZiAoVVNFX0xJQlNFQ1JFVCkKICAgICBmaW5kX3Bh
Y2thZ2UoTGlic2VjcmV0KQogICAgIGlmIChOT1QgTElCU0VDUkVUX0ZPVU5EKQotICAgICAgICBt
ZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJzZWNyZXQgaXMgbmVlZGVkIGZvciBFTkFCTEVfQ1JFREVO
VElBTF9TVE9SQUdFIikKKyAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGlic2VjcmV0IGlz
IG5lZWRlZCBmb3IgVVNFX0xJQlNFQ1JFVCIpCiAgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA0MWNmYTg3Li5mZGNkNjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dl
YktpdEZlYXR1cmVzLmNtYWtlCkBAIC04Myw3ICs4Myw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05f
QkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
ICJUb2dnbGUgTWVzc2FnZUNoYW5uZWwgYW5kIE1lc3NhZ2VQb3J0IHN1cHBvcnQiIFBSSVZBVEUg
T04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HICJU
b2dnbGUgY29udGVudCBmaWx0ZXJpbmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0NPTlRFWFRfTUVOVVMgIlRvZ2dsZSBDb250ZXh0IE1lbnUg
c3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1JF
REVOVElBTF9TVE9SQUdFICJUb2dnbGUgQ3JlZGVudGlhbCBTdG9yYWdlIHN1cHBvcnQiIFBSSVZB
VEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1BfTkVYVCAiVG9nZ2xl
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IDEuMSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NTM19URVhUICJUb2dnbGUgQ1NTMyBUZXh0IHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1Nf
Qk9YX0RFQ09SQVRJT05fQlJFQUsgIlRvZ2dsZSBCb3ggRGVjb3JhdGlvbiBicmVhayAoQ1NTIEJh
Y2tncm91bmRzIGFuZCBCb3JkZXJzKSBzdXBwb3J0IiBQUklWQVRFIE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290320</attachid>
            <date>2016-09-30 03:28:14 -0700</date>
            <delta_ts>2016-09-30 03:39:42 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wcore-persisent-storage.diff</filename>
            <type>text/plain</type>
            <size>33693</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTQ2ZmJlLi42Y2MzNTAx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBFTkFCTEUoQ1JFREVOVElBTF9TVE9SQUdFKSBidWlsZCBmbGFnIGFuZCByZXBsYWNlIGl0IGJ5
IFVTRShMSUJTRUNSRVQpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE2
LTA5LTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSZW1vdmUgb2Jzb2xldGUgY29tbWVudCBmcm9tIE9wdGlvbnNHVEsuY21ha2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMDM4MTg4Li4zMGQ0NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjc3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGhhdmUgdGhpcyBmZWF0dXJlIGJlaGluZCBFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFIGZsYWcs
IHdoaWNoIGlzIGNvbmZ1c2luZywgYmVjYXVzZSB3ZSB1c2UgY3JlZGVudGlhbAorICAgICAgICBz
dG9yYWdlIHVuY29uZGl0aW9uYWxseSBhbmQgdGhpcyBpcyBvbmx5IGFib3V0IHBlcnNpc3RlbnQg
c3RvcmFnZS4gQWxzbyB0aGUgZmxhZyBhc3N1bWVzIGxpYnNlY3JldCBpcyBhdmFpbGFibGUsCisg
ICAgICAgIGFuZCBzaW5jZSBpdCdzIG9ubHkgdXNlZCBieSBHVEsgc29tZXRpbWVzIHdlIHVzZSBH
VEsgaWZkZWZzIGluc3RlYWQgb2YgQ1JFREVOVElBTF9TVE9SQUdFLiBTbywgSSB0aGluayB3ZSBz
aG91bGQKKyAgICAgICAgdXNlIFVTRShMSUJTRUNSRVQpIGluc3RlYWQsIGFuZCByZWR1Y2UgYSBi
aXQgdGhlIGlmZGVmcyBpbiBjb21tb24gc291cCBjb2RlLiBBbm90aGVyIHByb2JsZW0gaXMgdGhh
dCBjdXJyZW50CisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIGFsd2F5cyB1c2VkLCB3aGlsZSBp
dCBzaG91bGQgZGVwZW5kIG9uIHRoZSBjdXJyZW50IG5ldHdvcmsgc3RvcmFnZSBzZXNzaW9uIGFu
ZCBuZXZlciB1c2VkIGluCisgICAgICAgIGVwaGVtZXJhbCBzZXNzaW9ucy4gVGhpcyBwYXRjaCBt
b3ZlcyB0aGUgY29kZSBmcm9tIENyZWRlbnRpYWxCYWNraW5nU3RvcmUgdG8gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cCBhbmQKKyAgICAgICAgbW9kZXJuaXplcyBhIGJpdC4KKworICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOiBSZW1vdmUgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOiBVc2UgVVNFKExJQlNFQ1JFVCkK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVGcm9tUHJvdGVjdGlvblNwYWNl
U2VydmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjphdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVu
dFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnb3RIZWFkZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlv
bik6IERlbGV0ZWQuCisKIDIwMTYtMDktMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUgV2ViQ29yZVN5bmNocm9ub3Vz
TG9hZGVyIGZyb20gUmVzb3VyY2VIYW5kbGVTb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IGIxNTNlNDAuLjQxYmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjIs
OCArMTYyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9ndGsvU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2VHdGsuY3BwCiAKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAotCiAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dSZWZQdHJHdGsuY3BwCmluZGV4IDdiNGQ2OTIuLmZlZDdhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaWYgRU5BQkxFKENSRURFTlRJQUxf
U1RPUkFHRSkKKyNpZiBVU0UoTElCU0VDUkVUKQogI2RlZmluZSBTRUNSRVRfV0lUSF9VTlNUQUJM
RSAxCiAjZGVmaW5lIFNFQ1JFVF9BUElfU1VCSkVDVF9UT19DSEFOR0UgMQogI2luY2x1ZGUgPGxp
YnNlY3JldC9zZWNyZXQuaD4KQEAgLTQ0LDcgKzQ0LDcgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJl
ZkdQdHIoR3RrVGFyZ2V0TGlzdCogcHRyKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYo
cHRyKTsKIH0KIAotI2lmIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCisjaWYgVVNFKExJQlNF
Q1JFVCkKIHRlbXBsYXRlIDw+IFNlY3JldFZhbHVlKiByZWZHUHRyKFNlY3JldFZhbHVlKiBwdHIp
CiB7CiAgICAgaWYgKHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HUmVmUHRyR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5o
CmluZGV4IGM3MzdlM2QuLmJhMWQ2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HUmVmUHRyR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+
IEd0a1RhcmdldExpc3QqIHJlZkdQdHIoR3RrVGFyZ2V0TGlzdCogcHRyKTsKIHRlbXBsYXRlIDw+
IHZvaWQgZGVyZWZHUHRyKEd0a1RhcmdldExpc3QqIHB0cik7CiAKLSNpZiBFTkFCTEUoQ1JFREVO
VElBTF9TVE9SQUdFKQorI2lmIFVTRShMSUJTRUNSRVQpCiB0ZW1wbGF0ZSA8PiBTZWNyZXRWYWx1
ZSogcmVmR1B0cihTZWNyZXRWYWx1ZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRy
KFNlY3JldFZhbHVlKiBwdHIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA1ODliNjZlLi4y
YTRhN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDExIEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKQEAgLTY2LDcgKzcxLDgg
QEAgcHVibGljOgogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIAogICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbiYgc291cE5ldHdvcmtTZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTb3Vw
TmV0d29ya1Nlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4pOworICAg
IHZvaWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9u
U3BhY2UmLCBGdW5jdGlvbjx2b2lkIChDcmVkZW50aWFsJiYpPiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogI2Vsc2UKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oU2Vzc2lvbklELCBOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKTsKQEAgLTgyLDYgKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogI2VsaWYgVVNFKFNP
VVApCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwor
I2lmIFVTRShMSUJTRUNSRVQpCisgICAgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4gbV9w
ZXJzaXNlbnRTdG9yYWdlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFi
bGU+IG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxhYmxlOworI2VuZGlmCiAjZWxzZQogICAgIFJl
ZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CmluZGV4IDYxMjNmMTQuLmNkY2MxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xNzgsMTEgKzE3
OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fcmVkaXJlY3RDb3VudDsK
ICAgICAgICAgc2l6ZV90IG1fcHJldmlvdXNQb3NpdGlvbjsKICAgICAgICAgYm9vbCBtX3VzZUF1
dGhlbnRpY2F0aW9uTWFuYWdlcjsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKLSAgICAgICAgICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKKyAgICAgICAgICAgIFByb3RlY3Rp
b25TcGFjZSBwcm90ZWN0aW9uU3BhY2U7CiAgICAgICAgIH0gbV9jcmVkZW50aWFsRGF0YVRvU2F2
ZUluUGVyc2lzdGVudFN0b3JlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDhmMmMuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgSUdBTElBIFMuTC4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyZWRlbnRpYWxCYWNr
aW5nU3RvcmUuaCIKLQotI2lmIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCi0jZGVmaW5lIFNF
Q1JFVF9XSVRIX1VOU1RBQkxFIDEKLSNkZWZpbmUgU0VDUkVUX0FQSV9TVUJKRUNUX1RPX0NIQU5H
RSAxCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJHUmVm
UHRyR3RrLmgiCi0jaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDxsaWJzZWNy
ZXQvc2VjcmV0Lmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNyZWRlbnRpYWxCYWNraW5nU3RvcmUmIGNyZWRlbnRp
YWxCYWNraW5nU3RvcmUoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
cmVkZW50aWFsQmFja2luZ1N0b3JlLCBiYWNraW5nU3RvcmUsICgpKTsKLSAgICByZXR1cm4gYmFj
a2luZ1N0b3JlOwotfQotCi0jaWYgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkKLXN0YXRpYyBH
UmVmUHRyPEdIYXNoVGFibGU+IGNyZWF0ZUF0dHJpYnV0ZUhhc2hUYWJsZUZyb21DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoKSkKLXsKLSAgICBjb25zdCBjaGFyKiByZWFsbSA9
IHNvdXBfYXV0aF9nZXRfcmVhbG0oY2hhbGxlbmdlLnNvdXBBdXRoKCkpOwotICAgIGlmICghcmVh
bG0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgU291cFVSSSogdXJpID0gc291cF9t
ZXNzYWdlX2dldF91cmkoY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOwotICAgIEdSZWZQdHI8R0hh
c2hUYWJsZT4gYXR0cmlidXRlcyA9IGFkb3B0R1JlZihzZWNyZXRfYXR0cmlidXRlc19idWlsZCgK
LSAgICAgICAgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywKLSAgICAgICAgImRvbWFpbiIs
IHJlYWxtLAotICAgICAgICAic2VydmVyIiwgdXJpLT5ob3N0LAotICAgICAgICAicHJvdG9jb2wi
LCB1cmktPnNjaGVtZSwKLSAgICAgICAgImF1dGh0eXBlIiwgc291cF9hdXRoX2dldF9zY2hlbWVf
bmFtZShjaGFsbGVuZ2Uuc291cEF1dGgoKSksCi0gICAgICAgICJwb3J0IiwgdXJpLT5wb3J0LAot
ICAgICAgICBOVUxMKSk7Ci0gICAgaWYgKGNyZWRlbnRpYWwuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlczsKLQotICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoYXR0cmlidXRlcy5n
ZXQoKSwgZ19zdHJkdXAoInVzZXIiKSwgZ19zdHJkdXAoY3JlZGVudGlhbC51c2VyKCkudXRmOCgp
LmRhdGEoKSkpOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOwotfQotCi1zdHJ1Y3QgQ3JlZGVudGlh
bEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFja0RhdGEgewotICAgIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmU6OkNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VDYWxsYmFjayBjYWxsYmFjazsKLSAgICB2
b2lkKiBkYXRhOwotfTsKLQotc3RhdGljIHZvaWQgY3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5j
UmVhZHlDYWxsYmFjayhTZWNyZXRTZXJ2aWNlKiBzZXJ2aWNlLCBHQXN5bmNSZXN1bHQqIGFzeW5j
UmVzdWx0LCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrRGF0YSogY2Fs
bGJhY2tEYXRhKQotewotICAgIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OkNyZWRlbnRpYWxGb3JD
aGFsbGVuZ2VDYWxsYmFjayBjYWxsYmFjayA9IGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2s7Ci0gICAg
dm9pZCogZGF0YSA9IGNhbGxiYWNrRGF0YS0+ZGF0YTsKLSAgICBkZWxldGUgY2FsbGJhY2tEYXRh
OwotCi0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8R0xp
c3Q+IGVsZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJjaF9maW5pc2goc2VydmljZSwgYXN5bmNS
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvciB8fCAhZWxlbWVudHMgfHwg
IWVsZW1lbnRzLT5kYXRhKSB7Ci0gICAgICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPFNlY3JldEl0ZW0+IHNlY3Jl
dEl0ZW0gPSBhZG9wdEdSZWYoc3RhdGljX2Nhc3Q8U2VjcmV0SXRlbSo+KGVsZW1lbnRzLT5kYXRh
KSk7Ci0gICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKHNlY3Jl
dF9pdGVtX2dldF9hdHRyaWJ1dGVzKHNlY3JldEl0ZW0uZ2V0KCkpKTsKLSAgICBTdHJpbmcgdXNl
ciA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGdfaGFzaF90YWJs
ZV9sb29rdXAoYXR0cmlidXRlcy5nZXQoKSwgInVzZXIiKSkpOwotICAgIGlmICh1c2VyLmlzRW1w
dHkoKSkgewotICAgICAgICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc2l6ZV90IGxlbmd0aDsKLSAgICBHUmVmUHRyPFNlY3JldFZh
bHVlPiBzZWNyZXRWYWx1ZSA9IGFkb3B0R1JlZihzZWNyZXRfaXRlbV9nZXRfc2VjcmV0KHNlY3Jl
dEl0ZW0uZ2V0KCkpKTsKLSAgICBjb25zdCBjaGFyKiBwYXNzd29yZERhdGEgPSBzZWNyZXRfdmFs
dWVfZ2V0KHNlY3JldFZhbHVlLmdldCgpLCAmbGVuZ3RoKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQg
PSBTdHJpbmc6OmZyb21VVEY4KHBhc3N3b3JkRGF0YSwgbGVuZ3RoKTsKLQotICAgIGNhbGxiYWNr
KENyZWRlbnRpYWwodXNlciwgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVu
dCksIGRhdGEpOwotfQotI2VuZGlmIC8vIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCi0KLXZv
aWQgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdl
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEpCi17Ci0jaWYgRU5BQkxFKENSRURFTlRJQUxf
U1RPUkFHRSkKLSAgICAvLyBUaGUgZGVmYXVsdCBmbGFnIG9ubHkgcmV0dXJucyB0aGUgbW9zdCBy
ZWNlbnQgaXRlbSwgbm90IGFsbCBvZiB0aGVtLgotICAgIFNlY3JldFNlYXJjaEZsYWdzIHNlYXJj
aEZsYWdzID0gc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5M
T0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpOwotICAgIENyZWRlbnRpYWxGb3JDaGFs
bGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2tEYXRhKiBjYWxsYmFja0RhdGEgPSBuZXcgQ3JlZGVudGlh
bEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFja0RhdGE7Ci0gICAgY2FsbGJhY2tEYXRhLT5j
YWxsYmFjayA9IGNhbGxiYWNrOwotICAgIGNhbGxiYWNrRGF0YS0+ZGF0YSA9IGRhdGE7Ci0KLSAg
ICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBjcmVhdGVBdHRyaWJ1dGVIYXNoVGFi
bGVGcm9tQ2hhbGxlbmdlKGNoYWxsZW5nZSk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzZWNyZXRfc2VydmljZV9zZWFyY2goCi0gICAgICAgIDAsIC8vIFRoZSBkZWZhdWx0
IFNlY3JldFNlcnZpY2UuCi0gICAgICAgIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssCi0g
ICAgICAgIGF0dHJpYnV0ZXMuZ2V0KCksCi0gICAgICAgIHNlYXJjaEZsYWdzLAotICAgICAgICAw
LCAvLyBjYW5jZWxsYWJsZQotICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2spLAotICAgICAg
ICBjYWxsYmFja0RhdGEpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hhbGxlbmdlKTsKLSAg
ICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwotI2VuZGlmIC8vIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpCi19Ci0KLXZvaWQgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6c3RvcmVDcmVk
ZW50aWFsc0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotI2lmIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpCi0gICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gY3JlYXRl
QXR0cmlidXRlSGFzaFRhYmxlRnJvbUNoYWxsZW5nZShjaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOwot
ICAgIGlmICghYXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1N0cmluZyB1dGY4
UGFzc3dvcmQgPSBjcmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOCgpOwotICAgIEdSZWZQdHI8U2Vj
cmV0VmFsdWU+IG5ld1NlY3JldFZhbHVlID0gYWRvcHRHUmVmKHNlY3JldF92YWx1ZV9uZXcodXRm
OFBhc3N3b3JkLmRhdGEoKSwgdXRmOFBhc3N3b3JkLmxlbmd0aCgpLCAidGV4dC9wbGFpbiIpKTsK
LQotICAgIHNlY3JldF9zZXJ2aWNlX3N0b3JlKAotICAgICAgICAwLCAvLyBUaGUgZGVmYXVsdCBT
ZWNyZXRTZXJ2aWNlLgotICAgICAgICBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLAotICAg
ICAgICBhdHRyaWJ1dGVzLmdldCgpLAotICAgICAgICBTRUNSRVRfQ09MTEVDVElPTl9ERUZBVUxU
LAotICAgICAgICBfKCJXZWJLaXRHVEsrIHBhc3N3b3JkIiksCi0gICAgICAgIG5ld1NlY3JldFZh
bHVlLmdldCgpLAotICAgICAgICAwLCAvLyBjYW5jZWxsYWJsZQotICAgICAgICAwLCAvLyBjYWxs
YmFjawotICAgICAgICAwKTsgLy8gZGF0YQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hhbGxl
bmdlKTsKLSAgICBVTlVTRURfUEFSQU0oY3JlZGVudGlhbCk7Ci0jZW5kaWYgLy8gRU5BQkxFKENS
RURFTlRJQUxfU1RPUkFHRSkKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODRmODAwLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIElHQUxJQSBTLkwuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZV9oCi0jZGVmaW5l
IENyZWRlbnRpYWxCYWNraW5nU3RvcmVfaAotCi0jaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotCi1j
bGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3JlIHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKENyZWRl
bnRpYWxCYWNraW5nU3RvcmUpOwotcHVibGljOgotICAgIGZyaWVuZCBDcmVkZW50aWFsQmFja2lu
Z1N0b3JlJiBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCk7Ci0gICAgdmlydHVhbCB+Q3JlZGVudGlh
bEJhY2tpbmdTdG9yZSgpIHsgfQotCi0gICAgdHlwZWRlZiB2b2lkICgqQ3JlZGVudGlhbEZvckNo
YWxsZW5nZUNhbGxiYWNrKShjb25zdCBDcmVkZW50aWFsJiwgdm9pZCogZGF0YSk7Ci0KLSAgICB2
b2lkIGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdlQ2FsbGJhY2ssIHZvaWQqIGRhdGEpOwotICAgIHZvaWQg
c3RvcmVDcmVkZW50aWFsc0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKLXByaXZhdGU6Ci0gICAgQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZSgpIHsgfQotfTsKLQotQ3JlZGVudGlhbEJhY2tpbmdTdG9yZSYgY3JlZGVudGlhbEJhY2tp
bmdTdG9yZSgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50
aWFsQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCA3ZjA3MWExLi43NGE1NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBT
emVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOCArMzIsMTggQEAK
IAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNz
aW9uLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworI2lmIFVTRShM
SUJTRUNSRVQpCisjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgorI2RlZmluZSBTRUNSRVRfV0lUSF9V
TlNUQUJMRSAxCisjZGVmaW5lIFNFQ1JFVF9BUElfU1VCSkVDVF9UT19DSEFOR0UgMQorI2luY2x1
ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0LDYgKzU1LDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHQKIAogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKIHsKKyNpZiBVU0UoTElCU0VDUkVU
KQorICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxhYmxl
LmdldCgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4mIGRlZmF1bHRTZXNzaW9uKCkKQEAgLTc4LDExICs5MiwxNTAgQEAgU291cE5l
dHdvcmtTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNvdXBOZXR3b3JrU2Vzc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vzc2lvbiA/ICptX3Nlc3Npb24gOiBTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRTb3VwTmV0d29ya1Nlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lv
bj4gc2Vzc2lvbikKKyNpZiBVU0UoTElCU0VDUkVUKQorc3RhdGljIGNvbnN0IGNoYXIqIHNjaGVt
ZUZyb21Qcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlKFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUg
c2VydmVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNlcnZlclR5cGUpIHsKKyAgICBjYXNlIFByb3Rl
Y3Rpb25TcGFjZVNlcnZlckhUVFA6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFA6
CisgICAgICAgIHJldHVybiBTT1VQX1VSSV9TQ0hFTUVfSFRUUDsKKyAgICBjYXNlIFByb3RlY3Rp
b25TcGFjZVNlcnZlckhUVFBTOgorICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQUzoK
KyAgICAgICAgcmV0dXJuIFNPVVBfVVJJX1NDSEVNRV9IVFRQUzsKKyAgICBjYXNlIFByb3RlY3Rp
b25TcGFjZVNlcnZlckZUUDoKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVByb3h5RlRQOgorICAg
ICAgICByZXR1cm4gU09VUF9VUklfU0NIRU1FX0ZUUDsKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFj
ZVNlcnZlckZUUFM6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VQcm94eVNPQ0tTOgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U09VUF9VUklfU0NIRU1FX0hUVFA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBhdXRoVHlwZUZy
b21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZSBzY2hlbWUpCiB7Ci0gICAgbV9zZXNzaW9uID0gV1RGTW92ZShzZXNz
aW9uKTsKKyAgICBzd2l0Y2ggKHNjaGVtZSkgeworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVIVFRQQmFzaWM6CisgICAgICAgIHJldHVybiAiQmFzaWMiOworICAgIGNh
c2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQRGlnZXN0OgorICAgICAg
ICByZXR1cm4gIkRpZ2VzdCI7CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZU5UTE06CisgICAgICAgIHJldHVybiAiTlRMTSI7CisgICAgY2FzZSBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZToKKyAgICAgICAgcmV0dXJuICJOZWdv
dGlhdGUiOworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1M
Rm9ybToKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xpZW50
Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duOgorICAgICAgICByZXR1cm4gInVua25vd24iOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAidW5rbm93biI7
CiB9CisjZW5kaWYgLy8gVVNFKExJQlNFQ1JFVCkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+IGNvbXBs
ZXRpb25IYW5kbGVyKQoreworI2lmIFVTRShMSUJTRUNSRVQpCisgICAgaWYgKG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ3JlZGVudGlhbCgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgcmVhbG0gPSBw
cm90ZWN0aW9uU3BhY2UucmVhbG0oKTsKKyAgICBpZiAocmVhbG0uaXNFbXB0eSgpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENyZWRlbnRpYWwoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoc2Vj
cmV0X2F0dHJpYnV0ZXNfYnVpbGQoU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywKKyAgICAg
ICAgImRvbWFpbiIsIHJlYWxtLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICJzZXJ2ZXIiLCBwcm90
ZWN0aW9uU3BhY2UuaG9zdCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICJwb3J0IiwgcHJvdGVj
dGlvblNwYWNlLnBvcnQoKSwKKyAgICAgICAgInByb3RvY29sIiwgc2NoZW1lRnJvbVByb3RlY3Rp
b25TcGFjZVNlcnZlclR5cGUocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSksCisgICAgICAg
ICJhdXRodHlwZSIsIGF1dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lKHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSwKKyAgICAgICAgbnVs
bHB0cikpOworICAgIGlmICghYXR0cmlidXRlcykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDcmVkZW50aWFsKCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgbV9wZXJzaXNl
bnRTdG9yYWdlQ2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7Cisg
ICAgbV9wZXJzaXNlbnRTdG9yYWdlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1ND
SEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJD
SF9MT0FEX1NFQ1JFVFMpLCBtX3BlcnNpc2VudFN0b3JhZ2VDYW5jZWxsYWJsZS5nZXQoKSwKKyAg
ICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICAgICAgICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGVsZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJj
aF9maW5pc2goU0VDUkVUX1NFUlZJQ0Uoc291cmNlKSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKKyAgICAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMgKGVycm9yLmdldCgpLCBHX0lPX0VS
Uk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24qPih1c2VyRGF0YSk7CisgICAgICAgICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShzZXNzaW9uLT5tX3BlcnNpc2VudFN0b3JhZ2VD
b21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIWVs
ZW1lbnRzIHx8ICFlbGVtZW50cy0+ZGF0YSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKENyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBHUmVmUHRyPFNlY3JldEl0ZW0+IHNlY3JldEl0ZW0gPSBhZG9w
dEdSZWYoc3RhdGljX2Nhc3Q8U2VjcmV0SXRlbSo+KGVsZW1lbnRzLT5kYXRhKSk7CisgICAgICAg
ICAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoc2VjcmV0X2l0
ZW1fZ2V0X2F0dHJpYnV0ZXMoc2VjcmV0SXRlbS5nZXQoKSkpOworICAgICAgICAgICAgU3RyaW5n
IHVzZXIgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hf
dGFibGVfbG9va3VwKGF0dHJpYnV0ZXMuZ2V0KCksICJ1c2VyIikpKTsKKyAgICAgICAgICAgIGlm
ICh1c2VyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENy
ZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICAgICAgR1JlZlB0cjxTZWNyZXRWYWx1
ZT4gc2VjcmV0VmFsdWUgPSBhZG9wdEdSZWYoc2VjcmV0X2l0ZW1fZ2V0X3NlY3JldChzZWNyZXRJ
dGVtLmdldCgpKSk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXNzd29yZERhdGEgPSBzZWNy
ZXRfdmFsdWVfZ2V0KHNlY3JldFZhbHVlLmdldCgpLCAmbGVuZ3RoKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENyZWRlbnRpYWwodXNlciwgU3RyaW5nOjpmcm9tVVRGOChwYXNzd29y
ZERhdGEsIGxlbmd0aCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCkpOworICAgIH0s
IHRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihDcmVkZW50aWFsKCkpOworI2VuZGlmCiB9CiAKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpCit7CisjaWYgVVNFKExJQlNFQ1JFVCkKKyAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNyZWRlbnRpYWwuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBTdHJpbmcmIHJlYWxtID0gcHJvdGVjdGlv
blNwYWNlLnJlYWxtKCk7CisgICAgaWYgKHJlYWxtLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKHNlY3Jl
dF9hdHRyaWJ1dGVzX2J1aWxkKFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssCisgICAgICAg
ICJkb21haW4iLCByZWFsbS51dGY4KCkuZGF0YSgpLAorICAgICAgICAic2VydmVyIiwgcHJvdGVj
dGlvblNwYWNlLmhvc3QoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAicG9ydCIsIHByb3RlY3Rp
b25TcGFjZS5wb3J0KCksCisgICAgICAgICJwcm90b2NvbCIsIHNjaGVtZUZyb21Qcm90ZWN0aW9u
U3BhY2VTZXJ2ZXJUeXBlKHByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpLAorICAgICAgICAi
YXV0aHR5cGUiLCBhdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZShwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSksCisgICAgICAgIG51bGxw
dHIpKTsKKyAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGdfaGFz
aF90YWJsZV9pbnNlcnQoYXR0cmlidXRlcy5nZXQoKSwgZ19zdHJkdXAoInVzZXIiKSwgZ19zdHJk
dXAoY3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSkpOworICAgIENTdHJpbmcgdXRmOFBh
c3N3b3JkID0gY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0ZjgoKTsKKyAgICBHUmVmUHRyPFNlY3Jl
dFZhbHVlPiBuZXdTZWNyZXRWYWx1ZSA9IGFkb3B0R1JlZihzZWNyZXRfdmFsdWVfbmV3KHV0ZjhQ
YXNzd29yZC5kYXRhKCksIHV0ZjhQYXNzd29yZC5sZW5ndGgoKSwgInRleHQvcGxhaW4iKSk7Cisg
ICAgc2VjcmV0X3NlcnZpY2Vfc3RvcmUobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVU
V09SSywgYXR0cmlidXRlcy5nZXQoKSwgU0VDUkVUX0NPTExFQ1RJT05fREVGQVVMVCwgXygiV2Vi
S2l0R1RLKyBwYXNzd29yZCIpLAorICAgICAgICBuZXdTZWNyZXRWYWx1ZS5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwcm90ZWN0aW9u
U3BhY2UpOworICAgIFVOVVNFRF9QQVJBTShjcmVkZW50aWFsKTsKICNlbmRpZgorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAKaW5kZXggNTdhMTAxZi4uMzc3Y2Y0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAg
LTY2LDEwICs2Niw2IEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVn
aXN0cnlJbXBsLmgiCiAKLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IHNpemVfdCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplID0gODE5MjsKQEAgLTIzMCwxNyArMjI2
LDE1IEBAIHN0YXRpYyB2b2lkIGdvdEhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSogbWVzc2Fn
ZSwgZ3BvaW50ZXIgZGF0YSkKIAogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5k
bGUtPmdldEludGVybmFsKCk7CiAKLSNpZiBQTEFURk9STShHVEspCiAgICAgLy8gV2UgYXJlIGEg
Yml0IG1vcmUgY29uc2VydmF0aXZlIHdpdGggdGhlIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9y
YWdlIHRoYW4gdGhlIHNlc3Npb24gc3RvcmUsCiAgICAgLy8gc2luY2Ugd2UgYXJlIHdhaXRpbmcg
dW50aWwgd2Uga25vdyB0aGF0IHRoaXMgYXV0aGVudGljYXRpb24gc3VjY2VlZGVkIGJlZm9yZSBh
Y3R1YWxseSBzdG9yaW5nLgogICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSB3YW50IHRvIGF2b2lk
IGhpdHRpbmcgdGhlIGRpc2sgdHdpY2UgKG9uY2UgdG8gYWRkIGFuZCBvbmNlIHRvIHJlbW92ZSkg
Zm9yCiAgICAgLy8gaW5jb3JyZWN0IGNyZWRlbnRpYWxzIG9yIHBvbGx1dGluZyB0aGUga2V5Y2hh
aW4gd2l0aCBpbnZhbGlkIGNyZWRlbnRpYWxzLgotICAgIGlmICghaXNBdXRoZW50aWNhdGlvbkZh
aWx1cmVTdGF0dXNDb2RlKG1lc3NhZ2UtPnN0YXR1c19jb2RlKSAmJiBtZXNzYWdlLT5zdGF0dXNf
Y29kZSA8IDUwMCAmJiAhZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3Jl
LmNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNyZWRlbnRpYWxCYWNraW5nU3RvcmUo
KS5zdG9yZUNyZWRlbnRpYWxzRm9yQ2hhbGxlbmdlKAotICAgICAgICAgICAgZC0+bV9jcmVkZW50
aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLmNoYWxsZW5nZSwKKyAgICBpZiAoIWlzQXV0
aGVudGljYXRpb25GYWlsdXJlU3RhdHVzQ29kZShtZXNzYWdlLT5zdGF0dXNfY29kZSkgJiYgbWVz
c2FnZS0+c3RhdHVzX2NvZGUgPCA1MDApIHsKKyAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLnNhdmVDcmVkZW50aWFsVG9QZXJzaXN0ZW50U3RvcmFnZSgKKyAgICAgICAgICAg
IGQtPm1fY3JlZGVudGlhbERhdGFUb1NhdmVJblBlcnNpc3RlbnRTdG9yZS5wcm90ZWN0aW9uU3Bh
Y2UsCiAgICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3Rv
cmUuY3JlZGVudGlhbCk7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBUaGUgb3JpZ2luYWwgcmVz
cG9uc2Ugd2lsbCBiZSBuZWVkZWQgbGF0ZXIgdG8gZmVlZCB0byB3aWxsU2VuZFJlcXVlc3QgaW4K
ICAgICAvLyBkb1JlZGlyZWN0KCkgaW4gY2FzZSB3ZSBhcmUgcmVkaXJlY3RlZC4gRm9yIHRoaXMg
cmVhc29uLCB3ZSBzdG9yZSBpdCBoZXJlLgpAQCAtOTcwLDEzICs5NjQsNiBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xFcnJvcnMpCiAgICAg
Z0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsKIH0KIAotI2lmIFBMQVRGT1JNKEdU
SykKLXZvaWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFjayhjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsLCB2b2lkKiBkYXRhKQotewotICAgIHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlKj4oZGF0YSktPmNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNyZWRlbnRpYWwpOwotfQotI2VuZGlmCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2N1
cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtMTAzMCwxNiArMTAxNywxNiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbAogICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxs
ZW5nZTsKICAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShjaGFsbGVuZ2Uuc291cFNlc3Np
b24oKSwgY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOwogCi0jaWYgUExBVEZPUk0oR1RLKQogICAg
IC8vIFdlIGNvdWxkIGFsc28gZG8gdGhpcyBiZWZvcmUgd2UgZXZlbiBzdGFydCB0aGUgcmVxdWVz
dCwgYnV0IHRoYXQgd291bGQgYmUgYXQgdGhlIGV4cGVuc2UKICAgICAvLyBvZiBhbGwgcmVxdWVz
dCBsYXRlbmN5LCB2ZXJzdXMgYSBvbmUtdGltZSBsYXRlbmN5IGZvciB0aGUgc21hbGwgc3Vic2V0
IG9mIHJlcXVlc3RzIHRoYXQKICAgICAvLyB1c2UgSFRUUCBhdXRoZW50aWNhdGlvbi4gSW4gdGhl
IGVuZCwgdGhpcyBkb2Vzbid0IG1hdHRlciBtdWNoLCBiZWNhdXNlIHBlcnNpc3RlbnQgY3JlZGVu
dGlhbHMKICAgICAvLyB3aWxsIGJlY29tZSBzZXNzaW9uIGNyZWRlbnRpYWxzIGFmdGVyIHRoZSBm
aXJzdCB1c2UuCiAgICAgaWYgKHVzZUNyZWRlbnRpYWxTdG9yYWdlKSB7Ci0gICAgICAgIGNyZWRl
bnRpYWxCYWNraW5nU3RvcmUoKS5jcmVkZW50aWFsRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgZ2V0
Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5nZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKENyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgICAg
ICBjb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXVEZNb3ZlKGNyZWRl
bnRpYWwpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAog
ICAgIGNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENyZWRlbnRpYWwo
KSk7CiB9CkBAIC0xMDc0LDEyICsxMDYxLDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAg
ICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRm9yU2Vzc2lvbiB8fCBjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBl
cnNpc3RlbmNlUGVybWFuZW50KQogICAgICAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OmRlZmF1
bHRDcmVkZW50aWFsU3RvcmFnZSgpLnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAKLSNpZiBQTEFU
Rk9STShHVEspCiAgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlUGVybWFuZW50KSB7CiAgICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxE
YXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7Ci0gICAg
ICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY2hhbGxl
bmdlID0gY2hhbGxlbmdlOworICAgICAgICAgICAgZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUlu
UGVyc2lzdGVudFN0b3JlLnByb3RlY3Rpb25TcGFjZSA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5z
b3VwU2Vzc2lvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2ZGVjZDNkLi4xZWUxODY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3Jl
ZGVudGlhbCBzdG9yYWdlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2Mjc3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBVU0UoTElCU0VDUkVUKSBpbnN0ZWFkIG9mIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2Nhbl9zYXZlX2NyZWRlbnRpYWxzKToKKwogMjAxNi0wOS0yOSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTmV0d29ya1Nlc3Npb246IEhU
VFAgYXV0aGVudGljYXRpb24gZG9lc24ndCB3b3JrIGlmIFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSyBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKaW5k
ZXggZjc5ZDAzYS4uOGUyZTcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCkBA
IC0xNjEsNyArMTYxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Y2FuX3NhdmVfY3JlZGVudGlhbHMoV2ViS2l0QXV0aGVudGljYXRpb24KIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fUkVRVUVTVChyZXF1ZXN0KSwg
RkFMU0UpOwogCi0jaWYgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkKKyNpZiBVU0UoTElCU0VD
UkVUKQogICAgIHJldHVybiAhcmVxdWVzdC0+cHJpdi0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsK
ICNlbHNlCiAgICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA3OTRkZmU4
Li4xN2MyYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtODcsNiArODcsNyBAQCBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfWDExX1RBUkdFVCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9y
dCBmb3IgdGhlIFgxMSB3aQogV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1dBWUxBTkRfVEFS
R0VUICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgV2F5bGFuZCB3aW5kb3dpbmcg
dGFyZ2V0LiIgUFVCTElDICR7R1RLM19TVVBQT1JUU19XQVlMQU5EfSkKIFdFQktJVF9PUFRJT05f
REVGSU5FKFVTRV9MSUJOT1RJRlkgIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IHdlYiBu
b3RpZmljYXRpb24gaW1wbGVtZW50YXRpb24uIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RklORShVU0VfTElCSFlQSEVOICJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCBhdXRvbWF0
aWMgaHlwaGVuYXRpb24gaW1wbGVtZW50YXRpb24uIiBQVUJMSUMgT04pCitXRUJLSVRfT1BUSU9O
X0RFRklORShVU0VfTElCU0VDUkVUICJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgcGVyc2lzdGVudCBj
cmVkZW50aWFsIHN0b3JhZ2UgdXNpbmcgbGlic2VjcmV0LiIgUFVCTElDIE9OKQogCiAjIFByaXZh
dGUgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgR1RLKyBwb3J0LiBDaGFuZ2luZyB0aGVzZSBvcHRp
b25zIGlzCiAjIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuIFRoZXkgYXJlIGludGVuZGVkIGZvciB1
c2Ugb25seSBieSBXZWJLaXQgZGV2ZWxvcGVycy4KQEAgLTEzMyw3ICsxMzQsNiBAQCBlbmRpZiAo
KQogIyB3aXRob3V0IGFwcHJvdmFsIGZyb20gYSBHVEsrIHJldmlld2VyLiBUaGVyZSBtdXN0IGJl
IHN0cm9uZyByZWFzb24gdG8gc3VwcG9ydAogIyBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIG9w
dGlvbi4KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMgUFVCTElDIE9GRikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9DUkVERU5USUFMX1NUT1JBR0UgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9DQVRJT04gUFVCTElDIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lDT05EQVRBQkFTRSBQVUJMSUMg
T04pCkBAIC0yMjgsMTAgKzIyOCwxMCBAQCBpZiAoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAotaWYgKEVOQUJMRV9DUkVERU5USUFMX1NUT1JB
R0UpCitpZiAoVVNFX0xJQlNFQ1JFVCkKICAgICBmaW5kX3BhY2thZ2UoTGlic2VjcmV0KQogICAg
IGlmIChOT1QgTElCU0VDUkVUX0ZPVU5EKQotICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJs
aWJzZWNyZXQgaXMgbmVlZGVkIGZvciBFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFIikKKyAgICAg
ICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGlic2VjcmV0IGlzIG5lZWRlZCBmb3IgVVNFX0xJQlNF
Q1JFVCIpCiAgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQppbmRleCA0MWNmYTg3Li5mZGNkNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0
RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBA
IC04Myw3ICs4Myw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HICJUb2dnbGUgTWVzc2FnZUNoYW5u
ZWwgYW5kIE1lc3NhZ2VQb3J0IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HICJUb2dnbGUgY29udGVudCBmaWx0ZXJp
bmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0NPTlRFWFRfTUVOVVMgIlRvZ2dsZSBDb250ZXh0IE1lbnUgc3VwcG9ydCIgUFJJVkFURSBPTikK
LSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFICJUb2dn
bGUgQ3JlZGVudGlhbCBTdG9yYWdlIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9DU1BfTkVYVCAiVG9nZ2xlIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IDEuMSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfQ1NTM19URVhUICJUb2dnbGUgQ1NTMyBUZXh0IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsg
IlRvZ2dsZSBCb3ggRGVjb3JhdGlvbiBicmVhayAoQ1NTIEJhY2tncm91bmRzIGFuZCBCb3JkZXJz
KSBzdXBwb3J0IiBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDk4MTE3ZWMuLmFiNWVjYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOS0z
MCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1NPVVBdIENsZWFudXAgcGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFVTRShMSUJTRUNS
RVQpIGluc3RlYWQgb2YgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25TdG9yYWdlKToKKwogMjAxNi0wOS0yOSAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgW0VG
TF0gQWRkIHNlYXJjaCBidXR0b24gdG8gdXJsIGJhciBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRoZW50aWNhdGlv
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRp
Y2F0aW9uLmNwcAppbmRleCAwZDBlMDc2Li5iYmQ0ZTVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNw
cApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRp
b25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAKICAgICAvLyBJ
ZiBXZWJLaXQgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBsaWJzZWNyZXQsIGFuZCBwcml2YXRlIGJy
b3dzaW5nIGlzIGRpc2FibGVkCiAgICAgLy8gdGhlbiBjaGVjayB0aGF0IGNyZWRlbnRpYWxzIGNh
biBiZSBzYXZlZC4KLSNpZiBFTkFCTEUoQ1JFREVOVElBTF9TVE9SQUdFKQorI2lmIFVTRShMSUJT
RUNSRVQpCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyksIEZBTFNFKTsKICAg
ICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hdXRoLXRlc3QuaHRtbCIp
LmRhdGEoKSk7CiAgICAgcmVxdWVzdCA9IHRlc3QtPndhaXRGb3JBdXRoZW50aWNhdGlvblJlcXVl
c3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290322</attachid>
            <date>2016-09-30 03:39:42 -0700</date>
            <delta_ts>2016-09-30 07:23:22 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wcore-persisent-storage.diff</filename>
            <type>text/plain</type>
            <size>33693</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTQ2ZmJlLi42Y2MzNTAx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBFTkFCTEUoQ1JFREVOVElBTF9TVE9SQUdFKSBidWlsZCBmbGFnIGFuZCByZXBsYWNlIGl0IGJ5
IFVTRShMSUJTRUNSRVQpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE2
LTA5LTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSZW1vdmUgb2Jzb2xldGUgY29tbWVudCBmcm9tIE9wdGlvbnNHVEsuY21ha2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMDM4MTg4Li4zMGQ0NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdl
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjc3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGhhdmUgdGhpcyBmZWF0dXJlIGJlaGluZCBFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFIGZsYWcs
IHdoaWNoIGlzIGNvbmZ1c2luZywgYmVjYXVzZSB3ZSB1c2UgY3JlZGVudGlhbAorICAgICAgICBz
dG9yYWdlIHVuY29uZGl0aW9uYWxseSBhbmQgdGhpcyBpcyBvbmx5IGFib3V0IHBlcnNpc3RlbnQg
c3RvcmFnZS4gQWxzbyB0aGUgZmxhZyBhc3N1bWVzIGxpYnNlY3JldCBpcyBhdmFpbGFibGUsCisg
ICAgICAgIGFuZCBzaW5jZSBpdCdzIG9ubHkgdXNlZCBieSBHVEsgc29tZXRpbWVzIHdlIHVzZSBH
VEsgaWZkZWZzIGluc3RlYWQgb2YgQ1JFREVOVElBTF9TVE9SQUdFLiBTbywgSSB0aGluayB3ZSBz
aG91bGQKKyAgICAgICAgdXNlIFVTRShMSUJTRUNSRVQpIGluc3RlYWQsIGFuZCByZWR1Y2UgYSBi
aXQgdGhlIGlmZGVmcyBpbiBjb21tb24gc291cCBjb2RlLiBBbm90aGVyIHByb2JsZW0gaXMgdGhh
dCBjdXJyZW50CisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIGFsd2F5cyB1c2VkLCB3aGlsZSBp
dCBzaG91bGQgZGVwZW5kIG9uIHRoZSBjdXJyZW50IG5ldHdvcmsgc3RvcmFnZSBzZXNzaW9uIGFu
ZCBuZXZlciB1c2VkIGluCisgICAgICAgIGVwaGVtZXJhbCBzZXNzaW9ucy4gVGhpcyBwYXRjaCBt
b3ZlcyB0aGUgY29kZSBmcm9tIENyZWRlbnRpYWxCYWNraW5nU3RvcmUgdG8gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cCBhbmQKKyAgICAgICAgbW9kZXJuaXplcyBhIGJpdC4KKworICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOiBSZW1vdmUgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOiBVc2UgVVNFKExJQlNFQ1JFVCkK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVGcm9tUHJvdGVjdGlvblNwYWNl
U2VydmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjphdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVu
dFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnb3RIZWFkZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlv
bik6IERlbGV0ZWQuCisKIDIwMTYtMDktMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUgV2ViQ29yZVN5bmNocm9ub3Vz
TG9hZGVyIGZyb20gUmVzb3VyY2VIYW5kbGVTb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IGIxNTNlNDAuLjQxYmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjIs
OCArMTYyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9ndGsvU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2VHdGsuY3BwCiAKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAotCiAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dSZWZQdHJHdGsuY3BwCmluZGV4IDdiNGQ2OTIuLmZlZDdhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaWYgRU5BQkxFKENSRURFTlRJQUxf
U1RPUkFHRSkKKyNpZiBVU0UoTElCU0VDUkVUKQogI2RlZmluZSBTRUNSRVRfV0lUSF9VTlNUQUJM
RSAxCiAjZGVmaW5lIFNFQ1JFVF9BUElfU1VCSkVDVF9UT19DSEFOR0UgMQogI2luY2x1ZGUgPGxp
YnNlY3JldC9zZWNyZXQuaD4KQEAgLTQ0LDcgKzQ0LDcgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJl
ZkdQdHIoR3RrVGFyZ2V0TGlzdCogcHRyKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYo
cHRyKTsKIH0KIAotI2lmIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCisjaWYgVVNFKExJQlNF
Q1JFVCkKIHRlbXBsYXRlIDw+IFNlY3JldFZhbHVlKiByZWZHUHRyKFNlY3JldFZhbHVlKiBwdHIp
CiB7CiAgICAgaWYgKHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HUmVmUHRyR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5o
CmluZGV4IGM3MzdlM2QuLmJhMWQ2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HUmVmUHRyR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+
IEd0a1RhcmdldExpc3QqIHJlZkdQdHIoR3RrVGFyZ2V0TGlzdCogcHRyKTsKIHRlbXBsYXRlIDw+
IHZvaWQgZGVyZWZHUHRyKEd0a1RhcmdldExpc3QqIHB0cik7CiAKLSNpZiBFTkFCTEUoQ1JFREVO
VElBTF9TVE9SQUdFKQorI2lmIFVTRShMSUJTRUNSRVQpCiB0ZW1wbGF0ZSA8PiBTZWNyZXRWYWx1
ZSogcmVmR1B0cihTZWNyZXRWYWx1ZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRy
KFNlY3JldFZhbHVlKiBwdHIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA1ODliNjZlLi4y
YTRhN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDExIEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKQEAgLTY2LDcgKzcxLDgg
QEAgcHVibGljOgogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIAogICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbiYgc291cE5ldHdvcmtTZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTb3Vw
TmV0d29ya1Nlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4pOworICAg
IHZvaWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9u
U3BhY2UmLCBGdW5jdGlvbjx2b2lkIChDcmVkZW50aWFsJiYpPiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogI2Vsc2UKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oU2Vzc2lvbklELCBOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKTsKQEAgLTgyLDYgKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogI2VsaWYgVVNFKFNP
VVApCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwor
I2lmIFVTRShMSUJTRUNSRVQpCisgICAgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4gbV9w
ZXJzaXNlbnRTdG9yYWdlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFi
bGU+IG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxhYmxlOworI2VuZGlmCiAjZWxzZQogICAgIFJl
ZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CmluZGV4IDYxMjNmMTQuLmNkY2MxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xNzgsMTEgKzE3
OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fcmVkaXJlY3RDb3VudDsK
ICAgICAgICAgc2l6ZV90IG1fcHJldmlvdXNQb3NpdGlvbjsKICAgICAgICAgYm9vbCBtX3VzZUF1
dGhlbnRpY2F0aW9uTWFuYWdlcjsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKLSAgICAgICAgICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKKyAgICAgICAgICAgIFByb3RlY3Rp
b25TcGFjZSBwcm90ZWN0aW9uU3BhY2U7CiAgICAgICAgIH0gbV9jcmVkZW50aWFsRGF0YVRvU2F2
ZUluUGVyc2lzdGVudFN0b3JlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDhmMmMuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgSUdBTElBIFMuTC4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyZWRlbnRpYWxCYWNr
aW5nU3RvcmUuaCIKLQotI2lmIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCi0jZGVmaW5lIFNF
Q1JFVF9XSVRIX1VOU1RBQkxFIDEKLSNkZWZpbmUgU0VDUkVUX0FQSV9TVUJKRUNUX1RPX0NIQU5H
RSAxCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJHUmVm
UHRyR3RrLmgiCi0jaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDxsaWJzZWNy
ZXQvc2VjcmV0Lmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNyZWRlbnRpYWxCYWNraW5nU3RvcmUmIGNyZWRlbnRp
YWxCYWNraW5nU3RvcmUoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
cmVkZW50aWFsQmFja2luZ1N0b3JlLCBiYWNraW5nU3RvcmUsICgpKTsKLSAgICByZXR1cm4gYmFj
a2luZ1N0b3JlOwotfQotCi0jaWYgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkKLXN0YXRpYyBH
UmVmUHRyPEdIYXNoVGFibGU+IGNyZWF0ZUF0dHJpYnV0ZUhhc2hUYWJsZUZyb21DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoKSkKLXsKLSAgICBjb25zdCBjaGFyKiByZWFsbSA9
IHNvdXBfYXV0aF9nZXRfcmVhbG0oY2hhbGxlbmdlLnNvdXBBdXRoKCkpOwotICAgIGlmICghcmVh
bG0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgU291cFVSSSogdXJpID0gc291cF9t
ZXNzYWdlX2dldF91cmkoY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOwotICAgIEdSZWZQdHI8R0hh
c2hUYWJsZT4gYXR0cmlidXRlcyA9IGFkb3B0R1JlZihzZWNyZXRfYXR0cmlidXRlc19idWlsZCgK
LSAgICAgICAgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywKLSAgICAgICAgImRvbWFpbiIs
IHJlYWxtLAotICAgICAgICAic2VydmVyIiwgdXJpLT5ob3N0LAotICAgICAgICAicHJvdG9jb2wi
LCB1cmktPnNjaGVtZSwKLSAgICAgICAgImF1dGh0eXBlIiwgc291cF9hdXRoX2dldF9zY2hlbWVf
bmFtZShjaGFsbGVuZ2Uuc291cEF1dGgoKSksCi0gICAgICAgICJwb3J0IiwgdXJpLT5wb3J0LAot
ICAgICAgICBOVUxMKSk7Ci0gICAgaWYgKGNyZWRlbnRpYWwuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlczsKLQotICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoYXR0cmlidXRlcy5n
ZXQoKSwgZ19zdHJkdXAoInVzZXIiKSwgZ19zdHJkdXAoY3JlZGVudGlhbC51c2VyKCkudXRmOCgp
LmRhdGEoKSkpOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOwotfQotCi1zdHJ1Y3QgQ3JlZGVudGlh
bEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFja0RhdGEgewotICAgIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmU6OkNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VDYWxsYmFjayBjYWxsYmFjazsKLSAgICB2
b2lkKiBkYXRhOwotfTsKLQotc3RhdGljIHZvaWQgY3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5j
UmVhZHlDYWxsYmFjayhTZWNyZXRTZXJ2aWNlKiBzZXJ2aWNlLCBHQXN5bmNSZXN1bHQqIGFzeW5j
UmVzdWx0LCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrRGF0YSogY2Fs
bGJhY2tEYXRhKQotewotICAgIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OkNyZWRlbnRpYWxGb3JD
aGFsbGVuZ2VDYWxsYmFjayBjYWxsYmFjayA9IGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2s7Ci0gICAg
dm9pZCogZGF0YSA9IGNhbGxiYWNrRGF0YS0+ZGF0YTsKLSAgICBkZWxldGUgY2FsbGJhY2tEYXRh
OwotCi0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8R0xp
c3Q+IGVsZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJjaF9maW5pc2goc2VydmljZSwgYXN5bmNS
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvciB8fCAhZWxlbWVudHMgfHwg
IWVsZW1lbnRzLT5kYXRhKSB7Ci0gICAgICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPFNlY3JldEl0ZW0+IHNlY3Jl
dEl0ZW0gPSBhZG9wdEdSZWYoc3RhdGljX2Nhc3Q8U2VjcmV0SXRlbSo+KGVsZW1lbnRzLT5kYXRh
KSk7Ci0gICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKHNlY3Jl
dF9pdGVtX2dldF9hdHRyaWJ1dGVzKHNlY3JldEl0ZW0uZ2V0KCkpKTsKLSAgICBTdHJpbmcgdXNl
ciA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGdfaGFzaF90YWJs
ZV9sb29rdXAoYXR0cmlidXRlcy5nZXQoKSwgInVzZXIiKSkpOwotICAgIGlmICh1c2VyLmlzRW1w
dHkoKSkgewotICAgICAgICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc2l6ZV90IGxlbmd0aDsKLSAgICBHUmVmUHRyPFNlY3JldFZh
bHVlPiBzZWNyZXRWYWx1ZSA9IGFkb3B0R1JlZihzZWNyZXRfaXRlbV9nZXRfc2VjcmV0KHNlY3Jl
dEl0ZW0uZ2V0KCkpKTsKLSAgICBjb25zdCBjaGFyKiBwYXNzd29yZERhdGEgPSBzZWNyZXRfdmFs
dWVfZ2V0KHNlY3JldFZhbHVlLmdldCgpLCAmbGVuZ3RoKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQg
PSBTdHJpbmc6OmZyb21VVEY4KHBhc3N3b3JkRGF0YSwgbGVuZ3RoKTsKLQotICAgIGNhbGxiYWNr
KENyZWRlbnRpYWwodXNlciwgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVu
dCksIGRhdGEpOwotfQotI2VuZGlmIC8vIEVOQUJMRShDUkVERU5USUFMX1NUT1JBR0UpCi0KLXZv
aWQgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdl
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEpCi17Ci0jaWYgRU5BQkxFKENSRURFTlRJQUxf
U1RPUkFHRSkKLSAgICAvLyBUaGUgZGVmYXVsdCBmbGFnIG9ubHkgcmV0dXJucyB0aGUgbW9zdCBy
ZWNlbnQgaXRlbSwgbm90IGFsbCBvZiB0aGVtLgotICAgIFNlY3JldFNlYXJjaEZsYWdzIHNlYXJj
aEZsYWdzID0gc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5M
T0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpOwotICAgIENyZWRlbnRpYWxGb3JDaGFs
bGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2tEYXRhKiBjYWxsYmFja0RhdGEgPSBuZXcgQ3JlZGVudGlh
bEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFja0RhdGE7Ci0gICAgY2FsbGJhY2tEYXRhLT5j
YWxsYmFjayA9IGNhbGxiYWNrOwotICAgIGNhbGxiYWNrRGF0YS0+ZGF0YSA9IGRhdGE7Ci0KLSAg
ICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBjcmVhdGVBdHRyaWJ1dGVIYXNoVGFi
bGVGcm9tQ2hhbGxlbmdlKGNoYWxsZW5nZSk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzZWNyZXRfc2VydmljZV9zZWFyY2goCi0gICAgICAgIDAsIC8vIFRoZSBkZWZhdWx0
IFNlY3JldFNlcnZpY2UuCi0gICAgICAgIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssCi0g
ICAgICAgIGF0dHJpYnV0ZXMuZ2V0KCksCi0gICAgICAgIHNlYXJjaEZsYWdzLAotICAgICAgICAw
LCAvLyBjYW5jZWxsYWJsZQotICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2spLAotICAgICAg
ICBjYWxsYmFja0RhdGEpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hhbGxlbmdlKTsKLSAg
ICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwotI2VuZGlmIC8vIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpCi19Ci0KLXZvaWQgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6c3RvcmVDcmVk
ZW50aWFsc0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotI2lmIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpCi0gICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gY3JlYXRl
QXR0cmlidXRlSGFzaFRhYmxlRnJvbUNoYWxsZW5nZShjaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOwot
ICAgIGlmICghYXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1N0cmluZyB1dGY4
UGFzc3dvcmQgPSBjcmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOCgpOwotICAgIEdSZWZQdHI8U2Vj
cmV0VmFsdWU+IG5ld1NlY3JldFZhbHVlID0gYWRvcHRHUmVmKHNlY3JldF92YWx1ZV9uZXcodXRm
OFBhc3N3b3JkLmRhdGEoKSwgdXRmOFBhc3N3b3JkLmxlbmd0aCgpLCAidGV4dC9wbGFpbiIpKTsK
LQotICAgIHNlY3JldF9zZXJ2aWNlX3N0b3JlKAotICAgICAgICAwLCAvLyBUaGUgZGVmYXVsdCBT
ZWNyZXRTZXJ2aWNlLgotICAgICAgICBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLAotICAg
ICAgICBhdHRyaWJ1dGVzLmdldCgpLAotICAgICAgICBTRUNSRVRfQ09MTEVDVElPTl9ERUZBVUxU
LAotICAgICAgICBfKCJXZWJLaXRHVEsrIHBhc3N3b3JkIiksCi0gICAgICAgIG5ld1NlY3JldFZh
bHVlLmdldCgpLAotICAgICAgICAwLCAvLyBjYW5jZWxsYWJsZQotICAgICAgICAwLCAvLyBjYWxs
YmFjawotICAgICAgICAwKTsgLy8gZGF0YQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2hhbGxl
bmdlKTsKLSAgICBVTlVTRURfUEFSQU0oY3JlZGVudGlhbCk7Ci0jZW5kaWYgLy8gRU5BQkxFKENS
RURFTlRJQUxfU1RPUkFHRSkKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODRmODAwLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIElHQUxJQSBTLkwuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZV9oCi0jZGVmaW5l
IENyZWRlbnRpYWxCYWNraW5nU3RvcmVfaAotCi0jaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotCi1j
bGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3JlIHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKENyZWRl
bnRpYWxCYWNraW5nU3RvcmUpOwotcHVibGljOgotICAgIGZyaWVuZCBDcmVkZW50aWFsQmFja2lu
Z1N0b3JlJiBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCk7Ci0gICAgdmlydHVhbCB+Q3JlZGVudGlh
bEJhY2tpbmdTdG9yZSgpIHsgfQotCi0gICAgdHlwZWRlZiB2b2lkICgqQ3JlZGVudGlhbEZvckNo
YWxsZW5nZUNhbGxiYWNrKShjb25zdCBDcmVkZW50aWFsJiwgdm9pZCogZGF0YSk7Ci0KLSAgICB2
b2lkIGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBDcmVkZW50aWFsRm9yQ2hhbGxlbmdlQ2FsbGJhY2ssIHZvaWQqIGRhdGEpOwotICAgIHZvaWQg
c3RvcmVDcmVkZW50aWFsc0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKLXByaXZhdGU6Ci0gICAgQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZSgpIHsgfQotfTsKLQotQ3JlZGVudGlhbEJhY2tpbmdTdG9yZSYgY3JlZGVudGlhbEJhY2tp
bmdTdG9yZSgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50
aWFsQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCA3ZjA3MWExLi42Y2YwODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBT
emVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOCArMzIsMTggQEAK
IAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNz
aW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+CisKKyNpZiBVU0UoTElCU0VDUkVUKQorI2luY2x1ZGUgIkdSZWZQdHJH
dGsuaCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2RlZmluZSBTRUNSRVRfV0lUSF9V
TlNUQUJMRSAxCisjZGVmaW5lIFNFQ1JFVF9BUElfU1VCSkVDVF9UT19DSEFOR0UgMQorI2luY2x1
ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0LDYgKzU1LDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHQKIAogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKIHsKKyNpZiBVU0UoTElCU0VDUkVU
KQorICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxhYmxl
LmdldCgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4mIGRlZmF1bHRTZXNzaW9uKCkKQEAgLTc4LDExICs5MiwxNTAgQEAgU291cE5l
dHdvcmtTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNvdXBOZXR3b3JrU2Vzc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vzc2lvbiA/ICptX3Nlc3Npb24gOiBTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRTb3VwTmV0d29ya1Nlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lv
bj4gc2Vzc2lvbikKKyNpZiBVU0UoTElCU0VDUkVUKQorc3RhdGljIGNvbnN0IGNoYXIqIHNjaGVt
ZUZyb21Qcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlKFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUg
c2VydmVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNlcnZlclR5cGUpIHsKKyAgICBjYXNlIFByb3Rl
Y3Rpb25TcGFjZVNlcnZlckhUVFA6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFA6
CisgICAgICAgIHJldHVybiBTT1VQX1VSSV9TQ0hFTUVfSFRUUDsKKyAgICBjYXNlIFByb3RlY3Rp
b25TcGFjZVNlcnZlckhUVFBTOgorICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQUzoK
KyAgICAgICAgcmV0dXJuIFNPVVBfVVJJX1NDSEVNRV9IVFRQUzsKKyAgICBjYXNlIFByb3RlY3Rp
b25TcGFjZVNlcnZlckZUUDoKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVByb3h5RlRQOgorICAg
ICAgICByZXR1cm4gU09VUF9VUklfU0NIRU1FX0ZUUDsKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFj
ZVNlcnZlckZUUFM6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VQcm94eVNPQ0tTOgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U09VUF9VUklfU0NIRU1FX0hUVFA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBhdXRoVHlwZUZy
b21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZSBzY2hlbWUpCiB7Ci0gICAgbV9zZXNzaW9uID0gV1RGTW92ZShzZXNz
aW9uKTsKKyAgICBzd2l0Y2ggKHNjaGVtZSkgeworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVIVFRQQmFzaWM6CisgICAgICAgIHJldHVybiAiQmFzaWMiOworICAgIGNh
c2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQRGlnZXN0OgorICAgICAg
ICByZXR1cm4gIkRpZ2VzdCI7CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZU5UTE06CisgICAgICAgIHJldHVybiAiTlRMTSI7CisgICAgY2FzZSBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZToKKyAgICAgICAgcmV0dXJuICJOZWdv
dGlhdGUiOworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1M
Rm9ybToKKyAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xpZW50
Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ6CisgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duOgorICAgICAgICByZXR1cm4gInVua25vd24iOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAidW5rbm93biI7
CiB9CisjZW5kaWYgLy8gVVNFKExJQlNFQ1JFVCkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+IGNvbXBs
ZXRpb25IYW5kbGVyKQoreworI2lmIFVTRShMSUJTRUNSRVQpCisgICAgaWYgKG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ3JlZGVudGlhbCgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgcmVhbG0gPSBw
cm90ZWN0aW9uU3BhY2UucmVhbG0oKTsKKyAgICBpZiAocmVhbG0uaXNFbXB0eSgpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKENyZWRlbnRpYWwoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoc2Vj
cmV0X2F0dHJpYnV0ZXNfYnVpbGQoU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywKKyAgICAg
ICAgImRvbWFpbiIsIHJlYWxtLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICJzZXJ2ZXIiLCBwcm90
ZWN0aW9uU3BhY2UuaG9zdCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICJwb3J0IiwgcHJvdGVj
dGlvblNwYWNlLnBvcnQoKSwKKyAgICAgICAgInByb3RvY29sIiwgc2NoZW1lRnJvbVByb3RlY3Rp
b25TcGFjZVNlcnZlclR5cGUocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSksCisgICAgICAg
ICJhdXRodHlwZSIsIGF1dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lKHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSwKKyAgICAgICAgbnVs
bHB0cikpOworICAgIGlmICghYXR0cmlidXRlcykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDcmVkZW50aWFsKCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgbV9wZXJzaXNl
bnRTdG9yYWdlQ2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7Cisg
ICAgbV9wZXJzaXNlbnRTdG9yYWdlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1ND
SEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJD
SF9MT0FEX1NFQ1JFVFMpLCBtX3BlcnNpc2VudFN0b3JhZ2VDYW5jZWxsYWJsZS5nZXQoKSwKKyAg
ICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICAgICAgICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGVsZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJj
aF9maW5pc2goU0VDUkVUX1NFUlZJQ0Uoc291cmNlKSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKKyAgICAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMgKGVycm9yLmdldCgpLCBHX0lPX0VS
Uk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24qPih1c2VyRGF0YSk7CisgICAgICAgICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShzZXNzaW9uLT5tX3BlcnNpc2VudFN0b3JhZ2VD
b21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIWVs
ZW1lbnRzIHx8ICFlbGVtZW50cy0+ZGF0YSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKENyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBHUmVmUHRyPFNlY3JldEl0ZW0+IHNlY3JldEl0ZW0gPSBhZG9w
dEdSZWYoc3RhdGljX2Nhc3Q8U2VjcmV0SXRlbSo+KGVsZW1lbnRzLT5kYXRhKSk7CisgICAgICAg
ICAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoc2VjcmV0X2l0
ZW1fZ2V0X2F0dHJpYnV0ZXMoc2VjcmV0SXRlbS5nZXQoKSkpOworICAgICAgICAgICAgU3RyaW5n
IHVzZXIgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hf
dGFibGVfbG9va3VwKGF0dHJpYnV0ZXMuZ2V0KCksICJ1c2VyIikpKTsKKyAgICAgICAgICAgIGlm
ICh1c2VyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENy
ZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICAgICAgR1JlZlB0cjxTZWNyZXRWYWx1
ZT4gc2VjcmV0VmFsdWUgPSBhZG9wdEdSZWYoc2VjcmV0X2l0ZW1fZ2V0X3NlY3JldChzZWNyZXRJ
dGVtLmdldCgpKSk7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXNzd29yZERhdGEgPSBzZWNy
ZXRfdmFsdWVfZ2V0KHNlY3JldFZhbHVlLmdldCgpLCAmbGVuZ3RoKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENyZWRlbnRpYWwodXNlciwgU3RyaW5nOjpmcm9tVVRGOChwYXNzd29y
ZERhdGEsIGxlbmd0aCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCkpOworICAgIH0s
IHRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihDcmVkZW50aWFsKCkpOworI2VuZGlmCiB9CiAKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzYXZlQ3JlZGVudGlhbFRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpCit7CisjaWYgVVNFKExJQlNFQ1JFVCkKKyAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNyZWRlbnRpYWwuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBTdHJpbmcmIHJlYWxtID0gcHJvdGVjdGlv
blNwYWNlLnJlYWxtKCk7CisgICAgaWYgKHJlYWxtLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKHNlY3Jl
dF9hdHRyaWJ1dGVzX2J1aWxkKFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssCisgICAgICAg
ICJkb21haW4iLCByZWFsbS51dGY4KCkuZGF0YSgpLAorICAgICAgICAic2VydmVyIiwgcHJvdGVj
dGlvblNwYWNlLmhvc3QoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAicG9ydCIsIHByb3RlY3Rp
b25TcGFjZS5wb3J0KCksCisgICAgICAgICJwcm90b2NvbCIsIHNjaGVtZUZyb21Qcm90ZWN0aW9u
U3BhY2VTZXJ2ZXJUeXBlKHByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpLAorICAgICAgICAi
YXV0aHR5cGUiLCBhdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZShwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSksCisgICAgICAgIG51bGxw
dHIpKTsKKyAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGdfaGFz
aF90YWJsZV9pbnNlcnQoYXR0cmlidXRlcy5nZXQoKSwgZ19zdHJkdXAoInVzZXIiKSwgZ19zdHJk
dXAoY3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSkpOworICAgIENTdHJpbmcgdXRmOFBh
c3N3b3JkID0gY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0ZjgoKTsKKyAgICBHUmVmUHRyPFNlY3Jl
dFZhbHVlPiBuZXdTZWNyZXRWYWx1ZSA9IGFkb3B0R1JlZihzZWNyZXRfdmFsdWVfbmV3KHV0ZjhQ
YXNzd29yZC5kYXRhKCksIHV0ZjhQYXNzd29yZC5sZW5ndGgoKSwgInRleHQvcGxhaW4iKSk7Cisg
ICAgc2VjcmV0X3NlcnZpY2Vfc3RvcmUobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVU
V09SSywgYXR0cmlidXRlcy5nZXQoKSwgU0VDUkVUX0NPTExFQ1RJT05fREVGQVVMVCwgXygiV2Vi
S2l0R1RLKyBwYXNzd29yZCIpLAorICAgICAgICBuZXdTZWNyZXRWYWx1ZS5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwcm90ZWN0aW9u
U3BhY2UpOworICAgIFVOVVNFRF9QQVJBTShjcmVkZW50aWFsKTsKICNlbmRpZgorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAKaW5kZXggNTdhMTAxZi4uMzc3Y2Y0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAg
LTY2LDEwICs2Niw2IEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVn
aXN0cnlJbXBsLmgiCiAKLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IHNpemVfdCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplID0gODE5MjsKQEAgLTIzMCwxNyArMjI2
LDE1IEBAIHN0YXRpYyB2b2lkIGdvdEhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSogbWVzc2Fn
ZSwgZ3BvaW50ZXIgZGF0YSkKIAogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5k
bGUtPmdldEludGVybmFsKCk7CiAKLSNpZiBQTEFURk9STShHVEspCiAgICAgLy8gV2UgYXJlIGEg
Yml0IG1vcmUgY29uc2VydmF0aXZlIHdpdGggdGhlIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9y
YWdlIHRoYW4gdGhlIHNlc3Npb24gc3RvcmUsCiAgICAgLy8gc2luY2Ugd2UgYXJlIHdhaXRpbmcg
dW50aWwgd2Uga25vdyB0aGF0IHRoaXMgYXV0aGVudGljYXRpb24gc3VjY2VlZGVkIGJlZm9yZSBh
Y3R1YWxseSBzdG9yaW5nLgogICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSB3YW50IHRvIGF2b2lk
IGhpdHRpbmcgdGhlIGRpc2sgdHdpY2UgKG9uY2UgdG8gYWRkIGFuZCBvbmNlIHRvIHJlbW92ZSkg
Zm9yCiAgICAgLy8gaW5jb3JyZWN0IGNyZWRlbnRpYWxzIG9yIHBvbGx1dGluZyB0aGUga2V5Y2hh
aW4gd2l0aCBpbnZhbGlkIGNyZWRlbnRpYWxzLgotICAgIGlmICghaXNBdXRoZW50aWNhdGlvbkZh
aWx1cmVTdGF0dXNDb2RlKG1lc3NhZ2UtPnN0YXR1c19jb2RlKSAmJiBtZXNzYWdlLT5zdGF0dXNf
Y29kZSA8IDUwMCAmJiAhZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3Jl
LmNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNyZWRlbnRpYWxCYWNraW5nU3RvcmUo
KS5zdG9yZUNyZWRlbnRpYWxzRm9yQ2hhbGxlbmdlKAotICAgICAgICAgICAgZC0+bV9jcmVkZW50
aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLmNoYWxsZW5nZSwKKyAgICBpZiAoIWlzQXV0
aGVudGljYXRpb25GYWlsdXJlU3RhdHVzQ29kZShtZXNzYWdlLT5zdGF0dXNfY29kZSkgJiYgbWVz
c2FnZS0+c3RhdHVzX2NvZGUgPCA1MDApIHsKKyAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLnNhdmVDcmVkZW50aWFsVG9QZXJzaXN0ZW50U3RvcmFnZSgKKyAgICAgICAgICAg
IGQtPm1fY3JlZGVudGlhbERhdGFUb1NhdmVJblBlcnNpc3RlbnRTdG9yZS5wcm90ZWN0aW9uU3Bh
Y2UsCiAgICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3Rv
cmUuY3JlZGVudGlhbCk7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBUaGUgb3JpZ2luYWwgcmVz
cG9uc2Ugd2lsbCBiZSBuZWVkZWQgbGF0ZXIgdG8gZmVlZCB0byB3aWxsU2VuZFJlcXVlc3QgaW4K
ICAgICAvLyBkb1JlZGlyZWN0KCkgaW4gY2FzZSB3ZSBhcmUgcmVkaXJlY3RlZC4gRm9yIHRoaXMg
cmVhc29uLCB3ZSBzdG9yZSBpdCBoZXJlLgpAQCAtOTcwLDEzICs5NjQsNiBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xFcnJvcnMpCiAgICAg
Z0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsKIH0KIAotI2lmIFBMQVRGT1JNKEdU
SykKLXZvaWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFjayhjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsLCB2b2lkKiBkYXRhKQotewotICAgIHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlKj4oZGF0YSktPmNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNyZWRlbnRpYWwpOwotfQotI2VuZGlmCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2N1
cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtMTAzMCwxNiArMTAxNywxNiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbAogICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxs
ZW5nZTsKICAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShjaGFsbGVuZ2Uuc291cFNlc3Np
b24oKSwgY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOwogCi0jaWYgUExBVEZPUk0oR1RLKQogICAg
IC8vIFdlIGNvdWxkIGFsc28gZG8gdGhpcyBiZWZvcmUgd2UgZXZlbiBzdGFydCB0aGUgcmVxdWVz
dCwgYnV0IHRoYXQgd291bGQgYmUgYXQgdGhlIGV4cGVuc2UKICAgICAvLyBvZiBhbGwgcmVxdWVz
dCBsYXRlbmN5LCB2ZXJzdXMgYSBvbmUtdGltZSBsYXRlbmN5IGZvciB0aGUgc21hbGwgc3Vic2V0
IG9mIHJlcXVlc3RzIHRoYXQKICAgICAvLyB1c2UgSFRUUCBhdXRoZW50aWNhdGlvbi4gSW4gdGhl
IGVuZCwgdGhpcyBkb2Vzbid0IG1hdHRlciBtdWNoLCBiZWNhdXNlIHBlcnNpc3RlbnQgY3JlZGVu
dGlhbHMKICAgICAvLyB3aWxsIGJlY29tZSBzZXNzaW9uIGNyZWRlbnRpYWxzIGFmdGVyIHRoZSBm
aXJzdCB1c2UuCiAgICAgaWYgKHVzZUNyZWRlbnRpYWxTdG9yYWdlKSB7Ci0gICAgICAgIGNyZWRl
bnRpYWxCYWNraW5nU3RvcmUoKS5jcmVkZW50aWFsRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgZ2V0
Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5nZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKENyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgICAg
ICBjb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXVEZNb3ZlKGNyZWRl
bnRpYWwpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAog
ICAgIGNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENyZWRlbnRpYWwo
KSk7CiB9CkBAIC0xMDc0LDEyICsxMDYxLDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAg
ICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRm9yU2Vzc2lvbiB8fCBjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBl
cnNpc3RlbmNlUGVybWFuZW50KQogICAgICAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OmRlZmF1
bHRDcmVkZW50aWFsU3RvcmFnZSgpLnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAKLSNpZiBQTEFU
Rk9STShHVEspCiAgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlUGVybWFuZW50KSB7CiAgICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxE
YXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7Ci0gICAg
ICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY2hhbGxl
bmdlID0gY2hhbGxlbmdlOworICAgICAgICAgICAgZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUlu
UGVyc2lzdGVudFN0b3JlLnByb3RlY3Rpb25TcGFjZSA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5z
b3VwU2Vzc2lvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2ZGVjZDNkLi4xZWUxODY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBDbGVhbnVwIHBlcnNpc3RlbnQgY3Jl
ZGVudGlhbCBzdG9yYWdlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2Mjc3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBVU0UoTElCU0VDUkVUKSBpbnN0ZWFkIG9mIEVOQUJMRShDUkVERU5U
SUFMX1NUT1JBR0UpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2Nhbl9zYXZlX2NyZWRlbnRpYWxzKToKKwogMjAxNi0wOS0yOSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTmV0d29ya1Nlc3Npb246IEhU
VFAgYXV0aGVudGljYXRpb24gZG9lc24ndCB3b3JrIGlmIFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSyBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKaW5k
ZXggZjc5ZDAzYS4uOGUyZTcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCkBA
IC0xNjEsNyArMTYxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Y2FuX3NhdmVfY3JlZGVudGlhbHMoV2ViS2l0QXV0aGVudGljYXRpb24KIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fUkVRVUVTVChyZXF1ZXN0KSwg
RkFMU0UpOwogCi0jaWYgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkKKyNpZiBVU0UoTElCU0VD
UkVUKQogICAgIHJldHVybiAhcmVxdWVzdC0+cHJpdi0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsK
ICNlbHNlCiAgICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA3OTRkZmU4
Li4xN2MyYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtODcsNiArODcsNyBAQCBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfWDExX1RBUkdFVCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9y
dCBmb3IgdGhlIFgxMSB3aQogV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1dBWUxBTkRfVEFS
R0VUICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgV2F5bGFuZCB3aW5kb3dpbmcg
dGFyZ2V0LiIgUFVCTElDICR7R1RLM19TVVBQT1JUU19XQVlMQU5EfSkKIFdFQktJVF9PUFRJT05f
REVGSU5FKFVTRV9MSUJOT1RJRlkgIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IHdlYiBu
b3RpZmljYXRpb24gaW1wbGVtZW50YXRpb24uIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RklORShVU0VfTElCSFlQSEVOICJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCBhdXRvbWF0
aWMgaHlwaGVuYXRpb24gaW1wbGVtZW50YXRpb24uIiBQVUJMSUMgT04pCitXRUJLSVRfT1BUSU9O
X0RFRklORShVU0VfTElCU0VDUkVUICJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgcGVyc2lzdGVudCBj
cmVkZW50aWFsIHN0b3JhZ2UgdXNpbmcgbGlic2VjcmV0LiIgUFVCTElDIE9OKQogCiAjIFByaXZh
dGUgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUgR1RLKyBwb3J0LiBDaGFuZ2luZyB0aGVzZSBvcHRp
b25zIGlzCiAjIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuIFRoZXkgYXJlIGludGVuZGVkIGZvciB1
c2Ugb25seSBieSBXZWJLaXQgZGV2ZWxvcGVycy4KQEAgLTEzMyw3ICsxMzQsNiBAQCBlbmRpZiAo
KQogIyB3aXRob3V0IGFwcHJvdmFsIGZyb20gYSBHVEsrIHJldmlld2VyLiBUaGVyZSBtdXN0IGJl
IHN0cm9uZyByZWFzb24gdG8gc3VwcG9ydAogIyBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIG9w
dGlvbi4KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMgUFVCTElDIE9GRikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9DUkVERU5USUFMX1NUT1JBR0UgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9DQVRJT04gUFVCTElDIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lDT05EQVRBQkFTRSBQVUJMSUMg
T04pCkBAIC0yMjgsMTAgKzIyOCwxMCBAQCBpZiAoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAotaWYgKEVOQUJMRV9DUkVERU5USUFMX1NUT1JB
R0UpCitpZiAoVVNFX0xJQlNFQ1JFVCkKICAgICBmaW5kX3BhY2thZ2UoTGlic2VjcmV0KQogICAg
IGlmIChOT1QgTElCU0VDUkVUX0ZPVU5EKQotICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJs
aWJzZWNyZXQgaXMgbmVlZGVkIGZvciBFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFIikKKyAgICAg
ICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGlic2VjcmV0IGlzIG5lZWRlZCBmb3IgVVNFX0xJQlNF
Q1JFVCIpCiAgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQppbmRleCA0MWNmYTg3Li5mZGNkNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0
RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBA
IC04Myw3ICs4Myw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HICJUb2dnbGUgTWVzc2FnZUNoYW5u
ZWwgYW5kIE1lc3NhZ2VQb3J0IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HICJUb2dnbGUgY29udGVudCBmaWx0ZXJp
bmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0NPTlRFWFRfTUVOVVMgIlRvZ2dsZSBDb250ZXh0IE1lbnUgc3VwcG9ydCIgUFJJVkFURSBPTikK
LSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFICJUb2dn
bGUgQ3JlZGVudGlhbCBTdG9yYWdlIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9DU1BfTkVYVCAiVG9nZ2xlIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IDEuMSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfQ1NTM19URVhUICJUb2dnbGUgQ1NTMyBUZXh0IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsg
IlRvZ2dsZSBCb3ggRGVjb3JhdGlvbiBicmVhayAoQ1NTIEJhY2tncm91bmRzIGFuZCBCb3JkZXJz
KSBzdXBwb3J0IiBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDk4MTE3ZWMuLmFiNWVjYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOS0z
MCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1NPVVBdIENsZWFudXAgcGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFVTRShMSUJTRUNS
RVQpIGluc3RlYWQgb2YgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25TdG9yYWdlKToKKwogMjAxNi0wOS0yOSAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgW0VG
TF0gQWRkIHNlYXJjaCBidXR0b24gdG8gdXJsIGJhciBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRoZW50aWNhdGlv
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRp
Y2F0aW9uLmNwcAppbmRleCAwZDBlMDc2Li5iYmQ0ZTVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNw
cApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRp
b25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAKICAgICAvLyBJ
ZiBXZWJLaXQgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBsaWJzZWNyZXQsIGFuZCBwcml2YXRlIGJy
b3dzaW5nIGlzIGRpc2FibGVkCiAgICAgLy8gdGhlbiBjaGVjayB0aGF0IGNyZWRlbnRpYWxzIGNh
biBiZSBzYXZlZC4KLSNpZiBFTkFCTEUoQ1JFREVOVElBTF9TVE9SQUdFKQorI2lmIFVTRShMSUJT
RUNSRVQpCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyksIEZBTFNFKTsKICAg
ICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hdXRoLXRlc3QuaHRtbCIp
LmRhdGEoKSk7CiAgICAgcmVxdWVzdCA9IHRlc3QtPndhaXRGb3JBdXRoZW50aWNhdGlvblJlcXVl
c3QoKTsK
</data>
<flag name="review"
          id="313510"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>