<?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>50921</bug_id>
          
          <creation_ts>2010-12-13 06:26:20 -0800</creation_ts>
          <short_desc>[Chromium] Remove non-client-based Geolocation code</short_desc>
          <delta_ts>2011-01-10 03:42:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>50562</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321089</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-13 06:26:20 -0800</bug_when>
    <thetext>Once the client-based Geolocation implementation is being tested by DumpRenderTree and passing, we can remove the old non-client-based code in Chromium&apos;s WebKit port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330092</commentid>
    <comment_count>1</comment_count>
      <attachid>78105</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-01-06 03:59:57 -0800</bug_when>
    <thetext>Created attachment 78105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330124</commentid>
    <comment_count>2</comment_count>
      <attachid>78105</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-01-06 06:59:17 -0800</bug_when>
    <thetext>Comment on attachment 78105
Patch

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

LGTM, but would be good to get sign-off from a Chromium person to confirm that this is the right approach.

&gt; WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Can&apos;t submit with an OOPS. Just say that it&apos;s code cleanup and is tested with existing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330171</commentid>
    <comment_count>3</comment_count>
      <attachid>78123</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-01-06 09:14:52 -0800</bug_when>
    <thetext>Created attachment 78123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330183</commentid>
    <comment_count>4</comment_count>
      <attachid>78123</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-06 09:33:53 -0800</bug_when>
    <thetext>Comment on attachment 78123
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330728</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-07 04:18:03 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 78123:

media/invalid-media-url-crash.html bug 51138 (author: inferno@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330893</commentid>
    <comment_count>6</comment_count>
      <attachid>78123</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-07 11:48:57 -0800</bug_when>
    <thetext>Comment on attachment 78123
Patch

Rejecting attachment 78123 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--ignore-builders&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 78123]&quot; exit_code: 1
Last 500 characters of output:
//bugs.webkit.org/attachment.cgi?id=78123&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=50921&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Updating working directory
Processing patch 78123 from bug 50921.
The diff to Tools/ChangeLog looks wrong.  Are you sure your ChangeLog entry is at the top of the file?
ERROR: ChangeLog entry in Tools/ChangeLog is not at the top of the file.
Updating OpenSource
Current branch master is up to date.
OK to continue? [y/N]: 
Full output: http://queues.webkit.org/results/7360035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330905</commentid>
    <comment_count>7</comment_count>
      <attachid>78123</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-07 12:09:58 -0800</bug_when>
    <thetext>Comment on attachment 78123
Patch

I think the queue is confused.  It hung on this patch due to bug 52072.  But I&apos;ve fixed that now.  Still the patch looks fine, so I&apos;m not sure how the ChangeLog diff got bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331322</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-08 17:05:20 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 78123:

http/tests/canvas/webgl/origin-clean-conformance.html bug 52117 (author: enne@google.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331324</commentid>
    <comment_count>9</comment_count>
      <attachid>78123</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-08 17:06:21 -0800</bug_when>
    <thetext>Comment on attachment 78123
Patch

Rejecting attachment 78123 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--ignore-builders&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 78123]&quot; exit_code: 1
Last 500 characters of output:
 directory
Updating working directory
Processing patch 78123 from bug 50921.
ERROR: ChangeLog entry in Tools/ChangeLog is not at the top of the file.
Updating OpenSource
From git://git.webkit.org/WebKit
   abea93c..3947a3a  master     -&gt; origin/master
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/platform/qt/CookieJarQt.cpp
r75334 = 3947a3a011e2afbb5e9e6d02abd9b8f13b192373 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Full output: http://queues.webkit.org/results/7409053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331576</commentid>
    <comment_count>10</comment_count>
      <attachid>78390</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-01-10 03:16:53 -0800</bug_when>
    <thetext>Created attachment 78390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331581</commentid>
    <comment_count>11</comment_count>
      <attachid>78390</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-10 03:40:27 -0800</bug_when>
    <thetext>Comment on attachment 78390
Patch

rubber stamp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331582</commentid>
    <comment_count>12</comment_count>
      <attachid>78390</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-10 03:41:59 -0800</bug_when>
    <thetext>Comment on attachment 78390
Patch

Clearing flags on attachment: 78390

Committed r75367: &lt;http://trac.webkit.org/changeset/75367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331583</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-10 03:42:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78105</attachid>
            <date>2011-01-06 03:59:57 -0800</date>
            <delta_ts>2011-01-06 09:14:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50921-20110106115954.patch</filename>
            <type>text/plain</type>
            <size>57710</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNmRm
ZTVkMTJiNmNiZGVlZDliZDk3N2UyYTMwZjE2NDhkMDk1OWM2Li42NzRlYzI1MjkzMWE2NDU2ZmNm
NjlkMjEyNmNjZjc5ODU5OWJmZWJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDEtMDYgIEpvaG4gS25vdHRl
bmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgbm9uLWNsaWVudC1iYXNl
ZCBHZW9sb2NhdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDkyMQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEdlb2xvY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6Z2VvbG9jYXRp
b25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNldCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAxMS0wMS0wNSAgU3Rl
dmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVp
bGQgZml4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDgzZTIzODljYTQ3ZmU1ZDBlZGZmZWRhY2Y0YjdhYzEw
YzY2MGI1MTIuLjBiMmNmYzlhZTQwODZlZmExMzMxYmI4ZTRiYmNlOThkMmFjNzczNzkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKQEAgLTQzLDExICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpZiBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jay5oIgotI2Vsc2UKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgiCi0j
ZW5kaWYKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIK
ICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKQEAgLTE1MjQsMTEgKzE1MjAs
NyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQogICAg
ICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBt
X3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UGVybWlz
c2lvbihhcmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOwotI2Vsc2UKLSAgICBXZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGFyZ3VtZW50c1swXS50
b0Jvb2xlYW4oKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTE1MzYsMTEgKzE1MjgsNyBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpIDwgMyB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051
bWJlcigpIHx8ICFhcmd1bWVudHNbMl0uaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuOwotI2lm
IEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgbV9zaGVsbC0+d2ViVmlld0hv
c3QoKS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldFBvc2l0aW9uKGFyZ3VtZW50c1swXS50
b0RvdWJsZSgpLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJdLnRvRG91Ymxl
KCkpOwotI2Vsc2UKLSAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91
YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKLSNlbmRpZgogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTU0OCwxMSArMTUzNiw3
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAh
YXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPmdlb2xv
Y2F0aW9uQ2xpZW50TW9jaygpLT5zZXRFcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBW
YXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7Ci0jZWxzZQotICAgIFdlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGFyZ3VtZW50c1swXS50b0lu
dDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKLSNlbmRpZgogfQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggODQ5MzEyYzRiMDVlZGI4MjM0ZmMw
Yzc1NjE0YmE5NjFkMDI4ZjEwYS4uZjVkZDdmZGJjNTM5YzE0YzM4ZjFhYmFmYmM2YWNmYWU3Mzc1
ZmEzOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cApAQCAtNDMsMTEgKzQzLDcgQEAKICNpbmNsdWRlICJXZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgi
Ci0jZWxzZQotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCIKLSNlbmRpZgog
I2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1
ZGUgIldlYlJhbmdlLmgiCkBAIC01NzEsNyArNTY3LDYgQEAgV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBXZWJWaWV3SG9zdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkKICAgICByZXR1cm4gbV9z
aGVsbC0+bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiB9CiAKLSNpZiBFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQogV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudCogV2ViVmlld0hv
c3Q6Omdlb2xvY2F0aW9uQ2xpZW50KCkKIHsKICAgICByZXR1cm4gZ2VvbG9jYXRpb25DbGllbnRN
b2NrKCk7CkBAIC01ODMsMTQgKzU3OCw2IEBAIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnRNb2NrKCkKICAgICAgICAgbV9nZW9s
b2NhdGlvbkNsaWVudE1vY2suc2V0KFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKCkp
OwogICAgIHJldHVybiBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jay5nZXQoKTsKIH0KLSNlbHNlCi1X
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uU2Vy
dmljZSgpCi17Ci0gICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spCi0gICAgICAgIG1f
Z2VvbG9jYXRpb25TZXJ2aWNlTW9jay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3Jl
YXRlV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jaygpKTsKLSAgICByZXR1cm4gbV9nZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmdldCgpOwotfQotI2VuZGlmCiAKIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ciogV2ViVmlld0hvc3Q6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElu
cHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogewpAQCAtMTE3NywxMiArMTE2NCw4IEBAIHZvaWQgV2Vi
Vmlld0hvc3Q6OnJlc2V0KCkKICAgICBtX2VkaXRDb21tYW5kTmFtZS5jbGVhcigpOwogICAgIG1f
ZWRpdENvbW1hbmRWYWx1ZS5jbGVhcigpOwogCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikKICAgICBpZiAobV9nZW9sb2NhdGlvbkNsaWVudE1vY2suZ2V0KCkpCiAgICAgICAg
IG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrLT5yZXNldE1vY2soKTsKLSNlbHNlCi0gICAgbV9nZW9s
b2NhdGlvblNlcnZpY2VNb2NrLmNsZWFyKCk7Ci0jZW5kaWYKIAogICAgIGlmIChtX3NwZWVjaElu
cHV0Q29udHJvbGxlck1vY2suZ2V0KCkpCiAgICAgICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jay0+Y2xlYXJSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaAppbmRleCAyMGIyOWMwZDljYjYxMDllZjU1NWEwMDg0NzBiM2NlZDE1MDhlOTg4
Li44NmMyM2E1NjA3YmQ4MDIxODUyYjViMWU5YTRhZGUwMTZkYzk4ZTc1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEzOSwxMSArMTM5LDcgQEAg
Y2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMg
V2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExp
c3RDb3VudCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb24pOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpOwotI2Vsc2UKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKLSNlbmRpZgogICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJv
bGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCk7
CiAKQEAgLTIxMCwxMCArMjA2LDggQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0
OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBXZWJL
aXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKCk7CiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CiAKLSNpZiBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVu
dCBtb2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7Ci0jZW5kaWYKIAogcHJpdmF0
ZToKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSBjb25z
dDsKQEAgLTMxNywxMSArMzExLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJD
b250ZXh0TWVudURhdGE+IG1fbGFzdENvbnRleHRNZW51RGF0YTsKIAogICAgIC8vIEdlb2xvY2F0
aW9uCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBPd25QdHI8V2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrOwot
I2Vsc2UKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrPiBtX2dl
b2xvY2F0aW9uU2VydmljZU1vY2s7Ci0jZW5kaWYKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7
CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZGJlNzJkMjRlNWFjNGQ3NWUyZmZjODdjM2Q2ZTNmZWJm
ODg0MDNhLi40MmE2ZDEwZjg1MmVkMDk1YWZmMzM2NzZhN2IzZWU0OGU1MTk2ZmU1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDExLTAxLTA2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtD
aHJvbWl1bV0gUmVtb3ZlIG5vbi1jbGllbnQtYmFzZWQgR2VvbG9jYXRpb24gY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MjEKKworICAgICAg
ICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9DaHJvbWl1bUJyaWRnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0
aW9uU2VydmljZUNocm9taXVtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oOiBSZW1vdmVkLgorCiAyMDExLTAxLTA2
ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5k
ZXggNGRiNmM4YzcyM2ZjNmRlYjY0YTliMzY0OTEzODMxZmQ4YTljMzJjMC4uZWRlMjJlOGIyYjkz
YmM2ODMwODg2NmUxNjJjNmZiZjU3NTliOWRlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBA
IC0xMjM2LDExICsxMjM2LDYgQEAKICAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dseXBoUGFnZVRyZWVOb2RlU2tpYVxcLmNwcCQnXQogICAgICAgICAgIF0s
CiAgICAgICAgIH1dLAotICAgICAgICBbJyJFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
PTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKLSAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAg
ICAgICAgICBbJ2V4Y2x1ZGUnLCAnL0dlb2xvY2F0aW9uU2VydmljZS4qJCddLAotICAgICAgICAg
IF0sCi0gICAgICAgIH1dLAogICAgICAgICBbJyhPUz09ImxpbnV4IiBvciBPUz09IndpbiIpIGFu
ZCAiV1RGX1VTRV9XRUJBVURJT19NS0w9MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywgewogICAgICAg
ICAgICdzb3VyY2VzLyc6IFsKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9hdWRp
by9ta2wvRkZURnJhbWVNS0xcXC5jcHAkJ10sCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDZhNTE5ZmI1MTVjOWY3YzhlMTk5YmM4
ODExMTBmNTBjYWEyNDBlNzkuLmU5ODZjNzU0OGQyYmI4ZDNlYWQzNTRjYTIwNzYxNmNmMTUzNDc4
NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yNDc2LDggKzI0NzYsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uY3BwJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9LZXlDb2RlQ29udmVyc2lvbi5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9LZXlDb2RlQ29udmVyc2lvbkd0ay5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAppbmRleCBlYmU0OGJkODZlYzU5OWQ5MjRl
MmYzYjI2MjIzM2ZjNDdjNWIyOTJlLi41MDg3MjNhMTA0YjkxODI1YTk2MjQyMDk1MDgyNzI1MTFk
MWM4YmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJp
ZGdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCkBA
IC0xNTksMTAgKzE1OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9ybXMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICAgICAgc3RhdGljIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZChjb25zdCBE
b2N1bWVudCopOwogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAg
ICAgIC8vIEdlb2xvY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgIHN0YXRpYyBHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2UqIGNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZShHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bSopOwotI2VuZGlmCiAgICAgICAgIC8vIERhdGFiYXNlcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIC8vIFJldHVy
bnMgYSBoYW5kbGUgdG8gdGhlIERCIGZpbGUgYW5kIG9vcHRpb25hbGx5IGEgaGFuZGxlIHRvIGl0
cyBjb250YWluaW5nIGRpcmVjdG9yeQogICAgICAgICBzdGF0aWMgUGxhdGZvcm1GaWxlSGFuZGxl
IGRhdGFiYXNlT3BlbkZpbGUoY29uc3QgU3RyaW5nJiB2ZnNGbGVOYW1lLCBpbnQgZGVzaXJlZEZs
YWdzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlv
blNlcnZpY2VDaHJvbWl1bS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTcz
YWU4YjQ1NzBmZGY4ODczMTdiYWEyNTZiNjIzN2FhNjU4NTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21p
dW0uaCIKLQotI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCi0KLSNpZiBFTkFCTEUoQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKQotI2Vycm9yICJUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBjb21w
aWxlZCB3aGVuIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pIgotI2VuZGlmIC8vIEVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlOjp+R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCkKLXsK
LX0KLQotR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06Okdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogYykKLSAgICAgICAgOiBHZW9sb2NhdGlvblNl
cnZpY2UoYyksCi0gICAgICAgICAgbV9nZW9sb2NhdGlvbihzdGF0aWNfY2FzdDxHZW9sb2NhdGlv
bio+KGMpKSwKLSAgICAgICAgICBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZShDaHJvbWl1bUJy
aWRnZTo6Y3JlYXRlR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKHRoaXMpKSwKLSAgICAgICAgICBt
X2xhc3RFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UE9TSVRJT05f
VU5BVkFJTEFCTEUsICIiKSkKLXsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bTo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICBtX2dlb2xvY2F0aW9uLT5zZXRJ
c0FsbG93ZWQoYWxsb3dlZCk7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06
OnNldExhc3RQb3NpdGlvbihQYXNzUmVmUHRyPEdlb3Bvc2l0aW9uPiBnZW9wb3NpdGlvbikKLXsK
LSAgICBtX2xhc3RQb3NpdGlvbiA9IGdlb3Bvc2l0aW9uOwotICAgIHBvc2l0aW9uQ2hhbmdlZCgp
OwotfQotCi12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzZXRMYXN0RXJyb3IoaW50
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fbGFzdEVycm9yID0g
UG9zaXRpb25FcnJvcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFBvc2l0aW9uRXJyb3I6OkVycm9yQ29k
ZT4oZXJyb3JDb2RlKSwgbWVzc2FnZSk7Ci0gICAgZXJyb3JPY2N1cnJlZCgpOwotfQotCi1GcmFt
ZSogR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06OmZyYW1lKCkKLXsKLSAgICByZXR1cm4gbV9n
ZW9sb2NhdGlvbi0+ZnJhbWUoKTsKLX0KLQotYm9vbCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bTo6c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCi17Ci0gICAgcmV0dXJu
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpOwotfQot
Ci12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzdG9wVXBkYXRpbmcoKQotewotICAg
IHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS0+c3RvcFVwZGF0aW5nKCk7Ci19Ci0K
LXZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06OnN1c3BlbmQoKQotewotICAgIHJldHVy
biBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS0+c3VzcGVuZCgpOwotfQotCi12b2lkIEdlb2xv
Y2F0aW9uU2VydmljZUNocm9taXVtOjpyZXN1bWUoKQotewotICAgIHJldHVybiBtX2dlb2xvY2F0
aW9uU2VydmljZUJyaWRnZS0+cmVzdW1lKCk7Ci19Ci0KLUdlb3Bvc2l0aW9uKiBHZW9sb2NhdGlv
blNlcnZpY2VDaHJvbWl1bTo6bGFzdFBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9s
YXN0UG9zaXRpb24uZ2V0KCk7Ci19Ci0KLVBvc2l0aW9uRXJyb3IqIEdlb2xvY2F0aW9uU2Vydmlj
ZUNocm9taXVtOjpsYXN0RXJyb3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2xhc3RFcnJvci5n
ZXQoKTsKLX0KLQotc3RhdGljIEdlb2xvY2F0aW9uU2VydmljZSogY3JlYXRlR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0oR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBjKQotewotICAgIHJldHVy
biBuZXcgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0oYyk7Ci19Ci0KLS8vIFNldHMgdXAgdGhl
IGZhY3RvcnkgZnVuY3Rpb24gZm9yIEdlb2xvY2F0aW9uU2VydmljZS4KLUdlb2xvY2F0aW9uU2Vy
dmljZTo6RmFjdG9yeUZ1bmN0aW9uKiBHZW9sb2NhdGlvblNlcnZpY2U6OnNfZmFjdG9yeUZ1bmN0
aW9uID0gJmNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0
aW9uU2VydmljZUNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0
aW9uU2VydmljZUNocm9taXVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNmY2
MzNmZjcxNjRmYTRjYjYzMGVhZjk4NzA4YTEyNzk4M2NiZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtX2gKLSNkZWZpbmUgR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW1faAotCi0jaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJH
ZW9sb2NhdGlvblNlcnZpY2UuaCIKLSNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0gdG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KLWNsYXNzIEdlb2xvY2F0
aW9uU2VydmljZUJyaWRnZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2
aWNlQnJpZGdlKCk7Ci0gICAgLy8gQ2FsbGVkIGJ5IEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
LgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7Ci0KLSAgICAvLyBD
YWxsZWQgYnkgdGhlIGVtYmVkZGVyLCB0byBpZGVudGlmeSB0aGlzIGJyaWRnZS4KLSAgICB2aXJ0
dWFsIGludCBnZXRCcmlkZ2VJZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
QnJpZGdlSWZOZWVkZWQoKSA9IDA7Ci19OwotCi0vLyBUaGlzIGNsYXNzIGV4dGVuZHMgR2VvbG9j
YXRpb25TZXJ2aWNlLCBhbmQgdXNlcyBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UgdG8KLS8vIGNh
bGwgaW50byB0aGUgZW1iZWRkZXIsIGFzIHdlbGwgYXMgcHJvdmlkZXMgYSBmZXcgZXh0cmEgbWV0
aG9kcyBzbyB0aGF0IHRoZQotLy8gZW1iZWRkZXIgY2FuIG5vdGlmeSBwZXJtaXNzaW9uLCBwb3Np
dGlvbiwgZXJyb3IsIGV0Yy4KLWNsYXNzIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtIDogcHVi
bGljIEdlb2xvY2F0aW9uU2VydmljZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW0oR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7Ci0KLSAgICBHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2UqIGdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRJ
c0FsbG93ZWQoYm9vbCBhbGxvd2VkKTsKLSAgICB2b2lkIHNldExhc3RQb3NpdGlvbihQYXNzUmVm
UHRyPEdlb3Bvc2l0aW9uPik7Ci0gICAgdm9pZCBzZXRMYXN0RXJyb3IoaW50IGVycm9yQ29kZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICBGcmFtZSogZnJhbWUoKTsKLQotICAgIC8vIEZy
b20gR2VvbG9jYXRpb25TZXJ2aWNlLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBv
c2l0aW9uT3B0aW9ucyopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICB2
aXJ0dWFsIEdlb3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBv
c2l0aW9uRXJyb3IqIGxhc3RFcnJvcigpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEdlb2xvY2F0
aW9uKiBtX2dlb2xvY2F0aW9uOwotICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2U+
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlOwotICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9s
YXN0UG9zaXRpb247Ci0gICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IG1fbGFzdEVycm9yOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gR2VvbG9jYXRpb25TZXJ2aWNl
Q2hyb21pdW1faApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjlhMzA3MDM4ZTZiNjc3ZmZmZWQ2OGU4OTYzMDMx
YzEyMzUyOGE2Yi4uZDUwZWFlNzUwZWUzYjA1Mzc1ZDdiZWQyNWI5NTVkNDQ4NDZhZmEzNyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMDYgIEpvaG4gS25vdHRlbmJlbHQg
IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgbm9uLWNsaWVudC1iYXNlZCBHZW9s
b2NhdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDkyMQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL1dlYkdlb2xv
Y2F0aW9uU2VydmljZUJyaWRnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9s
b2NhdGlvblNlcnZpY2VNb2NrLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKToKKyAgICAgICAgKiBzcmMvQ2hyb21p
dW1CcmlkZ2UuY3BwOgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJ
bXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlSW1wbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorCiAyMDEwLTEyLTI5ICBKb2huIEFiZC1FbC1NYWxlayAgPGphbUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCAzOWQ0NmY2NDYyNGE3NjFkZTgwZjJkMzk4YmQ1ZDJjMzA4MmRjYzM3Li45YTk1YTg1MDZj
OGEyZTJkODljYTQ0N2JlMTFkY2NjZjhhNGFiYzcxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTgzLDkg
KzE4Myw2IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRp
b25TZXJ2aWNlLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlQnJpZGdlLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkhpc3RvcnlJdGVtLmgnLApAQCAtNDYyLDkgKzQ1OSw2IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bC5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
SW1wbC5oJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2su
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdseXBoQ2FjaGUuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNELmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcCcsCkBAIC02ODAsMjAgKzY3
NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJyJFTkFCTEVfQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKLSAgICAgICAgICAg
ICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRl
JywgJ1dlYkdlb2xvY2F0aW9uU2VydmljZS4qJCddLAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnR2VvbG9jYXRpb25DbGllbnRQcm94
eS4qJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRp
b25DbGllbnQuKiddLAotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdl
b2xvY2F0aW9uQ29udHJvbGxlci4qJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnV2ViR2VvbG9jYXRpb25FcnJvci4qJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBb
J2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC4qJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi4qJ10s
Ci0gICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAg
XSwKICAgICAgICAgfSwKIApAQCAtODcyLDExICs4NTIsNiBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICB9XSwKLSAg
ICAgICAgICAgICAgICBbJyJFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OPTEiIGluIGZl
YXR1cmVfZGVmaW5lcycsIHsKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAg
ICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uU2VydmljZS4q
JCddLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dCiAgICAgICAg
ICAgICBdLAogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJHZW9sb2NhdGlvblNlcnZpY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWE5MWI1ODM0ZjJkNTY5YWUxYzFmODA2YzcxNjNlMWUwMGM4ZDFlNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Ykdlb2xvY2F0aW9uU2VydmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYkdlb2xvY2F0aW9uU2VydmljZV9oCi0jZGVmaW5lIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2U7Ci1jbGFzcyBXZWJTdHJpbmc7Ci1jbGFzcyBXZWJVUkw7Ci0KLS8vIFByb3ZpZGVzIGFu
IGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkgV2ViS2l0LgotY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2
aWNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFt
ZShpbnQgYnJpZGdlSWQsIGNvbnN0IFdlYlVSTCYgdXJsKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShpbnQgYnJpZGdlSWQsIGNvbnN0IFdlYlVS
TCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKGludCBicmlkZ2VJZCwgY29u
c3QgV2ViVVJMJiB1cmwsIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc3RvcFVwZGF0aW5nKGludCBicmlkZ2VJZCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN1
c3BlbmQoaW50IGJyaWRnZUlkKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKGludCBicmlk
Z2VJZCkgeyB9Ci0KLSAgICAvLyBBdHRhY2hlcyB0aGUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlIHRvIHRoZSBlbWJlZGRlciBhbmQgcmV0dXJucyBpdHMKLSAgICAvLyBpZCwgd2hpY2ggc2hv
dWxkIGJlIHVzZWQgb24gc3Vic2VxdWVudCBjYWxscyBmb3IgdGhlIG1ldGhvZHMgYWJvdmUuCi0g
ICAgLy8gQW4gSUQgb2YgemVybyBpbmRpY2F0ZXMgdGhlIGF0dGFjaCBmYWlsZWQuCi0gICAgdmly
dHVhbCBpbnQgYXR0YWNoQnJpZGdlKFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSopIHsgcmV0
dXJuIDA7IH0KLQotICAgIC8vIERldGFjaGVzIHRoZSBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2UgZnJvbSB0aGUgZW1iZWRkZXIuCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaEJyaWRnZShpbnQg
YnJpZGdlSWQpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25T
ZXJ2aWNlKCkge30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkMjA5YzIzMGE3OTIwODc4ZmEwYjQ0ZWI0NjJlZDQxOWY5YzQ3MWU2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlX2gKLSNkZWZpbmUgV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlOwotY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW07
Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTdHJpbmc7Ci1jbGFzcyBXZWJV
Ukw7Ci0KLS8vIFByb3ZpZGVzIGEgV2ViS2l0IEFQSSBjYWxsZWQgYnkgdGhlIGVtYmVkZGVyLgot
Y2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXN0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBib29sIHBy
b3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBib29sIHBy
b3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJv
dmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUg
c3BlZWQsIGxvbmcgbG9uZyB0aW1lc3RhbXApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGFz
dEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgPSAwOwotICAg
IC8vIENhbGxlZCB3aGVuIHRoZSBXZWJHZW9sb2NhdGlvblNlcnZpY2UgdG8gd2hpY2ggdGhpcyBi
cmlkZ2UgaXMgYXR0YWNoZWQgaXMgZ29pbmcgb3V0IG9mIHNjb3BlLiBPbiByZWNlaXZpbmcKLSAg
ICAvLyB0aGlzIGNhbGwgdGhlIGJyaWRnZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5vdCBtYWtlIGFu
eSBmdXJ0aGVyIGFjY2VzcyB0byB0aGUgc2VydmljZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVz
dHJveUdlb2xvY2F0aW9uU2VydmljZSgpID0gMDsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
YmFkbHkgbmFtZWQgbWV0aG9kIHdoZW4gYWxsIGNhbGxlcnMgYXJlIHVzaW5nIGRpZERlc3Ryb3lH
ZW9sb2NhdGlvblNlcnZpY2UgZGlyZWN0bHkuCi0gICAgdm9pZCBvbldlYkdlb2xvY2F0aW9uU2Vy
dmljZURlc3Ryb3llZCgpIHsgZGlkRGVzdHJveUdlb2xvY2F0aW9uU2VydmljZSgpOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKSB7fQot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblNl
cnZpY2VCcmlkZ2VfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9s
b2NhdGlvblNlcnZpY2VNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIwOTc1ZTEx
MDllY2FjODE3NjAwZGJkM2IyODNlMTdlMzk4YmY2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrX2gKLSNkZWZpbmUgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9ja19oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
blNlcnZpY2UuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlN0cmluZzsKLQot
Y2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jayA6IHB1YmxpYyBXZWJHZW9sb2NhdGlvblNl
cnZpY2UgewotcHVibGljOgotICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2sqIGNyZWF0ZVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2soKTsKLSAgICBXRUJLSVRf
QVBJIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvd2Vk
KTsKLSAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAg
ICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBlcnJv
ckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggOTM2YjhkYmMxNmEyNGI0
M2I1ZGYzZWM1MDQwZGNlNTY5M2I4MTIzYy4uZTFlZTRhMTE1YTcwY2M1MzEyOTcxZGIwNDJhZjhi
OTNjODMyMDMwYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMu
Y3BwCkBAIC0zOTQsMTAgKzM5NCw4IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
RmlsZUVycm9yUXVvdGFFeGNlZWRlZCwgRmlsZUVycm9yOjpRVU9UQV9FWENFRURFCiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVFcnJvclR5cGVNaXNtYXRjaCwgRmlsZUVycm9y
OjpUWVBFX01JU01BVENIX0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZp
bGVFcnJvclBhdGhFeGlzdHMsIEZpbGVFcnJvcjo6UEFUSF9FWElTVFNfRVJSKTsKIAotI2lmIEVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlzc2lvbkRlbmllZCwgR2VvbG9jYXRp
b25FcnJvcjo6UGVybWlzc2lvbkRlbmllZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWlsYWJsZSwgR2VvbG9jYXRp
b25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSk7Ci0jZW5kaWYKIAogI2lmIE9TKERBUldJTikK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJs
ZWQsIENocm9taXVtQnJpZGdlOjpTdGF0ZURpc2FibGVkKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDI4ZDc4ZDBjOGFhNjJiOTIzMzhjOTg2NDJiZDkwYWY5
ZmI1N2IzNmQuLjM5MWRmNmY5NDZlMTRhOTE0N2ExMWM0NjhlZDc5ZTVmNjc5NWZhNzEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNDcsNyArNDcsNiBAQAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtNzEsNyArNzAsNiBAQAogI2luY2x1
ZGUgIldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uU2VydmljZS5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJL
aXQuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCkBAIC03ODIsMTkgKzc4MCwxMiBAQCBOb3RpZmlj
YXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEltcGw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigp
IGNvbnN0CiAvLyAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDA2MSApLgogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7Ci0j
aWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgR2VvbG9jYXRpb25TZXJ2
aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtKj4oZ2VvbG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgpKTsK
LSAgICBnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5hdHRh
Y2hCcmlkZ2VJZk5lZWRlZCgpOwotICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0aW9u
U2VydmljZSgpLT5yZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uU2VydmljZS0+
Z2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7Ci0jaWYgIUVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2hy
b21pdW0qIGdlb2xvY2F0aW9uU2VydmljZSA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uU2Vydmlj
ZUNocm9taXVtKj4oZ2VvbG9jYXRpb24tPmdldEdlb2xvY2F0aW9uU2VydmljZSgpKTsKLSAgICBt
X3dlYlZpZXctPmNsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+Y2FuY2VsUGVybWlzc2lv
blJlcXVlc3RGb3JGcmFtZShnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZSgpLT5nZXRCcmlkZ2VJZCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwotI2VuZGlm
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdl
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCmluZGV4IDRlMjcx
NGYyYmEzNTIzMThkMDU5NmMxNDAwOWIwNGEyMTgwMTUyNDQuLmU3NDNkYWY5NDU0MTAzZjY0Mjgx
MzE4YTFiODVkMjQxYjMxODYxYjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21pdW1CcmlkZ2UuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2Uu
Y3BwCkBAIC05NiwxMCArOTYsNiBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKIAotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KQotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCIKLSNlbmRpZgot
CiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTQ4MywxNSArNDc5LDYgQEAgYm9vbCBDaHJv
bWl1bUJyaWRnZTo6bG9hZEZvbnQoTlNGb250KiBzcmNGb250LCBBVFNGb250Q29udGFpbmVyUmVm
KiBvdXQpCiB9CiAjZW5kaWYKIAotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KQotLy8gR2VvbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1HZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIENo
cm9taXVtQnJpZGdlOjpjcmVhdGVHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKQotewotICAgIHJldHVy
biBjcmVhdGVHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKGdlb2xvY2F0aW9uU2VydmljZUNo
cm9taXVtKTsKLX0KLSNlbmRpZgotCiAvLyBEYXRhYmFzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFBsYXRmb3Jt
RmlsZUhhbmRsZSBDaHJvbWl1bUJyaWRnZTo6ZGF0YWJhc2VPcGVuRmlsZShjb25zdCBTdHJpbmcm
IHZmc0ZpbGVOYW1lLCBpbnQgZGVzaXJlZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJiYzg1MmZkNmVkZGRiZTcyY2U2MzFlNmI4NjIxNTVmODk1MmVm
ZDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCIKLQotI2luY2x1ZGUgIkNocm9tZS5oIgot
I2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1
ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0u
aCIKLSNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJQb3NpdGlvbkVycm9yLmgiCi0jaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCi0jaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJXZWJH
ZW9sb2NhdGlvblNlcnZpY2UuaCIKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2UuaCIKLSNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwu
aCIKLQotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLQotdXNpbmcgV2ViQ29yZTo6Q29vcmRpbmF0
ZXM7Ci11c2luZyBXZWJDb3JlOjpGcmFtZTsKLXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uOwot
dXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlOwotdXNpbmcgV2ViQ29yZTo6
R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW07Ci11c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2VDbGllbnQ7Ci11c2luZyBXZWJDb3JlOjpHZW9wb3NpdGlvbjsKLXVzaW5nIFdlYkNvcmU6
OlBvc2l0aW9uRXJyb3I7Ci11c2luZyBXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM7Ci11c2luZyBX
VEY6OlN0cmluZzsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZUltcGwgOiBwdWJsaWMgR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLCBwdWJs
aWMgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBX
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
Kik7Ci0gICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbCgpOwotCi0g
ICAgLy8gR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlCi0gICAgdmlydHVhbCBib29sIHN0YXJ0VXBk
YXRpbmcoUG9zaXRpb25PcHRpb25zKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygp
OwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZSgp
OwotICAgIHZpcnR1YWwgaW50IGdldEJyaWRnZUlkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGF0dGFjaEJyaWRnZUlmTmVlZGVkKCk7Ci0KLSAgICAvLyBXZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2UKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCk7Ci0gICAg
dmlydHVhbCB2b2lkIHNldExhc3RQb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNj
dXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCwgbG9uZyBsb25nIHRpbWVzdGFtcCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldExhc3RFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2Up
OwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95R2VvbG9jYXRpb25TZXJ2aWNlKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3Q7Ci0gICAgLy8gUG9pbnRlciBiYWNr
IHRvIHRoZSBXZWJLaXQgZ2VvbG9jYXRpb24gY2xpZW50LiBXZSBvYnRhaW4gdGhpcyB2aWEgdGhl
IGZyYW1lJ3MgcGFnZSwgYnV0IG5lZWQgdG8gY2FjaGUgaXQKLSAgICAvLyBhcyBpdCBtYXkgc3Rp
bGwgYmUgYWxpdmUgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGRldGFjaGVkIGZyb20gdGhlIGZyYW1lLgot
ICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZSogbV93ZWJHZW9sb2NhdGlvblNlcnZpY2U7Ci0gICAg
Ly8gR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0gb3ducyB1cywgd2Ugb25seSBoYXZlIGEgcG9p
bnRlciBiYWNrIHRvIGl0LgotICAgIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBtX2dlb2xv
Y2F0aW9uU2VydmljZUNocm9taXVtOwotICAgIGludCBtX2JyaWRnZUlkOwotfTsKLQotR2VvbG9j
YXRpb25TZXJ2aWNlQnJpZGdlKiBjcmVhdGVHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKEdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSkKLXsK
LSAgICByZXR1cm4gbmV3IFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoZ2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW0pOwotfQotCi1XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBs
OjpXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKEdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtKiBnZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSkKLSAgICA6IG1fd2ViR2VvbG9jYXRpb25T
ZXJ2aWNlKDApCi0gICAgLCBtX2dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKGdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtKQotICAgICwgbV9icmlkZ2VJZCgwKQotewotfQotCi1XZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjp+V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbCgp
Ci17Ci0gICAgaWYgKGlzQXR0YWNoZWQoKSkKLSAgICAgICAgbV93ZWJHZW9sb2NhdGlvblNlcnZp
Y2UtPmRldGFjaEJyaWRnZShtX2JyaWRnZUlkKTsKLX0KLQotYm9vbCBXZWJHZW9sb2NhdGlvblNl
cnZpY2VCcmlkZ2VJbXBsOjpzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyogcG9zaXRpb25P
cHRpb25zKQotewotICAgIGF0dGFjaEJyaWRnZUlmTmVlZGVkKCk7Ci0gICAgaWYgKCFpc0F0dGFj
aGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3dlYkdlb2xvY2F0aW9uU2Vydmlj
ZS0+c3RhcnRVcGRhdGluZyhtX2JyaWRnZUlkLCBtX2dlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
LT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSwgcG9zaXRpb25PcHRpb25zLT5lbmFibGVIaWdo
QWNjdXJhY3koKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlQnJpZGdlSW1wbDo6c3RvcFVwZGF0aW5nKCkKLXsKLSAgICBpZiAoaXNBdHRhY2hlZCgp
KSB7Ci0gICAgICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlLT5zdG9wVXBkYXRpbmcobV9icmlk
Z2VJZCk7Ci0gICAgICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlLT5kZXRhY2hCcmlkZ2UobV9i
cmlkZ2VJZCk7Ci0gICAgICAgIG1fYnJpZGdlSWQgPSAwOwotICAgICAgICBtX3dlYkdlb2xvY2F0
aW9uU2VydmljZSA9IDA7Ci0gICAgfQotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGw6OnN1c3BlbmQoKQotewotICAgIGlmIChpc0F0dGFjaGVkKCkpCi0gICAgICAgIG1f
d2ViR2VvbG9jYXRpb25TZXJ2aWNlLT5zdXNwZW5kKG1fYnJpZGdlSWQpOwotfQotCi12b2lkIFdl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnJlc3VtZSgpCi17Ci0gICAgaWYgKGlzQXR0
YWNoZWQoKSkKLSAgICAgICAgbV93ZWJHZW9sb2NhdGlvblNlcnZpY2UtPnJlc3VtZShtX2JyaWRn
ZUlkKTsKLX0KLQotaW50IFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OmdldEJyaWRn
ZUlkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9icmlkZ2VJZDsKLX0KLQotdm9pZCBXZWJHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjphdHRhY2hCcmlkZ2VJZk5lZWRlZCgpCi17Ci0gICAg
aWYgKGlzQXR0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIExhenkgYXR0YWNoIHRv
IHRoZSBnZW9sb2NhdGlvbiBzZXJ2aWNlIG9mIHRoZSBhc3NvY2lhdGVkIHBhZ2UgaWYgdGhlcmUg
aXMgb25lLgotICAgIEZyYW1lKiBmcmFtZSA9IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0t
PmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50SW1wbCA9IHN0
YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbCo+KGZyYW1lLT5wYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKSk7Ci0gICAgV2ViS2l0OjpXZWJWaWV3Q2xpZW50KiB3ZWJWaWV3Q2xpZW50
ID0gY2hyb21lQ2xpZW50SW1wbC0+d2ViVmlldygpLT5jbGllbnQoKTsKLSAgICBtX3dlYkdlb2xv
Y2F0aW9uU2VydmljZSA9IHdlYlZpZXdDbGllbnQtPmdlb2xvY2F0aW9uU2VydmljZSgpOwotICAg
IEFTU0VSVChtX3dlYkdlb2xvY2F0aW9uU2VydmljZSk7Ci0gICAgbV9icmlkZ2VJZCA9IG1fd2Vi
R2VvbG9jYXRpb25TZXJ2aWNlLT5hdHRhY2hCcmlkZ2UodGhpcyk7Ci0gICAgaWYgKCFtX2JyaWRn
ZUlkKSB7Ci0gICAgICAgIC8vIEF0dGFjaCBmYWlsZWQuIFJlbGVhc2UgYXNzb2NpYXRpb24gd2l0
aCB0aGlzIHNlcnZpY2UuCi0gICAgICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlID0gMDsKLSAg
ICB9Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c2V0SXNBbGxv
d2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLT5z
ZXRJc0FsbG93ZWQoYWxsb3dlZCk7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlSW1wbDo6c2V0TGFzdFBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFj
eSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5
LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVl
ZCwgZG91YmxlIHNwZWVkLCBsb25nIGxvbmcgdGltZXN0YW1wKQotewotICAgIFJlZlB0cjxHZW9w
b3NpdGlvbj4gZ2VvcG9zaXRpb24gPSBHZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpj
cmVhdGUobGF0aXR1ZGUsIGxvbmdpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIGFj
Y3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3Zp
ZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpLCB0aW1lc3RhbXApOwot
ICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0tPnNldExhc3RQb3NpdGlvbihnZW9wb3Np
dGlvbik7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c2V0TGFz
dEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBt
X2dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLT5zZXRMYXN0RXJyb3IoZXJyb3JDb2RlLCBtZXNz
YWdlKTsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpkaWREZXN0
cm95R2VvbG9jYXRpb25TZXJ2aWNlKCkKLXsKLSAgICBtX2JyaWRnZUlkID0gMDsKLSAgICBtX3dl
Ykdlb2xvY2F0aW9uU2VydmljZSA9IDA7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlSW1wbDo6aXNBdHRhY2hlZCgpIGNvbnN0Ci17Ci0gICAgLy8gVGVzdCB0aGUgY2xhc3Mg
aW52YXJpYW50LgotICAgIGlmIChtX3dlYkdlb2xvY2F0aW9uU2VydmljZSkKLSAgICAgICAgQVNT
RVJUKG1fYnJpZGdlSWQpOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUKCFtX2JyaWRnZUlkKTsK
LQotICAgIHJldHVybiBtX3dlYkdlb2xvY2F0aW9uU2VydmljZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzM3YmNiMmQyNjljZDJkNjNiODEwZmI4NTI5Nzg2
YjQ0M2Q2ZGNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGxfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsX2gK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlOwot
Y2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW07Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBjcmVhdGVHZW9sb2NhdGlvblNl
cnZpY2VCcmlkZ2VJbXBsKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKik7Ci19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2N2I4YjE2ZWZiYmEw
MzQ0ZjllMjUxYzBiNGQ2ZmY1N2E3OWNjMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCIKLQotI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uU2VydmljZS5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIgotI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotdXNpbmcgV2Vi
Q29yZTo6Q29vcmRpbmF0ZXM7Ci11c2luZyBXZWJDb3JlOjpGcmFtZTsKLXVzaW5nIFdlYkNvcmU6
Okdlb2xvY2F0aW9uOwotdXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlOwot
dXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW07Ci11c2luZyBXZWJDb3Jl
OjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ7Ci11c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2VNb2NrOwotdXNpbmcgV2ViQ29yZTo6R2VvcG9zaXRpb247Ci11c2luZyBXZWJDb3JlOjpQ
b3NpdGlvbkVycm9yOwotdXNpbmcgV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOwotdXNpbmcgV1RG
OjpTdHJpbmc7Ci11c2luZyBXVEY6OlZlY3RvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrIDogcHVibGljIEdlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtLCBwdWJsaWMgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgR2VvbG9jYXRpb25TZXJ2aWNlKiBjcmVhdGUoR2VvbG9jYXRpb25TZXJ2aWNl
Q2xpZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHN0YXJ0VXBkYXRpbmcoUG9zaXRpb25PcHRpb25z
Kik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOwotICAgIHZpcnR1YWwgR2VvcG9z
aXRpb24qIGxhc3RQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgUG9zaXRpb25FcnJvciog
bGFzdEVycm9yKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNl
UG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uU2VydmljZSopOwotICAgIHZpcnR1YWwgdm9pZCBn
ZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSopOwotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jayhHZW9s
b2NhdGlvblNlcnZpY2VDbGllbnQqKTsKLQotICAgIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCog
bV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ7Ci0gICAgT3duUHRyPEdlb2xvY2F0aW9uU2Vydmlj
ZT4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrOwotfTsKLQotR2VvbG9jYXRpb25TZXJ2aWNlKiBH
ZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6OmNyZWF0ZShHZW9sb2NhdGlvblNlcnZpY2VD
bGllbnQqIGdlb2xvY2F0aW9uU2VydmljZUNsaWVudCkKLXsKLSAgICByZXR1cm4gbmV3IEdlb2xv
Y2F0aW9uU2VydmljZUNocm9taXVtTW9jayhnZW9sb2NhdGlvblNlcnZpY2VDbGllbnQpOwotfQot
Ci1HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6Okdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtTW9jayhHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqIGdlb2xvY2F0aW9uU2VydmljZUNsaWVu
dCkKLSAgICA6IEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKGdlb2xvY2F0aW9uU2VydmljZUNs
aWVudCksCi0gICAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudChnZW9sb2NhdGlvblNlcnZp
Y2VDbGllbnQpCi17Ci0gICAgICBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suc2V0KEdlb2xvY2F0
aW9uU2VydmljZU1vY2s6OmNyZWF0ZSh0aGlzKSk7Ci19Ci0KLWJvb2wgR2VvbG9jYXRpb25TZXJ2
aWNlQ2hyb21pdW1Nb2NrOjpzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyogcG9zaXRpb25P
cHRpb25zKQotewotICAgIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzdGFydFVwZGF0aW5n
KHBvc2l0aW9uT3B0aW9ucyk7Ci0gICAgcmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay0+
c3RhcnRVcGRhdGluZyhwb3NpdGlvbk9wdGlvbnMpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtTW9jazo6c3RvcFVwZGF0aW5nKCkKLXsKLSAgICBHZW9sb2NhdGlvblNlcnZp
Y2VDaHJvbWl1bTo6c3RvcFVwZGF0aW5nKCk7Ci0gICAgbV9nZW9sb2NhdGlvblNlcnZpY2VNb2Nr
LT5zdG9wVXBkYXRpbmcoKTsKLX0KLQotR2VvcG9zaXRpb24qIEdlb2xvY2F0aW9uU2VydmljZUNo
cm9taXVtTW9jazo6bGFzdFBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9nZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLT5sYXN0UG9zaXRpb24oKTsKLX0KLQotUG9zaXRpb25FcnJvciogR2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpsYXN0RXJyb3IoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2stPmxhc3RFcnJvcigpOwotfQotCi12b2lkIEdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jazo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25D
aGFuZ2VkKEdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKQotewotICAgIEFT
U0VSVF9VTlVTRUQoZ2VvbG9jYXRpb25TZXJ2aWNlLCBnZW9sb2NhdGlvblNlcnZpY2UgPT0gbV9n
ZW9sb2NhdGlvblNlcnZpY2VNb2NrKTsKLSAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudC0+
Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKHRoaXMpOwotCi19Ci0KLXZvaWQgR2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3Vy
cmVkKEdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKQotewotICAgIEFTU0VS
VF9VTlVTRUQoZ2VvbG9jYXRpb25TZXJ2aWNlLCBnZW9sb2NhdGlvblNlcnZpY2UgPT0gbV9nZW9s
b2NhdGlvblNlcnZpY2VNb2NrKTsKLSAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudC0+Z2Vv
bG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZCh0aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9ja0ltcGwgOiBwdWJsaWMgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jayB7Ci1wdWJsaWM6
Ci0gICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGwoKTsKLSAgICB2aXJ0dWFsIH5XZWJH
ZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbCgpOwotICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9s
b2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKTsKLQotICAgIC8vIFdlYkdlb2xvY2F0aW9u
U2VydmljZQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKGludCBi
cmlkZ2VJZCwgY29uc3QgV2ViVVJMJiB1cmwpOwotICAgIHZpcnR1YWwgaW50IGF0dGFjaEJyaWRn
ZShXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
QnJpZGdlKGludCBicmlkZ2VJZCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlQZW5kaW5n
UGVybWlzc2lvbnMoKTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFdlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZSo+IElkVG9CcmlkZ2VNYXA7Ci0gICAgSWRUb0JyaWRnZU1hcCBtX2lkVG9C
cmlkZ2VNYXA7Ci0gICAgVmVjdG9yPGludD4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzOwot
Ci0gICAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBwb2ludGVyLCB3
ZSBuZWVkIHRvIGtlZXAgdGhlIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oKSBzdGF0ZQot
ICAgIC8vIGFzIGEgc3RhdGljIChub3Qgb2JqZWN0IG1lbWJlcnMpIGFzIHRoaXMgY2FsbCBtYXkg
Y29tZSBpbiBiZWZvcmUgdGhlIHNlcnZpY2UgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICBzdGF0aWMg
ZW51bSBQZXJtaXNzaW9uU3RhdGUgewotICAgICAgICBQZXJtaXNzaW9uU3RhdGVVbnNldCwKLSAg
ICAgICAgUGVybWlzc2lvblN0YXRlQWxsb3dlZCwKLSAgICAgICAgUGVybWlzc2lvblN0YXRlRGVu
aWVkLAotICAgIH0gc19wZXJtaXNzaW9uU3RhdGU7Ci0gICAgc3RhdGljIFdlYkdlb2xvY2F0aW9u
U2VydmljZU1vY2tJbXBsKiBzX2luc3RhbmNlOwotfTsKLQotV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9ja0ltcGw6OlBlcm1pc3Npb25TdGF0ZSBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6
c19wZXJtaXNzaW9uU3RhdGUgPSBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6UGVybWlz
c2lvblN0YXRlVW5zZXQ7Ci1XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbCogV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9ja0ltcGw6OnNfaW5zdGFuY2UgPSAwOwotCi1XZWJHZW9sb2NhdGlvblNl
cnZpY2VNb2NrKiBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpjcmVhdGVXZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrKCkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2tJbXBsOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9s
b2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKQotewotICAgIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2tJbXBsOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGFsbG93ZWQpOwotfQot
Ci12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQot
ewotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6c2V0Q3VzdG9tTW9ja0ZhY3Rvcnko
JldlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jazo6Y3JlYXRlKTsKLSAgICBS
ZWZQdHI8R2VvcG9zaXRpb24+IGdlb3Bvc2l0aW9uID0gR2VvcG9zaXRpb246OmNyZWF0ZShDb29y
ZGluYXRlczo6Y3JlYXRlKGxhdGl0dWRlLCBsb25naXR1ZGUsIGZhbHNlLCAwLCBhY2N1cmFjeSwg
dHJ1ZSwgMCwgZmFsc2UsIDAsIGZhbHNlLCAwKSwgY3VycmVudFRpbWUoKSAqIDEwMDAuMCk7Ci0g
ICAgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0UG9zaXRpb24oZ2VvcG9zaXRpb24pOwotfQot
Ci12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvblNlcnZpY2U6OnNldEN1c3RvbU1vY2tGYWN0b3J5KCZXZWJDb3JlOjpHZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6OmNyZWF0ZSk7Ci0gICAgUmVmUHRyPFBvc2l0aW9u
RXJyb3I+IHBvc2l0aW9uRXJyb3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
UG9zaXRpb25FcnJvcjo6RXJyb3JDb2RlPihlcnJvckNvZGUpLCBtZXNzYWdlKTsKLSAgICBHZW9s
b2NhdGlvblNlcnZpY2VNb2NrOjpzZXRFcnJvcihwb3NpdGlvbkVycm9yKTsKLX0KLQotV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6OldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tJbXBsKCkK
LXsKLSAgICBBU1NFUlQoIXNfaW5zdGFuY2UpOwotICAgIHNfaW5zdGFuY2UgPSB0aGlzOwotfQot
Ci1XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6fldlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2tJbXBsKCkKLXsKLSAgICBBU1NFUlQodGhpcyA9PSBzX2luc3RhbmNlKTsKLSAgICBzX2luc3Rh
bmNlID0gMDsKLSAgICAvLyBSZXNldCB0aGUgcGVybWlzc2lvbiBzdGF0ZSwgc28gYW55IGZ1dHVy
ZSBzZXJ2aWNlIGluc3RhbmNlIChlLmcuIHJ1bm5pbmcKLSAgICAvLyBtdWx0aXBsZSB0ZXN0cyBp
biBhIHNpbmdsZSBEUlQgcnVuKSB3aWxsIHNlZSBhIGNsZWFuIGNhbGwgc2VxdWVuY2UuCi0gICAg
c19wZXJtaXNzaW9uU3RhdGUgPSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKLSAgICBmb3IgKElkVG9C
cmlkZ2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvQnJpZGdlTWFwLmJlZ2luKCk7IGl0ICE9IG1f
aWRUb0JyaWRnZU1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC0+ZGlkRGVzdHJv
eUdlb2xvY2F0aW9uU2VydmljZSgpOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2tJbXBsOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKLXsKLSAg
ICBzX3Blcm1pc3Npb25TdGF0ZSA9IGFsbG93ZWQgPyBQZXJtaXNzaW9uU3RhdGVBbGxvd2VkIDog
UGVybWlzc2lvblN0YXRlRGVuaWVkOwotICAgIGlmIChzX2luc3RhbmNlKQotICAgICAgICBzX2lu
c3RhbmNlLT5ub3RpZnlQZW5kaW5nUGVybWlzc2lvbnMoKTsKLX0KLQotdm9pZCBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrSW1wbDo6cmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFtZShpbnQgYnJpZGdl
SWQsIGNvbnN0IFdlYlVSTCYgdXJsKQotewotICAgIG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0
cy5hcHBlbmQoYnJpZGdlSWQpOwotICAgIGlmIChzX3Blcm1pc3Npb25TdGF0ZSAhPSBQZXJtaXNz
aW9uU3RhdGVVbnNldCkKLSAgICAgICAgbm90aWZ5UGVuZGluZ1Blcm1pc3Npb25zKCk7Ci19Ci0K
LWludCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6YXR0YWNoQnJpZGdlKFdlYkdlb2xv
Y2F0aW9uU2VydmljZUJyaWRnZSogYnJpZGdlKQotewotICAgIHN0YXRpYyBpbnQgbmV4dEF2YWls
YWJsZVdhdGNoSWQgPSAxOwotICAgIC8vIEluIGNhc2Ugb2Ygb3ZlcmZsb3csIG1ha2Ugc3VyZSB0
aGUgSUQgcmVtYWlucyBwb3NpdGl2ZSwgYnV0IHJldXNlIHRoZSBJRCB2YWx1ZXMuCi0gICAgaWYg
KG5leHRBdmFpbGFibGVXYXRjaElkIDwgMSkKLSAgICAgICAgbmV4dEF2YWlsYWJsZVdhdGNoSWQg
PSAxOwotICAgIG1faWRUb0JyaWRnZU1hcC5zZXQobmV4dEF2YWlsYWJsZVdhdGNoSWQsIGJyaWRn
ZSk7Ci0gICAgcmV0dXJuIG5leHRBdmFpbGFibGVXYXRjaElkKys7Ci19Ci0KLXZvaWQgV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6OmRldGFjaEJyaWRnZShpbnQgYnJpZGdlSWQpCi17Ci0g
ICAgbV9pZFRvQnJpZGdlTWFwLnJlbW92ZShicmlkZ2VJZCk7Ci19Ci0KLXZvaWQgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9ja0ltcGw6Om5vdGlmeVBlbmRpbmdQZXJtaXNzaW9ucygpCi17Ci0gICAg
QVNTRVJUKHNfcGVybWlzc2lvblN0YXRlID09IFBlcm1pc3Npb25TdGF0ZUFsbG93ZWQgfHwgc19w
ZXJtaXNzaW9uU3RhdGUgPT0gIFBlcm1pc3Npb25TdGF0ZURlbmllZCk7Ci0gICAgVmVjdG9yPGlu
dD4gcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0czsKLSAgICBwZW5kaW5nUGVybWlzc2lvblJlcXVl
c3RzLnN3YXAobV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKTsKLSAgICBmb3IgKFZlY3Rvcjxp
bnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuYmVnaW4o
KTsgaXQgIT0gcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5lbmQoKTsgKytpdCkgewotICAgICAg
ICBBU1NFUlQoKml0ID4gMCk7Ci0gICAgICAgIElkVG9CcmlkZ2VNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX2lkVG9CcmlkZ2VNYXAuZmluZCgqaXQpOwotICAgICAgICBpZiAoaXRlciAhPSBtX2lkVG9C
cmlkZ2VNYXAuZW5kKCkpCi0gICAgICAgICAgICBpdGVyLT5zZWNvbmQtPnNldElzQWxsb3dlZChz
X3Blcm1pc3Npb25TdGF0ZSA9PSBQZXJtaXNzaW9uU3RhdGVBbGxvd2VkKTsKLSAgICB9Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZTQ3Yzg5ZThhMDQyY2EyZWYzOTlhZGE0
MDYzNzUxOGZiOTVhZWI0NS4uNzA1NmEwYWMyMmI4MTgwNzc0NzIwMjk1NDQ1NDI4YjM5YThiN2My
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxMSw5ICszMTEsNyBAQCBX
ZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29s
c0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJ
bnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9y
aWVudGF0aW9uQ2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xp
ZW50ID8gY2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCi0jaWYgRU5BQkxF
KENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAsIG1fZ2VvbG9jYXRpb25DbGllbnRQcm94
eShuZXcgR2VvbG9jYXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmdlb2xvY2F0aW9u
Q2xpZW50KCkgOiAwKSkKLSNlbmRpZgogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5jcHAg
ZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMgc3Bl
Y2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJlYWRp
bmcKQEAgLTMzNywxNSArMzM1LDExIEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgcGFn
ZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwog
I2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKICAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNsaWVudCA9IG1fZ2VvbG9j
YXRpb25DbGllbnRQcm94eS5nZXQoKTsKLSNlbmRpZgogCiAgICAgbV9wYWdlLnNldChuZXcgUGFn
ZShwYWdlQ2xpZW50cykpOwogCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikK
ICAgICBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHktPnNldENvbnRyb2xsZXIobV9wYWdlLT5nZW9s
b2NhdGlvbkNvbnRyb2xsZXIoKSk7Ci0jZW5kaWYKIAogICAgIHN0YXRpY19jYXN0PEJhY2tGb3J3
YXJkTGlzdEltcGwqPihtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+c2V0Q2xpZW50KCZtX2Jh
Y2tGb3J3YXJkTGlzdENsaWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VH
cm91cE5hbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGNjMjVjODQ2NzE5Mzcz
NGQxYzhhNjhiZjM5ZDI1NWM1MGU5ZDU2MDkuLjA4NTdkMTExYWYzZDQ0NDViZjk2NjBlOGEwYmU1
NWYxNzBmMzk5OTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTU0MywxMCArNTQz
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBlYXJseS4gVGhpcyBtZW1iZXIgaG9sZHMgb24gdG8gdGhl
IEdDM0QgaW4gdGhpcyBjYXNlLgogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RD4gbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEOwogICAgIE93blB0cjxEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7
Ci0KLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIE93blB0cjxHZW9s
b2NhdGlvbkNsaWVudFByb3h5PiBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHk7Ci0jZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78123</attachid>
            <date>2011-01-06 09:14:52 -0800</date>
            <delta_ts>2011-01-10 03:16:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50921-20110106171449.patch</filename>
            <type>text/plain</type>
            <size>57768</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZjY2
YTIzN2VhNzQ3YWMxYmI3NGM4NzdkNjQ0MGMyMDc3ODg3ODc5Li5hMjUzY2VhNWJjNDllN2U2Yjc2
ZjM1MDBiZjE0OTZiMDg2ZjVlMmNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsMjAgQEAKLTIwMTEtMDEtMDYgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKzIwMTEtMDEtMDYgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25v
dHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgbm9uLWNsaWVudC1iYXNlZCBHZW9sb2NhdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDkyMQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnRNb2Nr
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKworKzIwMTEtMDEtMDYgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDgzZTIzODljYTQ3ZmU1ZDBlZGZmZWRhY2Y0YjdhYzEwYzY2MGI1MTIu
LjBiMmNmYzlhZTQwODZlZmExMzMxYmI4ZTRiYmNlOThkMmFjNzczNzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTQzLDExICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpZiBFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgot
I2Vsc2UKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgiCi0jZW5kaWYKICNp
bmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKQEAgLTE1MjQsMTEgKzE1MjAsNyBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQogICAgICAgICByZXR1
cm47Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBtX3NoZWxsLT53
ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UGVybWlzc2lvbihhcmd1
bWVudHNbMF0udG9Cb29sZWFuKCkpOwotI2Vsc2UKLSAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrOjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGFyZ3VtZW50c1swXS50b0Jvb2xlYW4o
KSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKQEAgLTE1MzYsMTEgKzE1MjgsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
ZwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMyB8
fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpIHx8
ICFhcmd1bWVudHNbMl0uaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuOwotI2lmIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+Z2Vv
bG9jYXRpb25DbGllbnRNb2NrKCktPnNldFBvc2l0aW9uKGFyZ3VtZW50c1swXS50b0RvdWJsZSgp
LCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwotI2Vs
c2UKLSAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGFy
Z3VtZW50c1syXS50b0RvdWJsZSgpKTsKLSNlbmRpZgogfQogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTU0OCwxMSArMTUzNiw3IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRz
WzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQogICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPmdlb2xvY2F0aW9uQ2xp
ZW50TW9jaygpLT5zZXRFcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJpYW50VG9X
ZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7Ci0jZWxzZQotICAgIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNw
cFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKLSNlbmRpZgogfQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggODQ5MzEyYzRiMDVlZGI4MjM0ZmMwYzc1NjE0YmE5
NjFkMDI4ZjEwYS4uZjVkZDdmZGJjNTM5YzE0YzM4ZjFhYmFmYmM2YWNmYWU3Mzc1ZmEzOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNDMs
MTEgKzQzLDcgQEAKICNpbmNsdWRlICJXZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkVsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCi0jZWxzZQot
I2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCIKLSNlbmRpZgogI2luY2x1ZGUg
IldlYkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlJh
bmdlLmgiCkBAIC01NzEsNyArNTY3LDYgQEAgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBXZWJW
aWV3SG9zdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkKICAgICByZXR1cm4gbV9zaGVsbC0+bm90
aWZpY2F0aW9uUHJlc2VudGVyKCk7CiB9CiAKLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKQogV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudCogV2ViVmlld0hvc3Q6Omdlb2xv
Y2F0aW9uQ2xpZW50KCkKIHsKICAgICByZXR1cm4gZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CkBA
IC01ODMsMTQgKzU3OCw2IEBAIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBXZWJW
aWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnRNb2NrKCkKICAgICAgICAgbV9nZW9sb2NhdGlvbkNs
aWVudE1vY2suc2V0KFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKCkpOwogICAgIHJl
dHVybiBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jay5nZXQoKTsKIH0KLSNlbHNlCi1XZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uU2VydmljZSgpCi17
Ci0gICAgaWYgKCFtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spCi0gICAgICAgIG1fZ2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5zZXQoV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jaygpKTsKLSAgICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmdldCgpOwotfQotI2VuZGlmCiAKIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogV2ViVmll
d0hvc3Q6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVu
ZXIqIGxpc3RlbmVyKQogewpAQCAtMTE3NywxMiArMTE2NCw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6
OnJlc2V0KCkKICAgICBtX2VkaXRDb21tYW5kTmFtZS5jbGVhcigpOwogICAgIG1fZWRpdENvbW1h
bmRWYWx1ZS5jbGVhcigpOwogCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikK
ICAgICBpZiAobV9nZW9sb2NhdGlvbkNsaWVudE1vY2suZ2V0KCkpCiAgICAgICAgIG1fZ2VvbG9j
YXRpb25DbGllbnRNb2NrLT5yZXNldE1vY2soKTsKLSNlbHNlCi0gICAgbV9nZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmNsZWFyKCk7Ci0jZW5kaWYKIAogICAgIGlmIChtX3NwZWVjaElucHV0Q29udHJv
bGxlck1vY2suZ2V0KCkpCiAgICAgICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+Y2xl
YXJSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aAppbmRleCAyMGIyOWMwZDljYjYxMDllZjU1NWEwMDg0NzBiM2NlZDE1MDhlOTg4Li44NmMyM2E1
NjA3YmQ4MDIxODUyYjViMWU5YTRhZGUwMTZkYzk4ZTc1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEzOSwxMSArMTM5LDcgQEAgY2xhc3MgV2Vi
Vmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpX
ZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RDb3VudCgp
OwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBX
ZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb24pOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25QcmVzZW50
ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9s
b2NhdGlvbkNsaWVudCgpOwotI2Vsc2UKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRp
b25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKLSNlbmRpZgogICAgIHZpcnR1YWwgV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxlcihXZWJL
aXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCk7CiAKQEAgLTIx
MCwxMCArMjA2LDggQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3
Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBXZWJLaXQ6OldlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7
CiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CiAKLSNpZiBFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBm
b3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBM
YXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdDsKQEAgLTMx
NywxMSArMzExLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVu
dURhdGE+IG1fbGFzdENvbnRleHRNZW51RGF0YTsKIAogICAgIC8vIEdlb2xvY2F0aW9uCi0jaWYg
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBPd25QdHI8V2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrOwotI2Vsc2UKLSAg
ICBPd25QdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrPiBtX2dlb2xvY2F0aW9u
U2VydmljZU1vY2s7Ci0jZW5kaWYKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jaz4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7CiAgICAgT3du
UHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MGY5ZTE4NDdlOWM3MTkyYzU4YTY4N2RjM2MyZmFkNWI1ZDU0MjlhLi5h
OTkyNzNhMjc1NGI4ZTQ0Y2EwMDVkOTQwNzJmZDVlOTA2ZjcxZDkxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDExLTAxLTA2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmVtb3ZlIG5vbi1jbGllbnQtYmFzZWQgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MjEKKworICAgICAgICBDb2RlIGNs
ZWFudXAsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaDogUmVtb3ZlZC4KKwog
MjAxMS0wMS0wNiAgSmFuIEVyaWsgSGFuc3NlbiAgPGpoYW5zc2VuQHNlbmNoYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmlu
ZGV4IDRkYjZjOGM3MjNmYzZkZWI2NGE5YjM2NDkxMzgzMWZkOGE5YzMyYzAuLmVkZTIyZThiMmI5
M2JjNjgzMDg4NjZlMTYyYzZmYmY1NzU5YjlkZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApA
QCAtMTIzNiwxMSArMTIzNiw2IEBACiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9HbHlwaFBhZ2VUcmVlTm9kZVNraWFcXC5jcHAkJ10KICAgICAgICAgICBd
LAogICAgICAgICB9XSwKLSAgICAgICAgWyciRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElP
Tj0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7Ci0gICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAg
ICAgICAgICAgWydleGNsdWRlJywgJy9HZW9sb2NhdGlvblNlcnZpY2UuKiQnXSwKLSAgICAgICAg
ICBdLAotICAgICAgICB9XSwKICAgICAgICAgWycoT1M9PSJsaW51eCIgb3IgT1M9PSJ3aW4iKSBh
bmQgIldURl9VU0VfV0VCQVVESU9fTUtMPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKICAgICAg
ICAgICAnc291cmNlcy8nOiBbCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vYXVk
aW8vbWtsL0ZGVEZyYW1lTUtMXFwuY3BwJCddLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2YTUxOWZiNTE1YzlmN2M4ZTE5OWJj
ODgxMTEwZjUwY2FhMjQwZTc5Li5lOTg2Yzc1NDhkMmJiOGQzZWFkMzU0Y2EyMDc2MTZjZjE1MzQ3
ODRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMjQ3Niw4ICsyNDc2LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vS2V5Q29kZUNvbnZlcnNpb24uaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vS2V5Q29kZUNvbnZlcnNpb25HdGsuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgKaW5kZXggZWJlNDhiZDg2ZWM1OTlkOTI0
ZTJmM2IyNjIyMzNmYzQ3YzViMjkyZS4uNTA4NzIzYTEwNGI5MTgyNWE5NjI0MjA5NTA4MjcyNTEx
ZDFjOGJmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJy
aWRnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaApA
QCAtMTU5LDEwICsxNTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZvcm1z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAgICAgICAgIHN0YXRpYyB2b2lkIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoY29uc3Qg
RG9jdW1lbnQqKTsKIAotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAg
ICAgICAvLyBHZW9sb2NhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICBzdGF0aWMgR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlKiBjcmVhdGVHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2hy
b21pdW0qKTsKLSNlbmRpZgogICAgICAgICAvLyBEYXRhYmFzZXMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAvLyBSZXR1
cm5zIGEgaGFuZGxlIHRvIHRoZSBEQiBmaWxlIGFuZCBvb3B0aW9uYWxseSBhIGhhbmRsZSB0byBp
dHMgY29udGFpbmluZyBkaXJlY3RvcnkKICAgICAgICAgc3RhdGljIFBsYXRmb3JtRmlsZUhhbmRs
ZSBkYXRhYmFzZU9wZW5GaWxlKGNvbnN0IFN0cmluZyYgdmZzRmxlTmFtZSwgaW50IGRlc2lyZWRG
bGFncyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWU3
M2FlOGI0NTcwZmRmODg3MzE3YmFhMjU2YjYyMzdhYTY1ODU5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtLmgiCi0KLSNpbmNsdWRlICJDaHJvbWl1bUJyaWRnZS5oIgotCi0jaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKLSNlcnJvciAiVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29t
cGlsZWQgd2hlbiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSIKLSNlbmRpZiAvLyBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZTo6fkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpCi17
Ci19Ci0KLUdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bShHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqIGMpCi0gICAgICAgIDogR2VvbG9jYXRpb25T
ZXJ2aWNlKGMpLAotICAgICAgICAgIG1fZ2VvbG9jYXRpb24oc3RhdGljX2Nhc3Q8R2VvbG9jYXRp
b24qPihjKSksCi0gICAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoQ2hyb21pdW1C
cmlkZ2U6OmNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSh0aGlzKSksCi0gICAgICAgICAg
bV9sYXN0RXJyb3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9O
X1VOQVZBSUxBQkxFLCAiIikpCi17Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21p
dW06OnNldElzQWxsb3dlZChib29sIGFsbG93ZWQpCi17Ci0gICAgbV9nZW9sb2NhdGlvbi0+c2V0
SXNBbGxvd2VkKGFsbG93ZWQpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
OjpzZXRMYXN0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9wb3NpdGlvbj4gZ2VvcG9zaXRpb24pCi17
Ci0gICAgbV9sYXN0UG9zaXRpb24gPSBnZW9wb3NpdGlvbjsKLSAgICBwb3NpdGlvbkNoYW5nZWQo
KTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTo6c2V0TGFzdEVycm9yKGlu
dCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX2xhc3RFcnJvciA9
IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShzdGF0aWNfY2FzdDxQb3NpdGlvbkVycm9yOjpFcnJvckNv
ZGU+KGVycm9yQ29kZSksIG1lc3NhZ2UpOwotICAgIGVycm9yT2NjdXJyZWQoKTsKLX0KLQotRnJh
bWUqIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpmcmFtZSgpCi17Ci0gICAgcmV0dXJuIG1f
Z2VvbG9jYXRpb24tPmZyYW1lKCk7Ci19Ci0KLWJvb2wgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21p
dW06OnN0YXJ0VXBkYXRpbmcoUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQotewotICAgIHJldHVy
biBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS0+c3RhcnRVcGRhdGluZyhvcHRpb25zKTsKLX0K
LQotdm9pZCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTo6c3RvcFVwZGF0aW5nKCkKLXsKLSAg
ICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UtPnN0b3BVcGRhdGluZygpOwotfQot
Ci12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzdXNwZW5kKCkKLXsKLSAgICByZXR1
cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UtPnN1c3BlbmQoKTsKLX0KLQotdm9pZCBHZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bTo6cmVzdW1lKCkKLXsKLSAgICByZXR1cm4gbV9nZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2UtPnJlc3VtZSgpOwotfQotCi1HZW9wb3NpdGlvbiogR2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW06Omxhc3RQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
bGFzdFBvc2l0aW9uLmdldCgpOwotfQotCi1Qb3NpdGlvbkVycm9yKiBHZW9sb2NhdGlvblNlcnZp
Y2VDaHJvbWl1bTo6bGFzdEVycm9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXN0RXJyb3Iu
Z2V0KCk7Ci19Ci0KLXN0YXRpYyBHZW9sb2NhdGlvblNlcnZpY2UqIGNyZWF0ZUdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogYykKLXsKLSAgICByZXR1
cm4gbmV3IEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKGMpOwotfQotCi0vLyBTZXRzIHVwIHRo
ZSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBHZW9sb2NhdGlvblNlcnZpY2UuCi1HZW9sb2NhdGlvblNl
cnZpY2U6OkZhY3RvcnlGdW5jdGlvbiogR2VvbG9jYXRpb25TZXJ2aWNlOjpzX2ZhY3RvcnlGdW5j
dGlvbiA9ICZjcmVhdGVHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2Nh
dGlvblNlcnZpY2VDaHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2Nh
dGlvblNlcnZpY2VDaHJvbWl1bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTZm
NjMzZmY3MTY0ZmE0Y2I2MzBlYWY5ODcwOGExMjc5ODNjYmU3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bV9oCi0jZGVmaW5lIEdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtX2gKLQotI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
R2VvbG9jYXRpb25TZXJ2aWNlLmgiCi0jaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3IuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0vLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIEdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtIHRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCi1jbGFzcyBHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2UgewotcHVibGljOgotICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uU2Vy
dmljZUJyaWRnZSgpOwotICAgIC8vIENhbGxlZCBieSBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bS4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwotCi0gICAgLy8g
Q2FsbGVkIGJ5IHRoZSBlbWJlZGRlciwgdG8gaWRlbnRpZnkgdGhpcyBicmlkZ2UuCi0gICAgdmly
dHVhbCBpbnQgZ2V0QnJpZGdlSWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFj
aEJyaWRnZUlmTmVlZGVkKCkgPSAwOwotfTsKLQotLy8gVGhpcyBjbGFzcyBleHRlbmRzIEdlb2xv
Y2F0aW9uU2VydmljZSwgYW5kIHVzZXMgR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlIHRvCi0vLyBj
YWxsIGludG8gdGhlIGVtYmVkZGVyLCBhcyB3ZWxsIGFzIHByb3ZpZGVzIGEgZmV3IGV4dHJhIG1l
dGhvZHMgc28gdGhhdCB0aGUKLS8vIGVtYmVkZGVyIGNhbiBub3RpZnkgcGVybWlzc2lvbiwgcG9z
aXRpb24sIGVycm9yLCBldGMuCi1jbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSA6IHB1
YmxpYyBHZW9sb2NhdGlvblNlcnZpY2UgewotcHVibGljOgotICAgIGV4cGxpY2l0IEdlb2xvY2F0
aW9uU2VydmljZUNocm9taXVtKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCopOwotCi0gICAgR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBnZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKSBjb25zdCB7
IHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0
SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCk7Ci0gICAgdm9pZCBzZXRMYXN0UG9zaXRpb24oUGFzc1Jl
ZlB0cjxHZW9wb3NpdGlvbj4pOwotICAgIHZvaWQgc2V0TGFzdEVycm9yKGludCBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgRnJhbWUqIGZyYW1lKCk7Ci0KLSAgICAvLyBG
cm9tIEdlb2xvY2F0aW9uU2VydmljZS4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRVcGRhdGluZyhQ
b3NpdGlvbk9wdGlvbnMqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAg
dmlydHVhbCBHZW9wb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQ
b3NpdGlvbkVycm9yKiBsYXN0RXJyb3IoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHZW9sb2Nh
dGlvbiogbV9nZW9sb2NhdGlvbjsKLSAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
PiBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZTsKLSAgICBSZWZQdHI8R2VvcG9zaXRpb24+IG1f
bGFzdFBvc2l0aW9uOwotICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBtX2xhc3RFcnJvcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEdlb2xvY2F0aW9uU2Vydmlj
ZUNocm9taXVtX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY5YTMwNzAzOGU2YjY3N2ZmZmVkNjhlODk2MzAz
MWMxMjM1MjhhNmIuLmQ1MGVhZTc1MGVlM2IwNTM3NWQ3YmVkMjViOTU1ZDQ0ODQ2YWZhMzcgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTAxLTA2ICBKb2huIEtub3R0ZW5iZWx0
ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIG5vbi1jbGllbnQtYmFzZWQgR2Vv
bG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTA5MjEKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dl
Ykdlb2xvY2F0aW9uU2VydmljZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNhbmNlbEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAgICogc3JjL0Nocm9t
aXVtQnJpZGdlLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
SW1wbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuaDoKKwogMjAxMC0xMi0yOSAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
aW5kZXggMzlkNDZmNjQ2MjRhNzYxZGU4MGYyZDM5OGJkNWQyYzMwODJkY2MzNy4uOWE5NWE4NTA2
YzhhMmUyZDg5Y2E0NDdiZTExZGNjY2Y4YTRhYmM3MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE4Myw5
ICsxODMsNiBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0
aW9uU2VydmljZS5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2Vy
dmljZUJyaWRnZS5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHbHlwaENhY2hlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oJywKQEAgLTQ2Miw5ICs0NTksNiBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGwuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRn
ZUltcGwuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2Nr
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHbHlwaENhY2hlLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAnLApAQCAtNjgwLDIwICs2
NzQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWyciRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTj0xIiBpbiBmZWF0dXJlX2RlZmluZXMnLCB7Ci0gICAgICAgICAg
ICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVk
ZScsICdXZWJHZW9sb2NhdGlvblNlcnZpY2UuKiQnXSwKLSAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwot
ICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ0dlb2xvY2F0aW9uQ2xpZW50UHJv
eHkuKiddLAotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdlb2xvY2F0
aW9uQ2xpZW50LionXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuKiddLAotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNs
dWRlJywgJ1dlYkdlb2xvY2F0aW9uRXJyb3IuKiddLAotICAgICAgICAgICAgICAgICAgICAgICAg
WydleGNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuKiddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uKidd
LAotICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAg
IF0sCiAgICAgICAgIH0sCiAKQEAgLTg3MiwxMSArODUyLDYgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgfV0sCi0g
ICAgICAgICAgICAgICAgWyciRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTj0xIiBpbiBm
ZWF0dXJlX2RlZmluZXMnLCB7Ci0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvblNlcnZpY2Uu
KiQnXSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XQogICAgICAg
ICAgICAgXSwKICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2UuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVhOTFiNTgzNGYyZDU2OWFlMWMxZjgwNmM3MTYzZTFlMDBjOGQxZTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHZW9sb2NhdGlvblNlcnZpY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJHZW9sb2NhdGlvblNlcnZpY2VfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvblNlcnZp
Y2VfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlOwotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViVVJMOwotCi0vLyBQcm92aWRlcyBh
biBlbWJlZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4KLWNsYXNzIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yRnJh
bWUoaW50IGJyaWRnZUlkLCBjb25zdCBXZWJVUkwmIHVybCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoaW50IGJyaWRnZUlkLCBjb25zdCBXZWJV
UkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhpbnQgYnJpZGdlSWQsIGNv
bnN0IFdlYlVSTCYgdXJsLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHN0b3BVcGRhdGluZyhpbnQgYnJpZGdlSWQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kKGludCBicmlkZ2VJZCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZShpbnQgYnJp
ZGdlSWQpIHsgfQotCi0gICAgLy8gQXR0YWNoZXMgdGhlIFdlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZSB0byB0aGUgZW1iZWRkZXIgYW5kIHJldHVybnMgaXRzCi0gICAgLy8gaWQsIHdoaWNoIHNo
b3VsZCBiZSB1c2VkIG9uIHN1YnNlcXVlbnQgY2FsbHMgZm9yIHRoZSBtZXRob2RzIGFib3ZlLgot
ICAgIC8vIEFuIElEIG9mIHplcm8gaW5kaWNhdGVzIHRoZSBhdHRhY2ggZmFpbGVkLgotICAgIHZp
cnR1YWwgaW50IGF0dGFjaEJyaWRnZShXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqKSB7IHJl
dHVybiAwOyB9Ci0KLSAgICAvLyBEZXRhY2hlcyB0aGUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlIGZyb20gdGhlIGVtYmVkZGVyLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hCcmlkZ2UoaW50
IGJyaWRnZUlkKSB7IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9u
U2VydmljZSgpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdl
Ykdlb2xvY2F0aW9uU2VydmljZV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDIwOWMyMzBhNzkyMDg3OGZhMGI0NGViNDYyZWQ0MTlmOWM0NzFlNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZV9oCi0jZGVmaW5lIFdlYkdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZV9oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZTsKLWNsYXNzIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2Vi
VVJMOwotCi0vLyBQcm92aWRlcyBhIFdlYktpdCBBUEkgY2FsbGVkIGJ5IHRoZSBlbWJlZGRlci4K
LWNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB2b2lkIHNldElzQWxsb3dlZChib29sIGFsbG93ZWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TGFzdFBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBw
cm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBw
cm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHBy
b3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91Ymxl
IHNwZWVkLCBsb25nIGxvbmcgdGltZXN0YW1wKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldExh
c3RFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpID0gMDsKLSAg
ICAvLyBDYWxsZWQgd2hlbiB0aGUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlIHRvIHdoaWNoIHRoaXMg
YnJpZGdlIGlzIGF0dGFjaGVkIGlzIGdvaW5nIG91dCBvZiBzY29wZS4gT24gcmVjZWl2aW5nCi0g
ICAgLy8gdGhpcyBjYWxsIHRoZSBicmlkZ2UgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgbWFrZSBh
bnkgZnVydGhlciBhY2Nlc3MgdG8gdGhlIHNlcnZpY2UuCi0gICAgdmlydHVhbCB2b2lkIGRpZERl
c3Ryb3lHZW9sb2NhdGlvblNlcnZpY2UoKSA9IDA7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGJhZGx5IG5hbWVkIG1ldGhvZCB3aGVuIGFsbCBjYWxsZXJzIGFyZSB1c2luZyBkaWREZXN0cm95
R2VvbG9jYXRpb25TZXJ2aWNlIGRpcmVjdGx5LgotICAgIHZvaWQgb25XZWJHZW9sb2NhdGlvblNl
cnZpY2VEZXN0cm95ZWQoKSB7IGRpZERlc3Ryb3lHZW9sb2NhdGlvblNlcnZpY2UoKTsgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCkge30K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlQnJpZGdlX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMDk3NWUx
MTA5ZWNhYzgxNzYwMGRiZDNiMjgzZTE3ZTM5OGJmNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja19oCi0jZGVmaW5lIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2tfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25TZXJ2aWNlLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTdHJpbmc7Ci0K
LWNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2sgOiBwdWJsaWMgV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlIHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJHZW9sb2NhdGlvblNl
cnZpY2VNb2NrKiBjcmVhdGVXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrKCk7Ci0gICAgV0VCS0lU
X0FQSSBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3dl
ZCk7Ci0gICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0g
ICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgZXJy
b3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDkzNmI4ZGJjMTZhMjRi
NDNiNWRmM2VjNTA0MGRjZTU2OTNiODEyM2MuLmUxZWU0YTExNWE3MGNjNTMxMjk3MWRiMDQyYWY4
YjkzYzgzMjAzMGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcApAQCAtMzk0LDEwICszOTQsOCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkZpbGVFcnJvclF1b3RhRXhjZWVkZWQsIEZpbGVFcnJvcjo6UVVPVEFfRVhDRUVERQogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJyb3JUeXBlTWlzbWF0Y2gsIEZpbGVFcnJv
cjo6VFlQRV9NSVNNQVRDSF9FUlIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJG
aWxlRXJyb3JQYXRoRXhpc3RzLCBGaWxlRXJyb3I6OlBBVEhfRVhJU1RTX0VSUik7CiAKLSNpZiBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBlcm1pc3Npb25EZW5pZWQsIEdlb2xvY2F0
aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGUsIEdlb2xvY2F0
aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUpOwotI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4p
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2Fi
bGVkLCBDaHJvbWl1bUJyaWRnZTo6U3RhdGVEaXNhYmxlZCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyOGQ3OGQwYzhhYTYyYjkyMzM4Yzk4NjQyYmQ5MGFm
OWZiNTdiMzZkLi4zOTFkZjZmOTQ2ZTE0YTkxNDdhMTFjNDY4ZWQ3OWU1ZjY3OTVmYTcxIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZUNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKQEAgLTcxLDcgKzcwLDYgQEAKICNpbmNs
dWRlICJXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvblNlcnZpY2UuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgpAQCAtNzgyLDE5ICs3ODAsMTIgQEAgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBDaHJvbWVDbGllbnRJbXBsOjpub3RpZmljYXRpb25QcmVzZW50ZXIo
KSBjb25zdAogLy8gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTAwNjEgKS4KIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewot
I2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIEdlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2UgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlv
blNlcnZpY2VDaHJvbWl1bSo+KGdlb2xvY2F0aW9uLT5nZXRHZW9sb2NhdGlvblNlcnZpY2UoKSk7
Ci0gICAgZ2VvbG9jYXRpb25TZXJ2aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKS0+YXR0
YWNoQnJpZGdlSWZOZWVkZWQoKTsKLSAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5nZW9sb2NhdGlv
blNlcnZpY2UoKS0+cmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvblNlcnZpY2Ut
Pmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5nZXRCcmlkZ2VJZCgpLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkpOwotI2VuZGlmCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZv
ckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewotI2lmICFF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIEdlb2xvY2F0aW9uU2VydmljZUNo
cm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2UgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvblNlcnZp
Y2VDaHJvbWl1bSo+KGdlb2xvY2F0aW9uLT5nZXRHZW9sb2NhdGlvblNlcnZpY2UoKSk7Ci0gICAg
bV93ZWJWaWV3LT5jbGllbnQoKS0+Z2VvbG9jYXRpb25TZXJ2aWNlKCktPmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0Rm9yRnJhbWUoZ2VvbG9jYXRpb25TZXJ2aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2UoKS0+Z2V0QnJpZGdlSWQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKLSNlbmRp
ZgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRn
ZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAppbmRleCA0ZTI3
MTRmMmJhMzUyMzE4ZDA1OTZjMTQwMDliMDRhMjE4MDE1MjQ0Li5lNzQzZGFmOTQ1NDEwM2Y2NDI4
MTMxOGExYjg1ZDI0MWIzMTg2MWIzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9taXVtQnJpZGdlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdl
LmNwcApAQCAtOTYsMTAgKzk2LDYgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgiCi0jZW5kaWYK
LQogI2luY2x1ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC00ODMsMTUgKzQ3OSw2IEBAIGJvb2wgQ2hy
b21pdW1CcmlkZ2U6OmxvYWRGb250KE5TRm9udCogc3JjRm9udCwgQVRTRm9udENvbnRhaW5lclJl
Ziogb3V0KQogfQogI2VuZGlmCiAKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKLS8vIEdlb2xvY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBD
aHJvbWl1bUJyaWRnZTo6Y3JlYXRlR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKEdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSkKLXsKLSAgICByZXR1
cm4gY3JlYXRlR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbChnZW9sb2NhdGlvblNlcnZpY2VD
aHJvbWl1bSk7Ci19Ci0jZW5kaWYKLQogLy8gRGF0YWJhc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQbGF0Zm9y
bUZpbGVIYW5kbGUgQ2hyb21pdW1CcmlkZ2U6OmRhdGFiYXNlT3BlbkZpbGUoY29uc3QgU3RyaW5n
JiB2ZnNGaWxlTmFtZSwgaW50IGRlc2lyZWRGbGFncykKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYmM4NTJmZDZlZGRkYmU3MmNlNjMxZTZiODYyMTU1Zjg5NTJl
ZmQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgiCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIK
LSNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
LmgiCi0jaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSAiUG9zaXRpb25FcnJvci5oIgotI2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgotI2luY2x1
ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCi0jaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlLmgiCi0jaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgotI2luY2x1ZGUgIldlYlZpZXdJbXBs
LmgiCi0KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0KLXVzaW5nIFdlYkNvcmU6OkNvb3JkaW5h
dGVzOwotdXNpbmcgV2ViQ29yZTo6RnJhbWU7Ci11c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvbjsK
LXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUJyaWRnZTsKLXVzaW5nIFdlYkNvcmU6
Okdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOwotdXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb25T
ZXJ2aWNlQ2xpZW50OwotdXNpbmcgV2ViQ29yZTo6R2VvcG9zaXRpb247Ci11c2luZyBXZWJDb3Jl
OjpQb3NpdGlvbkVycm9yOwotdXNpbmcgV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOwotdXNpbmcg
V1RGOjpTdHJpbmc7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJHZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2VJbXBsIDogcHVibGljIEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSwgcHVi
bGljIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQg
V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbChHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bSopOwotICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoKTsKLQot
ICAgIC8vIEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZQotICAgIHZpcnR1YWwgYm9vbCBzdGFydFVw
ZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmco
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUo
KTsKLSAgICB2aXJ0dWFsIGludCBnZXRCcmlkZ2VJZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2hCcmlkZ2VJZk5lZWRlZCgpOwotCi0gICAgLy8gV2ViR2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlCi0gICAgdmlydHVhbCB2b2lkIHNldElzQWxsb3dlZChib29sIGFsbG93ZWQpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRMYXN0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRl
c1NwZWVkLCBkb3VibGUgc3BlZWQsIGxvbmcgbG9uZyB0aW1lc3RhbXApOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXN0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveUdlb2xvY2F0aW9uU2VydmljZSgpOwotCi1w
cml2YXRlOgotICAgIGJvb2wgaXNBdHRhY2hlZCgpIGNvbnN0OwotICAgIC8vIFBvaW50ZXIgYmFj
ayB0byB0aGUgV2ViS2l0IGdlb2xvY2F0aW9uIGNsaWVudC4gV2Ugb2J0YWluIHRoaXMgdmlhIHRo
ZSBmcmFtZSdzIHBhZ2UsIGJ1dCBuZWVkIHRvIGNhY2hlIGl0Ci0gICAgLy8gYXMgaXQgbWF5IHN0
aWxsIGJlIGFsaXZlIGFmdGVyIHRoZSBwYWdlIGhhcyBkZXRhY2hlZCBmcm9tIHRoZSBmcmFtZS4K
LSAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2UqIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlOwotICAg
IC8vIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtIG93bnMgdXMsIHdlIG9ubHkgaGF2ZSBhIHBv
aW50ZXIgYmFjayB0byBpdC4KLSAgICBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogbV9nZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bTsKLSAgICBpbnQgbV9icmlkZ2VJZDsKLX07Ci0KLUdlb2xv
Y2F0aW9uU2VydmljZUJyaWRnZSogY3JlYXRlR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbChH
ZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pCi17
Ci0gICAgcmV0dXJuIG5ldyBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKGdlb2xvY2F0
aW9uU2VydmljZUNocm9taXVtKTsKLX0KLQotV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbChHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pCi0gICAgOiBtX3dlYkdlb2xvY2F0aW9u
U2VydmljZSgwKQotICAgICwgbV9nZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bShnZW9sb2NhdGlv
blNlcnZpY2VDaHJvbWl1bSkKLSAgICAsIG1fYnJpZGdlSWQoMCkKLXsKLX0KLQotV2ViR2VvbG9j
YXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6fldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwo
KQotewotICAgIGlmIChpc0F0dGFjaGVkKCkpCi0gICAgICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2
aWNlLT5kZXRhY2hCcmlkZ2UobV9icmlkZ2VJZCk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlQnJpZGdlSW1wbDo6c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqIHBvc2l0aW9u
T3B0aW9ucykKLXsKLSAgICBhdHRhY2hCcmlkZ2VJZk5lZWRlZCgpOwotICAgIGlmICghaXNBdHRh
Y2hlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV93ZWJHZW9sb2NhdGlvblNlcnZp
Y2UtPnN0YXJ0VXBkYXRpbmcobV9icmlkZ2VJZCwgbV9nZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIHBvc2l0aW9uT3B0aW9ucy0+ZW5hYmxlSGln
aEFjY3VyYWN5KCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZUltcGw6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgaWYgKGlzQXR0YWNoZWQo
KSkgewotICAgICAgICBtX3dlYkdlb2xvY2F0aW9uU2VydmljZS0+c3RvcFVwZGF0aW5nKG1fYnJp
ZGdlSWQpOwotICAgICAgICBtX3dlYkdlb2xvY2F0aW9uU2VydmljZS0+ZGV0YWNoQnJpZGdlKG1f
YnJpZGdlSWQpOwotICAgICAgICBtX2JyaWRnZUlkID0gMDsKLSAgICAgICAgbV93ZWJHZW9sb2Nh
dGlvblNlcnZpY2UgPSAwOwotICAgIH0KLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsOjpzdXNwZW5kKCkKLXsKLSAgICBpZiAoaXNBdHRhY2hlZCgpKQotICAgICAgICBt
X3dlYkdlb2xvY2F0aW9uU2VydmljZS0+c3VzcGVuZChtX2JyaWRnZUlkKTsKLX0KLQotdm9pZCBX
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpyZXN1bWUoKQotewotICAgIGlmIChpc0F0
dGFjaGVkKCkpCi0gICAgICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlLT5yZXN1bWUobV9icmlk
Z2VJZCk7Ci19Ci0KLWludCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpnZXRCcmlk
Z2VJZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYnJpZGdlSWQ7Ci19Ci0KLXZvaWQgV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6YXR0YWNoQnJpZGdlSWZOZWVkZWQoKQotewotICAg
IGlmIChpc0F0dGFjaGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBMYXp5IGF0dGFjaCB0
byB0aGUgZ2VvbG9jYXRpb24gc2VydmljZSBvZiB0aGUgYXNzb2NpYXRlZCBwYWdlIGlmIHRoZXJl
IGlzIG9uZS4KLSAgICBGcmFtZSogZnJhbWUgPSBtX2dlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBXZWJLaXQ6OkNocm9tZUNsaWVudEltcGwqIGNocm9tZUNsaWVudEltcGwgPSBz
dGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudEltcGwqPihmcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCkpOwotICAgIFdlYktpdDo6V2ViVmlld0NsaWVudCogd2ViVmlld0NsaWVu
dCA9IGNocm9tZUNsaWVudEltcGwtPndlYlZpZXcoKS0+Y2xpZW50KCk7Ci0gICAgbV93ZWJHZW9s
b2NhdGlvblNlcnZpY2UgPSB3ZWJWaWV3Q2xpZW50LT5nZW9sb2NhdGlvblNlcnZpY2UoKTsKLSAg
ICBBU1NFUlQobV93ZWJHZW9sb2NhdGlvblNlcnZpY2UpOwotICAgIG1fYnJpZGdlSWQgPSBtX3dl
Ykdlb2xvY2F0aW9uU2VydmljZS0+YXR0YWNoQnJpZGdlKHRoaXMpOwotICAgIGlmICghbV9icmlk
Z2VJZCkgewotICAgICAgICAvLyBBdHRhY2ggZmFpbGVkLiBSZWxlYXNlIGFzc29jaWF0aW9uIHdp
dGggdGhpcyBzZXJ2aWNlLgotICAgICAgICBtX3dlYkdlb2xvY2F0aW9uU2VydmljZSA9IDA7Ci0g
ICAgfQotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnNldElzQWxs
b3dlZChib29sIGFsbG93ZWQpCi17Ci0gICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS0+
c2V0SXNBbGxvd2VkKGFsbG93ZWQpOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGw6OnNldExhc3RQb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJh
Y3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFj
eSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3Bl
ZWQsIGRvdWJsZSBzcGVlZCwgbG9uZyBsb25nIHRpbWVzdGFtcCkKLXsKLSAgICBSZWZQdHI8R2Vv
cG9zaXRpb24+IGdlb3Bvc2l0aW9uID0gR2VvcG9zaXRpb246OmNyZWF0ZShDb29yZGluYXRlczo6
Y3JlYXRlKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBh
Y2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92
aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSwgdGltZXN0YW1wKTsK
LSAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLT5zZXRMYXN0UG9zaXRpb24oZ2VvcG9z
aXRpb24pOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnNldExh
c3RFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAg
bV9nZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS0+c2V0TGFzdEVycm9yKGVycm9yQ29kZSwgbWVz
c2FnZSk7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6ZGlkRGVz
dHJveUdlb2xvY2F0aW9uU2VydmljZSgpCi17Ci0gICAgbV9icmlkZ2VJZCA9IDA7Ci0gICAgbV93
ZWJHZW9sb2NhdGlvblNlcnZpY2UgPSAwOwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGw6OmlzQXR0YWNoZWQoKSBjb25zdAotewotICAgIC8vIFRlc3QgdGhlIGNsYXNz
IGludmFyaWFudC4KLSAgICBpZiAobV93ZWJHZW9sb2NhdGlvblNlcnZpY2UpCi0gICAgICAgIEFT
U0VSVChtX2JyaWRnZUlkKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVCghbV9icmlkZ2VJZCk7
Ci0KLSAgICByZXR1cm4gbV93ZWJHZW9sb2NhdGlvblNlcnZpY2U7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMzN2JjYjJkMjY5Y2QyZDYzYjgxMGZiODUyOTc4
NmI0NDNkNmRjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJHZW9sb2NhdGlvblNlcnZp
Y2VCcmlkZ2VJbXBsX2gKLSNkZWZpbmUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbF9o
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZTsK
LWNsYXNzIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLVdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSogY3JlYXRlR2VvbG9jYXRpb25T
ZXJ2aWNlQnJpZGdlSW1wbChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSopOwot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjdiOGIxNmVmYmJh
MDM0NGY5ZTI1MWMwYjRkNmZmNTdhNzljYzBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgiCi0KLSNpbmNsdWRl
ICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKLSNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bS5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCIKLSNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLXVzaW5nIFdl
YkNvcmU6OkNvb3JkaW5hdGVzOwotdXNpbmcgV2ViQ29yZTo6RnJhbWU7Ci11c2luZyBXZWJDb3Jl
OjpHZW9sb2NhdGlvbjsKLXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUJyaWRnZTsK
LXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOwotdXNpbmcgV2ViQ29y
ZTo6R2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50OwotdXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb25T
ZXJ2aWNlTW9jazsKLXVzaW5nIFdlYkNvcmU6Okdlb3Bvc2l0aW9uOwotdXNpbmcgV2ViQ29yZTo6
UG9zaXRpb25FcnJvcjsKLXVzaW5nIFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczsKLXVzaW5nIFdU
Rjo6U3RyaW5nOwotdXNpbmcgV1RGOjpWZWN0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jayA6IHB1YmxpYyBHZW9sb2NhdGlvblNl
cnZpY2VDaHJvbWl1bSwgcHVibGljIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIEdlb2xvY2F0aW9uU2VydmljZSogY3JlYXRlKEdlb2xvY2F0aW9uU2Vydmlj
ZUNsaWVudCopOwotICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9u
cyopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKLSAgICB2aXJ0dWFsIEdlb3Bv
c2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBvc2l0aW9uRXJyb3Iq
IGxhc3RFcnJvcigpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2Vydmlj
ZVBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKLQot
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2soR2Vv
bG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7Ci0KLSAgICBHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQq
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50OwotICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZp
Y2U+IG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKLX07Ci0KLUdlb2xvY2F0aW9uU2VydmljZSog
R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpjcmVhdGUoR2VvbG9jYXRpb25TZXJ2aWNl
Q2xpZW50KiBnZW9sb2NhdGlvblNlcnZpY2VDbGllbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBHZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2soZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KTsKLX0K
LQotR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bU1vY2soR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBnZW9sb2NhdGlvblNlcnZpY2VDbGll
bnQpCi0gICAgOiBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bShnZW9sb2NhdGlvblNlcnZpY2VD
bGllbnQpLAotICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQoZ2VvbG9jYXRpb25TZXJ2
aWNlQ2xpZW50KQotewotICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLnNldChHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrOjpjcmVhdGUodGhpcykpOwotfQotCi1ib29sIEdlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtTW9jazo6c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqIHBvc2l0aW9u
T3B0aW9ucykKLXsKLSAgICBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTo6c3RhcnRVcGRhdGlu
Zyhwb3NpdGlvbk9wdGlvbnMpOwotICAgIHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2st
PnN0YXJ0VXBkYXRpbmcocG9zaXRpb25PcHRpb25zKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblNl
cnZpY2VDaHJvbWl1bU1vY2s6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgR2VvbG9jYXRpb25TZXJ2
aWNlQ2hyb21pdW06OnN0b3BVcGRhdGluZygpOwotICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay0+c3RvcFVwZGF0aW5nKCk7Ci19Ci0KLUdlb3Bvc2l0aW9uKiBHZW9sb2NhdGlvblNlcnZpY2VD
aHJvbWl1bU1vY2s6Omxhc3RQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZ2VvbG9j
YXRpb25TZXJ2aWNlTW9jay0+bGFzdFBvc2l0aW9uKCk7Ci19Ci0KLVBvc2l0aW9uRXJyb3IqIEdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jazo6bGFzdEVycm9yKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLT5sYXN0RXJyb3IoKTsKLX0KLQotdm9pZCBH
ZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9u
Q2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSkKLXsKLSAgICBB
U1NFUlRfVU5VU0VEKGdlb2xvY2F0aW9uU2VydmljZSwgZ2VvbG9jYXRpb25TZXJ2aWNlID09IG1f
Z2VvbG9jYXRpb25TZXJ2aWNlTW9jayk7Ci0gICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQt
Pmdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCh0aGlzKTsKLQotfQotCi12b2lkIEdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jazo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1
cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSkKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGdlb2xvY2F0aW9uU2VydmljZSwgZ2VvbG9jYXRpb25TZXJ2aWNlID09IG1fZ2Vv
bG9jYXRpb25TZXJ2aWNlTW9jayk7Ci0gICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQtPmdl
b2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2tJbXBsIDogcHVibGljIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2sgewotcHVibGlj
OgotICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tJbXBsKCk7Ci0gICAgdmlydHVhbCB+V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGwoKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7Ci0KLSAgICAvLyBXZWJHZW9sb2NhdGlv
blNlcnZpY2UKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFtZShpbnQg
YnJpZGdlSWQsIGNvbnN0IFdlYlVSTCYgdXJsKTsKLSAgICB2aXJ0dWFsIGludCBhdHRhY2hCcmlk
Z2UoV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFj
aEJyaWRnZShpbnQgYnJpZGdlSWQpOwotCi1wcml2YXRlOgotICAgIHZvaWQgbm90aWZ5UGVuZGlu
Z1Blcm1pc3Npb25zKCk7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBXZWJHZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2UqPiBJZFRvQnJpZGdlTWFwOwotICAgIElkVG9CcmlkZ2VNYXAgbV9pZFRv
QnJpZGdlTWFwOwotICAgIFZlY3RvcjxpbnQ+IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0czsK
LQotICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UgcG9pbnRlciwg
d2UgbmVlZCB0byBrZWVwIHRoZSBzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkgc3RhdGUK
LSAgICAvLyBhcyBhIHN0YXRpYyAobm90IG9iamVjdCBtZW1iZXJzKSBhcyB0aGlzIGNhbGwgbWF5
IGNvbWUgaW4gYmVmb3JlIHRoZSBzZXJ2aWNlIGhhcyBiZWVuIGNyZWF0ZWQuCi0gICAgc3RhdGlj
IGVudW0gUGVybWlzc2lvblN0YXRlIHsKLSAgICAgICAgUGVybWlzc2lvblN0YXRlVW5zZXQsCi0g
ICAgICAgIFBlcm1pc3Npb25TdGF0ZUFsbG93ZWQsCi0gICAgICAgIFBlcm1pc3Npb25TdGF0ZURl
bmllZCwKLSAgICB9IHNfcGVybWlzc2lvblN0YXRlOwotICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrSW1wbCogc19pbnN0YW5jZTsKLX07Ci0KLVdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2tJbXBsOjpQZXJtaXNzaW9uU3RhdGUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6
OnNfcGVybWlzc2lvblN0YXRlID0gV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6OlBlcm1p
c3Npb25TdGF0ZVVuc2V0OwotV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGwqIFdlYkdlb2xv
Y2F0aW9uU2VydmljZU1vY2tJbXBsOjpzX2luc3RhbmNlID0gMDsKLQotV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlTW9jayogV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jaygpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrSW1wbDsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKLXsKLSAgICBXZWJHZW9sb2NhdGlvblNl
cnZpY2VNb2NrSW1wbDo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihhbGxvd2VkKTsKLX0K
LQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkK
LXsKLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2U6OnNldEN1c3RvbU1vY2tGYWN0b3J5
KCZXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6OmNyZWF0ZSk7Ci0gICAg
UmVmUHRyPEdlb3Bvc2l0aW9uPiBnZW9wb3NpdGlvbiA9IEdlb3Bvc2l0aW9uOjpjcmVhdGUoQ29v
cmRpbmF0ZXM6OmNyZWF0ZShsYXRpdHVkZSwgbG9uZ2l0dWRlLCBmYWxzZSwgMCwgYWNjdXJhY3ks
IHRydWUsIDAsIGZhbHNlLCAwLCBmYWxzZSwgMCksIGN1cnJlbnRUaW1lKCkgKiAxMDAwLjApOwot
ICAgIEdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldFBvc2l0aW9uKGdlb3Bvc2l0aW9uKTsKLX0K
LQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJv
cihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgV2ViQ29y
ZTo6R2VvbG9jYXRpb25TZXJ2aWNlOjpzZXRDdXN0b21Nb2NrRmFjdG9yeSgmV2ViQ29yZTo6R2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpjcmVhdGUpOwotICAgIFJlZlB0cjxQb3NpdGlv
bkVycm9yPiBwb3NpdGlvbkVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PFBvc2l0aW9uRXJyb3I6OkVycm9yQ29kZT4oZXJyb3JDb2RlKSwgbWVzc2FnZSk7Ci0gICAgR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0RXJyb3IocG9zaXRpb25FcnJvcik7Ci19Ci0KLVdlYkdl
b2xvY2F0aW9uU2VydmljZU1vY2tJbXBsOjpXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbCgp
Ci17Ci0gICAgQVNTRVJUKCFzX2luc3RhbmNlKTsKLSAgICBzX2luc3RhbmNlID0gdGhpczsKLX0K
LQotV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6On5XZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrSW1wbCgpCi17Ci0gICAgQVNTRVJUKHRoaXMgPT0gc19pbnN0YW5jZSk7Ci0gICAgc19pbnN0
YW5jZSA9IDA7Ci0gICAgLy8gUmVzZXQgdGhlIHBlcm1pc3Npb24gc3RhdGUsIHNvIGFueSBmdXR1
cmUgc2VydmljZSBpbnN0YW5jZSAoZS5nLiBydW5uaW5nCi0gICAgLy8gbXVsdGlwbGUgdGVzdHMg
aW4gYSBzaW5nbGUgRFJUIHJ1bikgd2lsbCBzZWUgYSBjbGVhbiBjYWxsIHNlcXVlbmNlLgotICAg
IHNfcGVybWlzc2lvblN0YXRlID0gUGVybWlzc2lvblN0YXRlVW5zZXQ7Ci0gICAgZm9yIChJZFRv
QnJpZGdlTWFwOjppdGVyYXRvciBpdCA9IG1faWRUb0JyaWRnZU1hcC5iZWdpbigpOyBpdCAhPSBt
X2lkVG9CcmlkZ2VNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgIGl0LT5zZWNvbmQtPmRpZERlc3Ry
b3lHZW9sb2NhdGlvblNlcnZpY2UoKTsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrSW1wbDo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93ZWQpCi17Ci0g
ICAgc19wZXJtaXNzaW9uU3RhdGUgPSBhbGxvd2VkID8gUGVybWlzc2lvblN0YXRlQWxsb3dlZCA6
IFBlcm1pc3Npb25TdGF0ZURlbmllZDsKLSAgICBpZiAoc19pbnN0YW5jZSkKLSAgICAgICAgc19p
bnN0YW5jZS0+bm90aWZ5UGVuZGluZ1Blcm1pc3Npb25zKCk7Ci19Ci0KLXZvaWQgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9ja0ltcGw6OnJlcXVlc3RQZXJtaXNzaW9uRm9yRnJhbWUoaW50IGJyaWRn
ZUlkLCBjb25zdCBXZWJVUkwmIHVybCkKLXsKLSAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVz
dHMuYXBwZW5kKGJyaWRnZUlkKTsKLSAgICBpZiAoc19wZXJtaXNzaW9uU3RhdGUgIT0gUGVybWlz
c2lvblN0YXRlVW5zZXQpCi0gICAgICAgIG5vdGlmeVBlbmRpbmdQZXJtaXNzaW9ucygpOwotfQot
Ci1pbnQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6OmF0dGFjaEJyaWRnZShXZWJHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2UqIGJyaWRnZSkKLXsKLSAgICBzdGF0aWMgaW50IG5leHRBdmFp
bGFibGVXYXRjaElkID0gMTsKLSAgICAvLyBJbiBjYXNlIG9mIG92ZXJmbG93LCBtYWtlIHN1cmUg
dGhlIElEIHJlbWFpbnMgcG9zaXRpdmUsIGJ1dCByZXVzZSB0aGUgSUQgdmFsdWVzLgotICAgIGlm
IChuZXh0QXZhaWxhYmxlV2F0Y2hJZCA8IDEpCi0gICAgICAgIG5leHRBdmFpbGFibGVXYXRjaElk
ID0gMTsKLSAgICBtX2lkVG9CcmlkZ2VNYXAuc2V0KG5leHRBdmFpbGFibGVXYXRjaElkLCBicmlk
Z2UpOwotICAgIHJldHVybiBuZXh0QXZhaWxhYmxlV2F0Y2hJZCsrOwotfQotCi12b2lkIFdlYkdl
b2xvY2F0aW9uU2VydmljZU1vY2tJbXBsOjpkZXRhY2hCcmlkZ2UoaW50IGJyaWRnZUlkKQotewot
ICAgIG1faWRUb0JyaWRnZU1hcC5yZW1vdmUoYnJpZGdlSWQpOwotfQotCi12b2lkIFdlYkdlb2xv
Y2F0aW9uU2VydmljZU1vY2tJbXBsOjpub3RpZnlQZW5kaW5nUGVybWlzc2lvbnMoKQotewotICAg
IEFTU0VSVChzX3Blcm1pc3Npb25TdGF0ZSA9PSBQZXJtaXNzaW9uU3RhdGVBbGxvd2VkIHx8IHNf
cGVybWlzc2lvblN0YXRlID09ICBQZXJtaXNzaW9uU3RhdGVEZW5pZWQpOwotICAgIFZlY3Rvcjxp
bnQ+IHBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHM7Ci0gICAgcGVuZGluZ1Blcm1pc3Npb25SZXF1
ZXN0cy5zd2FwKG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cyk7Ci0gICAgZm9yIChWZWN0b3I8
aW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmJlZ2lu
KCk7IGl0ICE9IHBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgQVNTRVJUKCppdCA+IDApOwotICAgICAgICBJZFRvQnJpZGdlTWFwOjppdGVyYXRvciBpdGVy
ID0gbV9pZFRvQnJpZGdlTWFwLmZpbmQoKml0KTsKLSAgICAgICAgaWYgKGl0ZXIgIT0gbV9pZFRv
QnJpZGdlTWFwLmVuZCgpKQotICAgICAgICAgICAgaXRlci0+c2Vjb25kLT5zZXRJc0FsbG93ZWQo
c19wZXJtaXNzaW9uU3RhdGUgPT0gUGVybWlzc2lvblN0YXRlQWxsb3dlZCk7Ci0gICAgfQotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGU0N2M4OWU4YTA0MmNhMmVmMzk5YWRh
NDA2Mzc1MThmYjk1YWViNDUuLjcwNTZhMGFjMjJiODE4MDc3NDcyMDI5NTQ0NTQyOGIzOWE4Yjdj
MjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMTEsOSArMzExLDcgQEAg
V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAgICwgbV9kZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNs
aWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQotI2lmIEVOQUJM
RShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJv
eHkobmV3IEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlv
bkNsaWVudCgpIDogMCkpCi0jZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3Bw
IGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNw
ZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFk
aW5nCkBAIC0zMzcsMTUgKzMzNSwxMSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgIHBh
Z2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gbV9zcGVlY2hJbnB1dENsaWVudC5nZXQoKTsK
ICNlbmRpZgogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwotI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCiAgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25DbGllbnQgPSBtX2dlb2xv
Y2F0aW9uQ2xpZW50UHJveHkuZ2V0KCk7Ci0jZW5kaWYKIAogICAgIG1fcGFnZS5zZXQobmV3IFBh
Z2UocGFnZUNsaWVudHMpKTsKIAotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
CiAgICAgbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5LT5zZXRDb250cm9sbGVyKG1fcGFnZS0+Z2Vv
bG9jYXRpb25Db250cm9sbGVyKCkpOwotI2VuZGlmCiAKICAgICBzdGF0aWNfY2FzdDxCYWNrRm9y
d2FyZExpc3RJbXBsKj4obV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSktPnNldENsaWVudCgmbV9i
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKTsKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShwYWdl
R3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBjYzI1Yzg0NjcxOTM3
MzRkMWM4YTY4YmYzOWQyNTVjNTBlOWQ1NjA5Li4wODU3ZDExMWFmM2Q0NDQ1YmY5NjYwZThhMGJl
NTVmMTcwZjM5OTkxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01NDMsMTAgKzU0
Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gZWFybHkuIFRoaXMgbWVtYmVyIGhvbGRzIG9uIHRvIHRo
ZSBHQzNEIGluIHRoaXMgY2FzZS4KICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q+IG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRDsKICAgICBPd25QdHI8RGV2
aWNlT3JpZW50YXRpb25DbGllbnRQcm94eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
OwotCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBPd25QdHI8R2Vv
bG9jYXRpb25DbGllbnRQcm94eT4gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5OwotI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78390</attachid>
            <date>2011-01-10 03:16:53 -0800</date>
            <delta_ts>2011-01-10 03:41:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50921-20110110111651.patch</filename>
            <type>text/plain</type>
            <size>57967</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmOWJhNDQ3NzlhMTdiN2I4NzMzMWM5ZTIxY2IxMmYwODg0YjQxYWUxLi5k
MDBiOGQ4ZjQ5ZWU5MGE1NTQwMzk1YjY0ZTZjMDk5NTcxMGI4YTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTEtMDEtMTAgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW0Nocm9taXVtXSBSZW1vdmUgbm9uLWNsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDkyMQorCisg
ICAgICAgIENvZGUgY2xlYW4gdXAsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0u
aDogUmVtb3ZlZC4KKwogMjAxMS0wMS0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCAyY2Q1MTY5NzNkMmRlMGZmYjlj
MDViNTY3YzFmNjExZmVkYTkxZDBlLi5iODAwY2YzMzUwNDVjMTQ0NmZmMDY4Y2U1MmY0ZjU2YzI1
NGViMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTIzNiwx
MSArMTIzNiw2IEBACiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9HbHlwaFBhZ2VUcmVlTm9kZVNraWFcXC5jcHAkJ10KICAgICAgICAgICBdLAogICAgICAg
ICB9XSwKLSAgICAgICAgWyciRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTj0xIiBpbiBm
ZWF0dXJlX2RlZmluZXMnLCB7Ci0gICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAgICAgICAgICAg
WydleGNsdWRlJywgJy9HZW9sb2NhdGlvblNlcnZpY2UuKiQnXSwKLSAgICAgICAgICBdLAotICAg
ICAgICB9XSwKICAgICAgICAgWycoT1M9PSJsaW51eCIgb3IgT1M9PSJ3aW4iKSBhbmQgIldURl9V
U0VfV0VCQVVESU9fTUtMPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKICAgICAgICAgICAnc291
cmNlcy8nOiBbCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vYXVkaW8vbWtsL0ZG
VEZyYW1lTUtMXFwuY3BwJCddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDMzN2NiNWE4NGUxZWZjN2Rm
ZGI0NWNiMzZhMDdkZDhhMzVlMzI4YjAuLjgzZTU1ZDQ2ZDdjOTY5MzczYTYxYWI4NzVlOTE4ZTA0
ODE3NWY2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI0NTksOCArMjQ1OSw2IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudC5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5j
cHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0aW9uU2VydmljZUNo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0tleUNvZGVDb252ZXJz
aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0tleUNvZGVDb252ZXJzaW9u
R3RrLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1
bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hy
b21pdW1CcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVt
QnJpZGdlLmgKaW5kZXggNTY5NjllZmY4NmU4YmU5MWVjMzc0YjRmZjJiYmM5N2UyYzY4NjlhZS4u
ZDNiODUyODVmNmRiYjIwYjBkYWUyZjYyMTFmNDI1MzI1ODU1OGFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCkBAIC0xNTksMTAg
KzE1OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9ybXMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
ICAgICAgc3RhdGljIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZChjb25zdCBEb2N1bWVudCop
OwogCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgICAgIC8vIEdl
b2xvY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgICAgIHN0YXRpYyBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIGNyZWF0
ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZShHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSopOwot
I2VuZGlmCiAgICAgICAgIC8vIERhdGFiYXNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIC8vIFJldHVybnMgYSBoYW5k
bGUgdG8gdGhlIERCIGZpbGUgYW5kIG9vcHRpb25hbGx5IGEgaGFuZGxlIHRvIGl0cyBjb250YWlu
aW5nIGRpcmVjdG9yeQogICAgICAgICBzdGF0aWMgUGxhdGZvcm1GaWxlSGFuZGxlIGRhdGFiYXNl
T3BlbkZpbGUoY29uc3QgU3RyaW5nJiB2ZnNGbGVOYW1lLCBpbnQgZGVzaXJlZEZsYWdzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xv
Y2F0aW9uU2VydmljZUNocm9taXVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzVlNzNhZThiNDU3MGZkZjg4NzMxN2JhYTI1NmI2MjM3YWE2NTg1OS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0uaCIKLQotI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCi0KLSNpZiBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotI2Vycm9yICJUaGlzIGZpbGUgc2hvdWxk
IG5vdCBiZSBjb21waWxlZCB3aGVuIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pIgot
I2VuZGlmIC8vIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlOjp+R2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlKCkKLXsKLX0KLQotR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06Okdlb2xvY2F0aW9u
U2VydmljZUNocm9taXVtKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogYykKLSAgICAgICAgOiBH
ZW9sb2NhdGlvblNlcnZpY2UoYyksCi0gICAgICAgICAgbV9nZW9sb2NhdGlvbihzdGF0aWNfY2Fz
dDxHZW9sb2NhdGlvbio+KGMpKSwKLSAgICAgICAgICBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRn
ZShDaHJvbWl1bUJyaWRnZTo6Y3JlYXRlR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKHRoaXMpKSwK
LSAgICAgICAgICBtX2xhc3RFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJv
cjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsICIiKSkKLXsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblNl
cnZpY2VDaHJvbWl1bTo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICBtX2dlb2xv
Y2F0aW9uLT5zZXRJc0FsbG93ZWQoYWxsb3dlZCk7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25TZXJ2
aWNlQ2hyb21pdW06OnNldExhc3RQb3NpdGlvbihQYXNzUmVmUHRyPEdlb3Bvc2l0aW9uPiBnZW9w
b3NpdGlvbikKLXsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IGdlb3Bvc2l0aW9uOwotICAgIHBvc2l0
aW9uQ2hhbmdlZCgpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzZXRM
YXN0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1f
bGFzdEVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFBvc2l0aW9uRXJy
b3I6OkVycm9yQ29kZT4oZXJyb3JDb2RlKSwgbWVzc2FnZSk7Ci0gICAgZXJyb3JPY2N1cnJlZCgp
OwotfQotCi1GcmFtZSogR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06OmZyYW1lKCkKLXsKLSAg
ICByZXR1cm4gbV9nZW9sb2NhdGlvbi0+ZnJhbWUoKTsKLX0KLQotYm9vbCBHZW9sb2NhdGlvblNl
cnZpY2VDaHJvbWl1bTo6c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCi17
Ci0gICAgcmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLT5zdGFydFVwZGF0aW5nKG9w
dGlvbnMpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzdG9wVXBkYXRp
bmcoKQotewotICAgIHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS0+c3RvcFVwZGF0
aW5nKCk7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW06OnN1c3BlbmQoKQot
ewotICAgIHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS0+c3VzcGVuZCgpOwotfQot
Ci12b2lkIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpyZXN1bWUoKQotewotICAgIHJldHVy
biBtX2dlb2xvY2F0aW9uU2VydmljZUJyaWRnZS0+cmVzdW1lKCk7Ci19Ci0KLUdlb3Bvc2l0aW9u
KiBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTo6bGFzdFBvc2l0aW9uKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9sYXN0UG9zaXRpb24uZ2V0KCk7Ci19Ci0KLVBvc2l0aW9uRXJyb3IqIEdlb2xv
Y2F0aW9uU2VydmljZUNocm9taXVtOjpsYXN0RXJyb3IoKSBjb25zdAotewotICAgIHJldHVybiBt
X2xhc3RFcnJvci5nZXQoKTsKLX0KLQotc3RhdGljIEdlb2xvY2F0aW9uU2VydmljZSogY3JlYXRl
R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0oR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBjKQot
ewotICAgIHJldHVybiBuZXcgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0oYyk7Ci19Ci0KLS8v
IFNldHMgdXAgdGhlIGZhY3RvcnkgZnVuY3Rpb24gZm9yIEdlb2xvY2F0aW9uU2VydmljZS4KLUdl
b2xvY2F0aW9uU2VydmljZTo6RmFjdG9yeUZ1bmN0aW9uKiBHZW9sb2NhdGlvblNlcnZpY2U6OnNf
ZmFjdG9yeUZ1bmN0aW9uID0gJmNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2U2ZjYzM2ZmNzE2NGZhNGNiNjMwZWFmOTg3MDhhMTI3OTgz
Y2JlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5o
CisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlb2xvY2F0aW9uU2Vydmlj
ZUNocm9taXVtX2gKLSNkZWZpbmUgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1faAotCi0jaW5j
bHVkZSAiR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKLSNp
bmNsdWRlICJHZW9wb3NpdGlvbi5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSAiUG9zaXRpb25FcnJvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFByb3Zp
ZGVzIGFuIGludGVyZmFjZSBmb3IgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0gdG8gY2FsbCBp
bnRvIHRoZSBlbWJlZGRlci4KLWNsYXNzIEdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCk7Ci0gICAgLy8gQ2Fs
bGVkIGJ5IEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLgotICAgIHZpcnR1YWwgYm9vbCBzdGFy
dFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXN1bWUoKSA9IDA7Ci0KLSAgICAvLyBDYWxsZWQgYnkgdGhlIGVtYmVkZGVyLCB0
byBpZGVudGlmeSB0aGlzIGJyaWRnZS4KLSAgICB2aXJ0dWFsIGludCBnZXRCcmlkZ2VJZCgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoQnJpZGdlSWZOZWVkZWQoKSA9IDA7Ci19
OwotCi0vLyBUaGlzIGNsYXNzIGV4dGVuZHMgR2VvbG9jYXRpb25TZXJ2aWNlLCBhbmQgdXNlcyBH
ZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UgdG8KLS8vIGNhbGwgaW50byB0aGUgZW1iZWRkZXIsIGFz
IHdlbGwgYXMgcHJvdmlkZXMgYSBmZXcgZXh0cmEgbWV0aG9kcyBzbyB0aGF0IHRoZQotLy8gZW1i
ZWRkZXIgY2FuIG5vdGlmeSBwZXJtaXNzaW9uLCBwb3NpdGlvbiwgZXJyb3IsIGV0Yy4KLWNsYXNz
IEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtIDogcHVibGljIEdlb2xvY2F0aW9uU2VydmljZSB7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0oR2VvbG9j
YXRpb25TZXJ2aWNlQ2xpZW50Kik7Ci0KLSAgICBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIGdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2
aWNlQnJpZGdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRJc0FsbG93ZWQoYm9vbCBhbGxvd2VkKTsK
LSAgICB2b2lkIHNldExhc3RQb3NpdGlvbihQYXNzUmVmUHRyPEdlb3Bvc2l0aW9uPik7Ci0gICAg
dm9pZCBzZXRMYXN0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
LSAgICBGcmFtZSogZnJhbWUoKTsKLQotICAgIC8vIEZyb20gR2VvbG9jYXRpb25TZXJ2aWNlLgot
ICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopOwotICAgIHZp
cnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICB2aXJ0dWFsIEdlb3Bvc2l0aW9uKiBsYXN0
UG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBvc2l0aW9uRXJyb3IqIGxhc3RFcnJvcigp
IGNvbnN0OwotCi1wcml2YXRlOgotICAgIEdlb2xvY2F0aW9uKiBtX2dlb2xvY2F0aW9uOwotICAg
IE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2U+IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlOwotICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247Ci0gICAgUmVmUHRy
PFBvc2l0aW9uRXJyb3I+IG1fbGFzdEVycm9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1faApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkODc5MTc3YmFkNTFjMzgz
MzBjNjExYjJkZjQ5ZTc3ZWYwYzI1NmYuLjhmMGU2YjhkMDliMWFiMjA4MDFlNWMxZTI5Y2RhZjM2
MTIzZTExZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wMS0xMCAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90
dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBub24tY2xpZW50LWJhc2VkIEdlb2xvY2F0aW9u
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
OTIxCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDExLTAxLTA4ICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggODNlMjM4OWNhNDdmZTVk
MGVkZmZlZGFjZjRiN2FjMTBjNjYwYjUxMi4uMGIyY2ZjOWFlNDA4NmVmYTEzMzFiYjhlNGJiY2U5
OGQyYWM3NzM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDMsMTEgKzQzLDcgQEAKICNpbmNsdWRlICJX
ZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZS5oIgotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCi0jZWxzZQotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9u
U2VydmljZU1vY2suaCIKLSNlbmRpZgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpA
QCAtMTUyNCwxMSArMTUyMCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNb
MF0uaXNCb29sKCkpCiAgICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dF
T0xPQ0FUSU9OKQogICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPmdlb2xvY2F0aW9uQ2xpZW50
TW9jaygpLT5zZXRQZXJtaXNzaW9uKGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7Ci0jZWxzZQot
ICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Np
b24oYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKLSNlbmRpZgogfQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTUzNiwxMSArMTUyOCw3
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJnCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPCAzIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAh
YXJndW1lbnRzWzFdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1syXS5pc051bWJlcigpKQogICAg
ICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBt
X3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UG9zaXRp
b24oYXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpLCBhcmd1
bWVudHNbMl0udG9Eb3VibGUoKSk7Ci0jZWxzZQotICAgIFdlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGFyZ3VtZW50c1swXS50b0RvdWJsZSgpLCBh
cmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwotI2VuZGlm
CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCkBA
IC0xNTQ4LDExICsxNTM2LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWUKICAgICByZXN1bHQt
PnNldE51bGwoKTsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1sw
XS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgbV9zaGVsbC0+d2Vi
Vmlld0hvc3QoKS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldEVycm9yKGFyZ3VtZW50c1sw
XS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKLSNlbHNl
Ci0gICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
YXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sx
XSkpOwotI2VuZGlmCiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA4NDkz
MTJjNGIwNWVkYjgyMzRmYzBjNzU2MTRiYTk2MWQwMjhmMTBhLi5mNWRkN2ZkYmM1MzljMTRjMzhm
MWFiYWZiYzZhY2ZhZTczNzVmYTM5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC00MywxMSArNDMsNyBAQAogI2luY2x1ZGUgIldlYkRyYWdE
YXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0j
aWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCIKLSNlbHNlCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5oIgotI2VuZGlmCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJX
ZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKQEAgLTU3MSw3ICs1NjcsNiBAQCBXZWJO
b3RpZmljYXRpb25QcmVzZW50ZXIqIFdlYlZpZXdIb3N0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIo
KQogICAgIHJldHVybiBtX3NoZWxsLT5ub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKIH0KIAotI2lm
IEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiBXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50KiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnQoKQogewogICAgIHJldHVybiBn
ZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKQEAgLTU4MywxNCArNTc4LDYgQEAgV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2sqIFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudE1vY2so
KQogICAgICAgICBtX2dlb2xvY2F0aW9uQ2xpZW50TW9jay5zZXQoV2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrOjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIG1fZ2VvbG9jYXRpb25DbGllbnRNb2NrLmdl
dCgpOwogfQotI2Vsc2UKLVdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBXZWJWaWV3SG9z
dDo6Z2VvbG9jYXRpb25TZXJ2aWNlKCkKLXsKLSAgICBpZiAoIW1fZ2VvbG9jYXRpb25TZXJ2aWNl
TW9jaykKLSAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLnNldChXZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrOjpjcmVhdGVXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrKCkpOwotICAgIHJl
dHVybiBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suZ2V0KCk7Ci19Ci0jZW5kaWYKIAogV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyKiBXZWJWaWV3SG9zdDo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiB7CkBAIC0xMTc3LDEyICsx
MTY0LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6cmVzZXQoKQogICAgIG1fZWRpdENvbW1hbmROYW1l
LmNsZWFyKCk7CiAgICAgbV9lZGl0Q29tbWFuZFZhbHVlLmNsZWFyKCk7CiAKLSNpZiBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIGlmIChtX2dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5nZXQoKSkKICAgICAgICAgbV9nZW9sb2NhdGlvbkNsaWVudE1vY2stPnJlc2V0TW9jaygpOwot
I2Vsc2UKLSAgICBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2suY2xlYXIoKTsKLSNlbmRpZgogCiAg
ICAgaWYgKG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5nZXQoKSkKICAgICAgICAgbV9zcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrLT5jbGVhclJlc3VsdHMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDIwYjI5YzBkOWNiNjEwOWVmNTU1YTAw
ODQ3MGIzY2VkMTUwOGU5ODguLjg2YzIzYTU2MDdiZDgwMjE4NTJiNWIxZTlhNGFkZTAxNmRjOThl
NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAt
MTM5LDExICsxMzksNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZp
ZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgaW50
IGhpc3RvcnlGb3J3YXJkTGlzdENvdW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYs
IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbik7CiAgICAgdmlydHVhbCBXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Ci0j
aWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICB2aXJ0dWFsIFdlYktpdDo6
V2ViR2VvbG9jYXRpb25DbGllbnQqIGdlb2xvY2F0aW9uQ2xpZW50KCk7Ci0jZWxzZQotICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSgp
OwotI2VuZGlmCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciog
c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQoKTsKIApAQCAtMjEwLDEwICsyMDYsOCBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKICAgICBNb2NrU3BlbGxDaGVjayogbW9ja1NwZWxs
Q2hlY2soKTsKIAotI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgLy8g
R2VvbG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgogICAgIFdl
YktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2NhdGlvbkNsaWVudE1vY2soKTsK
LSNlbmRpZgogCiBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBsYXlvdXRUZXN0
Q29udHJvbGxlcigpIGNvbnN0OwpAQCAtMzE3LDExICszMTEsNyBAQCBwcml2YXRlOgogICAgIE93
blB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51RGF0YT4gbV9sYXN0Q29udGV4dE1lbnVEYXRhOwog
CiAgICAgLy8gR2VvbG9jYXRpb24KLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KQogICAgIE93blB0cjxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV9nZW9sb2Nh
dGlvbkNsaWVudE1vY2s7Ci0jZWxzZQotICAgIE93blB0cjxXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
U2VydmljZU1vY2s+IG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKLSNlbmRpZgogCiAgICAgT3du
UHRyPFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jazsKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0
MTBkZWQzNzU1ZWQ0Y2JkNGZlZDM2YWE0NGQ5NjI2NDI2MTdiY2Y2Li5lYzEyNjYxMjk2YTNlZjg0
Y2YyOWY0ZTdhOTlmOTYxMTUxMDgxYTAzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxMS0wMS0xMCAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1d
IFJlbW92ZSBub24tY2xpZW50LWJhc2VkIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTIxCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2UuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmg6IFJlbW92
ZWQuCisgICAgICAgICogcHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9y
RnJhbWUpOgorICAgICAgICAqIHNyYy9DaHJvbWl1bUJyaWRnZS5jcHA6CisgICAgICAgICogc3Jj
L1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJW
aWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMDEtMDkgIEpv
aG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXgg
Q2hyb21pdW0gd2luZG93cyBjb21waWxhdGlvbiBlcnJvciBhY2NvcmRpbmcgdG8gSmFtZXMgUm9i
aW5zb24ncyByZXBvcnQuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDkzODU3NzhmMWJjNmM1MzAwODU4ZGVh
YzliODVjMDViNjcxZjFmODYuLmRlOTliODNkYmZlNzliMjRjZDZkNWY4OTBjYTAwMmJjNTc2NThl
ODggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xODMsOSArMTgzLDYgQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCcsCi0gICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2UuaCcsCi0gICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UuaCcsCi0gICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViR2x5cGhDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSGlzdG9yeUl0
ZW0uaCcsCkBAIC00NjIsOSArNDU5LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9X
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgnLAotICAgICAgICAgICAgICAgICdz
cmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViR2x5cGhDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVm
YXVsdEltcGwuY3BwJywKQEAgLTY4MCwyMCArNjc0LDYgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgIH1dLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAotICAg
ICAgICAgICAgICAgIFsnIkVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT049MSIgaW4gZmVh
dHVyZV9kZWZpbmVzJywgewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNlLiok
J10sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAg
ICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhj
bHVkZScsICdHZW9sb2NhdGlvbkNsaWVudFByb3h5LionXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkNsaWVudC4qJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLionXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvbkVycm9yLion
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LionXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdXZWJHZW9sb2NhdGlvblBvc2l0aW9uLionXSwKLSAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICBdLAogICAgICAgICB9LAogCkBAIC04NzIsMTEg
Kzg1Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnIkVOQUJMRV9DTElF
TlRfQkFTRURfR0VPTE9DQVRJT049MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywgewotICAgICAgICAg
ICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAnV2ViR2VvbG9jYXRpb25TZXJ2aWNlLiokJ10sCi0gICAgICAgICAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAg
IHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTkxYjU4MzRmMmQ1NjlhZTFjMWY4MDZjNzE2
M2UxZTAwYzhkMWU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViR2VvbG9jYXRpb25TZXJ2aWNlX2gK
LSNkZWZpbmUgV2ViR2VvbG9jYXRpb25TZXJ2aWNlX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZTsKLWNsYXNzIFdlYlN0cmluZzsKLWNs
YXNzIFdlYlVSTDsKLQotLy8gUHJvdmlkZXMgYW4gZW1iZWRkZXIgQVBJIGNhbGxlZCBieSBXZWJL
aXQuCi1jbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2UgewotcHVibGljOgotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKGludCBicmlkZ2VJZCwgY29uc3QgV2ViVVJM
JiB1cmwpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdEZvckZy
YW1lKGludCBicmlkZ2VJZCwgY29uc3QgV2ViVVJMJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0
YXJ0VXBkYXRpbmcoaW50IGJyaWRnZUlkLCBjb25zdCBXZWJVUkwmIHVybCwgYm9vbCBlbmFibGVI
aWdoQWNjdXJhY3kpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoaW50IGJyaWRn
ZUlkKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChpbnQgYnJpZGdlSWQpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXN1bWUoaW50IGJyaWRnZUlkKSB7IH0KLQotICAgIC8vIEF0dGFjaGVz
IHRoZSBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UgdG8gdGhlIGVtYmVkZGVyIGFuZCByZXR1
cm5zIGl0cwotICAgIC8vIGlkLCB3aGljaCBzaG91bGQgYmUgdXNlZCBvbiBzdWJzZXF1ZW50IGNh
bGxzIGZvciB0aGUgbWV0aG9kcyBhYm92ZS4KLSAgICAvLyBBbiBJRCBvZiB6ZXJvIGluZGljYXRl
cyB0aGUgYXR0YWNoIGZhaWxlZC4KLSAgICB2aXJ0dWFsIGludCBhdHRhY2hCcmlkZ2UoV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlKikgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gRGV0YWNoZXMg
dGhlIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSBmcm9tIHRoZSBlbWJlZGRlci4KLSAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoQnJpZGdlKGludCBicmlkZ2VJZCkgeyB9Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblNlcnZpY2UoKSB7fQotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblNlcnZpY2VfaApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2Uu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDljMjMwYTc5MjA4NzhmYTBiNDRlYjQ2
MmVkNDE5ZjljNDcxZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJHZW9sb2NhdGlvblNl
cnZpY2VCcmlkZ2VfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VfaAotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2U7Ci1jbGFz
cyBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYlVSTDsKLQotLy8gUHJvdmlkZXMgYSBXZWJLaXQg
QVBJIGNhbGxlZCBieSB0aGUgZW1iZWRkZXIuCi1jbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2UgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FsbG93ZWQoYm9vbCBhbGxv
d2VkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldExhc3RQb3NpdGlvbihkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0
dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5n
LCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCwgbG9uZyBsb25nIHRpbWVzdGFtcCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXN0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3Qg
V2ViU3RyaW5nJiBtZXNzYWdlKSA9IDA7Ci0gICAgLy8gQ2FsbGVkIHdoZW4gdGhlIFdlYkdlb2xv
Y2F0aW9uU2VydmljZSB0byB3aGljaCB0aGlzIGJyaWRnZSBpcyBhdHRhY2hlZCBpcyBnb2luZyBv
dXQgb2Ygc2NvcGUuIE9uIHJlY2VpdmluZwotICAgIC8vIHRoaXMgY2FsbCB0aGUgYnJpZGdlIGlt
cGxlbWVudGF0aW9uIG11c3Qgbm90IG1ha2UgYW55IGZ1cnRoZXIgYWNjZXNzIHRvIHRoZSBzZXJ2
aWNlLgotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95R2VvbG9jYXRpb25TZXJ2aWNlKCkgPSAw
OwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBiYWRseSBuYW1lZCBtZXRob2Qgd2hlbiBhbGwg
Y2FsbGVycyBhcmUgdXNpbmcgZGlkRGVzdHJveUdlb2xvY2F0aW9uU2VydmljZSBkaXJlY3RseS4K
LSAgICB2b2lkIG9uV2ViR2VvbG9jYXRpb25TZXJ2aWNlRGVzdHJveWVkKCkgeyBkaWREZXN0cm95
R2VvbG9jYXRpb25TZXJ2aWNlKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYkdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZSgpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZV9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MjA5NzVlMTEwOWVjYWM4MTc2MDBkYmQzYjI4M2UxN2UzOThi
ZjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tfaAot
I2RlZmluZSBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrX2gKLQotI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZS5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViU3RyaW5nOwotCi1jbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrIDogcHVibGljIFdlYkdlb2xvY2F0aW9uU2VydmljZSB7Ci1wdWJsaWM6Ci0gICAgV0VCS0lU
X0FQSSBzdGF0aWMgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jayogY3JlYXRlV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jaygpOwotICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93ZWQpOwotICAgIFdFQktJVF9BUEkgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNz
YWdlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9ja19oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcAppbmRleCA5MzZiOGRiYzE2YTI0YjQzYjVkZjNlYzUwNDBkY2U1NjkzYjgxMjNjLi5l
MWVlNGExMTVhNzBjYzUzMTI5NzFkYjA0MmFmOGI5M2M4MzIwMzBiIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTM5NCwxMCArMzk0LDggQEAgQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJyb3JRdW90YUV4Y2VlZGVkLCBGaWxl
RXJyb3I6OlFVT1RBX0VYQ0VFREUKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmls
ZUVycm9yVHlwZU1pc21hdGNoLCBGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSKTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZUVycm9yUGF0aEV4aXN0cywgRmlsZUVycm9y
OjpQQVRIX0VYSVNUU19FUlIpOwogCi0jaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJy
b3JQZXJtaXNzaW9uRGVuaWVkLCBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkKTsK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQ
b3NpdGlvblVuYXZhaWxhYmxlLCBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxl
KTsKLSNlbmRpZgogCiAjaWYgT1MoREFSV0lOKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZCwgQ2hyb21pdW1CcmlkZ2U6OlN0YXRlRGlz
YWJsZWQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMmJm
NGI3YTY1NjU5M2Y5OWRiMGY3NThmNjcxODhiZDU4NDlkNDk2My4uMWE5ODRjMTJmMzg5YjNkMWY2
ZjJkNGVhMjRjYzFlNWViOWNiMmEwOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKLSNp
bmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCkBAIC03MSw3ICs3MCw2IEBACiAjaW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
SW1wbC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJ
bXBsLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlLmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIK
QEAgLTc3OCwxOSArNzc2LDEyIEBAIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50
SW1wbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIC8vIChzZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxICkuCiB2b2lkIENocm9tZUNsaWVudElt
cGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSogZnJhbWUsIEdl
b2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKIHsKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikKLSAgICBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2
aWNlID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qPihnZW9sb2NhdGlv
bi0+Z2V0R2VvbG9jYXRpb25TZXJ2aWNlKCkpOwotICAgIGdlb2xvY2F0aW9uU2VydmljZS0+Z2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlKCktPmF0dGFjaEJyaWRnZUlmTmVlZGVkKCk7Ci0gICAgbV93
ZWJWaWV3LT5jbGllbnQoKS0+Z2VvbG9jYXRpb25TZXJ2aWNlKCktPnJlcXVlc3RQZXJtaXNzaW9u
Rm9yRnJhbWUoZ2VvbG9jYXRpb25TZXJ2aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKS0+
Z2V0QnJpZGdlSWQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKLSNlbmRpZgorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIENocm9tZUNsaWVudEltcGw6OmNhbmNlbEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSogZnJhbWUsIEdlb2xvY2F0
aW9uKiBnZW9sb2NhdGlvbikKIHsKLSNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKLSAgICBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlID0g
c3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qPihnZW9sb2NhdGlvbi0+Z2V0
R2VvbG9jYXRpb25TZXJ2aWNlKCkpOwotICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmdlb2xvY2F0
aW9uU2VydmljZSgpLT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKGdlb2xvY2F0aW9u
U2VydmljZS0+Z2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKCktPmdldEJyaWRnZUlkKCksIGZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWl1bUJyaWRnZS5jcHAKaW5kZXggMzhhM2YxZDU3YTYwOGJkOTAyODM0YzFhNzYxNGFiYmQ5
Zjc0ZmI4Zi4uZTE2MDI1Y2M3ZWQxODUxMjk3NzUwOTBlYmFhZGE5MWFlMGY1NWQ1NSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKQEAgLTk2LDEwICs5Niw2IEBACiAjaW5j
bHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaWYgIUVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25T
ZXJ2aWNlQnJpZGdlSW1wbC5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNs
dWRlICJXb3JrZXJDb250ZXh0UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpA
QCAtNDgzLDE1ICs0NzksNiBAQCBib29sIENocm9taXVtQnJpZGdlOjpsb2FkRm9udChOU0ZvbnQq
IHNyY0ZvbnQsIEFUU0ZvbnRDb250YWluZXJSZWYqIG91dCkKIH0KICNlbmRpZgogCi0jaWYgIUVO
QUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0vLyBHZW9sb2NhdGlvbiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSogQ2hyb21pdW1CcmlkZ2U6OmNyZWF0ZUdlb2xvY2F0
aW9uU2VydmljZUJyaWRnZShHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0pCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGwoZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pOwotfQotI2VuZGlmCi0KIC8vIERh
dGFiYXNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogUGxhdGZvcm1GaWxlSGFuZGxlIENocm9taXVtQnJpZGdlOjpk
YXRhYmFzZU9wZW5GaWxlKGNvbnN0IFN0cmluZyYgdmZzRmlsZU5hbWUsIGludCBkZXNpcmVkRmxh
Z3MpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZp
Y2VCcmlkZ2VJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJjODUyZmQ2
ZWRkZGJlNzJjZTYzMWU2Yjg2MjE1NWY4OTUyZWZkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZUltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bC5oIgotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRl
ICJHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgi
Ci0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3IuaCIKLSNpbmNsdWRl
ICJQb3NpdGlvbk9wdGlvbnMuaCIKLSNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldl
YkZyYW1lSW1wbC5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZS5oIgotI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZS5oIgotI2luY2x1ZGUgIldlYlZpZXdDbGll
bnQuaCIKLSNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQotCi11c2luZyBXZWJDb3JlOjpDb29yZGluYXRlczsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lOwot
dXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb247Ci11c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2VCcmlkZ2U7Ci11c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTsK
LXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVudDsKLXVzaW5nIFdlYkNvcmU6
Okdlb3Bvc2l0aW9uOwotdXNpbmcgV2ViQ29yZTo6UG9zaXRpb25FcnJvcjsKLXVzaW5nIFdlYkNv
cmU6OlBvc2l0aW9uT3B0aW9uczsKLXVzaW5nIFdURjo6U3RyaW5nOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbCA6IHB1YmxpYyBH
ZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UsIHB1YmxpYyBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2UgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGwoR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qKTsKLSAgICB2aXJ0dWFsIH5XZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsKCk7Ci0KLSAgICAvLyBHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2UKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAgdmlydHVhbCBpbnQgZ2V0QnJpZGdl
SWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoQnJpZGdlSWZOZWVkZWQoKTsKLQot
ICAgIC8vIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZQotICAgIHZpcnR1YWwgdm9pZCBzZXRJ
c0FsbG93ZWQoYm9vbCBhbGxvd2VkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFBvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRl
LCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRl
QWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywg
ZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkLCBsb25nIGxv
bmcgdGltZXN0YW1wKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdEVycm9yKGludCBlcnJvckNv
ZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ry
b3lHZW9sb2NhdGlvblNlcnZpY2UoKTsKLQotcHJpdmF0ZToKLSAgICBib29sIGlzQXR0YWNoZWQo
KSBjb25zdDsKLSAgICAvLyBQb2ludGVyIGJhY2sgdG8gdGhlIFdlYktpdCBnZW9sb2NhdGlvbiBj
bGllbnQuIFdlIG9idGFpbiB0aGlzIHZpYSB0aGUgZnJhbWUncyBwYWdlLCBidXQgbmVlZCB0byBj
YWNoZSBpdAotICAgIC8vIGFzIGl0IG1heSBzdGlsbCBiZSBhbGl2ZSBhZnRlciB0aGUgcGFnZSBo
YXMgZGV0YWNoZWQgZnJvbSB0aGUgZnJhbWUuCi0gICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBt
X3dlYkdlb2xvY2F0aW9uU2VydmljZTsKLSAgICAvLyBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bSBvd25zIHVzLCB3ZSBvbmx5IGhhdmUgYSBwb2ludGVyIGJhY2sgdG8gaXQuCi0gICAgR2VvbG9j
YXRpb25TZXJ2aWNlQ2hyb21pdW0qIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW07Ci0gICAg
aW50IG1fYnJpZGdlSWQ7Ci19OwotCi1HZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIGNyZWF0ZUdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIGdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtKQotewotICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRp
b25TZXJ2aWNlQnJpZGdlSW1wbChnZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSk7Ci19Ci0KLVdl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRn
ZUltcGwoR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZUNocm9t
aXVtKQotICAgIDogbV93ZWJHZW9sb2NhdGlvblNlcnZpY2UoMCkKLSAgICAsIG1fZ2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW0oZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pCi0gICAgLCBtX2Jy
aWRnZUlkKDApCi17Ci19Ci0KLVdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6On5XZWJH
ZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKCkKLXsKLSAgICBpZiAoaXNBdHRhY2hlZCgpKQot
ICAgICAgICBtX3dlYkdlb2xvY2F0aW9uU2VydmljZS0+ZGV0YWNoQnJpZGdlKG1fYnJpZGdlSWQp
OwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnN0YXJ0VXBkYXRp
bmcoUG9zaXRpb25PcHRpb25zKiBwb3NpdGlvbk9wdGlvbnMpCi17Ci0gICAgYXR0YWNoQnJpZGdl
SWZOZWVkZWQoKTsKLSAgICBpZiAoIWlzQXR0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG1fYnJpZGdlSWQs
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0tPmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgp
LCBwb3NpdGlvbk9wdGlvbnMtPmVuYWJsZUhpZ2hBY2N1cmFjeSgpKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzdG9wVXBkYXRp
bmcoKQotewotICAgIGlmIChpc0F0dGFjaGVkKCkpIHsKLSAgICAgICAgbV93ZWJHZW9sb2NhdGlv
blNlcnZpY2UtPnN0b3BVcGRhdGluZyhtX2JyaWRnZUlkKTsKLSAgICAgICAgbV93ZWJHZW9sb2Nh
dGlvblNlcnZpY2UtPmRldGFjaEJyaWRnZShtX2JyaWRnZUlkKTsKLSAgICAgICAgbV9icmlkZ2VJ
ZCA9IDA7Ci0gICAgICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlID0gMDsKLSAgICB9Ci19Ci0K
LXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c3VzcGVuZCgpCi17Ci0gICAg
aWYgKGlzQXR0YWNoZWQoKSkKLSAgICAgICAgbV93ZWJHZW9sb2NhdGlvblNlcnZpY2UtPnN1c3Bl
bmQobV9icmlkZ2VJZCk7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bDo6cmVzdW1lKCkKLXsKLSAgICBpZiAoaXNBdHRhY2hlZCgpKQotICAgICAgICBtX3dlYkdlb2xv
Y2F0aW9uU2VydmljZS0+cmVzdW1lKG1fYnJpZGdlSWQpOwotfQotCi1pbnQgV2ViR2VvbG9jYXRp
b25TZXJ2aWNlQnJpZGdlSW1wbDo6Z2V0QnJpZGdlSWQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2JyaWRnZUlkOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OmF0
dGFjaEJyaWRnZUlmTmVlZGVkKCkKLXsKLSAgICBpZiAoaXNBdHRhY2hlZCgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgLy8gTGF6eSBhdHRhY2ggdG8gdGhlIGdlb2xvY2F0aW9uIHNlcnZpY2Ugb2Yg
dGhlIGFzc29jaWF0ZWQgcGFnZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgRnJhbWUqIGZyYW1lID0g
bV9nZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+cGFnZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0OjpDaHJvbWVDbGll
bnRJbXBsKiBjaHJvbWVDbGllbnRJbXBsID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGll
bnRJbXBsKj4oZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsKLSAgICBXZWJLaXQ6
OldlYlZpZXdDbGllbnQqIHdlYlZpZXdDbGllbnQgPSBjaHJvbWVDbGllbnRJbXBsLT53ZWJWaWV3
KCktPmNsaWVudCgpOwotICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlID0gd2ViVmlld0NsaWVu
dC0+Z2VvbG9jYXRpb25TZXJ2aWNlKCk7Ci0gICAgQVNTRVJUKG1fd2ViR2VvbG9jYXRpb25TZXJ2
aWNlKTsKLSAgICBtX2JyaWRnZUlkID0gbV93ZWJHZW9sb2NhdGlvblNlcnZpY2UtPmF0dGFjaEJy
aWRnZSh0aGlzKTsKLSAgICBpZiAoIW1fYnJpZGdlSWQpIHsKLSAgICAgICAgLy8gQXR0YWNoIGZh
aWxlZC4gUmVsZWFzZSBhc3NvY2lhdGlvbiB3aXRoIHRoaXMgc2VydmljZS4KLSAgICAgICAgbV93
ZWJHZW9sb2NhdGlvblNlcnZpY2UgPSAwOwotICAgIH0KLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2VJbXBsOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvd2VkKQotewotICAgIG1f
Z2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0tPnNldElzQWxsb3dlZChhbGxvd2VkKTsKLX0KLQot
dm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzZXRMYXN0UG9zaXRpb24oZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRv
dWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3Vi
bGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQsIGxvbmcgbG9uZyB0
aW1lc3RhbXApCi17Ci0gICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBnZW9wb3NpdGlvbiA9IEdlb3Bv
c2l0aW9uOjpjcmVhdGUoQ29vcmRpbmF0ZXM6OmNyZWF0ZShsYXRpdHVkZSwgbG9uZ2l0dWRlLCBw
cm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRl
c1NwZWVkLCBzcGVlZCksIHRpbWVzdGFtcCk7Ci0gICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bS0+c2V0TGFzdFBvc2l0aW9uKGdlb3Bvc2l0aW9uKTsKLX0KLQotdm9pZCBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzZXRMYXN0RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3Qg
V2ViU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0t
PnNldExhc3RFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UpOwotfQotCi12b2lkIFdlYkdlb2xvY2F0
aW9uU2VydmljZUJyaWRnZUltcGw6OmRpZERlc3Ryb3lHZW9sb2NhdGlvblNlcnZpY2UoKQotewot
ICAgIG1fYnJpZGdlSWQgPSAwOwotICAgIG1fd2ViR2VvbG9jYXRpb25TZXJ2aWNlID0gMDsKLX0K
LQotYm9vbCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjppc0F0dGFjaGVkKCkgY29u
c3QKLXsKLSAgICAvLyBUZXN0IHRoZSBjbGFzcyBpbnZhcmlhbnQuCi0gICAgaWYgKG1fd2ViR2Vv
bG9jYXRpb25TZXJ2aWNlKQotICAgICAgICBBU1NFUlQobV9icmlkZ2VJZCk7Ci0gICAgZWxzZQot
ICAgICAgICBBU1NFUlQoIW1fYnJpZGdlSWQpOwotCi0gICAgcmV0dXJuIG1fd2ViR2VvbG9jYXRp
b25TZXJ2aWNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9j
YXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJj
MzdiY2IyZDI2OWNkMmQ2M2I4MTBmYjg1Mjk3ODZiNDQzZDZkY2YuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbF9oCi0jZGVmaW5lIFdlYkdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGxfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2U7Ci1jbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2VCcmlkZ2UqIGNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoV2ViQ29yZTo6R2Vv
bG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbF9oCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjY3YjhiMTZlZmJiYTAzNDRmOWUyNTFjMGI0ZDZmZjU3YTc5Y2MwZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5oIgotCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCi0jaW5j
bHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmgi
Ci0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCi11c2luZyBXZWJDb3JlOjpDb29yZGluYXRlczsKLXVzaW5nIFdl
YkNvcmU6OkZyYW1lOwotdXNpbmcgV2ViQ29yZTo6R2VvbG9jYXRpb247Ci11c2luZyBXZWJDb3Jl
OjpHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2U7Ci11c2luZyBXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2VDaHJvbWl1bTsKLXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVudDsK
LXVzaW5nIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZU1vY2s7Ci11c2luZyBXZWJDb3JlOjpH
ZW9wb3NpdGlvbjsKLXVzaW5nIFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I7Ci11c2luZyBXZWJDb3Jl
OjpQb3NpdGlvbk9wdGlvbnM7Ci11c2luZyBXVEY6OlN0cmluZzsKLXVzaW5nIFdURjo6VmVjdG9y
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bU1vY2sgOiBwdWJsaWMgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0sIHB1YmxpYyBHZW9sb2Nh
dGlvblNlcnZpY2VDbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBHZW9sb2NhdGlvblNlcnZp
Y2UqIGNyZWF0ZShHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7Ci0gICAgdmlydHVhbCBHZW9wb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBQb3NpdGlvbkVycm9yKiBsYXN0RXJyb3IoKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25T
ZXJ2aWNlKik7Ci0gICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJy
ZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgR2VvbG9j
YXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCopOwotCi0g
ICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudDsK
LSAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2s7
Ci19OwotCi1HZW9sb2NhdGlvblNlcnZpY2UqIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9j
azo6Y3JlYXRlKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogZ2VvbG9jYXRpb25TZXJ2aWNlQ2xp
ZW50KQotewotICAgIHJldHVybiBuZXcgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrKGdl
b2xvY2F0aW9uU2VydmljZUNsaWVudCk7Ci19Ci0KLUdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
TW9jazo6R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrKEdlb2xvY2F0aW9uU2VydmljZUNs
aWVudCogZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KQotICAgIDogR2VvbG9jYXRpb25TZXJ2aWNl
Q2hyb21pdW0oZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KSwKLSAgICAgIG1fZ2VvbG9jYXRpb25T
ZXJ2aWNlQ2xpZW50KGdlb2xvY2F0aW9uU2VydmljZUNsaWVudCkKLXsKLSAgICAgIG1fZ2VvbG9j
YXRpb25TZXJ2aWNlTW9jay5zZXQoR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6Y3JlYXRlKHRoaXMp
KTsKLX0KLQotYm9vbCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6OnN0YXJ0VXBkYXRp
bmcoUG9zaXRpb25PcHRpb25zKiBwb3NpdGlvbk9wdGlvbnMpCi17Ci0gICAgR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW06OnN0YXJ0VXBkYXRpbmcocG9zaXRpb25PcHRpb25zKTsKLSAgICByZXR1
cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLT5zdGFydFVwZGF0aW5nKHBvc2l0aW9uT3B0aW9u
cyk7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpzdG9wVXBkYXRp
bmcoKQotewotICAgIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOjpzdG9wVXBkYXRpbmcoKTsK
LSAgICBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2stPnN0b3BVcGRhdGluZygpOwotfQotCi1HZW9w
b3NpdGlvbiogR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2NrOjpsYXN0UG9zaXRpb24oKSBj
b25zdAotewotICAgIHJldHVybiBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2stPmxhc3RQb3NpdGlv
bigpOwotfQotCi1Qb3NpdGlvbkVycm9yKiBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6
Omxhc3RFcnJvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay0+bGFzdEVycm9yKCk7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW1Nb2Nr
OjpnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKiBn
ZW9sb2NhdGlvblNlcnZpY2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChnZW9sb2NhdGlvblNlcnZp
Y2UsIGdlb2xvY2F0aW9uU2VydmljZSA9PSBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spOwotICAg
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50LT5nZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNo
YW5nZWQodGhpcyk7Ci0KLX0KLQotdm9pZCBHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bU1vY2s6
Omdlb2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9s
b2NhdGlvblNlcnZpY2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChnZW9sb2NhdGlvblNlcnZpY2Us
IGdlb2xvY2F0aW9uU2VydmljZSA9PSBtX2dlb2xvY2F0aW9uU2VydmljZU1vY2spOwotICAgIG1f
Z2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50LT5nZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVk
KHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbCA6IHB1YmxpYyBXZWJHZW9s
b2NhdGlvblNlcnZpY2VNb2NrIHsKLXB1YmxpYzoKLSAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrSW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tJbXBsKCk7
Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93
ZWQpOwotCi0gICAgLy8gV2ViR2VvbG9jYXRpb25TZXJ2aWNlCi0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uRm9yRnJhbWUoaW50IGJyaWRnZUlkLCBjb25zdCBXZWJVUkwmIHVybCk7
Ci0gICAgdmlydHVhbCBpbnQgYXR0YWNoQnJpZGdlKFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRn
ZSopOwotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hCcmlkZ2UoaW50IGJyaWRnZUlkKTsKLQotcHJp
dmF0ZToKLSAgICB2b2lkIG5vdGlmeVBlbmRpbmdQZXJtaXNzaW9ucygpOwotCi0gICAgdHlwZWRl
ZiBIYXNoTWFwPGludCwgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKj4gSWRUb0JyaWRnZU1h
cDsKLSAgICBJZFRvQnJpZGdlTWFwIG1faWRUb0JyaWRnZU1hcDsKLSAgICBWZWN0b3I8aW50PiBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHM7Ci0KLSAgICAvLyBJbiBhZGRpdGlvbiB0byB0aGUg
c2luZ2xldG9uIGluc3RhbmNlIHBvaW50ZXIsIHdlIG5lZWQgdG8ga2VlcCB0aGUgc2V0TW9ja0dl
b2xvY2F0aW9uUGVybWlzc2lvbigpIHN0YXRlCi0gICAgLy8gYXMgYSBzdGF0aWMgKG5vdCBvYmpl
Y3QgbWVtYmVycykgYXMgdGhpcyBjYWxsIG1heSBjb21lIGluIGJlZm9yZSB0aGUgc2VydmljZSBo
YXMgYmVlbiBjcmVhdGVkLgotICAgIHN0YXRpYyBlbnVtIFBlcm1pc3Npb25TdGF0ZSB7Ci0gICAg
ICAgIFBlcm1pc3Npb25TdGF0ZVVuc2V0LAotICAgICAgICBQZXJtaXNzaW9uU3RhdGVBbGxvd2Vk
LAotICAgICAgICBQZXJtaXNzaW9uU3RhdGVEZW5pZWQsCi0gICAgfSBzX3Blcm1pc3Npb25TdGF0
ZTsKLSAgICBzdGF0aWMgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGwqIHNfaW5zdGFuY2U7
Ci19OwotCi1XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6UGVybWlzc2lvblN0YXRlIFdl
Ykdlb2xvY2F0aW9uU2VydmljZU1vY2tJbXBsOjpzX3Blcm1pc3Npb25TdGF0ZSA9IFdlYkdlb2xv
Y2F0aW9uU2VydmljZU1vY2tJbXBsOjpQZXJtaXNzaW9uU3RhdGVVbnNldDsKLVdlYkdlb2xvY2F0
aW9uU2VydmljZU1vY2tJbXBsKiBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6c19pbnN0
YW5jZSA9IDA7Ci0KLVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2sqIFdlYkdlb2xvY2F0aW9uU2Vy
dmljZU1vY2s6OmNyZWF0ZVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2soKQotewotICAgIHJldHVy
biBuZXcgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw7Ci19Ci0KLXZvaWQgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlTW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93
ZWQpCi17Ci0gICAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6OnNldE1vY2tHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYWxsb3dlZCk7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCi17Ci0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25T
ZXJ2aWNlOjpzZXRDdXN0b21Nb2NrRmFjdG9yeSgmV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNl
Q2hyb21pdW1Nb2NrOjpjcmVhdGUpOwotICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gZ2VvcG9zaXRp
b24gPSBHZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUobGF0aXR1ZGUsIGxv
bmdpdHVkZSwgZmFsc2UsIDAsIGFjY3VyYWN5LCB0cnVlLCAwLCBmYWxzZSwgMCwgZmFsc2UsIDAp
LCBjdXJyZW50VGltZSgpICogMTAwMC4wKTsKLSAgICBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpz
ZXRQb3NpdGlvbihnZW9wb3NpdGlvbik7Ci19Ci0KLXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3Ry
aW5nJiBtZXNzYWdlKQotewotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6c2V0Q3Vz
dG9tTW9ja0ZhY3RvcnkoJldlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtTW9jazo6
Y3JlYXRlKTsKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gcG9zaXRpb25FcnJvciA9IFBvc2l0
aW9uRXJyb3I6OmNyZWF0ZShzdGF0aWNfY2FzdDxQb3NpdGlvbkVycm9yOjpFcnJvckNvZGU+KGVy
cm9yQ29kZSksIG1lc3NhZ2UpOwotICAgIEdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldEVycm9y
KHBvc2l0aW9uRXJyb3IpOwotfQotCi1XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGwoKQotewotICAgIEFTU0VSVCghc19pbnN0YW5jZSk7
Ci0gICAgc19pbnN0YW5jZSA9IHRoaXM7Ci19Ci0KLVdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tJ
bXBsOjp+V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGwoKQotewotICAgIEFTU0VSVCh0aGlz
ID09IHNfaW5zdGFuY2UpOwotICAgIHNfaW5zdGFuY2UgPSAwOwotICAgIC8vIFJlc2V0IHRoZSBw
ZXJtaXNzaW9uIHN0YXRlLCBzbyBhbnkgZnV0dXJlIHNlcnZpY2UgaW5zdGFuY2UgKGUuZy4gcnVu
bmluZwotICAgIC8vIG11bHRpcGxlIHRlc3RzIGluIGEgc2luZ2xlIERSVCBydW4pIHdpbGwgc2Vl
IGEgY2xlYW4gY2FsbCBzZXF1ZW5jZS4KLSAgICBzX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Np
b25TdGF0ZVVuc2V0OwotICAgIGZvciAoSWRUb0JyaWRnZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2lk
VG9CcmlkZ2VNYXAuYmVnaW4oKTsgaXQgIT0gbV9pZFRvQnJpZGdlTWFwLmVuZCgpOyArK2l0KQot
ICAgICAgICBpdC0+c2Vjb25kLT5kaWREZXN0cm95R2VvbG9jYXRpb25TZXJ2aWNlKCk7Ci19Ci0K
LXZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9ja0ltcGw6OnNldE1vY2tHZW9sb2NhdGlvblBl
cm1pc3Npb24oYm9vbCBhbGxvd2VkKQotewotICAgIHNfcGVybWlzc2lvblN0YXRlID0gYWxsb3dl
ZCA/IFBlcm1pc3Npb25TdGF0ZUFsbG93ZWQgOiBQZXJtaXNzaW9uU3RhdGVEZW5pZWQ7Ci0gICAg
aWYgKHNfaW5zdGFuY2UpCi0gICAgICAgIHNfaW5zdGFuY2UtPm5vdGlmeVBlbmRpbmdQZXJtaXNz
aW9ucygpOwotfQotCi12b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2tJbXBsOjpyZXF1ZXN0
UGVybWlzc2lvbkZvckZyYW1lKGludCBicmlkZ2VJZCwgY29uc3QgV2ViVVJMJiB1cmwpCi17Ci0g
ICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmFwcGVuZChicmlkZ2VJZCk7Ci0gICAgaWYg
KHNfcGVybWlzc2lvblN0YXRlICE9IFBlcm1pc3Npb25TdGF0ZVVuc2V0KQotICAgICAgICBub3Rp
ZnlQZW5kaW5nUGVybWlzc2lvbnMoKTsKLX0KLQotaW50IFdlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2tJbXBsOjphdHRhY2hCcmlkZ2UoV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBicmlkZ2Up
Ci17Ci0gICAgc3RhdGljIGludCBuZXh0QXZhaWxhYmxlV2F0Y2hJZCA9IDE7Ci0gICAgLy8gSW4g
Y2FzZSBvZiBvdmVyZmxvdywgbWFrZSBzdXJlIHRoZSBJRCByZW1haW5zIHBvc2l0aXZlLCBidXQg
cmV1c2UgdGhlIElEIHZhbHVlcy4KLSAgICBpZiAobmV4dEF2YWlsYWJsZVdhdGNoSWQgPCAxKQot
ICAgICAgICBuZXh0QXZhaWxhYmxlV2F0Y2hJZCA9IDE7Ci0gICAgbV9pZFRvQnJpZGdlTWFwLnNl
dChuZXh0QXZhaWxhYmxlV2F0Y2hJZCwgYnJpZGdlKTsKLSAgICByZXR1cm4gbmV4dEF2YWlsYWJs
ZVdhdGNoSWQrKzsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6ZGV0
YWNoQnJpZGdlKGludCBicmlkZ2VJZCkKLXsKLSAgICBtX2lkVG9CcmlkZ2VNYXAucmVtb3ZlKGJy
aWRnZUlkKTsKLX0KLQotdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrSW1wbDo6bm90aWZ5
UGVuZGluZ1Blcm1pc3Npb25zKCkKLXsKLSAgICBBU1NFUlQoc19wZXJtaXNzaW9uU3RhdGUgPT0g
UGVybWlzc2lvblN0YXRlQWxsb3dlZCB8fCBzX3Blcm1pc3Npb25TdGF0ZSA9PSAgUGVybWlzc2lv
blN0YXRlRGVuaWVkKTsKLSAgICBWZWN0b3I8aW50PiBwZW5kaW5nUGVybWlzc2lvblJlcXVlc3Rz
OwotICAgIHBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuc3dhcChtX3BlbmRpbmdQZXJtaXNzaW9u
UmVxdWVzdHMpOwotICAgIGZvciAoVmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGVu
ZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBwZW5kaW5nUGVybWlzc2lvblJl
cXVlc3RzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIEFTU0VSVCgqaXQgPiAwKTsKLSAgICAgICAg
SWRUb0JyaWRnZU1hcDo6aXRlcmF0b3IgaXRlciA9IG1faWRUb0JyaWRnZU1hcC5maW5kKCppdCk7
Ci0gICAgICAgIGlmIChpdGVyICE9IG1faWRUb0JyaWRnZU1hcC5lbmQoKSkKLSAgICAgICAgICAg
IGl0ZXItPnNlY29uZC0+c2V0SXNBbGxvd2VkKHNfcGVybWlzc2lvblN0YXRlID09IFBlcm1pc3Np
b25TdGF0ZUFsbG93ZWQpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0jZW5k
aWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApp
bmRleCBlNDdjODllOGEwNDJjYTJlZjM5OWFkYTQwNjM3NTE4ZmI5NWFlYjQ1Li43MDU2YTBhYzIy
YjgxODA3NzQ3MjAyOTU0NDU0MjhiMzlhOGI3YzI2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMzExLDkgKzMxMSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAg
LCBtX3NwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVu
dCkpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0
aW9uQ2xpZW50KCkgOiAwKSkKLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQog
ICAgICwgbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5KG5ldyBHZW9sb2NhdGlvbkNsaWVudFByb3h5
KGNsaWVudCA/IGNsaWVudC0+Z2VvbG9jYXRpb25DbGllbnQoKSA6IDApKQotI2VuZGlmCiB7CiAg
ICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQg
dGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1l
dGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtMzM3LDE1ICszMzUsMTEgQEAgV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNB
Z2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9
IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQo
KTsKLSNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIHBhZ2VDbGllbnRz
Lmdlb2xvY2F0aW9uQ2xpZW50ID0gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5LmdldCgpOwotI2Vu
ZGlmCiAKICAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKLSNpZiBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIG1fZ2VvbG9jYXRpb25DbGllbnRQcm94
eS0+c2V0Q29udHJvbGxlcihtX3BhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpKTsKLSNlbmRp
ZgogCiAgICAgc3RhdGljX2Nhc3Q8QmFja0ZvcndhcmRMaXN0SW1wbCo+KG1fcGFnZS0+YmFja0Zv
cndhcmRMaXN0KCkpLT5zZXRDbGllbnQoJm1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbCk7CiAg
ICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3VwTmFtZSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggY2MyNWM4NDY3MTkzNzM0ZDFjOGE2OGJmMzlkMjU1YzUwZTlkNTYwOS4u
MDg1N2QxMTFhZjNkNDQ0NWJmOTY2MGU4YTBiZTU1ZjE3MGYzOTk5MSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaApAQCAtNTQzLDEwICs1NDMsNyBAQCBwcml2YXRlOgogICAgIC8vIGVhcmx5
LiBUaGlzIG1lbWJlciBob2xkcyBvbiB0byB0aGUgR0MzRCBpbiB0aGlzIGNhc2UuCiAgICAgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhp
Y3NDb250ZXh0M0Q7CiAgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk+IG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKLQotI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCiAgICAgT3duUHRyPEdlb2xvY2F0aW9uQ2xpZW50UHJveHk+IG1fZ2VvbG9j
YXRpb25DbGllbnRQcm94eTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>