<?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>61216</bug_id>
          
          <creation_ts>2011-05-20 14:19:48 -0700</creation_ts>
          <short_desc>Remove the chunked update drawing area</short_desc>
          <delta_ts>2011-05-20 15:31:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>407318</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-20 14:19:48 -0700</bug_when>
    <thetext>Remove the chunked update drawing area</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407321</commentid>
    <comment_count>1</comment_count>
      <attachid>94270</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-20 14:21:57 -0700</bug_when>
    <thetext>Created attachment 94270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407322</commentid>
    <comment_count>2</comment_count>
      <attachid>94270</attachid>
    <who name="">mitz</who>
    <bug_when>2011-05-20 14:23:02 -0700</bug_when>
    <thetext>Comment on attachment 94270
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407333</commentid>
    <comment_count>3</comment_count>
      <attachid>94270</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-20 14:41:31 -0700</bug_when>
    <thetext>Comment on attachment 94270
Patch

Attachment 94270 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8717597</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407364</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-20 15:31:48 -0700</bug_when>
    <thetext>Committed r86990: &lt;http://trac.webkit.org/changeset/86990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94270</attachid>
            <date>2011-05-20 14:21:57 -0700</date>
            <delta_ts>2011-05-20 14:41:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61216-20110520142155.patch</filename>
            <type>text/plain</type>
            <size>90646</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2OTgyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDUtMjAgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGNodW5rZWQgdXBkYXRlIGRyYXdpbmcg
YXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEy
MTYKKworICAgICAgICBUaGUgY2h1bmtlZCB1cGRhdGUgZHJhd2luZyBhcmVhIGlzIG5vIGxvbmdl
ciB1c2VkIGluIGFueSBwb3J0LCBzbyByZW1vdmUgYWxsIHRyYWNlcyBvZiBpdC4KKworICAgICAg
ICBRdCBzdGlsbCB1c2VzIFVwZGF0ZUNodW5rcyBmb3IgdGhlIHRpbGVkIGRyYXdpbmcgYXJlYSBz
byBrZWVwIHRoZSBTaGFyZWQvcXQvVXBkYXRlQ2h1bmsuKiBjbGFzc2VzIGZvciBub3cuCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBTaGFyZWQvRHJhd2luZ0FyZWFJbmZv
Lmg6CisgICAgICAgICogU2hhcmVkL2d0ay9VcGRhdGVDaHVuay5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogU2hhcmVkL2d0ay9VcGRhdGVDaHVuay5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJl
ZC9tYWMvVXBkYXRlQ2h1bmsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvVXBk
YXRlQ2h1bmsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvd2luL1VwZGF0ZUNodW5rLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvd2luL1VwZGF0ZUNodW5rLmg6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJv
eHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5R3RrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0No
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eVF0LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5V2lu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjplbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBXZWJLaXQyLnBybzoK
KyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5o
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhUXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhV2luLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3aW4vV2Vi
S2l0Mi52Y3Byb2o6CisKIDIwMTEtMDUtMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4Njk4MSkKKysrIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsOCArMzc3LDYgQEAgbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSQogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuaCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYVByb3h5LmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5jcHAgXApAQCAtMzkzLDcgKzM5MSw2IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0kKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0JhY2tpbmdTdG9yZUd0ay5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5R3RrLmNwcCBcCkBAIC02NjMsOCArNjYwLDYg
QEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSQogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1
cE1lbnUuaCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRh
dGVEcmF3aW5nQXJlYS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RlY29kZXJBZGFwdGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAgXApAQCAtNjc0LDcgKzY2OSw2IEBAIGxpYndlYmtpdDJndGtf
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0kKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRW5jb2RlckFkYXB0ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmggXAotCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAgXApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8JKHJldmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNiBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3F0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBcCi0gICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBcCkBAIC0zOTAs
NyArMzg5LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dl
YlByb3RlY3Rpb25TcGFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIFwK
ICAgICBVSVByb2Nlc3MvcXQvQmFja2luZ1N0b3JlUXQuY3BwIFwKLSAgICBVSVByb2Nlc3MvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXApAQCAtNDQ4LDcgKzQ0
Niw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdl
clByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9DaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJh
d2luZ0FyZWFQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFU
aWxlUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGV4dENoZWNrZXJRdC5jcHAgXApAQCAtNTIx
LDcgKzUxOCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
cXQvV2ViRXJyb3JzUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcCBcCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVy
QWRhcHRlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIFwKQEAgLTUzOSw3ICs1
MzUsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAgXAogICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJJbnNwZWN0b3JRdC5jcHAgXAotICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFRdC5jcHAgXAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L1dlYlBhZ2VRdC5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVh
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9EcmF3aW5nQXJlYUlu
Zm8uaAkocmV2aXNpb24gODY5ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2luZ0Fy
ZWFJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGVudW0gRHJhd2luZ0FyZWFUeXBlIHsKICAgICBEcmF3aW5nQXJlYVR5cGVJbXBsLAot
ICAgIERyYXdpbmdBcmVhVHlwZUNodW5rZWRVcGRhdGUsCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgRHJhd2luZ0FyZWFUeXBlVGlsZWQsCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvVXBkYXRlQ2h1bmsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvVXBkYXRlQ2h1bmsuY3BwCShyZXZpc2lvbiA4Njk4MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvVXBkYXRlQ2h1bmsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMSBJZ2FsaWEgUy5MCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJVcGRhdGVDaHVuay5oIgotCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLXN0
YXRpYyBjYWlyb19mb3JtYXRfdCBpbWFnZUZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1VcGRhdGVDaHVuazo6VXBkYXRlQ2h1bmsoKQotICAgIDog
bV9zaGFyZWRNZW1vcnkoMCkKLXsKLX0KLQotVXBkYXRlQ2h1bms6OlVwZGF0ZUNodW5rKGNvbnN0
IEludFJlY3QmIHJlY3QpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAgICAsIG1fc2hhcmVkTWVtb3J5
KFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHNpemUoKSkpCi17Ci19Ci0KLVVwZGF0ZUNodW5rOjp+VXBk
YXRlQ2h1bmsoKQotewotfQotCi1zaXplX3QgVXBkYXRlQ2h1bms6OnNpemUoKSBjb25zdAotewot
ICAgIHJldHVybiBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChpbWFnZUZvcm1hdCwgbV9y
ZWN0LndpZHRoKCkpICogbV9yZWN0LmhlaWdodCgpOwotfQotCi12b2lkIFVwZGF0ZUNodW5rOjpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAotewotICAgIGVu
Y29kZXItPmVuY29kZShtX3JlY3QpOwotICAgIGlmICghbV9zaGFyZWRNZW1vcnkpIHsKLSAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICBpZiAobV9zaGFyZWRNZW1vcnktPmNy
ZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpKSB7Ci0gICAgICAgIGVu
Y29kZXItPmVuY29kZSh0cnVlKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGhhbmRsZSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGVuY29kZXItPmVuY29kZShmYWxzZSk7Ci0KLSAgICBtX3NoYXJl
ZE1lbW9yeSA9IDA7Ci19Ci0KLWJvb2wgVXBkYXRlQ2h1bms6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFVwZGF0ZUNodW5rJiBjaHVuaykKLXsKLSAgICBBU1NFUlRf
QVJHKGNodW5rLCBjaHVuay5pc0VtcHR5KCkpOwotCi0gICAgSW50UmVjdCByZWN0OwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBj
aHVuay5tX3JlY3QgPSByZWN0OwotCi0gICAgYm9vbCBoYXNTaGFyZWRNZW1vcnk7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoaGFzU2hhcmVkTWVtb3J5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFoYXNTaGFyZWRNZW1vcnkpIHsKLSAgICAgICAgY2h1bmsubV9zaGFyZWRN
ZW1vcnkgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY2h1bmsubV9zaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1jYWlyb19zdXJmYWNlX3QqIFVwZGF0ZUNodW5rOjpjcmVhdGVJbWFnZSgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fc2hhcmVkTWVtb3J5KTsKLSAgICBpZiAoIW1fc2hhcmVk
TWVtb3J5KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGludCBzdHJpZGUgPSBjYWlyb19mb3Jt
YXRfc3RyaWRlX2Zvcl93aWR0aChpbWFnZUZvcm1hdCwgbV9yZWN0LndpZHRoKCkpOwotICAgIHJl
dHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlRm9ybWF0LCBtX3JlY3Qud2lkdGgoKSwg
bV9yZWN0LmhlaWdodCgpLCBzdHJpZGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvVXBkYXRlQ2h1bmsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1VwZGF0ZUNodW5rLmgJKHJldmlzaW9uIDg2OTgx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9VcGRhdGVDaHVuay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDExIElnYWxpYSBTLkwKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVcGRhdGVDaHVua19oCi0j
ZGVmaW5lIFVwZGF0ZUNodW5rX2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKLQotI2luY2x1ZGUgPGNhaXJvLmg+Ci0KLW5hbWVzcGFjZSBDb3JlSVBD
IHsKLWNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKLWNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFVwZGF0ZUNodW5rIHsKLXB1YmxpYzoKLSAgICBV
cGRhdGVDaHVuaygpOwotICAgIFVwZGF0ZUNodW5rKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
LSAgICB+VXBkYXRlQ2h1bmsoKTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLSAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBt
X3JlY3QuaXNFbXB0eSgpOyB9Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXIqKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgVXBkYXRlQ2h1bmsmKTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogY3JlYXRlSW1h
Z2UoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGlu
dCBtX3N0cmlkZTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcmVjdDsKLSAgICBtdXRhYmxlIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLQotI2VuZGlmIC8vIFVwZGF0ZUNodW5rX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvVXBkYXRlQ2h1bmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvVXBkYXRlQ2h1bmsuY3BwCShyZXZpc2lvbiA4Njk4MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvVXBkYXRlQ2h1bmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVXBk
YXRlQ2h1bmsuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2luY2x1ZGUgIkFy
Z3VtZW50RW5jb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgotI2lu
Y2x1ZGUgPG1hY2gvdm1fbWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVVwZGF0ZUNodW5r
OjpVcGRhdGVDaHVuaygpCi0gICAgOiBtX2RhdGEoMCkKLSAgICAsIG1fc2l6ZSgwKQotewotfQot
Ci1VcGRhdGVDaHVuazo6VXBkYXRlQ2h1bmsoY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICA6IG1f
cmVjdChyZWN0KQotICAgICwgbV9zaXplKHNpemUoKSkKLXsKLSAgICB2bV9hbGxvY2F0ZShtYWNo
X3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdCo+KCZtX2RhdGEpLCBt
X3NpemUsIFZNX0ZMQUdTX0FOWVdIRVJFKTsKLX0KLQotVXBkYXRlQ2h1bms6On5VcGRhdGVDaHVu
aygpCi17Ci0gICAgaWYgKG1fZGF0YSkKLSAgICAgICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tf
c2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obV9kYXRhKSwgbV9zaXplKTsK
LX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IFVwZGF0ZUNodW5rOjpjcmVhdGVJbWFnZSgpCi17
Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlcihBZG9wdENGLCBDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIG1fZGF0YSwgc2l6ZSgpLCAwKSk7Ci0gICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VD
cmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0
Q0YsIENHSW1hZ2VDcmVhdGUobV9yZWN0LndpZHRoKCksIG1fcmVjdC5oZWlnaHQoKSwgOCwgMzIs
IG1fcmVjdC53aWR0aCgpICogNCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgcHJvdmlkZXIuZ2V0KCks
IDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAgCi0gICAgcmV0dXJu
IGltYWdlOwotfQotCi12b2lkIFVwZGF0ZUNodW5rOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXItPmVuY29kZShtX3JlY3QpOwot
ICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpBdHRhY2htZW50KG1fZGF0YSwgc2l6ZSgpLCBN
QUNIX01TR19WSVJUVUFMX0NPUFksIHRydWUpKTsKLSAgICAKLSAgICBtX2RhdGEgPSAwOwotfQot
Ci1ib29sIFVwZGF0ZUNodW5rOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBVcGRhdGVDaHVuayYgY2h1bmspCi17Ci0gICAgSW50UmVjdCByZWN0OwotICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2h1bmsu
bV9yZWN0ID0gcmVjdDsKLSAgICAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGF0dGFjaG1lbnQ7
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYXR0YWNobWVudCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGNodW5rLm1fc2l6ZSA9IGF0dGFjaG1lbnQuc2l6ZSgpOwotICAgIGNodW5r
Lm1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGF0dGFjaG1lbnQuYWRkcmVzcygp
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1VwZGF0ZUNodW5rLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9VcGRhdGVDaHVuay5oCShyZXZpc2lvbiA4Njk4MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvVXBkYXRlQ2h1bmsuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVcGRhdGVDaHVua19oCi0jZGVm
aW5lIFVwZGF0ZUNodW5rX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotbmFtZXNwYWNlIENvcmVJUEMgewotICAgIGNsYXNzIEFy
Z3VtZW50RW5jb2RlcjsKLSAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBVcGRhdGVDaHVuayB7Ci1wdWJsaWM6Ci0gICAgVXBkYXRlQ2h1
bmsoKTsKLSAgICBVcGRhdGVDaHVuayhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgflVw
ZGF0ZUNodW5rKCk7Ci0KLSAgICB1aW50OF90KiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9Ci0g
ICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5pc0VtcHR5KCk7IH0K
LQotICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OwotICAg
IHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBVcGRhdGVDaHVu
ayYpOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlKCk7Ci0KLXByaXZh
dGU6Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKSAqIDQg
KiBtX3JlY3QuaGVpZ2h0KCk7IH0KLQotICAgIFdlYkNvcmU6OkludFJlY3QgbV9yZWN0OwotCi0g
ICAgLy8gVGhpcyBuZWVkcyB0byBiZSBtdXRhYmxlLCBiZWNhdXNlIGVuY29kaW5nIGFuIHVwZGF0
ZSBjaHVuayB3aWxsIGhhbmQgb3ZlciBpdHMgbWVtb3J5IHRvIHRoZSB0YXJnZXQgcHJvY2Vzcy4K
LSAgICBtdXRhYmxlIHVpbnQ4X3QqIG1fZGF0YTsKLSAgICBzaXplX3QgbV9zaXplOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVcGRhdGVDaHVua19oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1VwZGF0ZUNodW5rLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1VwZGF0ZUNodW5rLmNwcAkocmV2aXNpb24gODY5ODEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1VwZGF0ZUNodW5rLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlVwZGF0ZUNodW5rLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIK
LSNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1VcGRhdGVDaHVuazo6VXBkYXRlQ2h1bmsoKQotICAgIDogbV9iaXRtYXBTaGFyZWRNZW1v
cnkoMCkKLXsKLX0KLQotVXBkYXRlQ2h1bms6OlVwZGF0ZUNodW5rKGNvbnN0IEludFJlY3QmIHJl
Y3QpCi0gICAgOiBtX3JlY3QocmVjdCkKLXsKLSAgICAvLyBDcmVhdGUgb3VyIHNoYXJlZCBtZW1v
cnkgbWFwcGluZy4KLSAgICB1bnNpZ25lZCBtZW1vcnlTaXplID0gcmVjdC5oZWlnaHQoKSAqIHJl
Y3Qud2lkdGgoKSAqIDQ7Ci0gICAgbV9iaXRtYXBTaGFyZWRNZW1vcnkgPSA6OkNyZWF0ZUZpbGVN
YXBwaW5nKElOVkFMSURfSEFORExFX1ZBTFVFLCAwLCBQQUdFX1JFQURXUklURSwgMCwgbWVtb3J5
U2l6ZSwgMCk7Ci19Ci0KLVVwZGF0ZUNodW5rOjpVcGRhdGVDaHVuayhjb25zdCBJbnRSZWN0JiBy
ZWN0LCBIQU5ETEUgYml0bWFwU2hhcmVkTWVtb3J5KQotICAgIDogbV9yZWN0KHJlY3QpCi0gICAg
LCBtX2JpdG1hcFNoYXJlZE1lbW9yeShiaXRtYXBTaGFyZWRNZW1vcnkpCi17Ci19Ci0KLXZvaWQg
VXBkYXRlQ2h1bms6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG1fcmVjdCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2JpdG1hcFNoYXJlZE1lbW9yeSkpOwotfQot
Ci1ib29sIFVwZGF0ZUNodW5rOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBVcGRhdGVDaHVuayYgdXBkYXRlQ2h1bmspCi17Ci0gICAgSW50UmVjdCByZWN0OwotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dXBkYXRlQ2h1bmsubV9yZWN0ID0gcmVjdDsKLQotICAgIHVpbnRwdHJfdCBiaXRtYXBTaGFyZWRN
bWVtb3J5OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGJpdG1hcFNoYXJlZE1tZW1vcnkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1cGRhdGVDaHVuay5tX2JpdG1hcFNoYXJlZE1l
bW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihiaXRtYXBTaGFyZWRNbWVtb3J5KTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvd2luL1VwZGF0ZUNodW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL3dpbi9VcGRhdGVDaHVuay5oCShyZXZpc2lvbiA4Njk4MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC93aW4vVXBkYXRlQ2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVcGRhdGVDaHVua19oCi0jZGVmaW5lIFVw
ZGF0ZUNodW5rX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotCi1uYW1lc3BhY2Ug
Q29yZUlQQyB7Ci0gICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwotICAgIGNsYXNzIEFyZ3VtZW50
RGVjb2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFVwZGF0ZUNodW5rIHsK
LXB1YmxpYzoKLSAgICBVcGRhdGVDaHVuaygpOwotICAgIFVwZGF0ZUNodW5rKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKLSAgICBVcGRhdGVDaHVuayhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
SEFORExFKTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3JlY3Q7IH0KLSAgICBIQU5ETEUgbWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRt
YXBTaGFyZWRNZW1vcnk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3QuaXNFbXB0eSgpOyB9Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiwgVXBkYXRlQ2h1bmsmKTsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1f
cmVjdDsKLSAgICBIQU5ETEUgbV9iaXRtYXBTaGFyZWRNZW1vcnk7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVwZGF0ZUNodW5rX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5LmNwcAkocmV2aXNpb24gODY5ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmgiCi0KLSNpbmNs
dWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIgotI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJNZXNzYWdlSUQuaCIKLSNpbmNsdWRlICJVcGRh
dGVDaHVuay5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NPd25QdHI8Q2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk+IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
OjpjcmVhdGUoUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVByb3h5KHdlYlZpZXcsIHdlYlBhZ2VQcm94eSkpOwotfQotCi1DaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFQcm94eTo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkoUGxhdGZvcm1XZWJWaWV3
KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkKLSAgICA6IERyYXdpbmdBcmVh
UHJveHkoRHJhd2luZ0FyZWFUeXBlQ2h1bmtlZFVwZGF0ZSwgd2ViUGFnZVByb3h5KQotICAgICwg
bV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbihmYWxzZSkKLSAgICAsIG1faXNW
aXNpYmxlKHRydWUpCi0gICAgLCBtX2ZvcmNlUmVwYWludFdoZW5SZXN1bWluZ1BhaW50aW5nKGZh
bHNlKQotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAsIG1fYmFja2luZ1N0b3JlSW1hZ2UoMCkKLSNl
bmRpZgotICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci19Ci0KLUNodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5Ojp+Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkoKQotewotfQotCi1i
b29sIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwYWludChjb25zdCBJbnRSZWN0JiBy
ZWN0LCBQbGF0Zm9ybURyYXdpbmdDb250ZXh0IGNvbnRleHQpCi17Ci0gICAgaWYgKG1faXNXYWl0
aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24pIHsKLSAgICAgICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gdGhpcy0+cGFnZSgpOwotICAgICAgICBpZiAoIXBhZ2UtPmlzVmFsaWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChwYWdlLT5wcm9jZXNz
KCktPmlzTGF1bmNoaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
T3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzID0gcGFnZS0+cHJvY2Vz
cygpLT5jb25uZWN0aW9uKCktPmRlcHJlY2F0ZWRXYWl0Rm9yKERyYXdpbmdBcmVhUHJveHlMZWdh
Y3lNZXNzYWdlOjpEaWRTZXRTaXplLCBwYWdlLT5wYWdlSUQoKSwgMC4wNCk7Ci0gICAgICAgIGlm
IChhcmd1bWVudHMpCi0gICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZShwYWdlLT5wcm9jZXNz
KCktPmNvbm5lY3Rpb24oKSwgQ29yZUlQQzo6TWVzc2FnZUlEKERyYXdpbmdBcmVhUHJveHlMZWdh
Y3lNZXNzYWdlOjpEaWRTZXRTaXplKSwgYXJndW1lbnRzLmdldCgpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcGxhdGZvcm1QYWludChyZWN0LCBjb250ZXh0KTsKLX0KLQotdm9pZCBDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFQcm94eTo6c2l6ZURpZENoYW5nZSgpCi17Ci0gICAgc2VuZFNldFNpemUo
KTsKLX0KLQotdm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6c2V0UGFnZUlzVmlz
aWJsZShib29sIGlzVmlzaWJsZSkKLXsKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB0aGlzLT5w
YWdlKCk7Ci0KLSAgICBpZiAoaXNWaXNpYmxlID09IG1faXNWaXNpYmxlKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgbV9pc1Zpc2libGUgPSBpc1Zpc2libGU7Ci0gICAgaWYgKCFwYWdlLT5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9pc1Zpc2libGUpIHsKLSAg
ICAgICAgLy8gVGVsbCB0aGUgd2ViIHByb2Nlc3MgdGhhdCBpdCBkb2Vzbid0IG5lZWQgdG8gcGFp
bnQgYW55dGhpbmcgZm9yIG5vdy4KLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLT5kZXByZWNhdGVk
U2VuZChEcmF3aW5nQXJlYUxlZ2FjeU1lc3NhZ2U6OlN1c3BlbmRQYWludGluZywgcGFnZS0+cGFn
ZUlEKCksIENvcmVJUEM6OkluKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IC8vIFRoZSBwYWdlIGlzIG5vdyB2aXNpYmxlLCByZXN1bWUgcGFpbnRpbmcuCi0gICAgcGFnZS0+
cHJvY2VzcygpLT5kZXByZWNhdGVkU2VuZChEcmF3aW5nQXJlYUxlZ2FjeU1lc3NhZ2U6OlJlc3Vt
ZVBhaW50aW5nLCBwYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mb3JjZVJlcGFpbnRXaGVu
UmVzdW1pbmdQYWludGluZykpOwotICAgIG1fZm9yY2VSZXBhaW50V2hlblJlc3VtaW5nUGFpbnRp
bmcgPSBmYWxzZTsKLX0KLSAgICAKLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6
OmRpZFNldFNpemUoVXBkYXRlQ2h1bmsqIHVwZGF0ZUNodW5rKQotewotICAgIEFTU0VSVChtX2lz
V2FpdGluZ0ZvckRpZFNldEZyYW1lTm90aWZpY2F0aW9uKTsKLSAgICBtX2lzV2FpdGluZ0ZvckRp
ZFNldEZyYW1lTm90aWZpY2F0aW9uID0gZmFsc2U7Ci0KLSAgICBJbnRTaXplIHZpZXdTaXplID0g
dXBkYXRlQ2h1bmstPnJlY3QoKS5zaXplKCk7Ci0KLSAgICBpZiAodmlld1NpemUgIT0gbV9zaXpl
KQotICAgICAgICBzZW5kU2V0U2l6ZSgpOwotCi0gICAgaW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIGlmICghdXBkYXRlQ2h1bmstPmlzRW1wdHkoKSkKLSAgICAgICAgZHJhd1VwZGF0ZUNo
dW5rSW50b0JhY2tpbmdTdG9yZSh1cGRhdGVDaHVuayk7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHk6OmRlcHJlY2F0ZWRVcGRhdGUoVXBkYXRlQ2h1bmsqIHVwZGF0ZUNo
dW5rKQotewotICAgIGlmICghbV9pc1Zpc2libGUpIHsKLSAgICAgICAgLy8gV2UgZ290IGFuIHVw
ZGF0ZSByZXF1ZXN0IHRoYXQgbXVzdCBoYXZlIGJlZW4gc2VudCBiZWZvcmUgd2UgdG9sZCB0aGUg
d2ViIHByb2Nlc3MgdG8gc3VzcGVuZCBwYWludGluZy4KLSAgICAgICAgLy8gRG9uJ3QgcGFpbnQg
dGhpcyBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLCBiZWNhdXNlIHRoYXQgY291bGQgbGVhdmUgdGhl
IGJhY2tpbmcgc3RvcmUgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgotICAgICAgICAvLyBJbnN0
ZWFkLCB3ZSB3aWxsIGp1c3QgdGVsbCB0aGUgZHJhd2luZyBhcmVhIHRvIHJlcGFpbnQgZXZlcnl0
aGluZyB3aGVuIHdlIHJlc3VtZSBwYWludGluZy4KLSAgICAgICAgbV9mb3JjZVJlcGFpbnRXaGVu
UmVzdW1pbmdQYWludGluZyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSnVzdCBw
YWludCBpbnRvIGJhY2tpbmcgc3RvcmUuCi0gICAgICAgIGRyYXdVcGRhdGVDaHVua0ludG9CYWNr
aW5nU3RvcmUodXBkYXRlQ2h1bmspOwotICAgIH0KLQotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IHRoaXMtPnBhZ2UoKTsKLSAgICBwYWdlLT5wcm9jZXNzKCktPmRlcHJlY2F0ZWRTZW5kKERyYXdp
bmdBcmVhTGVnYWN5TWVzc2FnZTo6RGlkVXBkYXRlLCBwYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6
SW4oKSk7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OnNlbmRTZXRT
aXplKCkKLXsKLSAgICBpZiAoIW1fd2ViUGFnZVByb3h5LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBpZiAobV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlv
bikKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmlj
YXRpb24gPSB0cnVlOwotICAgIAotICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCktPmRlcHJl
Y2F0ZWRTZW5kKERyYXdpbmdBcmVhTGVnYWN5TWVzc2FnZTo6U2V0U2l6ZSwgbV93ZWJQYWdlUHJv
eHktPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX3NpemUpKTsKLX0KLSAgICAKLXZvaWQgQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50cykKLXsKLSAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8RHJhd2luZ0Fy
ZWFQcm94eUxlZ2FjeU1lc3NhZ2U6OktpbmQ+KCkpIHsKLSAgICAgICAgY2FzZSBEcmF3aW5nQXJl
YVByb3h5TGVnYWN5TWVzc2FnZTo6VXBkYXRlOiB7Ci0gICAgICAgICAgICBVcGRhdGVDaHVuayB1
cGRhdGVDaHVuazsKLSAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUodXBkYXRlQ2h1
bmspKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgZGVwcmVjYXRlZFVw
ZGF0ZSgmdXBkYXRlQ2h1bmspOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TGVnYWN5TWVzc2FnZTo6RGlkU2V0U2l6ZTogewotICAg
ICAgICAgICAgVXBkYXRlQ2h1bmsgdXBkYXRlQ2h1bms7Ci0gICAgICAgICAgICBpZiAoIWFyZ3Vt
ZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dCh1cGRhdGVDaHVuaykpKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgZGlkU2V0U2l6ZSgmdXBkYXRlQ2h1bmspOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNpb24gODY5ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYVByb3h5X2gKLSNkZWZpbmUgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlfaAotCi0j
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgot
Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLU9CSkNfQ0xB
U1MgV0tWaWV3OwotI2VsaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUltYWdlPgotY2xhc3Mg
UUdyYXBoaWNzV0tWaWV3OwotI2VsaWYgUExBVEZPUk0oR1RLKQotdHlwZWRlZiBzdHJ1Y3QgX2Nh
aXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdCYXNlIFdlYktpdFdlYlZpZXdCYXNlOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBVcGRhdGVDaHVuazsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotI2lmIFBMQVRGT1JN
KE1BQykKLXR5cGVkZWYgV0tWaWV3IFBsYXRmb3JtV2ViVmlldzsKLSNlbGlmIFBMQVRGT1JNKFdJ
TikKLWNsYXNzIFdlYlZpZXc7Ci10eXBlZGVmIFdlYlZpZXcgUGxhdGZvcm1XZWJWaWV3OwotI2Vs
aWYgUExBVEZPUk0oUVQpCi10eXBlZGVmIFFHcmFwaGljc1dLVmlldyBQbGF0Zm9ybVdlYlZpZXc7
Ci0jZWxpZiBQTEFURk9STShHVEspCi10eXBlZGVmIFdlYktpdFdlYlZpZXdCYXNlIFBsYXRmb3Jt
V2ViVmlldzsKLSNlbmRpZgotCi1jbGFzcyBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eSA6
IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlKFBsYXRmb3JtV2ViVmlldyos
IFdlYlBhZ2VQcm94eSopOwotCi0gICAgdmlydHVhbCB+Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
UHJveHkoKTsKLQotcHJpdmF0ZToKLSAgICBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eShQ
bGF0Zm9ybVdlYlZpZXcqLCBXZWJQYWdlUHJveHkqKTsKLQotICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSgpIGNvbnN0OwotCi0gICAgLy8gRHJhd2luZ0FyZWFQcm94eQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIFBsYXRmb3JtRHJhd2luZ0NvbnRleHQpOwotICAgIHZpcnR1
YWwgdm9pZCBzaXplRGlkQ2hhbmdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBhZ2VJc1Zpc2li
bGUoYm9vbCBpc1Zpc2libGUpOwotICAgIAotICAgIHZvaWQgZW5zdXJlQmFja2luZ1N0b3JlKCk7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBh
aW50KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQbGF0Zm9ybURyYXdpbmdDb250ZXh0KTsKLSAg
ICB2b2lkIGRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUoVXBkYXRlQ2h1bmsqKTsKLSAg
ICB2b2lkIGRpZFNldFNpemUoVXBkYXRlQ2h1bmsqKTsKLSAgICB2b2lkIGRlcHJlY2F0ZWRVcGRh
dGUoVXBkYXRlQ2h1bmsqKTsKLQotICAgIHZvaWQgc2VuZFNldFNpemUoKTsKLQotICAgIGJvb2wg
bV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbjsKLSAgICBib29sIG1faXNWaXNp
YmxlOwotICAgIGJvb2wgbV9mb3JjZVJlcGFpbnRXaGVuUmVzdW1pbmdQYWludGluZzsKLQotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICAvLyBCYWNraW5nU3RvcmUKLSAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBtX2JpdG1hcENvbnRleHQ7Ci0jZWxpZiBQTEFURk9STShXSU4pCi0gICAgLy8gQmFj
a2luZ1N0b3JlCi0gICAgT3duUHRyPEhEQz4gbV9iYWNraW5nU3RvcmVEQzsKLSAgICBPd25QdHI8
SEJJVE1BUD4gbV9iYWNraW5nU3RvcmVCaXRtYXA7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICBR
SW1hZ2UgbV9iYWNraW5nU3RvcmVJbWFnZTsKLSNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBjYWly
b19zdXJmYWNlX3QqIG1fYmFja2luZ1N0b3JlSW1hZ2U7Ci0jZW5kaWYKLQotICAgIFBsYXRmb3Jt
V2ViVmlldyogbV93ZWJWaWV3OwotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlfaApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eUd0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9DaHVua2VkVXBkYXRl
RHJhd2luZ0FyZWFQcm94eUd0ay5jcHAJKHJldmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eUd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCIKLQotI2luY2x1
ZGUgIlJlZlB0ckNhaXJvLmgiCi0jaW5jbHVkZSAiVXBkYXRlQ2h1bmsuaCIKLSNpbmNsdWRlICJX
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KLSNpbmNsdWRlIDxnZGsvZ2RrLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2Vi
UGFnZVByb3h5KiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6cGFnZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShtX3dlYlZpZXcpOwotfQotCi12
b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjplbnN1cmVCYWNraW5nU3RvcmUoKQot
ewotICAgIGlmIChtX2JhY2tpbmdTdG9yZUltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2JhY2tpbmdTdG9yZUltYWdlID0gZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKGd0
a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fd2ViVmlldykpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FJUk9fQ09O
VEVOVF9DT0xPUl9BTFBIQSwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSk7Ci19Ci0K
LXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmludmFsaWRhdGVCYWNraW5nU3Rv
cmUoKQotewotICAgIGlmIChtX2JhY2tpbmdTdG9yZUltYWdlKSB7Ci0gICAgICAgIGNhaXJvX3N1
cmZhY2VfZGVzdHJveShtX2JhY2tpbmdTdG9yZUltYWdlKTsKLSAgICAgICAgbV9iYWNraW5nU3Rv
cmVJbWFnZSA9IDA7Ci0gICAgfQotfQotCi1ib29sIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5OjpwbGF0Zm9ybVBhaW50KGNvbnN0IEludFJlY3QmIHJlY3QsIGNhaXJvX3QqIGNyKQotewot
ICAgIGlmICghbV9iYWNraW5nU3RvcmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBtX2JhY2tp
bmdTdG9yZUltYWdlLCAwLCAwKTsKLSAgICBjYWlyb19maWxsKGNyKTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpkcmF3VXBkYXRl
Q2h1bmtJbnRvQmFja2luZ1N0b3JlKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVuaykKLXsKLSAgICBl
bnN1cmVCYWNraW5nU3RvcmUoKTsKLQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHBpeG1h
cCh1cGRhdGVDaHVuay0+Y3JlYXRlSW1hZ2UoKSk7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3Rh
dHVzKHBpeG1hcC5nZXQoKSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnN0IEludFJlY3QmIHVwZGF0ZUNodW5rUmVjdCA9IHVwZGF0ZUNodW5rLT5y
ZWN0KCk7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBjYWlyb19jcmVhdGUobV9iYWNraW5n
U3RvcmVJbWFnZSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBwaXht
YXAuZ2V0KCksIHVwZGF0ZUNodW5rUmVjdC54KCksIHVwZGF0ZUNodW5rUmVjdC55KCkpOwotICAg
IGNhaXJvX3BhaW50KGNyLmdldCgpKTsKLQotICAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVh
KEdUS19XSURHRVQobV93ZWJWaWV3KSwgdXBkYXRlQ2h1bmtSZWN0LngoKSwgdXBkYXRlQ2h1bmtS
ZWN0LnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDaHVua1JlY3Qu
d2lkdGgoKSwgdXBkYXRlQ2h1bmtSZWN0LmhlaWdodCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0JKHJldmlzaW9uIDg2
OTgxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9DaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhUHJveHkuaCIKLQotI2ltcG9ydCAiRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCIKLSNpbXBv
cnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCIKLSNpbXBvcnQgIlVwZGF0ZUNodW5r
LmgiCi0jaW1wb3J0ICJXS0FQSUNhc3QuaCIKLSNpbXBvcnQgIldLVmlldy5oIgotI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViUGFnZVByb3h5KiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6
cGFnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChbbV93ZWJWaWV3IHBhZ2VSZWZdKTsK
LX0KLQotdm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6ZW5zdXJlQmFja2luZ1N0
b3JlKCkKLXsKLSAgICBpZiAobV9iaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JT
cGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSA9IHNp
emUoKTsKLSAgICBtX2JpdG1hcENvbnRleHQuYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
MCwgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCksIDgsIHZpZXdTaXplLndpZHRo
KCkgKiA0LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7Ci0gICAgCi0gICAgLy8gRmxpcCB0aGUgYml0
bWFwIGNvbnRleHQgY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RN
KG1fYml0bWFwQ29udGV4dC5nZXQoKSwgMCwgdmlld1NpemUuaGVpZ2h0KCkpOwotICAgIENHQ29u
dGV4dFNjYWxlQ1RNKG1fYml0bWFwQ29udGV4dC5nZXQoKSwgMSwgLTEpOwotfQotCi12b2lkIENo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjppbnZhbGlkYXRlQmFja2luZ1N0b3JlKCkKLXsK
LSAgICBtX2JpdG1hcENvbnRleHQgPSAwOwotfQotCi1ib29sIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYVByb3h5OjpwbGF0Zm9ybVBhaW50KGNvbnN0IEludFJlY3QmIHJlY3QsIENHQ29udGV4dFJl
ZiBjb250ZXh0KQotewotICAgIGlmICghbV9iaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgLy8gVXNl
IHRoZSBjb3B5IGJsZW5kIG1vZGUgd2hlbiBkcmF3aW5nIGEgYmFja2dyb3VuZC4KLSAgICBpZiAo
cGFnZSgpLT5kcmF3c0JhY2tncm91bmQoKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2Rl
KGNvbnRleHQsIGtDR0JsZW5kTW9kZUNvcHkpOwotCi0gICAgLy8gRmxpcCB0aGUgZGVzdGluYXRp
b24uCi0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwotICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCAtbV9zaXplLmhlaWdodCgpKTsKLQotICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBpbWFnZShBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFn
ZShtX2JpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dCwgQ0dSZWN0TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlLmdldCgpKSksIGltYWdlLmdldCgpKTsKLQotICAgIENHQ29udGV4dFJl
c3RvcmVHU3RhdGUoY29udGV4dCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUo
VXBkYXRlQ2h1bmsqIHVwZGF0ZUNodW5rKQotewotICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwot
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKHVwZGF0ZUNodW5rLT5jcmVhdGVJbWFn
ZSgpKTsKLSAgICBJbnRSZWN0IHVwZGF0ZUNodW5rUmVjdCA9IHVwZGF0ZUNodW5rLT5yZWN0KCk7
Ci0KLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKG1fYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0KLSAg
ICAvLyBVc2UgdGhlIGNvcHkgYmxlbmQgbW9kZSB0byByZXBsYWNlIGV4aXN0aW5nIGNvbnRlbnQu
Ci0gICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKG1fYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxl
bmRNb2RlQ29weSk7Ci0KLSAgICAvLyBGbGlwIHRoZSBkZXN0aW5hdGlvbi4KLSAgICBDR0NvbnRl
eHRTY2FsZUNUTShtX2JpdG1hcENvbnRleHQuZ2V0KCksIDEsIC0xKTsKLSAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0obV9iaXRtYXBDb250ZXh0LmdldCgpLCAwLCAtKHVwZGF0ZUNodW5rUmVjdC55
KCkgKyB1cGRhdGVDaHVua1JlY3QubWF4WSgpKSk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2Uo
bV9iaXRtYXBDb250ZXh0LmdldCgpLCB1cGRhdGVDaHVua1JlY3QsIGltYWdlLmdldCgpKTsKLQot
ICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUobV9iaXRtYXBDb250ZXh0LmdldCgpKTsKLQotICAg
IFttX3dlYlZpZXcgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Ok5TUmVjdEZyb21DR1JlY3QodXBkYXRl
Q2h1bmtSZWN0KV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5UXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFQcm94eVF0LmNwcAkocmV2aXNpb24gODY5ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oIgot
Ci0jaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0jaW5jbHVkZSAiVXBkYXRlQ2h1bmsuaCIKLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJx
Z3JhcGhpY3N3a3ZpZXcuaCIKLSNpbmNsdWRlIDxRUGFpbnRlcj4KLQotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJQYWdlUHJveHkqIENodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwYWdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdG9JbXBs
KG1fd2ViVmlldy0+cGFnZSgpLT5wYWdlUmVmKCkpOwotfQotCi12b2lkIENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5OjplbnN1cmVCYWNraW5nU3RvcmUoKQotewotICAgIGlmICghbV9iYWNr
aW5nU3RvcmVJbWFnZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9iYWNraW5n
U3RvcmVJbWFnZSA9IFFJbWFnZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBRSW1h
Z2U6OkZvcm1hdF9SR0IzMik7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJv
eHk6OmludmFsaWRhdGVCYWNraW5nU3RvcmUoKQotewotICAgIG1fYmFja2luZ1N0b3JlSW1hZ2Ug
PSBRSW1hZ2UoKTsKLX0KLQotYm9vbCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6cGxh
dGZvcm1QYWludChjb25zdCBJbnRSZWN0JiByZWN0LCBRUGFpbnRlciogcGFpbnRlcikKLXsKLSAg
ICBpZiAobV9iYWNraW5nU3RvcmVJbWFnZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludCgwLCAwKSwgbV9iYWNraW5nU3RvcmVJ
bWFnZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhUHJveHk6OmRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUoVXBkYXRlQ2h1bmsqIHVw
ZGF0ZUNodW5rKQotewotICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwotCi0gICAgUUltYWdlIGlt
YWdlKHVwZGF0ZUNodW5rLT5jcmVhdGVJbWFnZSgpKTsKLSAgICBjb25zdCBJbnRSZWN0JiB1cGRh
dGVDaHVua1JlY3QgPSB1cGRhdGVDaHVuay0+cmVjdCgpOwotCi0gICAgUVBhaW50ZXIgcGFpbnRl
cigmbV9iYWNraW5nU3RvcmVJbWFnZSk7Ci0gICAgcGFpbnRlci5kcmF3SW1hZ2UodXBkYXRlQ2h1
bmtSZWN0LmxvY2F0aW9uKCksIGltYWdlKTsKLQotICAgIG1fd2ViVmlldy0+dXBkYXRlKFFSZWN0
KHVwZGF0ZUNodW5rUmVjdCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlXaW4uY3BwCShyZXZpc2lvbiA4Njk4MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5Lmgi
Ci0KLSNpbmNsdWRlICJVcGRhdGVDaHVuay5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJQ
YWdlUHJveHkqIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwYWdlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV93ZWJWaWV3LT5wYWdlKCk7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhUHJveHk6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCi17Ci0gICAgaWYgKG1fYmFja2lu
Z1N0b3JlQml0bWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBCaXRtYXBJbmZvIGJpdG1hcElu
Zm8gPSBCaXRtYXBJbmZvOjpjcmVhdGVCb3R0b21VcChzaXplKCkpOwotCi0gICAgdm9pZCogcGl4
ZWxzID0gMDsKLSAgICBtX2JhY2tpbmdTdG9yZUJpdG1hcCA9IGFkb3B0UHRyKDo6Q3JlYXRlRElC
U2VjdGlvbigwLCAmYml0bWFwSW5mbywgRElCX1JHQl9DT0xPUlMsICZwaXhlbHMsIDAsIDApKTsK
LQotICAgIGlmICghbV9iYWNraW5nU3RvcmVEQykgewotICAgICAgICAvLyBDcmVhdGUgYSBEQyBm
b3IgdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgICAgIEhEQyBzY3JlZW5EQyA9IDo6R2V0REMoMCk7
Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlREMgPSBhZG9wdFB0cig6OkNyZWF0ZUNvbXBhdGlibGVE
QyhzY3JlZW5EQykpOwotICAgICAgICA6OlJlbGVhc2VEQygwLCBzY3JlZW5EQyk7Ci0gICAgfQot
Ci0gICAgOjpTZWxlY3RPYmplY3QobV9iYWNraW5nU3RvcmVEQy5nZXQoKSwgbV9iYWNraW5nU3Rv
cmVCaXRtYXAuZ2V0KCkpOwotfQotCi12b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
OjppbnZhbGlkYXRlQmFja2luZ1N0b3JlKCkKLXsKLSAgICBtX2JhY2tpbmdTdG9yZUJpdG1hcC5j
bGVhcigpOwotfQotCi1ib29sIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwbGF0Zm9y
bVBhaW50KGNvbnN0IEludFJlY3QmIHJlY3QsIEhEQyBoZGMpCi17Ci0gICAgaWYgKCFtX2JhY2tp
bmdTdG9yZUJpdG1hcCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQml0Qmx0IGZy
b20gdGhlIGJhY2tpbmctc3RvcmUgdG8gdGhlIHBhc3NlZCBpbiBoZGMuCi0gICAgOjpCaXRCbHQo
aGRjLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgbV9i
YWNraW5nU3RvcmVEQy5nZXQoKSwgcmVjdC54KCksIHJlY3QueSgpLCBTUkNDT1BZKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6ZHJh
d1VwZGF0ZUNodW5rSW50b0JhY2tpbmdTdG9yZShVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCi17
Ci0gICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7Ci0KLSAgICBPd25QdHI8SERDPiB1cGRhdGVDaHVu
a0JpdG1hcERDID0gYWRvcHRQdHIoOjpDcmVhdGVDb21wYXRpYmxlREMobV9iYWNraW5nU3RvcmVE
Qy5nZXQoKSkpOwotCi0gICAgLy8gQ3JlYXRlIGEgYml0bWFwLgotICAgIEJpdG1hcEluZm8gYml0
bWFwSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZUJvdHRvbVVwKHVwZGF0ZUNodW5rLT5yZWN0KCku
c2l6ZSgpKTsKLQotICAgIC8vIER1cGxpY2F0ZSB0aGUgdXBkYXRlIGNodW5rIGhhbmRsZS4KLSAg
ICBIQU5ETEUgdXBkYXRlQ2h1bmtIYW5kbGU7Ci0gICAgQk9PTCByZXN1bHQgPSA6OkR1cGxpY2F0
ZUhhbmRsZShtX3dlYlZpZXctPnBhZ2UoKS0+cHJvY2VzcygpLT5wcm9jZXNzSWRlbnRpZmllcigp
LCB1cGRhdGVDaHVuay0+bWVtb3J5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OkdldEN1cnJlbnRQcm9jZXNzKCksICZ1cGRhdGVDaHVua0hhbmRsZSwgU1RBTkRBUkRf
UklHSFRTX1JFUVVJUkVEIHwgRklMRV9NQVBfUkVBRCB8IEZJTEVfTUFQX1dSSVRFLCBmYWxzZSwg
RFVQTElDQVRFX0NMT1NFX1NPVVJDRSk7Ci0KLSAgICB2b2lkKiBwaXhlbHMgPSAwOwotICAgIE93
blB0cjxIQklUTUFQPiBoQml0bWFwID0gYWRvcHRQdHIoOjpDcmVhdGVESUJTZWN0aW9uKDAsICZi
aXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywgdXBkYXRlQ2h1bmtIYW5kbGUsIDAp
KTsKLSAgICA6OlNlbGVjdE9iamVjdCh1cGRhdGVDaHVua0JpdG1hcERDLmdldCgpLCBoQml0bWFw
LmdldCgpKTsKLQotICAgIC8vIEJpdEJsdCBmcm9tIHRoZSBVcGRhdGVDaHVuayB0byB0aGUgYmFj
a2luZyBzdG9yZS4KLSAgICA6OkJpdEJsdChtX2JhY2tpbmdTdG9yZURDLmdldCgpLCB1cGRhdGVD
aHVuay0+cmVjdCgpLngoKSwgdXBkYXRlQ2h1bmstPnJlY3QoKS55KCksIHVwZGF0ZUNodW5rLT5y
ZWN0KCkud2lkdGgoKSwgdXBkYXRlQ2h1bmstPnJlY3QoKS5oZWlnaHQoKSwgdXBkYXRlQ2h1bmtC
aXRtYXBEQy5nZXQoKSwgMCwgMCwgU1JDQ09QWSk7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IG5vdCBkbyB0aGlzIGhlcmUuCi0gICAgOjpDbG9zZUhhbmRsZSh1cGRhdGVDaHVua0hhbmRsZSk7
Ci0KLSAgICAvLyBJbnZhbGlkYXRlIHRoZSBXZWJWaWV3J3MgSFdORC4KLSAgICBSRUNUIHJlY3Qg
PSB1cGRhdGVDaHVuay0+cmVjdCgpOwotICAgIDo6SW52YWxpZGF0ZVJlY3QobV93ZWJWaWV3LT53
aW5kb3coKSwgJnJlY3QsIGZhbHNlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDg2OTgx
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKIAotI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTAzLDEzICsxMDIsNiBAQCBlbnVtIHsKICAg
ICBVcGRhdGVBY3RpdmVTdGF0ZVRpbWVyID0gMSwKIH07CiAKLXN0YXRpYyBib29sIHVzZU5ld0Ry
YXdpbmdBcmVhKCkKLXsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gYW5kIHRo
ZSBvbGQgZHJhd2luZyBhcmVhIGNvZGUgb25jZSB3ZSBhcmVuJ3QgaW50ZXJlc3RlZCBpbgotICAg
IC8vIHRlc3RpbmcgdGhlIG9sZCBkcmF3aW5nIGFyZWEgYW55bW9yZS4KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQogTFJFU1VMVCBDQUxMQkFDSyBXZWJWaWV3OjpXZWJWaWV3V25kUHJvYyhIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBM
T05HX1BUUiBsb25nUHRyID0gOjpHZXRXaW5kb3dMb25nUHRyKGhXbmQsIDApOwpAQCAtNjQ3LDI3
ICs2MzksMjAgQEAgc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgYwogdm9p
ZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAg
ICAgbV9wYWdlLT5lbmRQcmludGluZygpOwotICAgIGlmICh1c2VOZXdEcmF3aW5nQXJlYSgpKSB7
Ci0gICAgICAgIGlmIChEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNf
Y2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcG9ydCBXZWJLaXQxJ3MgcmVjdCBjb2FsZXNj
aW5nIGxvZ2ljIGhlcmUuCi0gICAgICAgICAgICBSZWdpb24gdW5wYWludGVkUmVnaW9uOwotICAg
ICAgICAgICAgZHJhd2luZ0FyZWEtPnBhaW50KGhkYywgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdp
b24pOwotCi0gICAgICAgICAgICBWZWN0b3I8SW50UmVjdD4gdW5wYWludGVkUmVjdHMgPSB1bnBh
aW50ZWRSZWdpb24ucmVjdHMoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dW5wYWludGVkUmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBSRUNUIHdpblJl
Y3QgPSB1bnBhaW50ZWRSZWN0c1tpXTsKLSAgICAgICAgICAgICAgICBkcmF3UGFnZUJhY2tncm91
bmQoaGRjLCBtX3BhZ2UuZ2V0KCksIHVucGFpbnRlZFJlY3RzW2ldKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkcmF3UGFnZUJhY2tncm91bmQoaGRjLCBtX3Bh
Z2UuZ2V0KCksIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgbV9wYWdlLT5kaWREcmF3KCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKG1fcGFnZS0+aXNWYWxpZCgpICYmIG1fcGFnZS0+ZHJhd2lu
Z0FyZWEoKSAmJiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnBhaW50KGRpcnR5UmVjdCwgaGRjKSkK
LSAgICAgICAgICAgIG1fcGFnZS0+ZGlkRHJhdygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBkcmF3UGFnZUJhY2tncm91bmQoaGRjLCBtX3BhZ2UuZ2V0KCksIGRpcnR5UmVjdCk7Ci0gICAg
fQorICAgIGlmIChEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2Fz
dDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBwb3J0IFdlYktpdDEncyByZWN0IGNvYWxlc2NpbmcgbG9n
aWMgaGVyZS4KKyAgICAgICAgUmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsKKyAgICAgICAgZHJhd2lu
Z0FyZWEtPnBhaW50KGhkYywgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOworCisgICAgICAg
IFZlY3RvcjxJbnRSZWN0PiB1bnBhaW50ZWRSZWN0cyA9IHVucGFpbnRlZFJlZ2lvbi5yZWN0cygp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVucGFpbnRlZFJlY3RzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBSRUNUIHdpblJlY3QgPSB1bnBhaW50ZWRSZWN0c1tpXTsKKyAg
ICAgICAgICAgIGRyYXdQYWdlQmFja2dyb3VuZChoZGMsIG1fcGFnZS5nZXQoKSwgdW5wYWludGVk
UmVjdHNbaV0pOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGRyYXdQYWdlQmFja2dy
b3VuZChoZGMsIG1fcGFnZS5nZXQoKSwgZGlydHlSZWN0KTsKKworICAgIG1fcGFnZS0+ZGlkRHJh
dygpOwogfQogCiBzdGF0aWMgdm9pZCBmbGFzaFJlY3RzKEhEQyBkYywgY29uc3QgSW50UmVjdCBy
ZWN0c1tdLCBzaXplX3QgcmVjdENvdW50LCBIQlJVU0ggYnJ1c2gpCkBAIC05MzgsMTAgKzkyMyw3
IEBAIHZvaWQgV2ViVmlldzo6Y2xvc2UoKQogCiBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+
IFdlYlZpZXc6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQogewotICAgIGlmICh1c2VOZXdEcmF3
aW5nQXJlYSgpKQotICAgICAgICByZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZSht
X3BhZ2UuZ2V0KCkpOwotCi0gICAgcmV0dXJuIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
OjpjcmVhdGUodGhpcywgbV9wYWdlLmdldCgpKTsKKyAgICByZXR1cm4gRHJhd2luZ0FyZWFQcm94
eUltcGw6OmNyZWF0ZShtX3BhZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlZpZXc6OnNldFZpZXdO
ZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKQEAgLTE1MzAsMTQgKzE1
MTIsMTIgQEAgdm9pZCBXZWJWaWV3OjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libAogCiB2b2lk
IFdlYlZpZXc6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpCiB7Ci0gICAgQVNTRVJUKHVzZU5ld0RyYXdpbmdBcmVhKCkpOwogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgV2Vi
Vmlldzo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKIHsKLSAgICBBU1NFUlQodXNl
TmV3RHJhd2luZ0FyZWEoKSk7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00
OTMsMTEgKzQ5Myw4IEBACiAJCUJDMjA0RUYyMTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZUlu
aXRpYWxpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjA0RUVEMTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZUluaXRpYWxpemUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDMjA1MjgxMTFDOTQy
ODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjA1MjdGMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBh
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJD
MjA1MjgyMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1
IC8qIFdLQnVuZGxlUGFnZS5jcHAgKi87IH07Ci0JCUJDMjY1MUY2MTE4MjVFRjgwMDI0M0UxMiAv
KiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY1MUY1MTE4MjVFRjgwMDI0M0UxMiAvKiBD
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSAqLzsgfTsKIAkJQkMyNjUyMTYxMTgy
NjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERy
YXdpbmdBcmVhUHJveHkuY3BwICovOyB9OwogCQlCQzI2NTIxNzExODI2MDgxMDAyNDNFMTIgLyog
RHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAq
LzsgfTsKLQkJQkMyNjUyMTgxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYVByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjY1MjE0MTE4MjYwODEwMDI0M0UxMiAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQ
cm94eS5jcHAgKi87IH07Ci0JCUJDMjY1MjE5MTE4MjYwODEwMDI0M0UxMiAvKiBDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyNjUyMTUxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5LmggKi87IH07CiAJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlLmggKi87IH07CiAJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1Bh
Z2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDMkRGQkEzMTJBNzYx
QTUwMEU3MzJBMyAvKiBXZWJQcmVmZXJlbmNlc0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkRGQkEyMTJBNzYxQTUwMEU3MzJBMyAvKiBXZWJQ
cmVmZXJlbmNlc0NGLmNwcCAqLzsgfTsKQEAgLTU3NSw5ICs1NzIsNiBAQAogCQlCQzU3NTYxMzEy
NkUwMTM4MDA2RjBGMTIgLyogV2ViRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9y
LmNwcCAqLzsgfTsKIAkJQkM1OTUzNDIxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1OTUz
NDAxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNsaWVudC5oICovOyB9OwogCQlCQzU5NzA3
NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJv
Y2Vzc01vZGVsLmggKi87IH07Ci0JCUJDNUY3QkI0MTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1RjdCQjIxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYS5jcHAgKi87IH07Ci0JCUJDNUY3QkI1MTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNUY3QkIzMTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWEuaCAqLzsgfTsKLQkJQkM1RjdCQjkxMTgyMzc5OTAwNTJDMDJDIC8qIENodW5rZWRVcGRh
dGVEcmF3aW5nQXJlYU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzVGN0JCODExODIzNzk5MDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhTWFjLmNwcCAqLzsgfTsKIAkJQkM2MEM1NzkxMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVu
ZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNjBDNTc3MTI0MEE1NDYwMDhDNUUyOSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzYwQzU3
QTEyNDBBNTQ2MDA4QzVFMjkgLyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwQzU3ODEyNDBBNTQ2MDA4QzVF
MjkgLyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgKi87IH07CiAJCUJDNjE3RUU4MTA0Q0IzNDcw
MEZCM0ZFMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUExQzdERTEwMEU4NDZFMDA3OERFQkMgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtNjM2LDggKzYzMCw2IEBACiAJCUJD
OTYzRDZCMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBX
ZWJQYWdlLmNwcCAqLzsgfTsKIAkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2
M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLzsgfTsKIAkJQkM5QjM4QTEx
MEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUIzODlGMTBGNTM4QkUwMDQ0M0ExNSAvKiBXZWJG
cmFtZVByb3h5LmggKi87IH07Ci0JCUJDOUU5NUQzMTE0NDlCMDMwMDg3MEU3MSAvKiBVcGRhdGVD
aHVuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5
RTk1RDExMTQ0OUIwMzAwODcwRTcxIC8qIFVwZGF0ZUNodW5rLmggKi87IH07Ci0JCUJDOUU5NUQ0
MTE0NDlCMDMwMDg3MEU3MSAvKiBVcGRhdGVDaHVuay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlFOTVEMjExNDQ5QjAzMDA4NzBFNzEgLyogVXBk
YXRlQ2h1bmsuY3BwICovOyB9OwogCQlCQzlFOTY5QTExNDU3RURFMDA4NzBFNzEgLyogRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM5RTk2OTkxMTQ1N0VERTAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlS2luZHMuaCAqLzsgfTsKIAkJQkM5RTk2OUMxMTQ1N0YzRjAwODcwRTcxIC8qIERy
YXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzlFOTY5QjExNDU3RjNGMDA4NzBFNzEgLyogRHJhd2luZ0FyZWFNZXNz
YWdlS2luZHMuaCAqLzsgfTsKIAkJQkNBMEVGN0YxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYkVkaXRD
b21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0EwRUY3RDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuaCAqLzsgfTsKQEAgLTE0
MzUsMTEgKzE0MjcsOCBAQAogCQlCQzIwNEVFRDExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGVJ
bml0aWFsaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5p
dGlhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwNTI3RjExQzk0Mjg0
MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQnVuZGxlUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB3cmFwc0xpbmVzID0g
MDsgfTsKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZVBhZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzI2NTFGNTExODI1RUY4MDAyNDNFMTIgLyogQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERy
YXdpbmdBcmVhUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RHJhd2luZ0FyZWFQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjY1
MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkMyNjUyMTQxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkMyNjUyMTUxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkQwMjE2
MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEyQUM0MjZDMDBFNzMyQTMgLyog
V0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFn
ZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJERkJBMjEyQTc2
MUE1MDBFNzMyQTMgLyogV2ViUHJlZmVyZW5jZXNDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0NGLmNwcDsgcGF0aCA9IGNmL1dlYlByZWZl
cmVuY2VzQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxOCw5ICsxNTA3
LDYgQEAKIAkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkVycm9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTUzNDAxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNB
IC8qIFByb2Nlc3NNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9j
ZXNzTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM1RjdCQjIxMTgyMzc2
QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCQzVGN0JCODExODIzNzk5MDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBDNTc3
MTI0MEE1NDYwMDhDNUUyOSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUmFuZ2VIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM2MEM1NzgxMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVS
YW5nZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjQ2OTZEMTFE
QkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbW11dGFibGVBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTc3LDggKzE1NjMsNiBAQAogCQlCQzk2M0Q2QTExM0REMTkyMDA1NzRCRTIg
LyogV2ViUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQ
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NjNENkQxMTNERDFBNTAw
NTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJQYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlC
Mzg5RjEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJGcmFtZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUJDOUU5NUQxMTE0NDlCMDMwMDg3MEU3MSAvKiBVcGRhdGVDaHVuay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVcGRhdGVDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCQzlFOTVEMjExNDQ5QjAzMDA4NzBFNzEgLyogVXBkYXRlQ2h1bmsuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXBkYXRlQ2h1bmsuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlFOTY5OTExNDU3RURFMDA4NzBFNzEgLyog
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDOUU5NjlCMTE0NTdGM0YwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYU1lc3Nh
Z2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYU1l
c3NhZ2VLaW5kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0EwRUY3RDEyMzMx
RTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRWRpdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NDUsOCArMjUyOSw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDMDk4QTA1MjEzM0JFMUM1
MDBCMTk5QTQgLyogY2EgKi8sCiAJCQkJQkM5NjNENkMxMTNERDE5NTAwNTc0QkUyIC8qIG1hYyAq
LywKLQkJCQlCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhLmNwcCAqLywKLQkJCQlCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmggKi8sCiAJCQkJOTNGQzY3OUQxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29k
ZXJBZGFwdGVyLmNwcCAqLywKIAkJCQk5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2Rl
ckFkYXB0ZXIuaCAqLywKIAkJCQlCQzg0NTJBNTExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0Fy
ZWEuY3BwICovLApAQCAtMjU5Niw4ICsyNTc4LDYgQEAKIAkJCQkxQUVGQ0MwNTExRDAxRjM0MDA4
MjE5RDMgLyogUGx1Z2lucyAqLywKIAkJCQkxQTY0MjU2NzEyREU0MkVDMDBDQUFFMkMgLyogQmFj
a2luZ1N0b3JlLmNwcCAqLywKIAkJCQkxQTY0MjU2NjEyREU0MkVDMDBDQUFFMkMgLyogQmFja2lu
Z1N0b3JlLmggKi8sCi0JCQkJQkMyNjUyMTQxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRh
dGVEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKLQkJCQlCQzI2NTIxNTExODI2MDgxMDAyNDNFMTIg
LyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCAqLywKIAkJCQlCQzI2NTIxMjExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8sCiAJCQkJQkMyNjUyMTMxMTgy
NjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLywKIAkJCQkxQTY0MjJGQzEyREQw
OEZFMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTI4OTcs
OCArMjg3Nyw2IEBACiAJCQkJNTFEMTMwNTIxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNw
b25zZURhdGEuaCAqLywKIAkJCQkxQTk2MzZCQTEyRjM0ODQ5MDA3OEEwNjIgLyogU2hhcmVhYmxl
U3VyZmFjZS5jcHAgKi8sCiAJCQkJMUE5NjM2QkIxMkYzNDg0OTAwNzhBMDYyIC8qIFNoYXJlYWJs
ZVN1cmZhY2UuaCAqLywKLQkJCQlCQzlFOTVEMjExNDQ5QjAzMDA4NzBFNzEgLyogVXBkYXRlQ2h1
bmsuY3BwICovLAotCQkJCUJDOUU5NUQxMTE0NDlCMDMwMDg3MEU3MSAvKiBVcGRhdGVDaHVuay5o
ICovLAogCQkJCUJDRTIzMjYyMTIyQzZDRjMwMEQ1QzM1QSAvKiBXZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0gKi8sCiAJCQkJQkMxMTFCNUIxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFj
dG9yeS5oICovLAogCQkJCUJDMTExQjVDMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3Rv
cnkubW0gKi8sCkBAIC0zMTE2LDcgKzMwOTQsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMjlD
RDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi8s
CiAJCQkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0Lm1tICovLAotCQkJCUJDNUY3QkI4MTE4MjM3OTkwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRl
RHJhd2luZ0FyZWFNYWMuY3BwICovLAogCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gKi8sCiAJCQkJQkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdl
YlBhZ2VNYWMubW0gKi8sCiAJCQkpOwpAQCAtMzEzNyw3ICszMTE0LDYgQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUY2RDYzMkJBMTMzRDE4MUIwMDc0M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJv
eHlNYWMubW0gKi8sCiAJCQkJMUE2NDI5MkMxMkRFNUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9y
ZU1hYy5tbSAqLywKLQkJCQlCQzI2NTFGNTExODI1RUY4MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCiAJCQkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5
IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAogCQkJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJMUFBNDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8q
IFRleHRDaGVja2VyTWFjLm1tICovLApAQCAtMzQyMiw4ICszMzk4LDYgQEAKIAkJCQlCQzAzMkRB
ODEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzAzMkRBOTEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQkM1RjdCQjUxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkMyNjUyMTkxMTgyNjA4MTAwMjQzRTEyIC8qIENo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZGOUY5
MDExRTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MDMyREFCMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzEzMUJDOTExNzI2QzI4MDBCNjk3MjcgLyogQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNDUyLDcgKzM0MjYsNiBAQAogCQkJCUJDNTk3MDc1MTE2NTkxRDAwMDU1
MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzAwNjZFMTExMEY0
RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzJFNkU4ODExNDE5NzE1MDBBNjNCMUUgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QkM5RTk1RDMxMTQ0OUIwMzAwODcwRTcxIC8qIFVwZGF0ZUNodW5rLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzcyQkExRTExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDc1MTBGNDM3OEQwMDU4QzE1
QSAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNDA5MywxMCArNDA2Niw2
IEBACiAJCQkJQkMwMzJEQTUxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50RGVjb2Rlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzAzMkRBNzEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRF
bmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUU5NjZDMTEyRkFGNTcwMDZCQ0MyNCAv
KiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNUY3QkI0MTE4MjM3NkMwMDUy
QzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QkM1RjdCQjkxMTgyMzc5OTAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzI2NTIxODExODI2MDgxMDAyNDNFMTIgLyogQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMyNjUxRjYx
MTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE2RjlGQjcxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5l
TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDMyREFBMTBGNDM3RDEwMDU4QzE1QSAvKiBD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzBFQUM2MTE1RDdEQTMwMDUzRTkz
NyAvKiBDb25uZWN0aW9uTWFjLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDEyMSw3ICs0MDkwLDYg
QEAKIAkJCQlCQzExMUIwOTExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJFNkU4NzExNDE5NzE1MDBBNjNCMUUgLyogUnVuTG9v
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAwOTJGNzExNTgzN0EzMDBFMEFFMkEgLyogUnVu
TG9vcE1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJDOUU5NUQ0MTE0NDlCMDMwMDg3MEU3MSAv
KiBVcGRhdGVDaHVuay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzcyQkExRDExRTY0OTA3MDAx
RUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzJC
OUZBMTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzExMUE1QTExMkY0RkJCMDAzMzdCQUIgLyogV2ViQ2hyb21lQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAJKHJl
dmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjA4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmgiCi0KLSNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIgot
I2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJNZXNz
YWdlSUQuaCIKLSNpbmNsdWRlICJVcGRhdGVDaHVuay5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjpDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEoV2ViUGFn
ZSogd2ViUGFnZSkKLSAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZUNodW5rZWRVcGRh
dGUsIHdlYlBhZ2UpCi0gICAgLCBtX2lzV2FpdGluZ0ZvclVwZGF0ZShmYWxzZSkKLSAgICAsIG1f
cGFpbnRpbmdJc1N1c3BlbmRlZChmYWxzZSkKLSAgICAsIG1fZGlzcGxheVRpbWVyKFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSwgdGhpcywgJkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6
ZGlzcGxheSkKLXsKLX0KLQotQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjp+Q2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhKCkKLXsKLX0KLQotdm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OnNj
cm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZz
ZXQpCi17Ci0gICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIuCi0gICAgc2V0
TmVlZHNEaXNwbGF5KHNjcm9sbFJlY3QpOwotfQotCi12b2lkIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYTo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgLy8gRklY
TUU6IENvbGxlY3QgYSBzZXQgb2YgcmVjdHMvcmVnaW9uIGluc3RlYWQgb2YganVzdCB0aGUgdW5p
b24KLSAgICAvLyBvZiBhbGwgcmVjdHMuCi0gICAgbV9kaXJ0eVJlY3QudW5pdGUocmVjdCk7Ci0g
ICAgc2NoZWR1bGVEaXNwbGF5KCk7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
OjpkaXNwbGF5KCkKLXsKLSAgICBBU1NFUlQoIW1faXNXYWl0aW5nRm9yVXBkYXRlKTsKLSAKLSAg
ICBpZiAobV9wYWludGluZ0lzU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9kaXJ0eVJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBMYXlvdXQg
aWYgbmVjZXNzYXJ5LgotICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKLSAKLSAgICBJ
bnRSZWN0IGRpcnR5UmVjdCA9IG1fZGlydHlSZWN0OwotICAgIG1fZGlydHlSZWN0ID0gSW50UmVj
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IFVwZGF0ZUNodW5rIGFuZCBwYWludCBpbnRvIGl0
LgotICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rKGRpcnR5UmVjdCk7Ci0gICAgcGFpbnRJbnRv
VXBkYXRlQ2h1bmsoJnVwZGF0ZUNodW5rKTsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+ZGVwcmVjYXRlZFNlbmQoRHJhd2luZ0FyZWFQcm94eUxlZ2FjeU1lc3NhZ2U6
OlVwZGF0ZSwgbV93ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4odXBkYXRlQ2h1bmspKTsK
LQotICAgIG1faXNXYWl0aW5nRm9yVXBkYXRlID0gdHJ1ZTsKLSAgICBtX2Rpc3BsYXlUaW1lci5z
dG9wKCk7Ci19Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnQo
KQotewotICAgIG1faXNXYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7Ci0gICAgZGlzcGxheSgpOwot
fQotCi12b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6c2NoZWR1bGVEaXNwbGF5KCkKLXsK
LSAgICBpZiAobV9wYWludGluZ0lzU3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAobV9pc1dhaXRpbmdGb3JVcGRhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAo
bV9kaXJ0eVJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9kaXNw
bGF5VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwbGF5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6
c2V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKLXsKLSAgICBBU1NFUlRfQVJHKHZpZXdT
aXplLCAhdmlld1NpemUuaXNFbXB0eSgpKTsKLQotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gd2Fp
dCBmb3IgYW4gdXBkYXRlIHVudGlsIHdlIGRpc3BsYXkuCi0gICAgbV9pc1dhaXRpbmdGb3JVcGRh
dGUgPSBmYWxzZTsKLSAgICAKLSAgICBtX3dlYlBhZ2UtPnNldFNpemUodmlld1NpemUpOwotICAg
IG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKLQotICAgIGlmIChtX3BhaW50aW5nSXNTdXNw
ZW5kZWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2Rpc3BsYXlUaW1lci5pc0FjdGl2ZSgpKTsKLQot
ICAgICAgICAvLyBQYWludGluZyBpcyBzdXNwZW5kZWQsIGp1c3Qgc2VuZCBiYWNrIGFuIGVtcHR5
IHVwZGF0ZSBjaHVuay4KLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5kZXByZWNhdGVkU2VuZChEcmF3aW5nQXJlYVByb3h5TGVnYWN5TWVzc2FnZTo6RGlkU2V0U2l6
ZSwgbV93ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oVXBkYXRlQ2h1bmsoKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IFVwZGF0ZUNodW5rIGFu
ZCBwYWludCBpbnRvIGl0LgotICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rKEludFJlY3QoMCwg
MCwgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkpKTsKLSAgICBwYWludEludG9V
cGRhdGVDaHVuaygmdXBkYXRlQ2h1bmspOwotCi0gICAgbV9kaXNwbGF5VGltZXIuc3RvcCgpOwot
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5kZXByZWNhdGVkU2VuZChE
cmF3aW5nQXJlYVByb3h5TGVnYWN5TWVzc2FnZTo6RGlkU2V0U2l6ZSwgbV93ZWJQYWdlLT5wYWdl
SUQoKSwgQ29yZUlQQzo6SW4odXBkYXRlQ2h1bmspKTsKLX0KLQotdm9pZCBDaHVua2VkVXBkYXRl
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZygpCi17Ci0gICAgQVNTRVJUKCFtX3BhaW50aW5n
SXNTdXNwZW5kZWQpOwotICAgIAotICAgIG1fcGFpbnRpbmdJc1N1c3BlbmRlZCA9IHRydWU7Ci0g
ICAgbV9kaXNwbGF5VGltZXIuc3RvcCgpOwotfQotCi12b2lkIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYTo6ZGVwcmVjYXRlZFJlc3VtZVBhaW50aW5nKGJvb2wgZm9yY2VSZXBhaW50KQotewotICAg
IEFTU0VSVChtX3BhaW50aW5nSXNTdXNwZW5kZWQpOwotICAgIAotICAgIG1fcGFpbnRpbmdJc1N1
c3BlbmRlZCA9IGZhbHNlOwotCi0gICAgaWYgKGZvcmNlUmVwYWludCkgewotICAgICAgICAvLyBK
dXN0IHNldCB0aGUgZGlydHkgcmVjdCB0byB0aGUgZW50aXJlIHBhZ2Ugc2l6ZS4KLSAgICAgICAg
bV9kaXJ0eVJlY3QgPSBtX3dlYlBhZ2UtPmJvdW5kcygpOwotICAgIH0KLQotICAgIC8vIFNjaGVk
dWxlIGEgZGlzcGxheS4KLSAgICBzY2hlZHVsZURpc3BsYXkoKTsKLX0KLQotdm9pZCBDaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZSgpCi17Ci0gICAgbV9pc1dhaXRpbmdGb3JVcGRh
dGUgPSBmYWxzZTsKLQotICAgIC8vIERpc3BsYXkgaWYgbmVlZGVkLgotICAgIGRpc3BsYXkoKTsK
LX0KLQotdm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKLXsKLSAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5n
ZXQ8RHJhd2luZ0FyZWFMZWdhY3lNZXNzYWdlOjpLaW5kPigpKSB7Ci0gICAgICAgIGNhc2UgRHJh
d2luZ0FyZWFMZWdhY3lNZXNzYWdlOjpTZXRTaXplOiB7Ci0gICAgICAgICAgICBJbnRTaXplIHNp
emU7Ci0gICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChzaXpl
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBzZXRTaXplKHNpemUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNhc2Ug
RHJhd2luZ0FyZWFMZWdhY3lNZXNzYWdlOjpTdXNwZW5kUGFpbnRpbmc6Ci0gICAgICAgICAgICBz
dXNwZW5kUGFpbnRpbmcoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRHJh
d2luZ0FyZWFMZWdhY3lNZXNzYWdlOjpSZXN1bWVQYWludGluZzogewotICAgICAgICAgICAgYm9v
bCBmb3JjZVJlcGFpbnQ7Ci0gICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJ
UEM6Ok91dChmb3JjZVJlcGFpbnQpKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGRlcHJlY2F0ZWRSZXN1bWVQYWludGluZyhmb3JjZVJlcGFpbnQp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBEcmF3aW5nQXJl
YUxlZ2FjeU1lc3NhZ2U6OkRpZFVwZGF0ZToKLSAgICAgICAgICAgIGRpZFVwZGF0ZSgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVu
a2VkVXBkYXRlRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDg2OTgx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYV9oCi0jZGVmaW5lIENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYV9oCi0KLSNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgotI2luY2x1ZGUgIlJ1bkxv
b3AuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBVcGRhdGVDaHVuazsKLQotY2xhc3MgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
IDogcHVibGljIERyYXdpbmdBcmVhIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWEoV2ViUGFnZSopOwotICAgIHZpcnR1YWwgfkNodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCk7Ci0gICAgdmlydHVhbCB2b2lkIGZvcmNlUmVw
YWludCgpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHZpcnR1YWwg
dm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nTGF5ZXJzKCkgeyB9Ci0jZW5kaWYKLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIHNjaGVkdWxlRGlzcGxheSgpOwotICAgIAotICAgIC8vIENvcmVJUEMgbWVzc2Fn
ZSBoYW5kbGVycy4KLSAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmll
d1NpemUpOwotICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7Ci0gICAgdm9pZCBkZXByZWNhdGVk
UmVzdW1lUGFpbnRpbmcoYm9vbCBmb3JjZVJlcGFpbnQpOwotICAgIHZvaWQgZGlkVXBkYXRlKCk7
Ci0KLSAgICAvLyBQbGF0Zm9ybSBvdmVycmlkZXMKLSAgICB2b2lkIHBhaW50SW50b1VwZGF0ZUNo
dW5rKFVwZGF0ZUNodW5rKik7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZGlydHlSZWN0Owot
ICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JVcGRhdGU7Ci0gICAgYm9vbCBtX3BhaW50aW5nSXNTdXNw
ZW5kZWQ7Ci0gICAgUnVuTG9vcDo6VGltZXI8Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhPiBtX2Rp
c3BsYXlUaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAkocmV2aXNpb24gODY5ODEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKIAogLy8gU3Vi
Y2xhc3NlcwotI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUg
IkRyYXdpbmdBcmVhSW1wbC5oIgogCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBA
IC00Myw4ICs0Miw2IEBAIFBhc3NPd25QdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmUK
ICAgICBzd2l0Y2ggKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSB7CiAgICAgY2FzZSBEcmF3
aW5nQXJlYVR5cGVJbXBsOgogICAgICAgICByZXR1cm4gRHJhd2luZ0FyZWFJbXBsOjpjcmVhdGUo
d2ViUGFnZSwgcGFyYW1ldGVycyk7Ci0gICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDaHVua2VkVXBk
YXRlOgotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YSh3ZWJQYWdlKSk7CiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgY2FzZSBE
cmF3aW5nQXJlYVR5cGVUaWxlZDoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaWxlZERy
YXdpbmdBcmVhKHdlYlBhZ2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYU1hYy5jcHAJKHJldmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmgiCi0KLSNpbmNsdWRlICJVcGRhdGVD
aHVuay5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2lu
Y2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjpwYWludEludG9VcGRhdGVDaHVu
ayhVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCi17Ci0gICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGJldHRlciBpZiB3ZSBjb3VsZCBhdm9pZCBwYWludGluZyBhbHRvZ2V0aGVyIHdoZW4gdGhlcmUg
aXMgYSBjdXN0b20gcmVwcmVzZW50YXRpb24uCi0gICAgaWYgKG1fd2ViUGFnZS0+bWFpbkZyYW1l
SGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVh
dGVEZXZpY2VSR0IoKSk7Ci0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4
dChBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGUodXBkYXRlQ2h1bmstPmRhdGEoKSwgdXBk
YXRlQ2h1bmstPnJlY3QoKS53aWR0aCgpLCB1cGRhdGVDaHVuay0+cmVjdCgpLmhlaWdodCgpLCA4
LCB1cGRhdGVDaHVuay0+cmVjdCgpLndpZHRoKCkgKiA0LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7
Ci0KLSAgICAvLyBXZWJDb3JlIGV4cGVjdHMgYSBmbGlwcGVkIGNvb3JkaW5hdGUgc3lzdGVtLgot
ICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAwLjAsIHVwZGF0
ZUNodW5rLT5yZWN0KCkuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGJpdG1hcENv
bnRleHQuZ2V0KCksIDEuMCwgLTEuMCk7Ci0KLSAgICAvLyBOb3cgcGFpbnQgaW50byB0aGUgYmFj
a2luZyBzdG9yZS4KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGJpdG1hcENv
bnRleHQuZ2V0KCkpOwotICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXVwZGF0ZUNodW5r
LT5yZWN0KCkueCgpLCAtdXBkYXRlQ2h1bmstPnJlY3QoKS55KCkpOwotICAgIAotICAgIG1fd2Vi
UGFnZS0+ZHJhd1JlY3QoZ3JhcGhpY3NDb250ZXh0LCB1cGRhdGVDaHVuay0+cmVjdCgpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9DaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFRdC5jcHAJKHJldmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIgotCi0jaW5jbHVk
ZSAiVXBkYXRlQ2h1bmsuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8UUltYWdl
PgotI2luY2x1ZGUgPFFQYWludGVyPgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
dm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OnBhaW50SW50b1VwZGF0ZUNodW5rKFVwZGF0
ZUNodW5rKiB1cGRhdGVDaHVuaykKLXsKLSAgICBRSW1hZ2UgaW1hZ2UodXBkYXRlQ2h1bmstPmNy
ZWF0ZUltYWdlKCkpOwotICAgIFFQYWludGVyIHBhaW50ZXIoJmltYWdlKTsKLSAgICAvLyBOb3cg
cGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NDb250ZXh0KCZwYWludGVyKTsKLSAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC11cGRh
dGVDaHVuay0+cmVjdCgpLngoKSwgLXVwZGF0ZUNodW5rLT5yZWN0KCkueSgpKTsKLQotICAgIG1f
d2ViUGFnZS0+ZHJhd1JlY3QoZ3JhcGhpY3NDb250ZXh0LCB1cGRhdGVDaHVuay0+cmVjdCgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9DaHVua2VkVXBkYXRl
RHJhd2luZ0FyZWFXaW4uY3BwCShyZXZpc2lvbiA4Njk4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIgotCi0jaW5jbHVkZSAi
VXBkYXRlQ2h1bmsuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9C
aXRtYXBJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYTo6cGFpbnRJbnRvVXBkYXRlQ2h1bmsoVXBkYXRlQ2h1bmsqIHVw
ZGF0ZUNodW5rKQotewotICAgIE93blB0cjxIREM+IGhkYyA9IGFkb3B0UHRyKDo6Q3JlYXRlQ29t
cGF0aWJsZURDKDApKTsKLQotICAgIHZvaWQqIGJpdHM7Ci0gICAgQml0bWFwSW5mbyBibXAgPSBC
aXRtYXBJbmZvOjpjcmVhdGVCb3R0b21VcCh1cGRhdGVDaHVuay0+cmVjdCgpLnNpemUoKSk7Ci0g
ICAgT3duUHRyPEhCSVRNQVA+IGhibXAgPSBhZG9wdFB0cig6OkNyZWF0ZURJQlNlY3Rpb24oMCwg
JmJtcCwgRElCX1JHQl9DT0xPUlMsICZiaXRzLCB1cGRhdGVDaHVuay0+bWVtb3J5KCksIDApKTsK
LQotICAgIEhCSVRNQVAgaGJtcE9sZCA9IHN0YXRpY19jYXN0PEhCSVRNQVA+KDo6U2VsZWN0T2Jq
ZWN0KGhkYy5nZXQoKSwgaGJtcC5nZXQoKSkpOwotCi0gICAgR3JhcGhpY3NDb250ZXh0IGdjKGhk
Yy5nZXQoKSk7Ci0gICAgZ2Muc2F2ZSgpOwotCi0gICAgLy8gRklYTUU6IElzIHRoaXMgd2hpdGUg
ZmlsbCBuZWVkZWQ/Ci0gICAgUkVDVCByZWN0ID0gdXBkYXRlQ2h1bmstPnJlY3QoKTsKLSAgICA6
OkZpbGxSZWN0KGhkYy5nZXQoKSwgJnJlY3QsIChIQlJVU0gpOjpHZXRTdG9ja09iamVjdChXSElU
RV9CUlVTSCkpOwotICAgIGdjLnRyYW5zbGF0ZSgtdXBkYXRlQ2h1bmstPnJlY3QoKS54KCksIC11
cGRhdGVDaHVuay0+cmVjdCgpLnkoKSk7Ci0KLSAgICBtX3dlYlBhZ2UtPmRyYXdSZWN0KGdjLCB1
cGRhdGVDaHVuay0+cmVjdCgpKTsKLQotICAgIGdjLnJlc3RvcmUoKTsKLQotICAgIC8vIFJlLXNl
bGVjdCB0aGUgb2xkIEhCSVRNQVAKLSAgICA6OlNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXBP
bGQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oJKHJldmlzaW9uIDg2OTgxKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE0LDE0ICsxMjE0LDYgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFx3aW5cVXBk
YXRlQ2h1bmsuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5cU2hhcmVkXHdpblxVcGRhdGVDaHVuay5oIgotCQkJCQk+Ci0JCQkJPC9GaWxl
PgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXHdpblxXZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMTg0MiwxNCArMTgz
NCw2IEBACiAJCQkJTmFtZT0iV2ViUGFnZSIKIAkJCQk+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNw
cCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcV2ViUGFnZVxDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaCIKLQkJCQkJPgot
CQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
V2ViUGFnZVxEZWNvZGVyQWRhcHRlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0xOTg1
LDEwICsxOTY5LDYgQEAKIAkJCQkJTmFtZT0id2luIgogCQkJCQk+CiAJCQkJCTxGaWxlCi0JCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVx3aW5cQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhV2luLmNwcCIKLQkJCQkJCT4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQogCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vcd2luXExheWVyVHJlZUhvc3RX
aW4uY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC0yNjExLDE0ICsyNTkxLDYgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNz
XENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0J
CQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXENodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xEcmF3aW5nQXJlYVByb3h5LmNwcCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkBAIC0zNTI2LDEwICszNDk4LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8Rmls
ZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3aW5cQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhUHJveHlXaW4uY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXHdpblxUZXh0Q2hlY2tlcldpbi5jcHAiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="87559"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="87566"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>