<?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>168514</bug_id>
          
          <creation_ts>2017-02-17 07:13:16 -0800</creation_ts>
          <short_desc>Remove COORDINATED_GRAPHICS_MULTIPROCESS</short_desc>
          <delta_ts>2017-02-18 15:10:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278248</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 07:13:16 -0800</bug_when>
    <thetext>Remove COORDINATED_GRAPHICS_MULTIPROCESS, which was only used by EFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278249</commentid>
    <comment_count>1</comment_count>
      <attachid>301929</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 07:16:04 -0800</bug_when>
    <thetext>Created attachment 301929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278255</commentid>
    <comment_count>2</comment_count>
      <attachid>301932</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 07:24:39 -0800</bug_when>
    <thetext>Created attachment 301932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278633</commentid>
    <comment_count>3</comment_count>
      <attachid>301932</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-18 08:12:03 -0800</bug_when>
    <thetext>Comment on attachment 301932
Patch

Rejecting attachment 301932 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 301932, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
 Source/WebKit2/WebProcess/WebPage/WebPage.h
Hunk #2 succeeded at 1145 (offset -9 lines).
patching file Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
Hunk #1 succeeded at 341 with fuzz 2 (offset -4 lines).
Hunk #2 FAILED at 393.
1 out of 2 hunks FAILED -- saving rejects to file Source/WebKit2/WebProcess/WebPage/WebPage.messages.in.rej

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Darin Adler&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/3149835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278660</commentid>
    <comment_count>4</comment_count>
      <attachid>302058</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-18 14:31:58 -0800</bug_when>
    <thetext>Created attachment 302058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278663</commentid>
    <comment_count>5</comment_count>
      <attachid>302058</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-18 15:10:00 -0800</bug_when>
    <thetext>Comment on attachment 302058
Patch

Clearing flags on attachment: 302058

Committed r212608: &lt;http://trac.webkit.org/changeset/212608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278664</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-18 15:10:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301929</attachid>
            <date>2017-02-17 07:16:04 -0800</date>
            <delta_ts>2017-02-17 07:24:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168514-20170217091325.patch</filename>
            <type>text/plain</type>
            <size>48011</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRmMjdjNjRmNmYyMzRm
Y2M5Y2I2YmViNWM2MTU3MDBhNjExMjRkOC4uN2U4YWQ2YmE1ODBhYWMzOGQxMTA0MDU3NjUxY2Ri
OGU2NWNkNTA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAyLTE3ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUg
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAy
MDE3LTAyLTE2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtKU0NdIERyb3AgUGFzc1JlZlB0ciBmcm9tIEFycmF5QnVmZmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YzM1MjM1OGY4ZWI4NzhjMThmZGVhNTY2MmZlNzQ5N2Q4ZjM5MmU4My4uYjhkMzBjZDI4NzlhZTQ0
MzFkOGQxZTUzOTg3NWY0NGYwNGY0ZWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisy
MDE3LTAyLTE3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1MTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9EcmF3aW5n
QXJlYUluZm8uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3RmluZFpvb21hYmxlQXJlYUZvclJlY3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHk6OkFjY2VsZXJhdGVkRHJh
d2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHk6
OmNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNz
YWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlcjo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGFnZURp
ZFJlcXVlc3RTY3JvbGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUmVuZGVyRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYTo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkRHJhd2luZ0FyZWE6OnVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdE1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1p
dFNjZW5lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
ZENvbXBsZXRlUGFnZVRyYW5zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRS
ZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbW1pdFBhZ2VUcmFu
c2l0aW9uVmlld3BvcnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKIDIwMTctMDItMTYgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWV0aG9kcyBXS1BhZ2VHZXREZWJ1Z1BhaW50RmxhZ3Mg
YW5kIFdLUGFnZVNldERlYnVnUGFpbnRGbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGE3ZWRmODNmYTU4NzBkNjdhMDIy
YzFmNzQ4Y2ZhODU1MWEzOTc4MjEuLmNjNTBiZTUyYTgxNTIzNzM3ZDBkZjk3MzY2YTM5Y2UyMjQ5
YTU3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKICAgICBtX3Jl
bmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgPSBtX3BsYXllciAmJiBtX3BsYXllci0+Y2xpZW50KCku
bWVkaWFQbGF5ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpICYmIG1fcGxheWVyLT5j
bGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIpOwog
fQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX01VTFRJUFJPQ0VTUykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdM
JiB0ZXh0dXJlLCBHc3RWaWRlb0luZm8mIHZpZGVvSW5mbykKIHsKICAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCAzNjM0ODZk
YjMyMDQ0OThmYzAxMzYzZTk1YzFmNTkzNWRmMzEzMzQ3Li5mOGZiMmMxY2YwNjU1ZDJhZDgxNmJm
NDkwZWQxNWJkZWY3YjFmMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTIxMCw3ICsyMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
bXV0YWJsZSBGbG9hdFNpemUgbV92aWRlb1NpemU7CiAgICAgYm9vbCBtX3VzaW5nRmFsbGJhY2tW
aWRlb1Npbms7CiAgICAgYm9vbCBtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgeyBmYWxzZSB9
OwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElD
U19NVUxUSVBST0NFU1MpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHZvaWQgdXBk
YXRlVGV4dHVyZShCaXRtYXBUZXh0dXJlR0wmLCBHc3RWaWRlb0luZm8mKTsKICNlbmRpZgogI2lm
IFVTRShHU1RSRUFNRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJh
d2luZ0FyZWFJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2luZ0FyZWFJbmZvLmgK
aW5kZXggMjI0ZDhkMmQ3NDJjZmRlYjgzZmE0ZjRjOTY0YjVlNTM0NDhmZTZjOS4uN2ZjNGQ3YzRi
M2ZlNmI0ZWRmMGMxYjQyMGM5YmIyY2JiYzI1Y2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
cmF3aW5nQXJlYUluZm8uaApAQCAtMzUsMTIgKzM1LDggQEAgZW51bSBEcmF3aW5nQXJlYVR5cGUg
ewogI2VuZGlmCiAgICAgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLAogI2Vsc2UKLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIERyYXdpbmdBcmVh
VHlwZUNvb3JkaW5hdGVkCi0jZWxzZQogICAgIERyYXdpbmdBcmVhVHlwZUltcGwKICNlbmRpZgot
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcu
Y3BwCmluZGV4IDg1ZTc5YWE0OWZhMDdjMzE4YjI4MmFhYzhkNzgzOGRhODEzNzRhNWUuLmZhYjAy
YjVlM2I5MjI4ZTNlOTUwOWM4YjAyYWYwZWI0ZmM3ZjczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tW
aWV3LmNwcApAQCAtMTg1LDE1ICsxODUsOCBAQCBkb3VibGUgV0tWaWV3T3BhY2l0eShXS1ZpZXdS
ZWYgdmlldykKICAgICByZXR1cm4gdG9JbXBsKHZpZXcpLT5vcGFjaXR5KCk7CiB9CiAKLXZvaWQg
V0tWaWV3RmluZFpvb21hYmxlQXJlYUZvclJlY3QoV0tWaWV3UmVmIHZpZXdSZWYsIFdLUmVjdCB3
a1JlY3QpCit2b2lkIFdLVmlld0ZpbmRab29tYWJsZUFyZWFGb3JSZWN0KFdLVmlld1JlZiwgV0tS
ZWN0KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAg
SW50UmVjdCByZWN0ID0gdG9JbnRSZWN0KHdrUmVjdCk7Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5m
aW5kWm9vbWFibGVBcmVhRm9yUG9pbnQocmVjdC5jZW50ZXIoKSwgcmVjdC5zaXplKCkpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0odmlld1JlZik7Ci0gICAgVU5VU0VEX1BBUkFNKHdrUmVjdCk7
Ci0jZW5kaWYKIH0KIAogV0tTaXplIFdLVmlld0dldENvbnRlbnRzU2l6ZShXS1ZpZXdSZWYgdmll
d1JlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggN2I4OGRhYThlOWFkMDAyNDU3NjFhM2I2MDU0NDIw
NDBiNmM4MGQ0Zi4uMWE0ZmY5NzkxZTJkM2Y0MDg4OWMzMmU4M2VkODQ4MjMzNjljNzY4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2lu
Z0FyZWFQcm94eS5jcHAKQEAgLTM3LDEwICszNyw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KIAotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICNpbmNsdWRlICJX
YXlsYW5kQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+
CkBAIC01MSwxNiArNDcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHk6OkFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5n
QXJlYVR5cGVDb29yZGluYXRlZCwgd2ViUGFnZVByb3h5KQotI2Vsc2UKICAgICA6IERyYXdpbmdB
cmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlSW1wbCwgd2ViUGFnZVByb3h5KQotI2VuZGlmCiB7Ci0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICAvLyBDb25zdHJ1
Y3QgdGhlIHByb3h5IGVhcmx5IHRvIGFsbG93IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIHdl
YiBwcm9jZXNzIHdoaWxlIEFDIGlzIGVudGVyZWQgdGhlcmUuCi0gICAgbV9jb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk+KHdlYlBhZ2VQcm94eSk7Ci0jZW5kaWYKIH0KIAogQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5Ojp+QWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaAppbmRl
eCA3YjhlNjE2MjIzZjI4N2VkZDVkYTJmOTA4NzQyZjQ5MzY1ZjhlNTM1Li5lNzg5MGM4MDc4NWJh
MmM0ODEzYzQ0NzA5NjFlMGZiZGNjODk3MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCkBAIC0zMiw4ICszMiw2
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTsKLQogY2xhc3MgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5IDogcHVibGljIERy
YXdpbmdBcmVhUHJveHkgewogcHVibGljOgogICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWFQcm94eShXZWJQYWdlUHJveHkmKTsKQEAgLTQyLDEwICs0MCw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGFs
d2F5c1VzZUNvbXBvc2l0aW5nKCkgfHwgIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7IH0K
ICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKIAotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkm
IGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCkgY29uc3QgeyByZXR1cm4gKm1fY29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuZ2V0KCk7IH0KLSNlbmRpZgotCiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhh
bmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KTsKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJm
YWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKTsKQEAgLTc2LDEwICs3MCw2IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgYWx3YXlzVXNlQ29tcG9zaXRpbmcoKSBjb25zdDsKIAotI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgc3RkOjp1bmlxdWVfcHRyPENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5PiBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
OwotI2VuZGlmCi0KICAgICAvLyBUaGUgc3RhdGUgSUQgY29ycmVzcG9uZGluZyB0byBvdXIgY3Vy
cmVudCBiYWNraW5nIHN0b3JlLiBVcGRhdGVkIHdoZW5ldmVyIHdlIGFsbG9jYXRlCiAgICAgLy8g
YSBuZXcgYmFja2luZyBzdG9yZS4gQW55IG1lc3NhZ2VzIHJlY2VpdmVkIHRoYXQgY29ycmVzcG9u
ZCB0byBhbiBlYXJsaWVyIHN0YXRlIGFyZSBpZ25vcmVkLAogICAgIC8vIGFzIHRoZXkgZG9uJ3Qg
YXBwbHkgdG8gb3VyIGN1cnJlbnQgYmFja2luZyBzdG9yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmQxYWZkMGRhOGE1NzZjNmU4ZmUzMTc1NTc1MjM2OWIxMjk0MTA5ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICAgIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQot
I2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCi0KLSNpbmNsdWRlICJD
b29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlcy5oIgotI2luY2x1ZGUgIkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
LSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKLSAgICA6IG1f
d2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKLSAgICAsIG1fc2NlbmUoYWRvcHRSZWYobmV3IENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSh0aGlzKSkpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkucHJv
Y2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCks
ICp0aGlzKTsKLX0KLQotQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6On5Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eSgpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwotICAg
IG1fc2NlbmUtPmRldGFjaCgpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Ojp1cGRhdGVWaWV3cG9ydCgpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkuc2V0Vmlld05lZWRz
RGlzcGxheShJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fd2ViUGFnZVByb3h5LnZpZXdTaXpl
KCkpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGlzcGF0Y2hV
cGRhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQotewotICAgIG1fc2NlbmUtPmFw
cGVuZFVwZGF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OmNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmIGdyYXBoaWNzU3RhdGUpCi17Ci0gICAgUmVmUHRyPENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZT4gc2NlbmVQcm90ZWN0b3IobV9zY2VuZSk7Ci0gICAgZGlzcGF0
Y2hVcGRhdGUoWz1dIHsKLSAgICAgICAgc2NlbmVQcm90ZWN0b3ItPmNvbW1pdFNjZW5lU3RhdGUo
Z3JhcGhpY3NTdGF0ZSk7Ci0gICAgfSk7Ci0KLSAgICB1cGRhdGVWaWV3cG9ydCgpOwotICAgIG1f
d2ViUGFnZVByb3h5LmRpZFJlbmRlckZyYW1lKGdyYXBoaWNzU3RhdGUuY29udGVudHNTaXplLCBn
cmFwaGljc1N0YXRlLmNvdmVyZWRSZWN0KTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCi17Ci0gICAgaWYgKHJlY3QgPT0g
bV9sYXN0U2VudFZpc2libGVSZWN0ICYmIHRyYWplY3RvcnlWZWN0b3IgPT0gbV9sYXN0U2VudFRy
YWplY3RvcnlWZWN0b3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlNldFZpc2li
bGVDb250ZW50c1JlY3QocmVjdCwgdHJhamVjdG9yeVZlY3RvciksIG1fd2ViUGFnZVByb3h5LnBh
Z2VJRCgpKTsKLSAgICBtX2xhc3RTZW50VmlzaWJsZVJlY3QgPSByZWN0OwotICAgIG1fbGFzdFNl
bnRUcmFqZWN0b3J5VmVjdG9yID0gdHJhamVjdG9yeVZlY3RvcjsKLX0KLQotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6cmVuZGVyTmV4dEZyYW1lKCkKLXsKLSAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpSZW5kZXJOZXh0RnJhbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwotfQotCi12b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIG1fd2ViUGFnZVByb3h5
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvbW1p
dFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7
Ci19Ci0KLX0KLSNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNzIyZDU4NDgxZjhmYTIzM2FkMmY4NjVh
N2IwMWEwYzI1Y2EzMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5j
LgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSovCi0KLSNpZm5kZWYgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlfaAotI2RlZmluZSBD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eV9oCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi0KLSNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIK
LSNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCIKLSNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1zdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlOwotY2xhc3MgSW50U2l6ZTsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkgOiBwdWJsaWMgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Q2xpZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KTsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eShXZWJQYWdlUHJveHkmKTsKLSAgICB2aXJ0dWFsIH5Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eSgpOwotCi0gICAgdm9pZCBjb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUo
Y29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7Ci0KLSAgICB2b2lkIHNl
dFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7Ci0gICAgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSBjb25zdCB7IHJldHVybiBtX3Nj
ZW5lLmdldCgpOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZW5kZXJOZXh0RnJhbWUoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgY29tbWl0U2Nyb2xs
T2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkg
b3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGRpc3BhdGNoVXBkYXRlKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0KLSAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwotICAgIFJlZlB0cjxDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU+IG1fc2NlbmU7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1f
bGFzdFNlbnRWaXNpYmxlUmVjdDsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRU
cmFqZWN0b3J5VmVjdG9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0KLSNlbmRpZiAvLyBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZGIyZjBmNzc1N2NmZWRiMWNlNTI0OWJkZjc1ZWNmNzY0MGJkODA1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
Lm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotIwotIyAgICBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCi0jICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgotIwotIyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0jICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0jICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0jICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0jCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi1tZXNzYWdlcyAtPiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eSB7Ci0KLSAgICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNz
U3RhdGUoc3RydWN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSBzdGF0ZSkKLX0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRl
eCBlOGZmN2Q1YmMyZGQ2YzBlNDhiMDdmY2FhMDczNGU0ZDQ2ZTY2ZTY3Li44MzAxN2YyMDNhNTZm
Y2ZhNjIwZjZlZWFhNjA4ZWJkMzFkNmRiYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmNwcApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgIlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5oIgotI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5jbHVk
ZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC0yMTUsMTQgKzIxNCw2IEBA
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5
KCkKICAgICAgICAgZmxvYXQgaW5pdGlhbFNjYWxlID0gbV9pbml0aWFsbHlGaXRUb1ZpZXdwb3J0
ID8gbV9taW5pbXVtU2NhbGVUb0ZpdCA6IG1fcmF3QXR0cmlidXRlcy5pbml0aWFsU2NhbGU7CiAg
ICAgICAgIGFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGlubmVyQm91bmRlZFZpZXdw
b3J0U2NhbGUoaW5pdGlhbFNjYWxlKSk7CiAgICAgfQotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHNob3VsZCBhbHJl
YWR5IGhhdmUgcmVjZWl2ZWQgdGhlIGZpcnN0IHZpZXdwb3J0IGFyZ3VtZW50cyBhbmQgdGhlIHJl
cXVlc3RlZCBzY3JvbGwKLSAgICAvLyBwb3NpdGlvbiBmb3IgdGhlIG5ld2x5IGxvYWRlZCBwYWdl
IGFuZCBzZW50IG91ciByZWFjdGlvbnMgdG8gdGhlIHdlYiBwcm9jZXNzLiBJdCdzIG5vdyBzYWZl
IHRvIHRlbGwKLSAgICAvLyB0aGUgd2ViIHByb2Nlc3MgdG8gc3RhcnQgcmVuZGVyaW5nIHRoZSBu
ZXcgcGFnZSBjb250ZW50cyBhbmQgcG9zc2libHkgcmUtdXNlIHRoZSBjdXJyZW50IHRpbGVzLgot
ICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IGFsbCBtZXNzYWdlcyBoYXZlIGJlZW4gaGFuZGxlZCBp
biBvcmRlciBhbmQgdGhhdCBub3RoaW5nIGhhcyBiZWVuIHB1c2hlZCBiYWNrIG9uIHRoZSBldmVu
dCBsb29wLgotICAgIG1fd2ViUGFnZVByb3h5LT5jb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0
KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVx
dWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgY3NzUG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYlBhZ2VQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhZDczZDM2OWYxNmUwMzhjNGViMTk2NjBlYzdlYzY5ZGFjZWRl
NGQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0KLSNp
bmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBS
T0NFU1MpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0
IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50U2l6ZSYgYXJlYSkKLXsKLSAgICBpZiAoIWlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQocG9pbnQsIGFyZWEpLCBtX3BhZ2VJRCk7
Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IEludFBv
aW50JiB0YXJnZXQsIGNvbnN0IEludFJlY3QmIGFyZWEpCi17Ci0gICAgbV9wYWdlQ2xpZW50LmRp
ZEZpbmRab29tYWJsZUFyZWEodGFyZ2V0LCBhcmVhKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZjE4OGY5ZTJl
Y2E4NjMyNTU1YjQ2MmMwY2M2OGYxOTlkNzg1YzQuLmVlOTdmMGM4NWExODMxMDYzZjVmNTIyY2Q2
MmNjMmZkMDYwNzNkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuaApAQCAtNDgsNyArNDgsNiBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIExheWVyVHJlZUNvbnRleHQ7Ci1jbGFzcyBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTsKIGNsYXNzIFVwZGF0ZUluZm87CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDRhNTcyZGYwYmQzMGYz
YjA0NWVmNTUwNWE4OWYzNTk1ZGI1MGVmYjguLmQwZDIyZjc3MWEwMWE5NDQ1YmYyNTUxODZiNjAw
NTE1NDFjMDM4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTQx
LDEzICsxNDEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JNYWluRnJhbWUoKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRG
b3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250ZW50
UHJvdmlkZXIpID0gMDsKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NF
U1MpCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNv
dmVyZWRSZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRS
ZWFkeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKEVGTCkKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dElucHV0U3Rh
dGUoKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiM2Q2NDgxY2ZlYzEzMGRiOTBhMmJkOWNjNTAwM2Uw
MmZjYzg2NTBmLi45YzNkMmUxODQ3NDYyODE2NzAwYTdhYjhlMTQ0M2JjNDliNGMxZjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTM2LDEwICsxMzYs
NiBAQAogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNlbmRp
ZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRl
ICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2VzLmgiCi0jZW5kaWYKLQogI2lm
IEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKICNlbmRp
ZgpAQCAtNDEwNSwzMSArNDEwMSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmCiAgICAgbV91
aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1l
LCBbcmVwbHldKGJvb2wgcmVzdWx0KSB7IHJlcGx5LT5zZW5kKHJlc3VsdCk7IH0pOwogfQogCi0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLXZvaWQgV2ViUGFnZVBy
b3h5OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9pbnQpCi17Ci0gICAg
bV9wYWdlQ2xpZW50LnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvaW50KTsKLX0KLQotdm9pZCBXZWJQ
YWdlUHJveHk6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCi17Ci0gICAgbV9wYWdlQ2xp
ZW50LnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKLXsKLSAgICBtX3BhZ2VDbGllbnQu
ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7Ci19Ci0KLXZvaWQgV2Vi
UGFnZVByb3h5Ojpjb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCkKLXsKLSAgICBpZiAoIWlz
VmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKSwgbV9wYWdlSUQpOwotfQot
I2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
Y29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQogewogICAgIG1fcGFnZUNsaWVudC5kaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoYXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggNzNhN2ZlOGNjZWI1OTA5NzIzYjE3Mzc0OWZjZGU3NzRhNjhhNzYz
Yy4uMzk5YjI0MDQ0OWQwOGUyMmEwMzQxMDFjZmExMTVlMzUxNDBiODdmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTY1LDEwICs1NjUsNiBAQCBwdWJsaWM6
CiAKICAgICBib29sIHVwZGF0ZUxheW91dFZpZXdwb3J0UGFyYW1ldGVycyhjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVk
UmVjdCk7Ci0gICAgdm9pZCBjb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCk7Ci0jZW5kaWYK
ICNpZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJik7
CiAjZW5kaWYKQEAgLTkxMywxMCArOTA5LDYgQEAgcHVibGljOgogCiAgICAgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMoKTsKIAotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci0j
ZW5kaWYKLQogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKTsK
IAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pOwpAQCAtMTM1MywxMiArMTM0NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck5v
dGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKTsKICAg
ICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwog
Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2b2lkIHBh
Z2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdm9pZCBw
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKLSAgICB2b2lkIGRpZEZpbmRab29tYWJsZUFy
ZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0j
ZW5kaWYKLQogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhM2YwZTQ3Zjdk
YWYwMzMyNGRjNDg4ZmIwYzFmNTE4NjRmODUyNzUwLi5hYzQ2MzE0YjFjMWZkN2U3OWZlYWM2OThl
ODdjYjIxY2MyOTU0MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTk1LDEyICs5NSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgSGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKCkgLT4gKGJvb2wgaGFuZGxl
ZCkKICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykK
LSAgICBQYWdlRGlkUmVxdWVzdFNjcm9sbChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKLSAgICBQ
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQotICAgIERpZEZpbmRab29tYWJsZUFyZWEoV2Vi
Q29yZTo6SW50UG9pbnQgdGFyZ2V0LCBXZWJDb3JlOjpJbnRSZWN0IGFyZWEpCi0jZW5kaWYKLQog
ICAgIERpZENoYW5nZUNvbnRlbnRTaXplKFdlYkNvcmU6OkludFNpemUgbmV3U2l6ZSkKIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4IDg4
ZDMyZTBkMzJiYmIxOTdiMTcyYjczNWVlNGE2Nzc1ZGI5ZTNmOTQuLmEyNDlmZWQ1ZmUyZTYxNmEx
YTFjNDQzMTM3ZTI3OTZlMmE4YzkwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTUw
LDExICs1MCw3IEBAIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6On5BY2NlbGVyYXRlZERyYXdpbmdB
cmVhKCkKIH0KIAogQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6QWNjZWxlcmF0ZWREcmF3aW5nQXJl
YShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAg
OiBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVDb29yZGluYXRlZCwgd2ViUGFnZSkKLSNlbHNl
CiAgICAgOiBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVJbXBsLCB3ZWJQYWdlKQotI2VuZGlm
CiAgICAgLCBtX2V4aXRDb21wb3NpdGluZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkFj
Y2VsZXJhdGVkRHJhd2luZ0FyZWE6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKICAg
ICAsIG1fZGlzY2FyZFByZXZpb3VzTGF5ZXJUcmVlSG9zdFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJkFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmRpc2NhcmRQcmV2aW91c0xheWVyVHJlZUhv
c3QpCiB7CkBAIC0yMzUsMTYgKzIzMSwxMCBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6
OnVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IHN0YXRlSUQsIGJvb2wgcmVzcAogICAg
ICAgICBtX3dlYlBhZ2UubGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgbV93ZWJQYWdlLnNjcm9s
bE1haW5GcmFtZUlmTm90QXRNYXhTY3JvbGxQb3NpdGlvbihzY3JvbGxPZmZzZXQpOwogCi0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICAgICAgLy8gQ29vcmRp
bmF0ZWQgR3JhcGhpY3Mgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgcm9vdCBsYXllciB0byBjb250ZW50
cyBzaXplLgotICAgICAgICBpZiAoIW1fd2ViUGFnZS51c2VGaXhlZExheW91dCgpKQotICAgICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zaXplRGlkQ2hhbmdlKG1fd2ViUGFnZS5zaXplKCkpOwot
I2Vsc2UKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2l6ZURpZENoYW5nZShtX3dlYlBhZ2Uuc2l6ZSgpKTsKICAgICAgICAgZWxzZSBp
ZiAobV9wcmV2aW91c0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICBtX3ByZXZpb3VzTGF5ZXJU
cmVlSG9zdC0+c2l6ZURpZENoYW5nZShtX3dlYlBhZ2Uuc2l6ZSgpKTsKLSNlbmRpZgogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChzaXplID09IG1fd2ViUGFnZS5zaXplKCkpOwogICAgICAg
ICBpZiAoIW1fc2hvdWxkU2VuZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKSB7CkBAIC00MDMs
MTMgKzM5Myw2IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGlzY2FyZFByZXZpb3Vz
TGF5ZXJUcmVlSG9zdCgpCiAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QgPSBudWxscHRyOwog
fQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLXZvaWQgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Ci17Ci0gICAgbV9sYXllclRyZWVIb3N0LT5kaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLSNlbmRpZgotCiAjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdB
cmVhOjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QgaGFuZGxl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKaW5kZXggZjBiNzg5YWZiNDk2MjkwZmM4ZmFlNGQ4MGVi
MDVkYTE2NGNkZjA5YS4uZWFkMzJhYjZkNDNlMmQzYzQ0MDkzODU3MGRkYzMxNGI5NjI1NDE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oCkBAIC01OSwxMCArNTksNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2b2lkIGRpZFJl
Y2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIG92ZXJyaWRlOwotI2VuZGlmCi0KICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcodWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVzdHJveU5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAx
NzFlYjBiZTU0NTY2OGM2OGZlMWYxY2Y2ZjU2MzIyMzNhYTA0ODU2Li4zNTA4OGNhNGUxODI5ZDky
YjIzMzEzODc5ZmUzOGZlM2YwN2Y0YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQwLDEwICs0MCw2IEBA
CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAjaW5jbHVkZSAiVGhy
ZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oIgotI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRD
b2RlcnMuaCIKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02NSw5ICs2MSw2IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgLCBt
X2xheWVyRmx1c2hUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKQogewogICAgIG1fY29vcmRpbmF0b3IuY3Jl
YXRlUm9vdExheWVyKG1fd2ViUGFnZS5zaXplKCkpOwotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19NVUxUSVBST0NFU1MpCi0gICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IGRv
d25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKm1fY29vcmRpbmF0b3Iucm9vdExheWVy
KCkpLmlkKCk7Ci0jZW5kaWYKIAogICAgIENvb3JkaW5hdGVkU3VyZmFjZTo6c2V0RmFjdG9yeShj
cmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwpAQCAt
MTk2LDkgKzE4OSw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWludExheWVy
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzCiAKIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYgc3RhdGUpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJP
Q0VTUykKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OkNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShzdGF0ZSkpOwotI2VuZGlm
CiAgICAgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciA9IHRydWU7CiB9CiAKQEAgLTIwNiw4ICsxOTYs
NiBAQCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjbwogewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKICAgICByZXR1cm4gVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKHNpemUsIGZsYWdzKTsKLSNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxU
SVBST0NFU1MpCi0gICAgcmV0dXJuIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUs
IGZsYWdzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogICAgIFVOVVNFRF9QQVJB
TShmbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IGYzNDdmNDg3NTIxNmFlZTk1M2ZkNDE4MjQ5M2M1ZGM1Njlh
ZWRmYTEuLjdiM2FhNWQzNTY1OWQ5ZjEwYWQ1YzA4OTdlZDRjYWM3MjY1YjkwNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
CkBAIC03NiwxMCArNzYsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgbGF5ZXJG
bHVzaFRpbWVyRmlyZWQoKTsKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBS
T0NFU1MpCi0gICAgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSNlbmRpZgotCiAg
ICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZUNvb3Jk
aW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyk7CiAKICAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yIG1fY29vcmRp
bmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNmI5
Njc4NzY5NDk5YzI3YmZjY2UwZjJkZjdmMTExZjE1ODlmOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQotCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgot
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgi
Ci0jaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVmlldy5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotdm9pZCBXZWJQYWdlOjpm
aW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRT
aXplJiBhcmVhKQotewotICAgIFVOVVNFRF9QQVJBTShhcmVhKTsKLSAgICBGcmFtZSogbWFpbmZy
YW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xp
cHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsK
LQotICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0KLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEludFJlY3Qgem9vbWFibGVBcmVhOwotICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgem9vbWFi
bGVBcmVhID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7Ci0KLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBib29sIGZvdW5kID0gIW5vZGUtPmlzVGV4dE5vZGUoKSAmJiAh
bm9kZS0+aXNTaGFkb3dSb290KCk7Ci0KLSAgICAgICAgLy8gTm8gY2FuZGlkYXRlIGZvdW5kLCBi
YWlsIG91dC4KLSAgICAgICAgaWYgKCFmb3VuZCAmJiAhbm9kZS0+cGFyZW50Tm9kZSgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENhbmRpZGF0ZSBmb3VuZCwgYW5kIGl0IGlz
IGEgYmV0dGVyIGNhbmRpZGF0ZSB0aGFuIGl0cyBwYXJlbnQuCi0gICAgICAgIC8vIE5COiBBIHBh
cmVudCBpcyBjb25zaWRlcmVkIGEgYmV0dGVyIGNhbmRpZGF0ZSBpZiB0aGUgbm9kZSBpcwotICAg
ICAgICAvLyBjb250YWluZWQgYnkgaXQgYW5kIGl0IGlzIHRoZSBvbmx5IGNoaWxkLgotICAgICAg
ICBpZiAoZm91bmQgJiYgKCFub2RlLT5wYXJlbnROb2RlKCkgfHwgIW5vZGUtPnBhcmVudE5vZGUo
KS0+aGFzT25lQ2hpbGQoKSkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBub2RlID0g
bm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICB6b29tYWJsZUFyZWEudW5pdGUocmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwotICAgIH0KLQotICAgIGlmIChub2RlLT5k
b2N1bWVudCgpLmZyYW1lKCkgJiYgbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCkpIHsK
LSAgICAgICAgY29uc3QgU2Nyb2xsVmlldyogdmlldyA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUo
KS0+dmlldygpOwotICAgICAgICB6b29tYWJsZUFyZWEgPSB2aWV3LT5jb250ZW50c1RvV2luZG93
KHpvb21hYmxlQXJlYSk7Ci0gICAgfQotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRGaW5kWm9vbWFibGVBcmVhKHBvaW50LCB6b29tYWJsZUFyZWEpKTsKLX0KLSNlbmRpZgot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwCmluZGV4IDIyM2I2M2QyNjNhMjhhOTZmNDJjYjg5YmVhNTRlNzU2ZmFlM2FiNzUuLjc3
OTdmZGVlZmU0YWUyYjBjYTA1NjJlMWQ2NDhiMjQ0MjNiZGVmMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtMzgsOSArMzgs
NiBAQAogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAi
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCIKICNlbHNlCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJBY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgiCi0jZWxzZQogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgogI2VuZGlmCiAjZW5k
aWYKQEAgLTYwLDE0ICs1Nyw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2lu
Z0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlCiAgICAgY2FzZSBE
cmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWU6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsK
ICNlbHNlCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBj
YXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxBY2NlbGVyYXRlZERyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKLSNl
bHNlCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVJbXBsOgogICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxEcmF3aW5nQXJlYUltcGw+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlm
Ci0jZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggMGQ2OWMxN2IxODIzZTc3
NDYzYzcyNGJlNzBiYjk4OWRiYmQ0NmQyZi4uYzNkNjgyNzExMDJlYWZkYWI0Mjg1YjRiZjYwYWQx
ZGUzYWU1MmIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKQEAgLTExNSwxMCArMTE1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKICNlbmRpZgogCi0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgPSAwOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwog
CiAgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
MTFkZDEzNmM0NDU5YTU4ZjkxY2Y5ZjAwODA1N2QwMjkyNDg5N2ZiMC4uZGQ2ZTEyOWZkZjA1N2Y3
NzljMmExZTBjMDNjZTQ2MGIxMzM1ZDNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcApAQCAtMjksOSArMjksNyBAQAogCiAj
aW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
X01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKLSNl
bGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCiAjaW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QuaCIKICNlbGlmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3RHdGsuaCIKQEAgLTQ1LDggKzQzLDYgQEAgUmVmUHRy
PExheWVyVHJlZUhvc3Q+IExheWVyVHJlZUhvc3Q6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQog
ewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICAgICByZXR1cm4gVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZSh3ZWJQYWdlKTsKLSNlbGlmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgcmV0dXJuIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHdlYlBhZ2UpOwogI2VsaWYgUExBVEZPUk0oR1RLKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgcmV0dXJuIExheWVyVHJlZUhvc3RHdGs6OmNy
ZWF0ZSh3ZWJQYWdlKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA3MGVlNDM3OGQ4MWFmMzMzMjI4NTk5YWE1NzAz
M2Y3ZGU4NjUyM2YxLi41MWFmNTgxYzY1YzAxYjA4MTU1ZmI2Y2ZiNjY3ZDFlMzNhMTEzNmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0
LmgKQEAgLTc4LDEwICs3OCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgPSAwOwotI2VuZGlmCi0KICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6
ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYm
KSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYWM4NzdmNjk0YTUzNmU3MjQzNTY4Yjk3M2M3MTkyMzEyMGQyMDJmYy4uMzNjNzAxNTAy
YzI0ZWEyZmFkODgxNDg5Mzc2MWE2YTgxNmI5NWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjM4LDEwICsyMzgsNiBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgogCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVy
VHJlZUhvc3RNZXNzYWdlcy5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04p
CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CiAjZW5kaWYKQEAgLTUyMCw5ICs1
MTYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0
aGlzKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBvYmplY3Qg
Y29uc3RydWN0b3JzLCBhbmQgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyBzaG91bGQgYmUgbWVzc2Fn
ZSByZWNlaXZlcnMuCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykK
LSAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7Ci0j
ZW5kaWYKICAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAgICAgd2Vi
UHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAgICAgd2ViUHJvY2Vzcy5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CkBAIC02MjEsOSArNjE0LDYgQEAgV2ViUGFn
ZTo6fldlYlBhZ2UoKQogICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBvYmplY3QgZGVzdHJ1Y3RvcnMsIGFu
ZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzIHNob3VsZCBiZSBtZXNzYWdlIHJlY2VpdmVycy4KLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHdlYlByb2Nlc3Mu
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwotI2VuZGlmCiAgICAgd2ViUHJvY2Vz
cy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZUlEKTsKICAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpA
QCAtMjA1Myw4ICsyMDQzLDYgQEAgdm9pZCBXZWJQYWdlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQogICAgIGRyYXdpbmdBcmVhKCktPnNjcm9sbChJbnRSZWN0KHBvaW50LCBJbnRTaXpl
KCkpLCBJbnRTaXplKCkpOwotI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJP
Q0VTUykKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKHBvaW50KSk7CiAjZW5kaWYKIH0KICNlbmRpZgpAQCAtMjY2NywxNCArMjY1NSw2IEBAIHZv
aWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpCiAKIHZvaWQgV2ViUGFnZTo6ZGlk
Q29tcGxldGVQYWdlVHJhbnNpdGlvbigpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
X01VTFRJUFJPQ0VTUykKLSAgICAvLyBtX21haW5GcmFtZSBjYW4gYmUgbnVsbCBzaW5jZSByMTcw
MTYzLgotICAgIGlmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZp
ZXcoKS0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKLSAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUg
VUkgcHJvY2VzcyBzZW50IHVzIHRoZSB2aXNpYmxlIHJlY3QgaXQgd2FudHMgcmVuZGVyZWQuCi0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KCkpOwotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgIAogICAgIG1fZHJhd2luZ0Fy
ZWEtPnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oZmFsc2UpOwogfQogCkBAIC00MDAwLDE0ICsz
OTgwLDYgQEAgYm9vbCBXZWJQYWdlOjp3aW5kb3dBbmRXZWJQYWdlQXJlRm9jdXNlZCgpIGNvbnN0
CiAKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7Ci0gICAgICAgIGlmIChtX2RyYXdpbmdBcmVhKQotICAgICAgICAgICAgbV9kcmF3
aW5nQXJlYS0+ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3RvciogaW5z
cGVjdG9yID0gdGhpcy0+aW5zcGVjdG9yKCkpCiAgICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwpAQCAtNDUwNywxMyArNDQ3OSw2IEBA
IGJvb2wgV2ViUGFnZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgcmV0dXJuIHBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KTsKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi12
b2lkIFdlYlBhZ2U6OmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKQotewotICAgIG1fZHJh
d2luZ0FyZWEtPnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oZmFsc2UpOwotfQotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViUGFnZTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0
VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3MjQwYmJkMTU0ZjhmMzIwMGU3ODI3MTVkNDkz
ODA2MzBjOTE3MjljLi5mNDQwM2Q0MjdlOGVmNjJjOTdiMTg4OTQyNTFiMzU3MjA5ZjM4NjY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYxMCwx
MCArNjEwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX01VTFRJUFJPQ0VTUykKLSAgICB2b2lkIGNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQo
KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgV2ViQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCk7CiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2lu
dEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC0xMTU4LDEwICsxMTU0LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CiAjZW5kaWYKIAotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9y
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBh
cmVhKTsKLSNlbmRpZgotCiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZl
UG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOwogICAgIHZvaWQgc2V0VGV4dEZvckFjdGl2ZVBv
cHVwTWVudShpbnQzMl90IGluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyMzkzOWMxOTMwZTRmYzFm
ZjY2ZTc1MWI2ZjhkMTMwZWNkZjJkMTA5Li5mOTNiM2I2Zjc3ZGRhNDQyZTEwYTRlOTg5NDI2ZDBi
MjBhN2MzMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzQ1LDEwICszNDUsNiBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUaGVtZVBhdGgoU3RyaW5nIHRoZW1lUGF0
aCkKICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykK
LSAgICBDb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCkKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIFNldENvbXBvc2l0aW9uKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6
Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0
LCB1aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkKICAgICBDb25maXJtQ29tcG9zaXRpb24oU3Ry
aW5nIHRleHQsIGludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIGludDY0X3Qgc2VsZWN0aW9uTGVuZ3Ro
KQpAQCAtNDAxLDkgKzM5Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFNldENvbXBvc2l0aW9uKFN0cmluZyBjb21wb3NpdGlvblN0cmluZywgVmVjdG9yPFdl
YkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQ
b3NpdGlvbikKICAgICBDYW5jZWxDb21wb3NpdGlvbigpCiAjZW5kaWYKLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2lu
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6SW50U2l6ZSBhcmVhKQotI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3Vs
dChTdHJpbmcgcmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301932</attachid>
            <date>2017-02-17 07:24:39 -0800</date>
            <delta_ts>2017-02-18 14:31:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168514-20170217092201.patch</filename>
            <type>text/plain</type>
            <size>48101</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzcyY2IxZGZiYzNmNjY2
YjI1MDhkN2E4MzU3OTVkN2ViZTFiNTg3OC4uMGE3ZjkzM2NjZWFiODMyN2M2ZDRlNDA5YjNhYWU5
ZjZjNWY0YzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAyLTE3ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUg
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAy
MDE3LTAyLTE3ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dTdHJlYW1lcl0gRmFzdCByZXBsYXkgb24gdmlkZW8gaGlkZS91bmhpZGUg
b24gcGxhdGZvcm1zIHdpdGggbGltaXRlZCB2aWRlbyBidWZmZXIgcG9vbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBjMzUyMzU4ZjhlYjg3OGMxOGZkZWE1NjYyZmU3NDk3ZDhmMzkyZTgzLi5iOGQzMGNkMjg3OWFl
NDQzMWQ4ZDFlNTM5ODc1ZjQ0ZjA0ZjRlYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAK
KzIwMTctMDItMTcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFJlbW92ZSBDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0RyYXdp
bmdBcmVhSW5mby5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBo
aWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdGaW5kWm9vbWFibGVBcmVhRm9yUmVjdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6QWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eTo6Y29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1l
c3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdl
RGlkUmVxdWVzdFNjcm9sbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRSZW5kZXJGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZERyYXdpbmdBcmVhOjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkaWRSZWNlaXZlQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29t
bWl0U2NlbmVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXll
clRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tbWl0UGFnZVRy
YW5zaXRpb25WaWV3cG9ydCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKwogMjAxNy0wMi0xNiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBtZXRob2RzIFdLUGFnZUdldERlYnVnUGFpbnRGbGFn
cyBhbmQgV0tQYWdlU2V0RGVidWdQYWludEZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggN2VjYjRlODU1ODUzZWUzMjZk
NzBlYzhhY2VmZjViZmQzNjUwZTEyNC4uOWU2NDA0M2VkNGUwYzQ4ZGM3ZjdjZDJlNzU4MGJmNmIx
NTlhZTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcApAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQogICAgIG1f
cmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCA9IG1fcGxheWVyICYmIG1fcGxheWVyLT5jbGllbnQo
KS5tZWRpYVBsYXllckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgJiYgbV9wbGF5ZXIt
PmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXllcik7
CiB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfTVVMVElQUk9DRVNTKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJl
R0wmIHRleHR1cmUsIEdzdFZpZGVvSW5mbyYgdmlkZW9JbmZvKQogewogICAgIEdzdEJ1ZmZlciog
YnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDM2MzQ4
NmRiMzIwNDQ5OGZjMDEzNjNlOTVjMWY1OTM1ZGYzMTMzNDcuLmY4ZmIyYzFjZjA2NTVkMmFkODE2
YmY0OTBlZDE1YmRlZjdiMWYyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtMjEwLDcgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAg
ICBtdXRhYmxlIEZsb2F0U2l6ZSBtX3ZpZGVvU2l6ZTsKICAgICBib29sIG1fdXNpbmdGYWxsYmFj
a1ZpZGVvU2luazsKICAgICBib29sIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCB7IGZhbHNl
IH07Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX01VTFRJUFJPQ0VTUykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdm9pZCB1
cGRhdGVUZXh0dXJlKEJpdG1hcFRleHR1cmVHTCYsIEdzdFZpZGVvSW5mbyYpOwogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
cmF3aW5nQXJlYUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EcmF3aW5nQXJlYUluZm8u
aAppbmRleCAyMjRkOGQyZDc0MmNmZGViODNmYTRmNGM5NjRiNWU1MzQ0OGZlNmM5Li43ZmM0ZDdj
NGIzZmU2YjRlZGYwYzFiNDIwYzliYjJjYmJjMjVjYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRHJhd2luZ0FyZWFJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0RyYXdpbmdBcmVhSW5mby5oCkBAIC0zNSwxMiArMzUsOCBAQCBlbnVtIERyYXdpbmdBcmVhVHlw
ZSB7CiAjZW5kaWYKICAgICBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsCiAjZWxzZQot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgRHJhd2luZ0Fy
ZWFUeXBlQ29vcmRpbmF0ZWQKLSNlbHNlCiAgICAgRHJhd2luZ0FyZWFUeXBlSW1wbAogI2VuZGlm
Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmll
dy5jcHAKaW5kZXggODVlNzlhYTQ5ZmEwN2MzMThiMjgyYWFjOGQ3ODM4ZGE4MTM3NGE1ZS4uZmFi
MDJiNWUzYjkyMjhlM2U5NTA5YzhiMDJhZjBlYjRmYzdmNzMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
S1ZpZXcuY3BwCkBAIC0xODUsMTUgKzE4NSw4IEBAIGRvdWJsZSBXS1ZpZXdPcGFjaXR5KFdLVmll
d1JlZiB2aWV3KQogICAgIHJldHVybiB0b0ltcGwodmlldyktPm9wYWNpdHkoKTsKIH0KIAotdm9p
ZCBXS1ZpZXdGaW5kWm9vbWFibGVBcmVhRm9yUmVjdChXS1ZpZXdSZWYgdmlld1JlZiwgV0tSZWN0
IHdrUmVjdCkKK3ZvaWQgV0tWaWV3RmluZFpvb21hYmxlQXJlYUZvclJlY3QoV0tWaWV3UmVmLCBX
S1JlY3QpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAg
ICBJbnRSZWN0IHJlY3QgPSB0b0ludFJlY3Qod2tSZWN0KTsKLSAgICB0b0ltcGwodmlld1JlZikt
PmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChyZWN0LmNlbnRlcigpLCByZWN0LnNpemUoKSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2aWV3UmVmKTsKLSAgICBVTlVTRURfUEFSQU0od2tSZWN0
KTsKLSNlbmRpZgogfQogCiBXS1NpemUgV0tWaWV3R2V0Q29udGVudHNTaXplKFdLVmlld1JlZiB2
aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCA3Yjg4ZGFhOGU5YWQwMDI0NTc2MWEzYjYwNTQ0
MjA0MGI2YzgwZDRmLi4xYTRmZjk3OTFlMmQzZjQwODg5YzMyZTgzZWQ4NDgyMzM2OWM3Njg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYVByb3h5LmNwcApAQCAtMzcsMTAgKzM3LDYgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogI2luY2x1ZGUg
IldheWxhbmRDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXku
aD4KQEAgLTUxLDE2ICs0Nyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6QWNjZWxlcmF0ZWREcmF3
aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgOiBEcmF3aW5nQXJlYVByb3h5KERyYXdp
bmdBcmVhVHlwZUNvb3JkaW5hdGVkLCB3ZWJQYWdlUHJveHkpCi0jZWxzZQogICAgIDogRHJhd2lu
Z0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVJbXBsLCB3ZWJQYWdlUHJveHkpCi0jZW5kaWYKIHsK
LSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIC8vIENvbnN0
cnVjdCB0aGUgcHJveHkgZWFybHkgdG8gYWxsb3cgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUg
d2ViIHByb2Nlc3Mgd2hpbGUgQUMgaXMgZW50ZXJlZCB0aGVyZS4KLSAgICBtX2Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eT4od2ViUGFnZVByb3h5KTsKLSNlbmRpZgogfQogCiBBY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHk6On5BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCmlu
ZGV4IDdiOGU2MTYyMjNmMjg3ZWRkNWRhMmY5MDg3NDJmNDkzNjVmOGU1MzUuLmU3ODkwYzgwNzg1
YmEyYzQ4MTNjNDQ3MDk2MWUwZmJkY2M4OTcwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmgKQEAgLTMyLDggKzMy
LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OwotCiBjbGFzcyBBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkgOiBwdWJsaWMg
RHJhd2luZ0FyZWFQcm94eSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYpOwpAQCAtNDIsMTAgKzQwLDYgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
YWx3YXlzVXNlQ29tcG9zaXRpbmcoKSB8fCAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsg
fQogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZSgpOwogCi0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eSYgY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKSBjb25zdCB7IHJldHVybiAqbV9jb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5nZXQoKTsgfQotI2VuZGlmCi0KICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNl
SGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveU5hdGl2ZVN1
cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygpOwpAQCAtNzYsMTAgKzcwLDYgQEAgcHJvdGVjdGVk
OgogCiAgICAgYm9vbCBhbHdheXNVc2VDb21wb3NpdGluZygpIGNvbnN0OwogCi0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk+IG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk7Ci0jZW5kaWYKLQogICAgIC8vIFRoZSBzdGF0ZSBJRCBjb3JyZXNwb25kaW5nIHRvIG91ciBj
dXJyZW50IGJhY2tpbmcgc3RvcmUuIFVwZGF0ZWQgd2hlbmV2ZXIgd2UgYWxsb2NhdGUKICAgICAv
LyBhIG5ldyBiYWNraW5nIHN0b3JlLiBBbnkgbWVzc2FnZXMgcmVjZWl2ZWQgdGhhdCBjb3JyZXNw
b25kIHRvIGFuIGVhcmxpZXIgc3RhdGUgYXJlIGlnbm9yZWQsCiAgICAgLy8gYXMgdGhleSBkb24n
dCBhcHBseSB0byBvdXIgY3VycmVudCBiYWNraW5nIHN0b3JlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZDFhZmQwZGE4YTU3NmM2ZThmZTMxNzU1NzUyMzY5YjEyOTQxMDlkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQotICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1Mp
Ci0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCIKLQotI2luY2x1ZGUg
IkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQotICAgIDog
bV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQotICAgICwgbV9zY2VuZShhZG9wdFJlZihuZXcg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHRoaXMpKSkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQo
KSwgKnRoaXMpOwotfQotCi1Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6fkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5KCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Ci0g
ICAgbV9zY2VuZS0+ZGV0YWNoKCk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnVwZGF0ZVZpZXdwb3J0KCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZXRWaWV3TmVl
ZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV93ZWJQYWdlUHJveHkudmlld1Np
emUoKSkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkaXNwYXRj
aFVwZGF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCi17Ci0gICAgbV9zY2VuZS0+
YXBwZW5kVXBkYXRlKFdURk1vdmUoZnVuY3Rpb24pKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IENv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgZ3JhcGhpY3NTdGF0ZSkKLXsKLSAgICBSZWZQdHI8Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBzY2VuZVByb3RlY3RvcihtX3NjZW5lKTsKLSAgICBkaXNw
YXRjaFVwZGF0ZShbPV0gewotICAgICAgICBzY2VuZVByb3RlY3Rvci0+Y29tbWl0U2NlbmVTdGF0
ZShncmFwaGljc1N0YXRlKTsKLSAgICB9KTsKLQotICAgIHVwZGF0ZVZpZXdwb3J0KCk7Ci0gICAg
bV93ZWJQYWdlUHJveHkuZGlkUmVuZGVyRnJhbWUoZ3JhcGhpY3NTdGF0ZS5jb250ZW50c1NpemUs
IGdyYXBoaWNzU3RhdGUuY292ZXJlZFJlY3QpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKLXsKLSAgICBpZiAocmVjdCA9
PSBtX2xhc3RTZW50VmlzaWJsZVJlY3QgJiYgdHJhamVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50
VHJhamVjdG9yeVZlY3RvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6U2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9yKSwgbV93ZWJQYWdlUHJveHku
cGFnZUlEKCkpOwotICAgIG1fbGFzdFNlbnRWaXNpYmxlUmVjdCA9IHJlY3Q7Ci0gICAgbV9sYXN0
U2VudFRyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotfQotCi12b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW5kZXJOZXh0RnJhbWUoKQotewotICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OlJlbmRlck5leHRGcmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Ci19Ci0KLXZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50
MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCi17Ci0gICAgbV93ZWJQYWdlUHJv
eHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29t
bWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgp
KTsKLX0KLQotfQotI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3MjJkNTg0ODFmOGZhMjMzYWQyZjg2
NWE3YjAxYTBjMjVjYTMzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBA
QAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJ
bmMuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotKi8KLQotI2lmbmRlZiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eV9oCi0jZGVmaW5l
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5X2gKLQotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKLQotI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IgotI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLXN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU7Ci1jbGFzcyBJbnRTaXplOwotfQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSA6IHB1YmxpYyBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmVDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOwotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5KFdlYlBhZ2VQcm94eSYpOwotICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5KCk7Ci0KLSAgICB2b2lkIGNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKLQotICAgIHZvaWQg
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKTsKLSAgICBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NlbmUuZ2V0KCk7IH0KLQotICAgIHZvaWQgdXBkYXRlVmlld3BvcnQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbmRlck5leHRGcmFtZSgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBjb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0
KSBvdmVycmlkZTsKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgZGlzcGF0Y2hVcGRhdGUoc3RkOjpm
dW5jdGlvbjx2b2lkKCk+KTsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKLQotICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7Ci0gICAgUmVmUHRyPENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4gbV9zY2VuZTsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
bV9sYXN0U2VudFZpc2libGVSZWN0OwotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U2Vu
dFRyYWplY3RvcnlWZWN0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLQotI2VuZGlmIC8vIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVkYjJmMGY3NzU3Y2ZlZGIxY2U1MjQ5YmRmNzVlY2Y3NjQwYmQ4MDUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jCi0jICAgIENv
cHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKLSMgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJbmMuCi0jCi0jICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSMgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSMgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0j
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0jICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0jICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSMgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSMKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLW1lc3NhZ2VzIC0+IENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IHsKLQotICAgIENvbW1pdENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZShzdHJ1Y3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHN0YXRlKQot
fQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGU4ZmY3ZDViYzJkZDZjMGU0OGIwN2ZjYWEwNzM0ZTRkNDZlNjZlNjcuLjgzMDE3ZjIwM2E1
NmZjZmE2MjBmNmVlYWE2MDhlYmQzMWQ2ZGJjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiUGFnZVZp
ZXdwb3J0Q29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVBy
b3h5LmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCIKICNpbmNs
dWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KQEAgLTIxNSwxNCArMjE0LDYg
QEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKQogICAgICAgICBmbG9hdCBpbml0aWFsU2NhbGUgPSBtX2luaXRpYWxseUZpdFRvVmlld3Bv
cnQgPyBtX21pbmltdW1TY2FsZVRvRml0IDogbV9yYXdBdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsK
ICAgICAgICAgYXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMoaW5uZXJCb3VuZGVkVmll
d3BvcnRTY2FsZShpbml0aWFsU2NhbGUpKTsKICAgICB9Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Ugc2hvdWxkIGFs
cmVhZHkgaGF2ZSByZWNlaXZlZCB0aGUgZmlyc3Qgdmlld3BvcnQgYXJndW1lbnRzIGFuZCB0aGUg
cmVxdWVzdGVkIHNjcm9sbAotICAgIC8vIHBvc2l0aW9uIGZvciB0aGUgbmV3bHkgbG9hZGVkIHBh
Z2UgYW5kIHNlbnQgb3VyIHJlYWN0aW9ucyB0byB0aGUgd2ViIHByb2Nlc3MuIEl0J3Mgbm93IHNh
ZmUgdG8gdGVsbAotICAgIC8vIHRoZSB3ZWIgcHJvY2VzcyB0byBzdGFydCByZW5kZXJpbmcgdGhl
IG5ldyBwYWdlIGNvbnRlbnRzIGFuZCBwb3NzaWJseSByZS11c2UgdGhlIGN1cnJlbnQgdGlsZXMu
Ci0gICAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgYWxsIG1lc3NhZ2VzIGhhdmUgYmVlbiBoYW5kbGVk
IGluIG9yZGVyIGFuZCB0aGF0IG5vdGhpbmcgaGFzIGJlZW4gcHVzaGVkIGJhY2sgb24gdGhlIGV2
ZW50IGxvb3AuCi0gICAgbV93ZWJQYWdlUHJveHktPmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3Bv
cnQoKTsKLSNlbmRpZgogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBhZ2VEaWRS
ZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBjc3NQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViUGFnZVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNzNkMzY5ZjE2ZTAzOGM0ZWIxOTY2MGVjN2VjNjlkYWNl
ZGU0ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0KLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLQot
I2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJ
UFJPQ0VTUykKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRTaXplJiBhcmVhKQotewotICAgIGlmICghaXNW
YWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZpbmRab29tYWJsZUFyZWFGb3JQb2ludChwb2ludCwgYXJlYSksIG1fcGFnZUlE
KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgSW50
UG9pbnQmIHRhcmdldCwgY29uc3QgSW50UmVjdCYgYXJlYSkKLXsKLSAgICBtX3BhZ2VDbGllbnQu
ZGlkRmluZFpvb21hYmxlQXJlYSh0YXJnZXQsIGFyZWEpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggM2RmMTg4Zjll
MmVjYTg2MzI1NTViNDYyYzBjYzY4ZjE5OWQ3ODVjNC4uZWU5N2YwYzg1YTE4MzEwNjNmNWY1MjJj
ZDYyY2MyZmQwNjA3M2Q1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJUcmVlQ29udGV4dDsKLWNsYXNzIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OwogY2xhc3MgVXBkYXRlSW5mbzsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNGE1NzJkZjBiZDMw
ZjNiMDQ1ZWY1NTA1YTg5ZjM1OTVkYjUwZWZiOC4uZDBkMjJmNzcxYTAxYTk0NDViZjI1NTE4NmI2
MDA1MTU0MWMwMzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0x
NDEsMTMgKzE0MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvck1haW5GcmFtZSgpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9h
ZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRl
bnRQcm92aWRlcikgPSAwOwogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJP
Q0VTUykKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y292ZXJlZFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oRUZMKQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRT
dGF0ZSgpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShFRkwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIzZDY0ODFjZmVjMTMwZGI5MGEyYmQ5Y2M1MDAz
ZTAyZmNjODY1MGYuLjljM2QyZTE4NDc0NjI4MTY3MDBhN2FiOGUxNDQzYmM0OWI0YzFmNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzYsMTAgKzEz
Niw2IEBACiAjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotI2luY2x1
ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZXMuaCIKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKFZJQlJBVElPTikKICNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eS5oIgogI2Vu
ZGlmCkBAIC00MTA1LDMxICs0MTAxLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGYKICAgICBt
X3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJh
bWUsIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CiB9CiAK
LSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotdm9pZCBXZWJQYWdl
UHJveHk6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb2ludCkKLXsKLSAg
ICBtX3BhZ2VDbGllbnQucGFnZURpZFJlcXVlc3RTY3JvbGwocG9pbnQpOwotfQotCi12b2lkIFdl
YlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKLXsKLSAgICBtX3BhZ2VD
bGllbnQucGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQotewotICAgIG1fcGFnZUNsaWVu
dC5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKLX0KLQotdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKQotewotICAgIGlmICgh
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpLCBtX3BhZ2VJRCk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGll
cyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA3M2E3ZmU4Y2NlYjU5MDk3MjNiMTczNzQ5ZmNkZTc3NGE2OGE3
NjNjLi4zOTliMjQwNDQ5ZDA4ZTIyYTAzNDEwMWNmYTExNWUzNTE0MGI4N2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NjUsMTAgKzU2NSw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgdXBkYXRlTGF5b3V0Vmlld3BvcnRQYXJhbWV0ZXJzKGNvbnN0IFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKTsKIAotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVy
ZWRSZWN0KTsKLSAgICB2b2lkIGNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKTsKLSNlbmRp
ZgogI2lmIFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcm
KTsKICNlbmRpZgpAQCAtOTEzLDEwICs5MDksNiBAQCBwdWJsaWM6CiAKICAgICBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycygpOwogCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2b2lkIGZpbmRab29tYWJsZUFyZWFGb3JQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
LSNlbmRpZgotCiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSop
OwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbik7CkBAIC0xMzUzLDEyICsxMzQ1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOwog
ICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7
CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHZvaWQg
cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lk
IHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwotICAgIHZvaWQgZGlkRmluZFpvb21hYmxl
QXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
LSNlbmRpZgotCiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGEzZjBlNDdm
N2RhZjAzMzI0ZGM0ODhmYjBjMWY1MTg2NGY4NTI3NTAuLmFjNDYzMTRiMWMxZmQ3ZTc5ZmVhYzY5
OGU4N2NiMjFjYzI5NTQzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTUsMTIgKzk1LDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBIYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oKSAtPiAoYm9vbCBoYW5k
bGVkKQogI2VuZGlmCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNT
KQotICAgIFBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQotICAg
IFBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCi0gICAgRGlkRmluZFpvb21hYmxlQXJlYShX
ZWJDb3JlOjpJbnRQb2ludCB0YXJnZXQsIFdlYkNvcmU6OkludFJlY3QgYXJlYSkKLSNlbmRpZgot
CiAgICAgRGlkQ2hhbmdlQ29udGVudFNpemUoV2ViQ29yZTo6SW50U2l6ZSBuZXdTaXplKQogCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKaW5kZXgg
ODhkMzJlMGQzMmJiYjE5N2IxNzJiNzM1ZWU0YTY3NzVkYjllM2Y5NC4uYTI0OWZlZDVmZTJlNjE2
YTFhMWM0NDMxMzdlMjc5NmUyYThjOTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcApAQCAt
NTAsMTEgKzUwLDcgQEAgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6fkFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWEoKQogfQogCiBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpBY2NlbGVyYXRlZERyYXdpbmdB
cmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAg
ICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkLCB3ZWJQYWdlKQotI2Vs
c2UKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZUltcGwsIHdlYlBhZ2UpCi0jZW5k
aWYKICAgICAsIG1fZXhpdENvbXBvc2l0aW5nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQog
ICAgICwgbV9kaXNjYXJkUHJldmlvdXNMYXllclRyZWVIb3N0VGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGlzY2FyZFByZXZpb3VzTGF5ZXJUcmVl
SG9zdCkKIHsKQEAgLTIzNSwxNiArMjMxLDEwIEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YTo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3Qgc3RhdGVJRCwgYm9vbCByZXNwCiAg
ICAgICAgIG1fd2ViUGFnZS5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBtX3dlYlBhZ2Uuc2Ny
b2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCk7CiAKLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgICAgICAvLyBDb29y
ZGluYXRlZCBHcmFwaGljcyBzZXRzIHRoZSBzaXplIG9mIHRoZSByb290IGxheWVyIHRvIGNvbnRl
bnRzIHNpemUuCi0gICAgICAgIGlmICghbV93ZWJQYWdlLnVzZUZpeGVkTGF5b3V0KCkpCi0gICAg
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7
Ci0jZWxzZQogICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0KQogICAgICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zaXplRGlkQ2hhbmdlKG1fd2ViUGFnZS5zaXplKCkpOwogICAgICAgICBlbHNl
IGlmIChtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIG1fcHJldmlvdXNMYXll
clRyZWVIb3N0LT5zaXplRGlkQ2hhbmdlKG1fd2ViUGFnZS5zaXplKCkpOwotI2VuZGlmCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHNpemUgPT0gbV93ZWJQYWdlLnNpemUoKSk7CiAgICAg
ICAgIGlmICghbV9zaG91bGRTZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpIHsKQEAgLTQw
MywxMyArMzkzLDYgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkaXNjYXJkUHJldmlv
dXNMYXllclRyZWVIb3N0KCkKICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7
CiB9CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotdm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKLXsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotfQotI2VuZGlmCi0KICNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAh
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiB2b2lkIEFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWE6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCBoYW5k
bGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRleCBmMGI3ODlhZmI0OTYyOTBmYzhmYWU0ZDgw
ZWIwNWRhMTY0Y2RmMDlhLi5lYWQzMmFiNmQ0M2UyZDNjNDQwOTM4NTcwZGRjMzE0Yjk2MjU0MTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTU5LDEwICs1OSw2IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAK
LSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHZvaWQgZGlk
UmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JD
b21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDE3MWViMGJlNTQ1NjY4YzY4ZmUxZjFjZjZmNTYzMjIzM2FhMDQ4NTYuLjM1MDg4Y2E0ZTE4Mjlk
OTJiMjMzMTM4NzlmZTM4ZmUzZjA3ZjRiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNDAsMTAgKzQwLDYg
QEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICNpbmNsdWRlICJU
aHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCi0jZWxpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfTVVMVElQUk9DRVNTKQotI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVu
dENvZGVycy5oIgotI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2Fn
ZXMuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY1LDkgKzYxLDYgQEAgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkKICAgICAs
IG1fbGF5ZXJGbHVzaFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpCiB7CiAgICAgbV9jb29yZGluYXRvci5j
cmVhdGVSb290TGF5ZXIobV93ZWJQYWdlLnNpemUoKSk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0g
ZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqbV9jb29yZGluYXRvci5yb290TGF5
ZXIoKSkuaWQoKTsKLSNlbmRpZgogCiAgICAgQ29vcmRpbmF0ZWRTdXJmYWNlOjpzZXRGYWN0b3J5
KGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CkBA
IC0xOTYsOSArMTg5LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhaW50TGF5
ZXJDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3MKIAogdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJiBzdGF0ZSkKIHsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQ
Uk9DRVNTKQotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6Q29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKHN0YXRlKSk7Ci0jZW5k
aWYKICAgICBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyID0gdHJ1ZTsKIH0KIApAQCAtMjA2LDggKzE5
Niw2IEBAIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvCiB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQogICAgIHJldHVybiBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoc2l6ZSwgZmxhZ3MpOwotI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01V
TFRJUFJPQ0VTUykKLSAgICByZXR1cm4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoc2l6
ZSwgZmxhZ3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggZjM0N2Y0ODc1MjE2YWVlOTUzZmQ0MTgyNDkzYzVkYzU2
OWFlZGZhMS4uN2IzYWE1ZDM1NjU5ZDlmMTBhZDVjMDg5N2VkNGNhYzcyNjViOTA0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKQEAgLTc2LDEwICs3Niw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBsYXll
ckZsdXNoVGltZXJGaXJlZCgpOwogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJ
UFJPQ0VTUykKLSAgICB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotI2VuZGlmCi0K
ICAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29v
cmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzKTsKIAogICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0b3IgbV9jb29y
ZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VD
b29yZGluYXRlZEdyYXBoaWNzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU2
Yjk2Nzg3Njk0OTljMjdiZmNjZTBmMmRmN2YxMTFmMTU4OWY4Yi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
Ci0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWUu
aCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxWaWV3
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi12b2lkIFdlYlBhZ2U6
OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IElu
dFNpemUmIGFyZWEpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGFyZWEpOwotICAgIEZyYW1lKiBtYWlu
ZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5m
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQp
OwotCi0gICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKLQotICAgIGlmICghbm9k
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50UmVjdCB6b29tYWJsZUFyZWE7Ci0gICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQotICAgICAgICB6b29t
YWJsZUFyZWEgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLQotICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSAhbm9kZS0+aXNUZXh0Tm9kZSgpICYm
ICFub2RlLT5pc1NoYWRvd1Jvb3QoKTsKLQotICAgICAgICAvLyBObyBjYW5kaWRhdGUgZm91bmQs
IGJhaWwgb3V0LgotICAgICAgICBpZiAoIWZvdW5kICYmICFub2RlLT5wYXJlbnROb2RlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2FuZGlkYXRlIGZvdW5kLCBhbmQgaXQg
aXMgYSBiZXR0ZXIgY2FuZGlkYXRlIHRoYW4gaXRzIHBhcmVudC4KLSAgICAgICAgLy8gTkI6IEEg
cGFyZW50IGlzIGNvbnNpZGVyZWQgYSBiZXR0ZXIgY2FuZGlkYXRlIGlmIHRoZSBub2RlIGlzCi0g
ICAgICAgIC8vIGNvbnRhaW5lZCBieSBpdCBhbmQgaXQgaXMgdGhlIG9ubHkgY2hpbGQuCi0gICAg
ICAgIGlmIChmb3VuZCAmJiAoIW5vZGUtPnBhcmVudE5vZGUoKSB8fCAhbm9kZS0+cGFyZW50Tm9k
ZSgpLT5oYXNPbmVDaGlsZCgpKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHpvb21hYmxlQXJlYS51bml0ZShyZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7Ci0gICAgfQotCi0gICAgaWYgKG5vZGUt
PmRvY3VtZW50KCkuZnJhbWUoKSAmJiBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKSkg
ewotICAgICAgICBjb25zdCBTY3JvbGxWaWV3KiB2aWV3ID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpLT52aWV3KCk7Ci0gICAgICAgIHpvb21hYmxlQXJlYSA9IHZpZXctPmNvbnRlbnRzVG9XaW5k
b3coem9vbWFibGVBcmVhKTsKLSAgICB9Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEZpbmRab29tYWJsZUFyZWEocG9pbnQsIHpvb21hYmxlQXJlYSkpOwotfQotI2VuZGlm
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5jcHAKaW5kZXggMjIzYjYzZDI2M2EyOGE5NmY0MmNiODliZWE1NGU3NTZmYWUzYWI3NS4u
MmU3ODBkOTFiZTU4MTA4ZjQwOWQ0NDUxNTBlMjc4Mjc2YWY5ZDJiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0zOCwxMiAr
MzgsOCBAQAogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgiCiAjaW5jbHVk
ZSAiVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCIKICNlbHNlCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJBY2NlbGVyYXRlZERyYXdp
bmdBcmVhLmgiCi0jZWxzZQogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgogI2VuZGlmCi0j
ZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYwLDE0ICs1Niw5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3
ZWJQYWdlLCBjb25zdCBXZWJQYWdlCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXll
clRyZWU6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbHNlCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBjYXNlIERyYXdpbmdBcmVhVHlwZUNvb3Jk
aW5hdGVkOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRlZERyYXdp
bmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKLSNlbHNlCiAgICAgY2FzZSBEcmF3aW5nQXJl
YVR5cGVJbXBsOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYUlt
cGw+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCi0jZW5kaWYKICAgICB9CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKaW5kZXggMGQ2OWMxN2IxODIzZTc3NDYzYzcyNGJlNzBiYjk4OWRiYmQ0NmQy
Zi4uYzNkNjgyNzExMDJlYWZkYWI0Mjg1YjRiZjYwYWQxZGUzYWU1MmIyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTExNSwxMCAr
MTE1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheUlEKTsKICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJ
UFJPQ0VTUykKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgPSAwOwotI2VuZGlm
Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBv
c2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyog
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAv
KiBjYWxsYmFja0lEcyAqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTFkZDEzNmM0NDU5YTU4ZjkxY2Y5ZjAw
ODA1N2QwMjkyNDg5N2ZiMC4uZGQ2ZTEyOWZkZjA1N2Y3NzljMmExZTBjMDNjZTQ2MGIxMzM1ZDNk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmNwcApAQCAtMjksOSArMjksNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5o
IgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRl
ICJDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKLSNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAj
aW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKICNlbGlmIFBMQVRG
T1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIkxheWVyVHJlZUhv
c3RHdGsuaCIKQEAgLTQ1LDggKzQzLDYgQEAgUmVmUHRyPExheWVyVHJlZUhvc3Q+IExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQogewogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKICAgICByZXR1cm4gVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZSh3ZWJQYWdlKTsKLSNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19N
VUxUSVBST0NFU1MpCi0gICAgcmV0dXJuIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
KHdlYlBhZ2UpOwogI2VsaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CiAgICAgcmV0dXJuIExheWVyVHJlZUhvc3RHdGs6OmNyZWF0ZSh3ZWJQYWdlKTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApp
bmRleCA3MGVlNDM3OGQ4MWFmMzMzMjI4NTk5YWE1NzAzM2Y3ZGU4NjUyM2YxLi41MWFmNTgxYzY1
YzAxYjA4MTU1ZmI2Y2ZiNjY3ZDFlMzNhMTEzNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTc4LDEwICs3OCw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgPSAwOwotI2VuZGlmCi0KICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWM4NzdmNjk0YTUzNmU3MjQz
NTY4Yjk3M2M3MTkyMzEyMGQyMDJmYy4uMzNjNzAxNTAyYzI0ZWEyZmFkODgxNDg5Mzc2MWE2YTgx
NmI5NWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMjM4LDEwICsyMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaD4KICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJP
Q0VTUykKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlcy5oIgotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRh
RGV0ZWN0aW9uLmg+CiAjZW5kaWYKQEAgLTUyMCw5ICs1MTYsNiBAQCBXZWJQYWdlOjpXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2U6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBvYmplY3QgY29uc3RydWN0b3JzLCBhbmQgdGhlIG9i
amVjdHMgdGhlbXNlbHZlcyBzaG91bGQgYmUgbWVzc2FnZSByZWNlaXZlcnMuCi0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB3ZWJQcm9jZXNzLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7Ci0jZW5kaWYKICAgICB3ZWJQcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAq
dGhpcyk7CkBAIC02MjEsOSArNjE0LDYgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogICAgIHdlYlBy
b2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBk
b25lIGluIHRoZSBvYmplY3QgZGVzdHJ1Y3RvcnMsIGFuZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVz
IHNob3VsZCBiZSBtZXNzYWdlIHJlY2VpdmVycy4KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfTVVMVElQUk9DRVNTKQotICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQpOwotI2VuZGlmCiAgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7
CiAgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICAgICB3ZWJQcm9jZXNz
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtMjA1Myw4ICsyMDQzLDYgQEAgdm9p
ZCBXZWJQYWdlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7
CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogICAgIGRyYXdpbmdBcmVh
KCktPnNjcm9sbChJbnRSZWN0KHBvaW50LCBJbnRTaXplKCkpLCBJbnRTaXplKCkpOwotI2VsaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvaW50KSk7CiAjZW5kaWYKIH0K
ICNlbmRpZgpAQCAtMjY2NywxNCArMjY1NSw2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdl
VHJhbnNpdGlvbigpCiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigp
CiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICAvLyBt
X21haW5GcmFtZSBjYW4gYmUgbnVsbCBzaW5jZSByMTcwMTYzLgotICAgIGlmIChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+ZGVsZWdhdGVzU2Nyb2xsaW5n
KCkpIHsKLSAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgVUkgcHJvY2VzcyBzZW50IHVzIHRoZSB2
aXNpYmxlIHJlY3QgaXQgd2FudHMgcmVuZGVyZWQuCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkpOwotICAgIH0gZWxzZQot
I2VuZGlmCi0gICAgICAgIAogICAgIG1fZHJhd2luZ0FyZWEtPnNldExheWVyVHJlZVN0YXRlSXNG
cm96ZW4oZmFsc2UpOwogfQogCkBAIC00MDAwLDE0ICszOTgwLDYgQEAgYm9vbCBXZWJQYWdlOjp3
aW5kb3dBbmRXZWJQYWdlQXJlRm9jdXNlZCgpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmICht
X2RyYXdpbmdBcmVhKQotICAgICAgICAgICAgbV9kcmF3aW5nQXJlYS0+ZGlkUmVjZWl2ZUNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKICAgICAgICAgaWYgKFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gdGhpcy0+aW5zcGVjdG9y
KCkpCiAgICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwpAQCAtNDUwNywxMyArNDQ3OSw2IEBAIGJvb2wgV2ViUGFnZTo6Y2FuSGFuZGxl
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgcmV0
dXJuIHBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKIH0KIAotI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi12b2lkIFdlYlBhZ2U6OmNvbW1pdFBhZ2VU
cmFuc2l0aW9uVmlld3BvcnQoKQotewotICAgIG1fZHJhd2luZ0FyZWEtPnNldExheWVyVHJlZVN0
YXRlSXNGcm96ZW4oZmFsc2UpOwotfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKIHZv
aWQgV2ViUGFnZTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA3MjQwYmJkMTU0ZjhmMzIwMGU3ODI3MTVkNDkzODA2MzBjOTE3MjljLi5mNDQwM2Q0Mjdl
OGVmNjJjOTdiMTg4OTQyNTFiMzU3MjA5ZjM4NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYxMCwxMCArNjEwLDYgQEAgcHVibGljOgogICAg
IHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNl
bmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICB2
b2lkIGNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51KCk7CiAgICAg
V2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50Jik7CkBAIC0xMTU4LDEwICsxMTU0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzJik7CiAjZW5kaWYKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NF
U1MpCi0gICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBhcmVhKTsKLSNlbmRpZgotCiAgICAgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5k
ZXgpOwogICAgIHZvaWQgc2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IGluZGV4KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCAyMzkzOWMxOTMwZTRmYzFmZjY2ZTc1MWI2ZjhkMTMwZWNkZjJkMTA5
Li5mOTNiM2I2Zjc3ZGRhNDQyZTEwYTRlOTg5NDI2ZDBiMjBhN2MzMmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMzQ1LDEwICszNDUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZXRUaGVtZVBhdGgoU3RyaW5nIHRoZW1lUGF0aCkKICNlbmRpZgogCi0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICBDb21taXRQYWdlVHJhbnNpdGlv
blZpZXdwb3J0KCkKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFNldENvbXBvc2l0
aW9uKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVu
ZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBzZWxlY3Rpb25FbmQs
IHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5n
ZUVuZCkKICAgICBDb25maXJtQ29tcG9zaXRpb24oU3RyaW5nIHRleHQsIGludDY0X3Qgc2VsZWN0
aW9uU3RhcnQsIGludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoKQpAQCAtNDAxLDkgKzM5Nyw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldENvbXBvc2l0aW9uKFN0
cmluZyBjb21wb3NpdGlvblN0cmluZywgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJs
aW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbikKICAgICBDYW5jZWxDb21w
b3NpdGlvbigpCiAjZW5kaWYKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9D
RVNTKQotICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgV2ViQ29yZTo6SW50U2l6ZSBhcmVhKQotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChTdHJpbmcgcmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302058</attachid>
            <date>2017-02-18 14:31:58 -0800</date>
            <delta_ts>2017-02-18 15:10:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168514-20170218162918.patch</filename>
            <type>text/plain</type>
            <size>46849</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI3Y2I2Y2ExYmIxZmY5
NmY0OWJiYzg0NTU3MWRkNGY4NGIyZDZiNy4uYTIxOGI5ZmZhZjZiN2VmY2QwY2VhZTgxMWFjMjUx
NzE2NTcwMTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAyLTE4ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUg
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAyMDE3
LTAyLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEFsbG93IHByb3BlcnRpZXMgaW4gQ1NTUHJvcGVydGllcy5qc29uIHRoYXQgZG9uJ3QgdHJpZ2dl
ciBjb2RlIGdlbmVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZThlYjNmMTdkNTQ3MWQ4MjE4MmJlNzFk
OWYwOTI5MDU0YTc0OTI4Li4yY2QxMDljYzA2OWY5N2VkNThkZDQwZDgzZGIxYjEyMDRiNWE4NzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAgQEAKIDIwMTctMDItMTggIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCisgICAgICAgIFJlbW92ZSBDT09SRElOQVRF
RF9HUkFQSElDU19NVUxUSVBST0NFU1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2ODUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1Zp
ZXdGaW5kWm9vbWFibGVBcmVhRm9yUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJh
d2luZ0FyZWFQcm94eTo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6Y29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlv
blZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYlBhZ2VQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZW5kZXJGcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UGFnZVRy
YW5zaXRpb25WaWV3cG9ydCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpBY2NlbGVyYXRlZERyYXdp
bmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dXBkYXRl
QmFja2luZ1N0b3JlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdB
cmVhOjpkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKworMjAxNy0wMi0xOCAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dUS10gQ2Fubm90
IHBhc3RlIHByaW1hcnkgc2VsZWN0aW9uIGludG8gd2ViIHZpZXcgaW4gV2F5bGFuZAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTQ5CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRl
eCA3ZWNiNGU4NTU4NTNlZTMyNmQ3MGVjOGFjZWZmNWJmZDM2NTBlMTI0Li45ZTY0MDQzZWQ0ZTBj
NDhkYzdmN2NkMmU3NTgwYmY2YjE1OWFlODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC02MTgsNyArNjE4LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0
YXRlQ2hhbmdlZCgpCiAgICAgbV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkID0gbV9wbGF5ZXIg
JiYgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoKSAmJiBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFj
Y2VsZXJhdGVkKG1fcGxheWVyKTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVU
ZXh0dXJlKEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZSwgR3N0VmlkZW9JbmZvJiB2aWRlb0luZm8p
CiB7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1w
bGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmgKaW5kZXggMzYzNDg2ZGIzMjA0NDk4ZmMwMTM2M2U5NWMxZjU5MzVkZjMxMzM0Ny4u
ZjhmYjJjMWNmMDY1NWQyYWQ4MTZiZjQ5MGVkMTViZGVmN2IxZjJjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0yMTAsNyArMjEw
LDcgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgRmxvYXRTaXplIG1fdmlkZW9TaXplOwogICAg
IGJvb2wgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rOwogICAgIGJvb2wgbV9yZW5kZXJpbmdDYW5C
ZUFjY2VsZXJhdGVkIHsgZmFsc2UgfTsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQorI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKICAgICB2b2lkIHVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiwgR3N0Vmlk
ZW9JbmZvJik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0RyYXdpbmdBcmVhSW5mby5oCmluZGV4IDIyNGQ4ZDJkNzQyY2ZkZWI4M2ZhNGY0Yzk2NGI1
ZTUzNDQ4ZmU2YzkuLjdmYzRkN2M0YjNmZTZiNGVkZjBjMWI0MjBjOWJiMmNiYmMyNWNjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EcmF3aW5nQXJlYUluZm8uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2luZ0FyZWFJbmZvLmgKQEAgLTM1LDEyICszNSw4IEBA
IGVudW0gRHJhd2luZ0FyZWFUeXBlIHsKICNlbmRpZgogICAgIERyYXdpbmdBcmVhVHlwZVJlbW90
ZUxheWVyVHJlZSwKICNlbHNlCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJP
Q0VTUykKLSAgICBEcmF3aW5nQXJlYVR5cGVDb29yZGluYXRlZAotI2Vsc2UKICAgICBEcmF3aW5n
QXJlYVR5cGVJbXBsCiAjZW5kaWYKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAppbmRleCA4NWU3OWFhNDlmYTA3YzMxOGIyODJhYWM4
ZDc4MzhkYTgxMzc0YTVlLi5mYWIwMmI1ZTNiOTIyOGUzZTk1MDljOGIwMmFmMGViNGZjN2Y3MzNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9D
b29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKQEAgLTE4NSwxNSArMTg1LDggQEAgZG91Ymxl
IFdLVmlld09wYWNpdHkoV0tWaWV3UmVmIHZpZXcpCiAgICAgcmV0dXJuIHRvSW1wbCh2aWV3KS0+
b3BhY2l0eSgpOwogfQogCi12b2lkIFdLVmlld0ZpbmRab29tYWJsZUFyZWFGb3JSZWN0KFdLVmll
d1JlZiB2aWV3UmVmLCBXS1JlY3Qgd2tSZWN0KQordm9pZCBXS1ZpZXdGaW5kWm9vbWFibGVBcmVh
Rm9yUmVjdChXS1ZpZXdSZWYsIFdLUmVjdCkKIHsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfTVVMVElQUk9DRVNTKQotICAgIEludFJlY3QgcmVjdCA9IHRvSW50UmVjdCh3a1JlY3QpOwot
ICAgIHRvSW1wbCh2aWV3UmVmKS0+ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KHJlY3QuY2VudGVy
KCksIHJlY3Quc2l6ZSgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZpZXdSZWYpOwotICAg
IFVOVVNFRF9QQVJBTSh3a1JlY3QpOwotI2VuZGlmCiB9CiAKIFdLU2l6ZSBXS1ZpZXdHZXRDb250
ZW50c1NpemUoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCmluZGV4IDdiODhkYWE4
ZTlhZDAwMjQ1NzYxYTNiNjA1NDQyMDQwYjZjODBkNGYuLjFhNGZmOTc5MWUyZDNmNDA4ODljMzJl
ODNlZDg0ODIzMzY5Yzc2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCkBAIC0zNywxMCArMzcsNiBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+
CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotI2luY2x1ZGUg
IkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCiAjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtRGlzcGxheS5oPgpAQCAtNTEsMTYgKzQ3LDggQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVBy
b3h5OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHkpCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICA6IERy
YXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlQ29vcmRpbmF0ZWQsIHdlYlBhZ2VQcm94eSkK
LSNlbHNlCiAgICAgOiBEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZUltcGwsIHdlYlBh
Z2VQcm94eSkKLSNlbmRpZgogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBS
T0NFU1MpCi0gICAgLy8gQ29uc3RydWN0IHRoZSBwcm94eSBlYXJseSB0byBhbGxvdyBtZXNzYWdl
cyB0byBiZSBzZW50IHRvIHRoZSB3ZWIgcHJvY2VzcyB3aGlsZSBBQyBpcyBlbnRlcmVkIHRoZXJl
LgotICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Pih3ZWJQYWdlUHJveHkpOwotI2VuZGlmCiB9
CiAKIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6fkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQ
cm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYVByb3h5LmgKaW5kZXggN2I4ZTYxNjIyM2YyODdlZGQ1ZGEyZjkwODc0MmY0OTM2
NWY4ZTUzNS4uZTc4OTBjODA3ODViYTJjNDgxM2M0NDcwOTYxZTBmYmRjYzg5NzA2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
UHJveHkuaApAQCAtMzIsOCArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3Mg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk7Ci0KIGNsYXNzIEFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWFQcm94eSA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5Jik7CkBAIC00Miwx
MCArNDAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBhbHdheXNVc2VDb21wb3NpdGluZygpIHx8ICFtX2xheWVyVHJl
ZUNvbnRleHQuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCk7CiAK
LSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5JiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgpIGNv
bnN0IHsgcmV0dXJuICptX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmdldCgpOyB9Ci0j
ZW5kaWYKLQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQ
TEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICB2
b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCk7CiAgICAg
dm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCk7CkBAIC03Niwx
MCArNzAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGFsd2F5c1VzZUNvbXBvc2l0aW5nKCkg
Y29uc3Q7CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eT4gbV9jb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTsKLSNlbmRpZgotCiAgICAgLy8gVGhlIHN0YXRlIElEIGNv
cnJlc3BvbmRpbmcgdG8gb3VyIGN1cnJlbnQgYmFja2luZyBzdG9yZS4gVXBkYXRlZCB3aGVuZXZl
ciB3ZSBhbGxvY2F0ZQogICAgIC8vIGEgbmV3IGJhY2tpbmcgc3RvcmUuIEFueSBtZXNzYWdlcyBy
ZWNlaXZlZCB0aGF0IGNvcnJlc3BvbmQgdG8gYW4gZWFybGllciBzdGF0ZSBhcmUgaWdub3JlZCwK
ICAgICAvLyBhcyB0aGV5IGRvbid0IGFwcGx5IHRvIG91ciBjdXJyZW50IGJhY2tpbmcgc3RvcmUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMWFmZDBkYThhNTc2YzZlOGZlMzE3
NTU3NTIzNjliMTI5NDEwOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAs
MCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAw
LCBJbmMuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX01VTFRJUFJPQ0VTUykKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5oIgotCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHkpCi0gICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCi0gICAgLCBt
X3NjZW5lKGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUodGhpcykpKQotewot
ICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7Ci19Ci0KLUNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKQotewotICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpKTsKLSAgICBtX3NjZW5lLT5kZXRhY2goKTsKLX0KLQotdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVmlld3BvcnQoKQotewotICAgIG1fd2Vi
UGFnZVByb3h5LnNldFZpZXdOZWVkc0Rpc3BsYXkoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBt
X3dlYlBhZ2VQcm94eS52aWV3U2l6ZSgpKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlv
bikKLXsKLSAgICBtX3NjZW5lLT5hcHBlbmRVcGRhdGUoV1RGTW92ZShmdW5jdGlvbikpOwotfQot
Ci12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBncmFwaGljc1N0YXRl
KQotewotICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+IHNjZW5lUHJvdGVjdG9y
KG1fc2NlbmUpOwotICAgIGRpc3BhdGNoVXBkYXRlKFs9XSB7Ci0gICAgICAgIHNjZW5lUHJvdGVj
dG9yLT5jb21taXRTY2VuZVN0YXRlKGdyYXBoaWNzU3RhdGUpOwotICAgIH0pOwotCi0gICAgdXBk
YXRlVmlld3BvcnQoKTsKLSAgICBtX3dlYlBhZ2VQcm94eS5kaWRSZW5kZXJGcmFtZShncmFwaGlj
c1N0YXRlLmNvbnRlbnRzU2l6ZSwgZ3JhcGhpY3NTdGF0ZS5jb3ZlcmVkUmVjdCk7Ci19Ci0KLXZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KQotewotICAgIGlmIChyZWN0ID09IG1fbGFzdFNlbnRWaXNpYmxlUmVjdCAmJiB0cmFqZWN0b3J5
VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJlY3QsIHRyYWplY3RvcnlWZWN0
b3IpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Ci0gICAgbV9sYXN0U2VudFZpc2libGVSZWN0
ID0gcmVjdDsKLSAgICBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0
b3I7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbmRlck5leHRG
cmFtZSgpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6UmVuZGVyTmV4dEZyYW1lKCksIG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29t
bWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkK
LXsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpDb21taXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KSwgbV93
ZWJQYWdlUHJveHkucGFnZUlEKCkpOwotfQotCi19Ci0jZW5kaWYgLy8gVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX01VTFRJUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTcy
MmQ1ODQ4MWY4ZmEyMzNhZDJmODY1YTdiMDFhMGMyNWNhMzMxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMTMgQ29tcGFueSAxMDAsIEluYy4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5X2gKLSNkZWZpbmUgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlfaAotCi0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZTsK
LWNsYXNzIEludFNpemU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdl
UHJveHk7Ci0KLWNsYXNzIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IDogcHVibGljIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eSk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoV2ViUGFnZVByb3h5Jik7Ci0gICAgdmlydHVh
bCB+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKTsKLQotICAgIHZvaWQgY29tbWl0Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSYpOwotCi0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3Ip
OwotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KCkgY29uc3QgeyByZXR1cm4gbV9zY2VuZS5nZXQoKTsgfQotCi0gICAgdm9pZCB1cGRhdGVWaWV3
cG9ydCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgb3ZlcnJpZGU7Ci0K
LSAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBk
aXNwYXRjaFVwZGF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwotCi0gICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQ
cm94eTsKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBtX3NjZW5lOwotICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7Ci0gICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jZW5k
aWYgLy8gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRiMmYwZjc3NTdjZmVkYjFjZTUyNDliZGY3
NWVjZjc2NDBiZDgwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI2
ICswLDAgQEAKLSMKLSMgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotIyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFu
eSAxMDAsIEluYy4KLSMKLSMgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotIwotIyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSMgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSMgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIyAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIwotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQotbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewotCi0gICAgQ29t
bWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKHN0cnVjdCBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUgc3RhdGUpCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5jcHAKaW5kZXggODk0ODhlMzlmM2NiMDkxMzFhZjA0MjY5MjY4NWViNTYw
Y2NmOGI3OS4uOWVkNzhiM2YwZmYxYzk3OGI0M2FkMGZmYzc1M2U3YzFlNzk3YTYwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTIzLDcgKzIzLDYg
QEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJBY2Nl
bGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgpAQCAtMTk2LDE0ICsxOTUsNiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgICAgIGZsb2F0IGluaXRpYWxTY2FsZSA9IG1f
aW5pdGlhbGx5Rml0VG9WaWV3cG9ydCA/IG1fbWluaW11bVNjYWxlVG9GaXQgOiBtX3Jhd0F0dHJp
YnV0ZXMuaW5pdGlhbFNjYWxlOwogICAgICAgICBhcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250
ZW50cyhpbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKGluaXRpYWxTY2FsZSkpOwogICAgIH0KLQot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHJlY2VpdmVkIHRoZSBmaXJzdCB2aWV3cG9y
dCBhcmd1bWVudHMgYW5kIHRoZSByZXF1ZXN0ZWQgc2Nyb2xsCi0gICAgLy8gcG9zaXRpb24gZm9y
IHRoZSBuZXdseSBsb2FkZWQgcGFnZSBhbmQgc2VudCBvdXIgcmVhY3Rpb25zIHRvIHRoZSB3ZWIg
cHJvY2Vzcy4gSXQncyBub3cgc2FmZSB0byB0ZWxsCi0gICAgLy8gdGhlIHdlYiBwcm9jZXNzIHRv
IHN0YXJ0IHJlbmRlcmluZyB0aGUgbmV3IHBhZ2UgY29udGVudHMgYW5kIHBvc3NpYmx5IHJlLXVz
ZSB0aGUgY3VycmVudCB0aWxlcy4KLSAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCBhbGwgbWVzc2Fn
ZXMgaGF2ZSBiZWVuIGhhbmRsZWQgaW4gb3JkZXIgYW5kIHRoYXQgbm90aGluZyBoYXMgYmVlbiBw
dXNoZWQgYmFjayBvbiB0aGUgZXZlbnQgbG9vcC4KLSAgICBtX3dlYlBhZ2VQcm94eS0+Y29tbWl0
UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViUGFnZVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ3M2QzNjlmMTZlMDM4
YzRlYjE5NjYwZWM3ZWM2OWRhY2VkZTRkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJQYWdlUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLQotI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgotCi0jaW5jbHVkZSAiUGFnZUNsaWVudC5oIgotI2luY2x1ZGUgIldl
YlBhZ2VNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRab29t
YWJsZUFyZWFGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNpemUmIGFy
ZWEpCi17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFpvb21hYmxlQXJlYUZvclBvaW50KHBv
aW50LCBhcmVhKSwgbV9wYWdlSUQpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFpv
b21hYmxlQXJlYShjb25zdCBJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBhcmVhKQot
ewotICAgIG1fcGFnZUNsaWVudC5kaWRGaW5kWm9vbWFibGVBcmVhKHRhcmdldCwgYXJlYSk7Ci19
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAppbmRleCAzZGYxODhmOWUyZWNhODYzMjU1NWI0NjJjMGNjNjhmMTk5ZDc4NWM0Li5lZTk3
ZjBjODVhMTgzMTA2M2Y1ZjUyMmNkNjJjYzJmZDA2MDczZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgTWFj
aFNlbmRSaWdodDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBMYXllclRyZWVDb250ZXh0
OwotY2xhc3MgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk7CiBjbGFzcyBVcGRhdGVJbmZv
OwogY2xhc3MgV2ViUGFnZVByb3h5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGIzZDY0ODFjZmVjMTMwZGI5MGEyYmQ5Y2M1MDAzZTAyZmNjODY1MGYu
LjljM2QyZTE4NDc0NjI4MTY3MDBhN2FiOGUxNDQzYmM0OWI0YzFmNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzYsMTAgKzEzNiw2IEBACiAjaW5j
bHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotI2luY2x1ZGUgIkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZXMuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJ
QlJBVElPTikKICNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eS5oIgogI2VuZGlmCkBAIC00MTA1
LDMxICs0MTAxLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGYKICAgICBtX3VpQ2xpZW50LT5y
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJhbWUsIFtyZXBseV0o
Ym9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CiB9CiAKLSNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VE
aWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb2ludCkKLXsKLSAgICBtX3BhZ2VDbGll
bnQucGFnZURpZFJlcXVlc3RTY3JvbGwocG9pbnQpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6
cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKLXsKLSAgICBtX3BhZ2VDbGllbnQucGFnZVRy
YW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW5k
ZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQotewotICAgIG1fcGFnZUNsaWVudC5kaWRSZW5kZXJG
cmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKQotewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpLCBtX3BhZ2VJRCk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3
cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhhdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBlYTczMGQwOWQwYmE4ZDVkMmVlNzRiNTUzMzAzNWI2YzcxYmQ0M2M4Li40YjhjZDUy
MjdiMzZkZWIzYjJmMjhhOGU5MmFhZmEwOGFjYWQyOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05MDMsMTAgKzkwMyw2IEBAIHB1YmxpYzoKIAogICAgIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKCk7CiAKLSNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHZvaWQgZmluZFpvb21hYmxl
QXJlYUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwotI2VuZGlmCi0KICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9h
ZFByb3h5Kik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0
QmVmb3JlU2VsZWN0aW9uKTsKQEAgLTEzMzcsMTIgKzEzMzMsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlv
bklEcyk7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKTsKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0g
ICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwot
ICAgIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci0gICAgdm9pZCBkaWRGaW5k
Wm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwotI2VuZGlmCi0KICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YTNmMGU0N2Y3ZGFmMDMzMjRkYzQ4OGZiMGMxZjUxODY0Zjg1Mjc1MC4uYWM0NjMxNGIxYzFmZDdl
NzlmZWFjNjk4ZTg3Y2IyMWNjMjk1NDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05NSwxMiArOTUsNiBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIEhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bigpIC0+IChi
b29sIGhhbmRsZWQpCiAjZW5kaWYKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxU
SVBST0NFU1MpCi0gICAgUGFnZURpZFJlcXVlc3RTY3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQpCi0gICAgUGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKLSAgICBEaWRGaW5kWm9vbWFi
bGVBcmVhKFdlYkNvcmU6OkludFBvaW50IHRhcmdldCwgV2ViQ29yZTo6SW50UmVjdCBhcmVhKQot
I2VuZGlmCi0KICAgICBEaWRDaGFuZ2VDb250ZW50U2l6ZShXZWJDb3JlOjpJbnRTaXplIG5ld1Np
emUpCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNw
cAppbmRleCA4OGQzMmUwZDMyYmJiMTk3YjE3MmI3MzVlZTRhNjc3NWRiOWUzZjk0Li5hMjQ5ZmVk
NWZlMmU2MTZhMWExYzQ0MzEzN2UyNzk2ZTJhOGM5MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwCkBAIC01MCwxMSArNTAsNyBAQCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjp+QWNjZWxlcmF0
ZWREcmF3aW5nQXJlYSgpCiB9CiAKIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OkFjY2VsZXJhdGVk
RHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9D
RVNTKQotICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlQ29vcmRpbmF0ZWQsIHdlYlBh
Z2UpCi0jZWxzZQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlSW1wbCwgd2ViUGFn
ZSkKLSNlbmRpZgogICAgICwgbV9leGl0Q29tcG9zaXRpbmdUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpCiAgICAgLCBtX2Rpc2NhcmRQcmV2aW91c0xheWVyVHJlZUhvc3RUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkaXNjYXJkUHJldmlvdXNM
YXllclRyZWVIb3N0KQogewpAQCAtMjM1LDE2ICsyMzEsMTAgQEAgdm9pZCBBY2NlbGVyYXRlZERy
YXdpbmdBcmVhOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBzdGF0ZUlELCBib29s
IHJlc3AKICAgICAgICAgbV93ZWJQYWdlLmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgIG1fd2Vi
UGFnZS5zY3JvbGxNYWluRnJhbWVJZk5vdEF0TWF4U2Nyb2xsUG9zaXRpb24oc2Nyb2xsT2Zmc2V0
KTsKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgICAg
IC8vIENvb3JkaW5hdGVkIEdyYXBoaWNzIHNldHMgdGhlIHNpemUgb2YgdGhlIHJvb3QgbGF5ZXIg
dG8gY29udGVudHMgc2l6ZS4KLSAgICAgICAgaWYgKCFtX3dlYlBhZ2UudXNlRml4ZWRMYXlvdXQo
KSkKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2l6ZURpZENoYW5nZShtX3dlYlBhZ2Uu
c2l6ZSgpKTsKLSNlbHNlCiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKG1fcHJldmlvdXNMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgbV9wcmV2
aW91c0xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7Ci0jZW5k
aWYKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoc2l6ZSA9PSBtX3dlYlBhZ2Uuc2l6ZSgp
KTsKICAgICAgICAgaWYgKCFtX3Nob3VsZFNlbmREaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSkg
ewpAQCAtNDAzLDEzICszOTMsNiBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmRpc2Nh
cmRQcmV2aW91c0xheWVyVHJlZUhvc3QoKQogICAgIG1fcHJldmlvdXNMYXllclRyZWVIb3N0ID0g
bnVsbHB0cjsKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1Mp
Ci12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmRpZFJlY2VpdmVDb29yZGluYXRlZExheWVy
VHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQotewotICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkUmVjZWl2ZUNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci19Ci0jZW5kaWYKLQog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShY
MTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKIHZvaWQgQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYTo6c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2
NF90IGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCmluZGV4IGYwYjc4OWFmYjQ5NjI5MGZj
OGZhZTRkODBlYjA1ZGExNjRjZGYwOWEuLmVhZDMyYWI2ZDQzZTJkM2M0NDA5Mzg1NzBkZGMzMTRi
OTYyNTQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaApAQCAtNTksMTAgKzU5LDYgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKSBvdmVy
cmlkZTsKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAg
dm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhh
bmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lO
YXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggMTcxZWIwYmU1NDU2NjhjNjhmZTFmMWNmNmY1NjMyMjMzYWEwNDg1Ni4uMzUwODhj
YTRlMTgyOWQ5MmIyMzMxMzg3OWZlMzhmZTNmMDdmNGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC00MCwx
MCArNDAsNiBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogI2lu
Y2x1ZGUgIlRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuaCIKLSNlbGlmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjUsOSArNjEsNiBAQCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlJiB3ZWJQYWdl
KQogICAgICwgbV9sYXllckZsdXNoVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGltZXJGaXJlZCkKIHsKICAgICBtX2Nvb3Jk
aW5hdG9yLmNyZWF0ZVJvb3RMYXllcihtX3dlYlBhZ2Uuc2l6ZSgpKTsKLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250
ZXh0SUQgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCptX2Nvb3JkaW5hdG9y
LnJvb3RMYXllcigpKS5pZCgpOwotI2VuZGlmCiAKICAgICBDb29yZGluYXRlZFN1cmZhY2U6OnNl
dEZhY3RvcnkoY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKTsKICAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKQEAgLTE5Niw5ICsxODksNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljcwogCiB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19NVUxUSVBST0NFU1MpCi0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoc3RhdGUp
KTsKLSNlbmRpZgogICAgIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgPSB0cnVlOwogfQogCkBAIC0y
MDYsOCArMTk2LDYgQEAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY28KIHsKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAgICAgcmV0dXJuIFRocmVhZFNhZmVDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7Ci0jZWxpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHJldHVybiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNy
ZWF0ZShzaXplLCBmbGFncyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzaXplKTsKICAgICBV
TlVTRURfUEFSQU0oZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBmMzQ3ZjQ4NzUyMTZhZWU5NTNmZDQxODI0
OTNjNWRjNTY5YWVkZmExLi43YjNhYTVkMzU2NTlkOWYxMGFkNWMwODk3ZWQ0Y2FjNzI2NWI5MDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuaApAQCAtNzYsMTAgKzc2LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2
b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKCk7CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfTVVMVElQUk9DRVNTKQotICAgIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0j
ZW5kaWYKLQogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBj
cmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRv
ciBtX2Nvb3JkaW5hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViUGFnZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiZTZiOTY3ODc2OTQ5OWMyN2JmY2NlMGYyZGY3ZjExMWYxNTg5ZjhiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJX
ZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbFZpZXcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLXZvaWQg
V2ViUGFnZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwg
Y29uc3QgSW50U2l6ZSYgYXJlYSkKLXsKLSAgICBVTlVTRURfUEFSQU0oYXJlYSk7Ci0gICAgRnJh
bWUqIG1haW5mcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9p
bnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6
Oklnbm9yZUNsaXBwaW5nIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCk7Ci0KLSAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwotCi0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRSZWN0IHpvb21hYmxlQXJlYTsK
LSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCi0gICAg
ICAgIHpvb21hYmxlQXJlYSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwot
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgYm9vbCBmb3VuZCA9ICFub2RlLT5pc1RleHRO
b2RlKCkgJiYgIW5vZGUtPmlzU2hhZG93Um9vdCgpOwotCi0gICAgICAgIC8vIE5vIGNhbmRpZGF0
ZSBmb3VuZCwgYmFpbCBvdXQuCi0gICAgICAgIGlmICghZm91bmQgJiYgIW5vZGUtPnBhcmVudE5v
ZGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBDYW5kaWRhdGUgZm91bmQs
IGFuZCBpdCBpcyBhIGJldHRlciBjYW5kaWRhdGUgdGhhbiBpdHMgcGFyZW50LgotICAgICAgICAv
LyBOQjogQSBwYXJlbnQgaXMgY29uc2lkZXJlZCBhIGJldHRlciBjYW5kaWRhdGUgaWYgdGhlIG5v
ZGUgaXMKLSAgICAgICAgLy8gY29udGFpbmVkIGJ5IGl0IGFuZCBpdCBpcyB0aGUgb25seSBjaGls
ZC4KLSAgICAgICAgaWYgKGZvdW5kICYmICghbm9kZS0+cGFyZW50Tm9kZSgpIHx8ICFub2RlLT5w
YXJlbnROb2RlKCktPmhhc09uZUNoaWxkKCkpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgem9vbWFibGVBcmVhLnVu
aXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKLSAgICB9Ci0KLSAgICBp
ZiAobm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpICYmIG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKS0+
dmlldygpKSB7Ci0gICAgICAgIGNvbnN0IFNjcm9sbFZpZXcqIHZpZXcgPSBub2RlLT5kb2N1bWVu
dCgpLmZyYW1lKCktPnZpZXcoKTsKLSAgICAgICAgem9vbWFibGVBcmVhID0gdmlldy0+Y29udGVu
dHNUb1dpbmRvdyh6b29tYWJsZUFyZWEpOwotICAgIH0KLQotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluZFpvb21hYmxlQXJlYShwb2ludCwgem9vbWFibGVBcmVhKSk7Ci19
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcAppbmRleCAyMjNiNjNkMjYzYTI4YTk2ZjQyY2I4OWJlYTU0ZTc1NmZh
ZTNhYjc1Li4yZTc4MGQ5MWJlNTgxMDhmNDA5ZDQ0NTE1MGUyNzgyNzZhZjlkMmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAg
LTM4LDEyICszOCw4IEBACiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIK
ICNpbmNsdWRlICJUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIgogI2Vsc2UKLSNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotI2luY2x1ZGUgIkFjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuaCIKLSNlbHNlCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAj
ZW5kaWYKLSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjAsMTQgKzU2
LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdl
YlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJl
bW90ZUxheWVyVHJlZToKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2Vsc2UKLSNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIGNhc2UgRHJhd2luZ0FyZWFU
eXBlQ29vcmRpbmF0ZWQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJh
dGVkRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwotI2Vsc2UKICAgICBjYXNlIERy
YXdpbmdBcmVhVHlwZUltcGw6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdp
bmdBcmVhSW1wbD4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKLSNlbmRpZgogICAgIH0K
IAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCAwZDY5YzE3YjE4MjNlNzc0NjNjNzI0YmU3MGJiOTg5
ZGJiZDQ2ZDJmLi5jM2Q2ODI3MTEwMmVhZmRhYjQyODViNGJmNjBhZDFkZTNhZTUyYjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAt
MTE1LDEwICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5SUQpOwogI2VuZGlmCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfTVVMVElQUk9DRVNTKQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSA9IDA7
Ci0jZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVk
U2Nyb2xsUG9zaXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywg
Ym9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAppbmRleCAxMWRkMTM2YzQ0NTlhNThm
OTFjZjlmMDA4MDU3ZDAyOTI0ODk3ZmIwLi5kZDZlMTI5ZmRmMDU3Zjc3OWMyYTFlMGMwM2NlNDYw
YjEzMzVkM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yOSw5ICsyOSw3IEBACiAKICNpbmNsdWRlICJMYXllclRy
ZWVIb3N0LmgiCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQot
I2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIgotI2VsaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJF
QURFRCkKICNpbmNsdWRlICJUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIgogI2Vs
aWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAjaW5jbHVkZSAiTGF5
ZXJUcmVlSG9zdEd0ay5oIgpAQCAtNDUsOCArNDMsNiBAQCBSZWZQdHI8TGF5ZXJUcmVlSG9zdD4g
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCiB7CiAjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogICAgIHJldHVybiBUaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHdlYlBhZ2UpOwotI2VsaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX01VTFRJUFJPQ0VTUykKLSAgICByZXR1cm4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGUod2ViUGFnZSk7CiAjZWxpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKICAgICByZXR1cm4gTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRlKHdlYlBhZ2UpOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IDcwZWU0Mzc4ZDgxYWYzMzMyMjg1OTlhYTU3MDMzZjdkZTg2NTIzZjEuLjUx
YWY1ODFjNjVjMDFiMDgxNTVmYjZjZmI2NjdkMWUzM2ExMTM2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAtNzgsMTAgKzc4
LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9y
eSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSB7IHJldHVybiBudWxscHRyOyB9CiAKLSNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSA9IDA7Ci0jZW5kaWYKLQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXMoV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiYpIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhNTE3NWMwM2Q5
ZGM0ODdiZWY2NDA2YjcxMWUzMTVhMzI0NzJjNDhlLi40ZmUzOTNiMDQ5ZTQ1MmY4YTk1MTllMDkx
NGVkM2NkM2U2NzkwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0yMzgsMTAgKzIzOCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
TVVMVElQUk9DRVNTKQotI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2Vz
LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFEZXRlY3Rpb24uaD4KICNlbmRpZgpAQCAtNTIwLDkgKzUxNiw2IEBAIFdlYlBhZ2U6
OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIG9iamVjdCBjb25zdHJ1Y3RvcnMsIGFu
ZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzIHNob3VsZCBiZSBtZXNzYWdlIHJlY2VpdmVycy4KLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHdlYlByb2Nlc3Mu
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKLSNlbmRpZgogICAgIHdlYlBy
b2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKICAgICB3ZWJQcm9jZXNzLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlSUQsICp0aGlzKTsKICAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlSUQsICp0aGlzKTsKQEAgLTYyMSw5ICs2MTQsNiBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAg
ICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2U6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGRvbmUgaW4gdGhlIG9iamVjdCBkZXN0cnVjdG9ycywgYW5kIHRoZSBvYmplY3RzIHRo
ZW1zZWx2ZXMgc2hvdWxkIGJlIG1lc3NhZ2UgcmVjZWl2ZXJzLgotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19NVUxUSVBST0NFU1MpCi0gICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRCk7Ci0jZW5kaWYKICAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZUlEKTsKICAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogICAgIHdl
YlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0
b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC0yMDUzLDggKzIwNDMs
NiBAQCB2b2lkIFdlYlBhZ2U6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBw
b2ludCkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAgICAgZHJh
d2luZ0FyZWEoKS0+c2Nyb2xsKEludFJlY3QocG9pbnQsIEludFNpemUoKSksIEludFNpemUoKSk7
Ci0jZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UGFnZURpZFJlcXVlc3RTY3JvbGwocG9pbnQpKTsKICNl
bmRpZgogfQogI2VuZGlmCkBAIC0yNjY3LDE0ICsyNjU1LDYgQEAgdm9pZCBXZWJQYWdlOjpkaWRT
dGFydFBhZ2VUcmFuc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFu
c2l0aW9uKCkKIHsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQot
ICAgIC8vIG1fbWFpbkZyYW1lIGNhbiBiZSBudWxsIHNpbmNlIHIxNzAxNjMuCi0gICAgaWYgKG1f
bWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5kZWxlZ2F0ZXNT
Y3JvbGxpbmcoKSkgewotICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBVSSBwcm9jZXNzIHNlbnQg
dXMgdGhlIHZpc2libGUgcmVjdCBpdCB3YW50cyByZW5kZXJlZC4KLSAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpQYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSk7Ci0gICAg
fSBlbHNlCi0jZW5kaWYKLSAgICAgICAgCiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TGF5ZXJUcmVl
U3RhdGVJc0Zyb3plbihmYWxzZSk7CiB9CiAKQEAgLTQwMDAsMTQgKzM5ODAsNiBAQCBib29sIFdl
YlBhZ2U6OndpbmRvd0FuZFdlYlBhZ2VBcmVGb2N1c2VkKCkgY29uc3QKIAogdm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIHsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9D
RVNTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKG1fZHJhd2luZ0FyZWEpCi0gICAgICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNl
aXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB0aGlzLT5p
bnNwZWN0b3IoKSkKICAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CkBAIC00NTA3LDEzICs0NDc5LDYgQEAgYm9vbCBXZWJQYWdlOjpj
YW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICByZXR1cm4gcGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogfQogCi0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLXZvaWQgV2ViUGFnZTo6Y29t
bWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpCi17Ci0gICAgbV9kcmF3aW5nQXJlYS0+c2V0TGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSk7Ci19Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENP
Q09BKQogdm9pZCBXZWJQYWdlOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBT
dHJpbmcmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDY1OGNkYTQ2YTQ4ZmI3NGY5NDMzZDVlZTE1OTEyZmNhNzk0NDJhNGYuLjcx
OWJmZDg5YTAxZDhkMTUzZWE1MzQ0OGUyODJiZDQ3MGMwOGFhNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjEwLDEwICs2MTAsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOwogI2VuZGlmCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNT
KQotICAgIHZvaWQgY29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpOwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBXZWJDb250ZXh0TWVudSogY29udGV4dE1lbnUo
KTsKICAgICBXZWJDb250ZXh0TWVudSogY29udGV4dE1lbnVBdFBvaW50SW5XaW5kb3coY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKQEAgLTExNDksMTAgKzExNDUsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VuZFZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMmKTsKICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01V
TFRJUFJPQ0VTUykKLSAgICB2b2lkIGZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGFyZWEpOwotI2VuZGlmCi0K
ICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJf
dCBuZXdJbmRleCk7CiAgICAgdm9pZCBzZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3Qg
aW5kZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGZiMzBiZTVlN2Y3YzBlYjg5NGIzZjU2ZDk3ZTA5YTgw
ZDU2YTMyOGQuLjAxMjNhZmYyYWI3MmQ4NjJlOTlhODFkYWVlODBiMzJmZTc5YWVhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0zNDEsMTAgKzM0MSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChib29sIGNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKICAgICBTZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1
bk1vZGFsKQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKLSAg
ICBDb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCkKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIFNldENvbXBvc2l0aW9uKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1
aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkKICAgICBDb25maXJtQ29tcG9zaXRpb24oU3RyaW5n
IHRleHQsIGludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIGludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoKQpA
QCAtMzkyLDEwICszODgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZXRNaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRTaXplIG1pbmltdW1MYXlvdXRT
aXplKQogICAgIFNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCBzaG91
bGRFeHBhbmQpCiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQot
ICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2Vi
Q29yZTo6SW50U2l6ZSBhcmVhKQotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBI
YW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChTdHJpbmcgcmVzdWx0KQogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>