<?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>41216</bug_id>
          
          <creation_ts>2010-06-25 09:02:40 -0700</creation_ts>
          <short_desc>REGRESSION(r61812): breaks Chromium workers tests (Requested by mnaganov on #webkit).</short_desc>
          <delta_ts>2010-06-25 11:45:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          <blocked>40607</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>abarth</cc>
    
    <cc>dumi</cc>
    
    <cc>mnaganov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243036</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 09:02:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61812 broke the build:
breaks Chromium workers tests (Requested by mnaganov on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243037</commentid>
    <comment_count>1</comment_count>
      <attachid>59772</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 09:02:56 -0700</bug_when>
    <thetext>Created attachment 59772
ROLLOUT of r61812

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243039</commentid>
    <comment_count>2</comment_count>
      <attachid>59772</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-25 09:12:32 -0700</bug_when>
    <thetext>Comment on attachment 59772
ROLLOUT of r61812

Clearing flags on attachment: 59772

Committed r61866: &lt;http://trac.webkit.org/changeset/61866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243040</commentid>
    <comment_count>3</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-25 09:12:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243081</commentid>
    <comment_count>4</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-25 11:08:33 -0700</bug_when>
    <thetext>IMHO, there&apos;s no need to rollback a 65K WebKit patch because of a test that fails on Chromium only. DISABLE-ing it on the Chromium side (or adding it to test_expectations.txt) and opening a Chromium bug for it should be enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243105</commentid>
    <comment_count>5</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-25 11:45:16 -0700</bug_when>
    <thetext>Yeah, sorry -- this is my first gardening. I consulted with Darin, he suggested to roll back. The tree was messy, I decided that this is a good decision. Next time I&apos;ll try your approach.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59772</attachid>
            <date>2010-06-25 09:02:56 -0700</date>
            <delta_ts>2010-06-25 09:12:32 -0700</delta_ts>
            <desc>ROLLOUT of r61812</desc>
            <filename>bug-41216-20100625160255.patch</filename>
            <type>text/plain</type>
            <size>66242</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNmMwNjg2NGNjZmIwZmNhNDhiZTg3YmFlNGNiODZjNjU1ZTQxNTc0Li5jZWFhOTdi
OTEwMDI3N2JlZjE1MzVjMDk4NGFmZDI5M2U1MDYyM2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDYtMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgor
CisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MTgxMi4KKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjE4MTIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjE2CisKKyAgICAgICAgYnJlYWtzIENocm9taXVt
IHdvcmtlcnMgdGVzdHMgKFJlcXVlc3RlZCBieSBtbmFnYW5vdiBvbgorICAgICAgICAjd2Via2l0
KS4KKworICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1p
bnB1dHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291
cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmpzOgorCiAyMDEwLTA2LTI1ICBBbGV4IE1p
bG93c2tpICA8YWxleEBtaWxvd3NraS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMtZXhw
ZWN0ZWQudHh0CmluZGV4IGE2NDJmNDYzNmNkNWQxMjRjMGJiNjdlNDU3MGY0MGIyYTExNDlhMjku
LjU1YjMzMmQxNWQ3YTg4ODVhZjJlMjY5OWYyNDAxY2YzZDIyNjk5MGQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4t
ZGF0YWJhc2Utc3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNCBAQCBQQVNTOiB1
bmRlZmluZWQKIFBBU1M6IHVuZGVmaW5lZAogUEFTUzogdW5kZWZpbmVkCiBQQVNTOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNwotUEFTUzogb3BlbkRhdGFiYXNlU3luYygpIHN1
Y2NlZWRlZC4KLVBBU1M6IGNhbGxpbmcgb3BlbkRhdGFiYXNlU3luYygpIHdpdGggYSBjcmVhdGlv
biBjYWxsYmFjayBzdWNjZWVkZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zdG9yYWdlL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3lu
Yy1pbnB1dHMuanMKaW5kZXggYWFkMmUxYjk5ODRhMTZkNmNmNzFmMjIxYjJkMWJhZjRkZTM3MWE1
Ny4uYzkyZDA2ODc5MTgwYzM4NDRmZjhmNTg0N2VjOTE3Y2MxYTAzYmMzNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Ut
c3luYy1pbnB1dHMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVz
b3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuanMKQEAgLTQ2LDIxICs0NiwxOSBAQCB0
cnkgewogICAgIHBvc3RNZXNzYWdlKCJQQVNTOiAiICsgZXJyLm1lc3NhZ2UpOwogfQogCi10cnkg
ewotICAgIGRiID0gb3BlbkRhdGFiYXNlU3luYygiREJOYW1lIiwgIkRCVmVyc2lvbiIsICJEQkRl
c2NyaXB0aW9uIiwgMTAyNCk7Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IG9wZW5EYXRhYmFzZVN5
bmMoKSBzdWNjZWVkZWQuIik7Ci19IGNhdGNoIChlcnIpIHsKLSAgICBwb3N0TWVzc2FnZSgiRkFJ
TDogIiArIGVyci5tZXNzYWdlKTsKLX0KLQotdHJ5IHsKLSAgICAvLyBOZWVkIHRvIGNyZWF0ZSBh
IG5ldyBkYXRhYmFzZSwgb3RoZXJ3aXNlIHRoZSBjcmVhdGlvbiBjYWxsYmFjayB3b24ndCBiZSBp
bnZva2VkLgotICAgIGRiID0gb3BlbkRhdGFiYXNlU3luYygiREJOYW1lQ3JlYXRpb25DYWxsYmFj
ayIgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpLCAiREJWZXJzaW9uIiwgIkRCRGVzY3JpcHRpb24i
LCAxMDI0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGNhbGxpbmcgb3BlbkRh
dGFiYXNlU3luYygpIHdpdGggYSBjcmVhdGlvbiBjYWxsYmFjayBzdWNjZWVkZWQuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotfSBjYXRjaCAoZXJyKSB7Ci0gICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6ICIgKyBlcnIubWVzc2FnZSk7Ci19CisvLyBGSVhNRTogVW5jb21tZW50IHRoZXNl
IHRlc3RzIHdoZW4gdGhlIHN5bmMgREIgQVBJIGlzIGltcGxlbWVudGVkLgorLy90cnkgeworLy8g
ICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKCJEQk5hbWUiLCAiREJWZXJzaW9uIiwgIkRCRGVzY3Jp
cHRpb24iLCAxMDI0KTsKKy8vICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBvcGVuRGF0YWJhc2VTeW5j
KCkgc3VjY2VlZGVkLiIpOworLy99IGNhdGNoIChlcnIpIHsKKy8vICAgIHBvc3RNZXNzYWdlKCJG
QUlMOiAiICsgZXJyLm1lc3NhZ2UpOworLy99CisvLworLy90cnkgeworLy8gICAgZGIgPSBvcGVu
RGF0YWJhc2VTeW5jKCJEQk5hbWUiLCAiREJWZXJzaW9uIiwgIkRCRGVzY3JpcHRpb24iLCAxMDI0
LCBmdW5jdGlvbihkYikgeyB9KTsKKy8vICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBjYWxsaW5nIG9w
ZW5EYXRhYmFzZVN5bmMoKSB3aXRoIGEgY3JlYXRpb24gY2FsbGJhY2sgc3VjY2VlZGVkLiIpOwor
Ly99IGNhdGNoIChlcnIpIHsKKy8vICAgIHBvc3RNZXNzYWdlKCJGQUlMOiAiICsgZXJyLm1lc3Nh
Z2UpOworLy99CiAKIHBvc3RNZXNzYWdlKCJkb25lIik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYxYzI1NTY3YmM5ZDdhNDY2OTkzOWFj
YWFjOGQzZmQyMzM3ZjkyZTIuLjY1YzEzOWI0NzZjMjc4NzhkNjUzMzMyMDhjY2MyODUwMGZjMDhi
YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzcgQEAKKzIwMTAtMDYtMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MTgx
Mi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjE4MTIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjE2CisKKyAgICAg
ICAgYnJlYWtzIENocm9taXVtIHdvcmtlcnMgdGVzdHMgKFJlcXVlc3RlZCBieSBtbmFnYW5vdiBv
bgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIHN0b3JhZ2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHA6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmg6CisgICAgICAgICog
c3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGF0YWJh
c2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRNdXRleCk6CisgICAgICAg
IChXZWJDb3JlOjpndWlkVG9WZXJzaW9uTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUd1
aWRWZXJzaW9uTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRhdGFiYXNlVmVyc2lvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6RGF0YWJhc2VDcmVhdGlvbkNhbGxi
YWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpn
ZXRWZXJzaW9uRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFRleHRWYWx1ZUlu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp2ZXJzaW9uTWF0Y2hlc0V4cGVjdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6ZGlzYWJsZUF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OmVuYWJsZUF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldEF1
dGhvcml6ZXJSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bGFzdEFjdGlv
bkNoYW5nZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bGFzdEFjdGlv
bldhc0luc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cmVzZXREZWxldGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpoYWREZWxldGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpy
ZXNldEF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVu
QW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRpb25D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjpzdHJpbmdJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZXN0aW1hdGVk
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWUpOgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmlzTmV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpkYXRhYmFzZURlYnVnTmFtZSk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZUF1
dGhvcml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3JpemVyOjpEYXRh
YmFzZUF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3JpemVyOjpk
ZW55QmFzZWRPblRhYmxlTmFtZSk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVN5bmM6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VT
eW5jOjpEYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0
YWJhc2VTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVN5bmM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIHN0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmRhdGFiYXNl
RGVidWdOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGFzay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNrOjpEYXRhYmFzZU9wZW5UYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlT3BlblRhc2s6OmRvUGVyZm9ybVRhc2spOgorICAgICAgICAqIHN0
b3JhZ2UvRGF0YWJhc2VUYXNrLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNr
OjpjcmVhdGUpOgorCiAyMDEwLTA2LTI1ICBMZWkgWmhlbmcgIDxsemhlbmdAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmNwcAppbmRleCBjYTlhMWI1YjU0OGI4MGRiMzg5Y2I0N2UyZDMyODM3NTY0
ZDBjMWVjLi5kYzNlOGUyNDdlMDMwZjIzZDEyNzk4MDAwOTBiYTM5N2JmMzYyZjc0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCkBAIC0zMCwxMjggKzMwLDkgQEAKICNpbmNsdWRl
ICJBYnN0cmFjdERhdGFiYXNlLmgiCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi0jaW5jbHVkZSAi
RGF0YWJhc2VBdXRob3JpemVyLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCi0jaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJT
UUxpdGVTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBy
ZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKLXsKLSAgICBTUUxpdGVTdGF0ZW1l
bnQgc3RhdGVtZW50KGRiLCBxdWVyeSk7Ci0gICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5wcmVw
YXJlKCk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExPR19F
UlJPUigiRXJyb3IgKCVpKSBwcmVwYXJpbmcgc3RhdGVtZW50IHRvIHJlYWQgdGV4dCByZXN1bHQg
ZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0LCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgp
OwotICAgIGlmIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIHJlc3VsdFN0cmlu
ZyA9IHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgaWYgKHJlc3VsdCA9PSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIHJlc3VsdFN0
cmluZyA9IFN0cmluZygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBMT0df
RVJST1IoIkVycm9yICglaSkgcmVhZGluZyB0ZXh0IHJlc3VsdCBmcm9tIGRhdGFiYXNlICglcyki
LCByZXN1bHQsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIFNRTGl0ZVN0
YXRlbWVudCBzdGF0ZW1lbnQoZGIsIHF1ZXJ5KTsKLSAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50
LnByZXBhcmUoKTsKLQotICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRh
dGFiYXNlICglcykiLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgdmFsdWUpOwotCi0gICAgcmVz
dWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKLSAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RlcCBzdGF0ZW1lbnQgdG8gc2V0IHZh
bHVlIGluIGRhdGFiYXNlICglcykiLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gRklYTUU6IG1v
dmUgYWxsIGd1aWQtcmVsYXRlZCBmdW5jdGlvbnMgdG8gYSBEYXRhYmFzZVZlcnNpb25UcmFja2Vy
IGNsYXNzLgotc3RhdGljIE11dGV4JiBndWlkTXV0ZXgoKQotewotICAgIC8vIE5vdGU6IFdlIGRv
bid0IGhhdmUgdG8gdXNlIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyBoZXJlIGJlY2F1c2UK
LSAgICAvLyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGluIHRoZSBjb25zdHJ1Y3RvciBv
biB0aGUgbWFpbiB0aHJlYWQKLSAgICAvLyBiZWZvcmUgYW55IG90aGVyIHRocmVhZHMgdGhhdCBj
YWxsIHRoaXMgZnVuY3Rpb24gYXJlIHVzZWQuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRl
eCwgbXV0ZXgsICgpKTsKLSAgICByZXR1cm4gbXV0ZXg7Ci19Ci0KLXR5cGVkZWYgSGFzaE1hcDxp
bnQsIFN0cmluZz4gR3VpZFZlcnNpb25NYXA7Ci1zdGF0aWMgR3VpZFZlcnNpb25NYXAmIGd1aWRU
b1ZlcnNpb25NYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoR3VpZFZlcnNpb25NYXAs
IG1hcCwgKCkpOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLS8vIE5PVEU6IENhbGxlciBtdXN0IGxv
Y2sgZ3VpZE11dGV4KCkuCi1zdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAo
aW50IGd1aWQsIFN0cmluZyBuZXdWZXJzaW9uKQotewotICAgIC8vIEVuc3VyZSB0aGUgdGhlIG11
dGV4IGlzIGxvY2tlZC4KLSAgICBBU1NFUlQoIWd1aWRNdXRleCgpLnRyeUxvY2soKSk7Ci0KLSAg
ICAvLyBOb3RlOiBJdCBpcyBub3Qgc2FmZSB0byBwdXQgYW4gZW1wdHkgc3RyaW5nIGludG8gdGhl
IGd1aWRUb1ZlcnNpb25NYXAoKSBtYXAuCi0gICAgLy8gVGhhdCdzIGJlY2F1c2UgdGhlIG1hcCBp
cyBjcm9zcy10aHJlYWQsIGJ1dCBlbXB0eSBzdHJpbmdzIGFyZSBwZXItdGhyZWFkLgotICAgIC8v
IFRoZSBjb3B5KCkgZnVuY3Rpb24gbWFrZXMgYSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgeW91IGNh
biB1c2Ugb24gdGhlIGN1cnJlbnQKLSAgICAvLyB0aHJlYWQsIGJ1dCB3ZSBuZWVkIGEgc3RyaW5n
IHdlIGNhbiBrZWVwIGluIGEgY3Jvc3MtdGhyZWFkIGRhdGEgc3RydWN0dXJlLgotICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGEgcXVpdGUtYXdrd2FyZCByZXN0cmljdGlvbiB0byBoYXZlIHRvIHByb2dy
YW0gd2l0aC4KLQotICAgIC8vIE1hcCBudWxsIHN0cmluZyB0byBlbXB0eSBzdHJpbmcgKHNlZSBj
b21tZW50IGFib3ZlKS4KLSAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0KGd1aWQsIG5ld1ZlcnNp
b24uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLnRocmVhZHNhZmVDb3B5KCkpOwot
fQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPio+IEd1
aWREYXRhYmFzZU1hcDsKLXN0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEd1aWREYXRhYmFzZU1hcCwgbWFwLCAoKSk7
Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RhdGljIGludCBndWlkRm9yT3JpZ2luQW5kTmFtZShj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIFN0cmluZyBz
dHJpbmdJRCA9IG9yaWdpbiArICIvIiArIG5hbWU7Ci0KLSAgICAvLyBOb3RlOiBXZSBkb24ndCBo
YXZlIHRvIHVzZSBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNlCi0gICAg
Ly8gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Igb24gdGhl
IG1haW4gdGhyZWFkCi0gICAgLy8gYmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQgY2FsbCB0
aGlzIGZ1bmN0aW9uIGFyZSB1c2VkLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0
cmluZ0lkZW50aWZpZXJNdXRleCwgKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihzdHJpbmdJ
ZGVudGlmaWVyTXV0ZXgpOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4gSURHdWlk
TWFwOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSURHdWlkTWFwLCBzdHJpbmdJZGVudGlmaWVy
VG9HVUlETWFwLCAoKSk7Ci0gICAgaW50IGd1aWQgPSBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFw
LmdldChzdHJpbmdJRCk7Ci0gICAgaWYgKCFndWlkKSB7Ci0gICAgICAgIHN0YXRpYyBpbnQgY3Vy
cmVudE5ld0dVSUQgPSAxOwotICAgICAgICBndWlkID0gY3VycmVudE5ld0dVSUQrKzsKLSAgICAg
ICAgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5zZXQoc3RyaW5nSUQsIGd1aWQpOwotICAgIH0K
LQotICAgIHJldHVybiBndWlkOwotfQotCiBzdGF0aWMgYm9vbCBpc0RhdGFiYXNlQXZhaWxhYmxl
ID0gdHJ1ZTsKIAogYm9vbCBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpCkBAIC0xNjQs
MzA0ICs0NSwxMCBAQCB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGJvb2wg
YXZhaWxhYmxlKQogICAgIGlzRGF0YWJhc2VBdmFpbGFibGUgPSBhdmFpbGFibGU7CiB9CiAKLS8v
IHN0YXRpYwotY29uc3QgU3RyaW5nJiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZUluZm9UYWJs
ZU5hbWUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1lLCAoIl9fV2Vi
S2l0RGF0YWJhc2VJbmZvVGFibGVfXyIpKTsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotQWJzdHJh
Y3REYXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbmFtZShuYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkp
Ci0gICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJp
bmcoKSkKLSAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJlYWRTdHJpbmco
KSkKLSAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQotICAgICwgbV9ndWlkKDAp
Ci0gICAgLCBtX29wZW5lZChmYWxzZSkKLSAgICAsIG1fbmV3KGZhbHNlKQotewotICAgIEFTU0VS
VChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgbV9jb250ZXh0VGhyZWFkU2VjdXJp
dHlPcmlnaW4gPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0K
LSAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGRh
dGFiYXNlSW5mb1RhYmxlTmFtZSgpKTsKLQotICAgIGlmIChtX25hbWUuaXNOdWxsKCkpCi0gICAg
ICAgIG1fbmFtZSA9ICIiOwotCi0gICAgbV9ndWlkID0gZ3VpZEZvck9yaWdpbkFuZE5hbWUoc2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7Ci0gICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotCi0gICAgICAgIEhhc2hTZXQ8QWJzdHJhY3REYXRh
YmFzZSo+KiBoYXNoU2V0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5nZXQobV9ndWlkKTsKLSAgICAg
ICAgaWYgKCFoYXNoU2V0KSB7Ci0gICAgICAgICAgICBoYXNoU2V0ID0gbmV3IEhhc2hTZXQ8QWJz
dHJhY3REYXRhYmFzZSo+OwotICAgICAgICAgICAgZ3VpZFRvRGF0YWJhc2VNYXAoKS5zZXQobV9n
dWlkLCBoYXNoU2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGhhc2hTZXQtPmFkZCh0aGlzKTsK
LSAgICB9Ci0KLSAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVs
bFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKLX0KLQogQWJzdHJhY3RE
YXRhYmFzZTo6fkFic3RyYWN0RGF0YWJhc2UoKQogewogfQogCi12b2lkIEFic3RyYWN0RGF0YWJh
c2U6OmNsb3NlRGF0YWJhc2UoKQotewotICAgIGlmICghbV9vcGVuZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKLSAgICBtX29wZW5lZCA9IGZhbHNl
OwotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKLQotICAg
ICAgICBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNl
TWFwKCkuZ2V0KG1fZ3VpZCk7Ci0gICAgICAgIEFTU0VSVChoYXNoU2V0KTsKLSAgICAgICAgQVNT
RVJUKGhhc2hTZXQtPmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaGFzaFNldC0+cmVtb3ZlKHRo
aXMpOwotICAgICAgICBpZiAoaGFzaFNldC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBndWlk
VG9EYXRhYmFzZU1hcCgpLnJlbW92ZShtX2d1aWQpOwotICAgICAgICAgICAgZGVsZXRlIGhhc2hT
ZXQ7Ci0gICAgICAgICAgICBndWlkVG9WZXJzaW9uTWFwKCkucmVtb3ZlKG1fZ3VpZCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLVN0cmluZyBBYnN0cmFjdERhdGFiYXNlOjp2ZXJzaW9uKCkgY29u
c3QKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotICAgIHJldHVybiBn
dWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCkudGhyZWFkc2FmZUNvcHkoKTsKLX0KLQotc3Rh
dGljIGNvbnN0IGludCBtYXhTcWxpdGVCdXN5V2FpdFRpbWUgPSAzMDAwMDsKLWJvb2wgQWJzdHJh
Y3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFtX3NxbGl0ZURhdGFi
YXNlLm9wZW4obV9maWxlbmFtZSwgdHJ1ZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gb3BlbiBkYXRhYmFzZSBhdCBwYXRoICVzIiwgbV9maWxlbmFtZS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1Zh
Y3V1bSgpKQotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB0dXJuIG9uIGluY3JlbWVudGFs
IGF1dG8tdmFjdXVtIGZvciBkYXRhYmFzZSAlcyIsIG1fZmlsZW5hbWUuYXNjaWkoKS5kYXRhKCkp
OwotCi0gICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKLSAgICBtX3NxbGl0ZURhdGFi
YXNlLnNldEF1dGhvcml6ZXIobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIG1fc3FsaXRlRGF0
YWJhc2Uuc2V0QnVzeVRpbWVvdXQobWF4U3FsaXRlQnVzeVdhaXRUaW1lKTsKLQotICAgIFN0cmlu
ZyBjdXJyZW50VmVyc2lvbjsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlk
TXV0ZXgoKSk7Ci0KLSAgICAgICAgR3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9yIGVudHJ5ID0gZ3Vp
ZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKLSAgICAgICAgaWYgKGVudHJ5ICE9IGd1aWRU
b1ZlcnNpb25NYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgLy8gTWFwIG51bGwgc3RyaW5nIHRv
IGVtcHR5IHN0cmluZyAoc2VlIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKCkpLgotICAgICAgICAgICAg
Y3VycmVudFZlcnNpb24gPSBlbnRyeS0+c2Vjb25kLmlzTnVsbCgpID8gU3RyaW5nKCIiKSA6IGVu
dHJ5LT5zZWNvbmQ7Ci0gICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnJlbnQgY2FjaGVk
IHZlcnNpb24gZm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1aWQsIGN1cnJlbnRWZXJzaW9uLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJ
LCAiTm8gY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkiLCBtX2d1aWQpOwotCi0gICAgICAgICAg
ICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVFeGlzdHMoZGF0YWJhc2VJbmZvVGFibGVOYW1l
KCkpKSB7Ci0gICAgICAgICAgICAgICAgbV9uZXcgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAg
aWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgIiArIGRh
dGFiYXNlSW5mb1RhYmxlTmFtZSgpICsgIiAoa2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwpOyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGNyZWF0ZSB0YWJsZSAlcyBpbiBkYXRhYmFzZSAlcyIsIGRhdGFiYXNlSW5mb1RhYmxlTmFt
ZSgpLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gQ2xvc2UgdGhlIGhhbmRsZSB0byB0aGUgZGF0YWJhc2UgZmlsZS4KLSAgICAg
ICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoIWdldFZlcnNpb25Gcm9tRGF0YWJhc2UoY3VycmVudFZlcnNpb24pKSB7
Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGN1cnJlbnQgdmVyc2lv
biBmcm9tIGRhdGFiYXNlICVzIiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgICAg
ICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFzZSBmaWxlLgotICAgICAgICAgICAg
ICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY3VycmVudFZlcnNpb24ubGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlJldHJpZXZlZCBjdXJyZW50
IHZlcnNpb24gJXMgZnJvbSBkYXRhYmFzZSAlcyIsIGN1cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0
YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIW1fbmV3IHx8IHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSB7Ci0gICAg
ICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTZXR0aW5nIHZlcnNpb24gJXMgaW4gZGF0YWJh
c2UgJXMgdGhhdCB3YXMganVzdCBjcmVhdGVkIiwgbV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5k
YXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAg
ICAgIGlmICghc2V0VmVyc2lvbkluRGF0YWJhc2UobV9leHBlY3RlZFZlcnNpb24pKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCB2ZXJzaW9uICVzIGluIGRh
dGFiYXNlICVzIiwgbV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVi
dWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwotICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRv
IHRoZSBkYXRhYmFzZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNl
LmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBtX2V4cGVjdGVkVmVyc2lv
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdXBkYXRlR3VpZFZlcnNpb25NYXAobV9n
dWlkLCBjdXJyZW50VmVyc2lvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoY3VycmVu
dFZlcnNpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAl
cyBkb2VzIG5vdCBoYXZlIGl0cyB2ZXJzaW9uIHNldCIsIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNj
aWkoKS5kYXRhKCkpOwotICAgICAgICBjdXJyZW50VmVyc2lvbiA9ICIiOwotICAgIH0KLQotICAg
IC8vIElmIHRoZSBleHBlY3RlZCB2ZXJzaW9uIGlzbid0IHRoZSBlbXB0eSBzdHJpbmcsIGVuc3Vy
ZSB0aGF0IHRoZSBjdXJyZW50IGRhdGFiYXNlIHZlcnNpb24gd2UgaGF2ZSBtYXRjaGVzIHRoYXQg
dmVyc2lvbi4gT3RoZXJ3aXNlLCBzZXQgYW4gZXhjZXB0aW9uLgotICAgIC8vIElmIHRoZSBleHBl
Y3RlZCB2ZXJzaW9uIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gd2UgYWx3YXlzIHJldHVybiB3
aXRoIHdoYXRldmVyIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIHdlIGhhdmUuCi0gICAgaWYgKCgh
bV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpICYmIG1fZXhwZWN0ZWRWZXJz
aW9uLmxlbmd0aCgpICYmIG1fZXhwZWN0ZWRWZXJzaW9uICE9IGN1cnJlbnRWZXJzaW9uKSB7Ci0g
ICAgICAgIExPRyhTdG9yYWdlQVBJLCAicGFnZSBleHBlY3RzIHZlcnNpb24gJXMgZnJvbSBkYXRh
YmFzZSAlcywgd2hpY2ggYWN0dWFsbHkgaGFzIHZlcnNpb24gbmFtZSAlcyAtIG9wZW5EYXRhYmFz
ZSgpIGNhbGwgd2lsbCBmYWlsIiwgbV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksCi0g
ICAgICAgICAgICBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpLCBjdXJyZW50VmVy
c2lvbi5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0g
ICAgICAgIC8vIENsb3NlIHRoZSBoYW5kbGUgdG8gdGhlIGRhdGFiYXNlIGZpbGUuCi0gICAgICAg
IG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIG1fb3BlbmVkID0gdHJ1ZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBBYnN0cmFjdERhdGFiYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwot
fQotCi1TZWN1cml0eU9yaWdpbiogQWJzdHJhY3REYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBj
b25zdAotewotICAgIHJldHVybiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKTsK
LX0KLQotU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OnN0cmluZ0lkZW50aWZpZXIoKSBjb25zdAot
ewotICAgIC8vIFJldHVybiBhIGRlZXAgY29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZl
dHkKLSAgICByZXR1cm4gbV9uYW1lLnRocmVhZHNhZmVDb3B5KCk7Ci19Ci0KLVN0cmluZyBBYnN0
cmFjdERhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNvbnN0Ci17Ci0gICAgLy8gUmV0dXJuIGEgZGVl
cCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQotICAgIHJldHVybiBtX2Rpc3Bs
YXlOYW1lLnRocmVhZHNhZmVDb3B5KCk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgQWJzdHJhY3REYXRh
YmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZXN0aW1hdGVkU2l6
ZTsKLX0KLQotU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OmZpbGVOYW1lKCkgY29uc3QKLXsKLSAg
ICAvLyBSZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5Ci0g
ICAgcmV0dXJuIG1fZmlsZW5hbWUudGhyZWFkc2FmZUNvcHkoKTsKLX0KLQotLy8gc3RhdGljCi1j
b25zdCBTdHJpbmcmIEFic3RyYWN0RGF0YWJhc2U6OmRhdGFiYXNlVmVyc2lvbktleSgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGtleSwgKCJXZWJLaXREYXRhYmFzZVZlcnNp
b25LZXkiKSk7Ci0gICAgcmV0dXJuIGtleTsKLX0KLQotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpn
ZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYgdmVyc2lvbikKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZ2V0VmVyc2lvblF1ZXJ5LCAoIlNFTEVDVCB2YWx1ZSBGUk9NICIg
KyBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKSArICIgV0hFUkUga2V5ID0gJyIgKyBkYXRhYmFzZVZl
cnNpb25LZXkoKSArICInOyIpKTsKLQotICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxl
KCk7Ci0KLSAgICBib29sIHJlc3VsdCA9IHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZSht
X3NxbGl0ZURhdGFiYXNlLCBnZXRWZXJzaW9uUXVlcnkudGhyZWFkc2FmZUNvcHkoKSwgdmVyc2lv
bik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJp
ZXZlIHZlcnNpb24gZnJvbSBkYXRhYmFzZSAlcyIsIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWko
KS5kYXRhKCkpOwotCi0gICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmVuYWJsZSgpOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpzZXRWZXJzaW9uSW5E
YXRhYmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCi17Ci0gICAgLy8gVGhlIElOU0VSVCB3aWxs
IHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgZm9yIHRoZSBkYXRhYmFzZSB3aXRoIHRoZSBuZXcg
dmVyc2lvbiBudW1iZXIsIGR1ZSB0byB0aGUgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UKLSAg
ICAvLyBjbGF1c2UgaW4gdGhlIENSRUFURSBzdGF0ZW1lbnQgKHNlZSBEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkoKSkuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNldFZl
cnNpb25RdWVyeSwgKCJJTlNFUlQgSU5UTyAiICsgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkgKyAi
IChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsgZGF0YWJhc2VWZXJzaW9uS2V5KCkgKyAiJywgPyk7
IikpOwotCi0gICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKLQotICAgIGJvb2wg
cmVzdWx0ID0gc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNlLCBzZXRWZXJz
aW9uUXVlcnkudGhyZWFkc2FmZUNvcHkoKSwgdmVyc2lvbik7Ci0gICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCB2ZXJzaW9uICVzIGluIGRhdGFiYXNlICgl
cykiLCB2ZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBzZXRWZXJzaW9uUXVlcnkuYXNjaWkoKS5kYXRh
KCkpOwotCi0gICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmVuYWJsZSgpOwotCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjp2ZXJzaW9uTWF0Y2hlc0V4cGVj
dGVkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZXhwZWN0ZWRWZXJzaW9uLmlzRW1wdHkoKSkgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotICAgICAgICByZXR1cm4g
bV9leHBlY3RlZFZlcnNpb24gPT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpOwotICAg
IH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldEV4
cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCi17Ci0gICAgbV9leHBlY3RlZFZl
cnNpb24gPSB2ZXJzaW9uLnRocmVhZHNhZmVDb3B5KCk7Ci0gICAgLy8gVXBkYXRlIHRoZSBpbiBt
ZW1vcnkgZGF0YWJhc2UgdmVyc2lvbiBtYXAuCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRN
dXRleCgpKTsKLSAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcChtX2d1aWQsIHZlcnNpb24pOwotfQot
Ci12b2lkIEFic3RyYWN0RGF0YWJhc2U6OmRpc2FibGVBdXRob3JpemVyKCkKLXsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNh
YmxlKCk7Ci19Ci0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6ZW5hYmxlQXV0aG9yaXplcigpCi17
Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKLSAgICBtX2RhdGFiYXNlQXV0aG9y
aXplci0+ZW5hYmxlKCk7Ci19Ci0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6c2V0QXV0aG9yaXpl
clJlYWRPbmx5KCkKLXsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIG1f
ZGF0YWJhc2VBdXRob3JpemVyLT5zZXRSZWFkT25seSgpOwotfQotCi1ib29sIEFic3RyYWN0RGF0
YWJhc2U6Omxhc3RBY3Rpb25DaGFuZ2VkRGF0YWJhc2UoKQotewotICAgIEFTU0VSVChtX2RhdGFi
YXNlQXV0aG9yaXplcik7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VBdXRob3JpemVyLT5sYXN0QWN0
aW9uQ2hhbmdlZERhdGFiYXNlKCk7Ci19Ci0KLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6bGFzdEFj
dGlvbldhc0luc2VydCgpCi17Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKLSAg
ICByZXR1cm4gbV9kYXRhYmFzZUF1dGhvcml6ZXItPmxhc3RBY3Rpb25XYXNJbnNlcnQoKTsKLX0K
LQotdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXNldERlbGV0ZXMoKQotewotICAgIEFTU0VSVCht
X2RhdGFiYXNlQXV0aG9yaXplcik7Ci0gICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPnJlc2V0RGVs
ZXRlcygpOwotfQotCi1ib29sIEFic3RyYWN0RGF0YWJhc2U6OmhhZERlbGV0ZXMoKQotewotICAg
IEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VBdXRo
b3JpemVyLT5oYWREZWxldGVzKCk7Ci19Ci0KLXZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVzZXRB
dXRob3JpemVyKCkKLXsKLSAgICBpZiAobV9kYXRhYmFzZUF1dGhvcml6ZXIpCi0gICAgICAgIG1f
ZGF0YWJhc2VBdXRob3JpemVyLT5yZXNldCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvQWJzdHJhY3REYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2Uu
aAppbmRleCBkMzhhODE5MTU5ZjdiMjU3ZjFhZmRjYzgxOGZmNGI0Mjk5OThjNmZmLi41ZTRlMGZh
NTFkNjViMDk0OTIxNzhjOThjOGE1YjI2NWYzNWI5YWJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmgKQEAgLTMyLDIxICszMiwxMyBAQAogI2lmIEVOQUJMRShEQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlU2hhcmVkLmg+
Ci0jaWZuZGVmIE5ERUJVRwotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEYXRhYmFzZUF1dGhvcml6ZXI7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIEFic3RyYWN0RGF0YWJhc2UgOiBwdWJsaWMgVGhy
ZWFkU2FmZVNoYXJlZDxBYnN0cmFjdERhdGFiYXNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNBdmFpbGFibGUoKTsKQEAgLTU0LDY5ICs0NiwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIH5BYnN0cmFjdERhdGFiYXNlKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlbmVkOyB9Ci0g
ICAgYm9vbCBpc05ldygpIGNvbnN0IHsgcmV0dXJuIG1fbmV3OyB9Ci0KLSAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwotICAgIHZp
cnR1YWwgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBkaXNwbGF5TmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgZmlsZU5hbWUoKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBtb3ZlIGFsbCB2ZXJzaW9uLXJlbGF0ZWQgbWV0aG9kcyB0byBhIERhdGFi
YXNlVmVyc2lvblRyYWNrZXIgY2xhc3MKLSAgICBib29sIHZlcnNpb25NYXRjaGVzRXhwZWN0ZWQo
KSBjb25zdDsKLSAgICB2b2lkIHNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24pOwotICAgIGJvb2wgZ2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24pOwot
ICAgIGJvb2wgc2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKLQot
ICAgIHZvaWQgZGlzYWJsZUF1dGhvcml6ZXIoKTsKLSAgICB2b2lkIGVuYWJsZUF1dGhvcml6ZXIo
KTsKLSAgICB2b2lkIHNldEF1dGhvcml6ZXJSZWFkT25seSgpOwotICAgIGJvb2wgbGFzdEFjdGlv
bkNoYW5nZWREYXRhYmFzZSgpOwotICAgIGJvb2wgbGFzdEFjdGlvbldhc0luc2VydCgpOwotICAg
IHZvaWQgcmVzZXREZWxldGVzKCk7Ci0gICAgYm9vbCBoYWREZWxldGVzKCk7Ci0gICAgdm9pZCBy
ZXNldEF1dGhvcml6ZXIoKTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5TmFt
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTmFtZSgpIGNvbnN0ID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBtYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlSW1tZWRpYXRlbHkoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBBYnN0cmFj
dERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKLQotICAg
IHZvaWQgY2xvc2VEYXRhYmFzZSgpOwotCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm1PcGVuQW5k
VmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKTsKLQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgp
OwotCi0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fY29udGV4dFRocmVhZFNlY3Vy
aXR5T3JpZ2luOwotCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV9leHBlY3RlZFZl
cnNpb247Ci0gICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2Vz
dGltYXRlZFNpemU7Ci0gICAgU3RyaW5nIG1fZmlsZW5hbWU7Ci0KLSAgICBTUUxpdGVEYXRhYmFz
ZSBtX3NxbGl0ZURhdGFiYXNlOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyBkYXRhYmFz
ZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2lu
LT50b1N0cmluZygpICsgIjo6IiArIG1fbmFtZTsgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VWZXJzaW9uS2V5KCk7Ci0KLSAgICBpbnQgbV9n
dWlkOwotICAgIGJvb2wgbV9vcGVuZWQ7Ci0gICAgYm9vbCBtX25ldzsKLQotICAgIFJlZlB0cjxE
YXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKaW5kZXggZTMyNDRlYmNiMDkwZWJhOTFmNjFi
YzMzMzY4ZTgzYWZjOTdkY2M3ZS4uYWQ2YjkyYzliNzk5ZTYyMDMzMmEzOTE5MDFhMmVkNmE4N2U5
NDI5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFCTEUo
REFUQUJBU0UpCiAjaW5jbHVkZSAiQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUF1dGhvcml6ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKQEAgLTQ5
LDYgKzUwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5j
bHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNjIsMjcgKzY0
LDgxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gSWYgd2Ugc2xlZXAgZm9yIG1vcmUg
dGhlIDMwIHNlY29uZHMgd2hpbGUgYmxvY2tlZCBvbiBTUUxJVEVfQlVTWSwgZ2l2ZSB1cC4KK3N0
YXRpYyBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1lID0gMzAwMDA7CisKK2NvbnN0IFN0
cmluZyYgRGF0YWJhc2U6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIG5hbWUsICgiX19XZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fIikp
OworICAgIHJldHVybiBuYW1lOworfQorCitzdGF0aWMgTXV0ZXgmIGd1aWRNdXRleCgpCit7Cisg
ICAgLy8gTm90ZTogV2UgZG9uJ3QgaGF2ZSB0byB1c2UgQXRvbWljYWxseUluaXRpYWxpemVkU3Rh
dGljIGhlcmUgYmVjYXVzZQorICAgIC8vIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgaW4g
dGhlIGNvbnN0cnVjdG9yIG9uIHRoZSBtYWluIHRocmVhZAorICAgIC8vIGJlZm9yZSBhbnkgb3Ro
ZXIgdGhyZWFkcyB0aGF0IGNhbGwgdGhpcyBmdW5jdGlvbiBhcmUgdXNlZC4KKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOworICAgIHJldHVybiBtdXRleDsKK30KKwor
dHlwZWRlZiBIYXNoTWFwPGludCwgU3RyaW5nPiBHdWlkVmVyc2lvbk1hcDsKK3N0YXRpYyBHdWlk
VmVyc2lvbk1hcCYgZ3VpZFRvVmVyc2lvbk1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChHdWlkVmVyc2lvbk1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworLy8gTk9U
RTogQ2FsbGVyIG11c3QgbG9jayBndWlkTXV0ZXgoKS4KK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRh
dGVHdWlkVmVyc2lvbk1hcChpbnQgZ3VpZCwgU3RyaW5nIG5ld1ZlcnNpb24pCit7CisgICAgLy8g
RW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgorICAgIEFTU0VSVCghZ3VpZE11dGV4KCku
dHJ5TG9jaygpKTsKKworICAgIC8vIE5vdGU6IEl0IGlzIG5vdCBzYWZlIHRvIHB1dCBhbiBlbXB0
eSBzdHJpbmcgaW50byB0aGUgZ3VpZFRvVmVyc2lvbk1hcCgpIG1hcC4KKyAgICAvLyBUaGF0J3Mg
YmVjYXVzZSB0aGUgbWFwIGlzIGNyb3NzLXRocmVhZCwgYnV0IGVtcHR5IHN0cmluZ3MgYXJlIHBl
ci10aHJlYWQuCisgICAgLy8gVGhlIGNvcHkoKSBmdW5jdGlvbiBtYWtlcyBhIHZlcnNpb24gb2Yg
dGhlIHN0cmluZyB5b3UgY2FuIHVzZSBvbiB0aGUgY3VycmVudAorICAgIC8vIHRocmVhZCwgYnV0
IHdlIG5lZWQgYSBzdHJpbmcgd2UgY2FuIGtlZXAgaW4gYSBjcm9zcy10aHJlYWQgZGF0YSBzdHJ1
Y3R1cmUuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBxdWl0ZS1hd2t3YXJkIHJlc3RyaWN0aW9u
IHRvIGhhdmUgdG8gcHJvZ3JhbSB3aXRoLgorCisgICAgLy8gTWFwIG51bGwgc3RyaW5nIHRvIGVt
cHR5IHN0cmluZyAoc2VlIGNvbW1lbnQgYWJvdmUpLgorICAgIGd1aWRUb1ZlcnNpb25NYXAoKS5z
ZXQoZ3VpZCwgbmV3VmVyc2lvbi5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IG5ld1ZlcnNpb24udGhy
ZWFkc2FmZUNvcHkoKSk7Cit9CisKK3R5cGVkZWYgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8RGF0YWJh
c2UqPio+IEd1aWREYXRhYmFzZU1hcDsKK3N0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0Rh
dGFiYXNlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEd1aWREYXRhYmFzZU1hcCwg
bWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VWZXJzaW9uS2V5KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5
LCAoIldlYktpdERhdGFiYXNlVmVyc2lvbktleSIpKTsKKyAgICByZXR1cm4ga2V5OworfQorCitz
dGF0aWMgaW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworCiBjbGFzcyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVh
dGlvbkNhbGxiYWNrKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlQ3JlYXRpb25DYWxs
YmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayhkYXRhYmFzZSwg
Y3JlYXRpb25DYWxsYmFjayk7CisgICAgICAgIHJldHVybiBuZXcgRGF0YWJhc2VDcmVhdGlvbkNh
bGxiYWNrVGFzayhkYXRhYmFzZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKLSAgICAgICAgbV9jcmVh
dGlvbkNhbGxiYWNrLT5oYW5kbGVFdmVudChjb250ZXh0LCBtX2RhdGFiYXNlLmdldCgpKTsKKyAg
ICAgICAgbV9kYXRhYmFzZS0+cGVyZm9ybUNyZWF0aW9uQ2FsbGJhY2soKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayhQYXNzUmVmUHRyPERhdGFi
YXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjaykKKyAg
ICBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFi
YXNlKQogICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgICAgICwgbV9jcmVhdGlv
bkNhbGxiYWNrKGNhbGxiYWNrKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8RGF0YWJhc2U+
IG1fZGF0YWJhc2U7Ci0gICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IG1fY3JlYXRpb25DYWxs
YmFjazsKIH07CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLApAQCAt
OTEsMTMgKzE0NywxNCBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6b3BlbkRhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlKQogewogICAgIGlm
ICghRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4
dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CisgICAgICAgIC8vIEZJWE1F
OiBUaGVyZSBzaG91bGQgYmUgYW4gZXhjZXB0aW9uIHJhaXNlZCBoZXJlIGluIGFkZGl0aW9uIHRv
IHJldHVybmluZyBhIG51bGwgRGF0YWJhc2Ugb2JqZWN0LiAgVGhlIHF1ZXN0aW9uIGhhcyBiZWVu
IHJhaXNlZCB3aXRoIHRoZSBXSEFUV0cuCiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJh
c2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUu
YXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8RGF0
YWJhc2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKKyAgICBSZWZQdHI8
RGF0YWJhc2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGNvbnRleHQsIG5hbWUs
IGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2Fs
bGJhY2spKTsKIAotICAgIGlmICghZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVh
dGlvbkNhbGxiYWNrLCBlKSkgeworICAgIGlmICghZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJz
aW9uKGUpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIG9wZW4gYW5kIHZl
cmlmeSB2ZXJzaW9uIChleHBlY3RlZCAlcykgb2YgZGF0YWJhc2UgJXMiLCBleHBlY3RlZFZlcnNp
b24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlLT5kYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgY29udGV4dC0+cmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdl
dCgpKTsKICAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFi
YXNlKGRhdGFiYXNlLmdldCgpKTsKQEAgLTExOSwyOCArMTc2LDU3IEBAIFBhc3NSZWZQdHI8RGF0
YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uCiAgICAgLy8gdmVyc2lvbiB0byAiIiBhbmQgc2NoZWR1bGUgdGhlIGNyZWF0aW9u
IGNhbGxiYWNrLiBCZWNhdXNlIG9mIHNvbWUgc3VidGxlIFN0cmluZwogICAgIC8vIGltcGxlbWVu
dGF0aW9uIGlzc3Vlcywgd2UgaGF2ZSB0byByZXNldCBtX2V4cGVjdGVkVmVyc2lvbiBoZXJlIGlu
c3RlYWQgb2YgZG9pbmcKICAgICAvLyBpdCBpbnNpZGUgcGVyZm9ybU9wZW5BbmRWZXJpZnkoKSB3
aGljaCBpcyBydW4gb24gdGhlIERCIHRocmVhZC4KLSAgICBpZiAoZGF0YWJhc2UtPmlzTmV3KCkg
JiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgeworICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAm
JiBkYXRhYmFzZS0+bV9jcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAgICAgICAgIGRhdGFiYXNl
LT5tX2V4cGVjdGVkVmVyc2lvbiA9ICIiOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVk
dWxpbmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRh
dGFiYXNlLmdldCgpKTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNl
LCBjcmVhdGlvbkNhbGxiYWNrKSk7CisgICAgICAgIGRhdGFiYXNlLT5tX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s6OmNyZWF0ZShk
YXRhYmFzZSkpOwogICAgIH0KIAogICAgIHJldHVybiBkYXRhYmFzZTsKIH0KIAotRGF0YWJhc2U6
OkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6IEFic3RyYWN0RGF0YWJh
c2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSkKLSAgICAsIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzKGZhbHNlKQorRGF0YWJhc2U6OkRh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxi
YWNrPiBjcmVhdGlvbkNhbGxiYWNrKQorICAgIDogbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MoZmFs
c2UpCiAgICAgLCBtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQodHJ1ZSkKKyAgICAsIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9uYW1lKG5hbWUuY3Jvc3NUaHJl
YWRTdHJpbmcoKSkKKyAgICAsIG1fZ3VpZCgwKQorICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhw
ZWN0ZWRWZXJzaW9uLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgLCBtX2Rpc3BsYXlOYW1lKGRp
c3BsYXlOYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgLCBtX2VzdGltYXRlZFNpemUoZXN0
aW1hdGVkU2l6ZSkKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fc3RvcHBlZChmYWxz
ZSkKKyAgICAsIG1fb3BlbmVkKGZhbHNlKQorICAgICwgbV9uZXcoZmFsc2UpCisgICAgLCBtX2Ny
ZWF0aW9uQ2FsbGJhY2soY3JlYXRpb25DYWxsYmFjaykKIHsKKyAgICBBU1NFUlQobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LmdldCgpKTsKKyAgICBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdp
biA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICBtX2Rh
dGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdp
bi0+dGhyZWFkc2FmZUNvcHkoKTsKKyAgICBpZiAobV9uYW1lLmlzTnVsbCgpKQorICAgICAgICBt
X25hbWUgPSAiIjsKIAogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKworICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCksIG5hbWUpOworCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
Z3VpZE11dGV4KCkpOworCisgICAgICAgIEhhc2hTZXQ8RGF0YWJhc2UqPiogaGFzaFNldCA9IGd1
aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3VpZCk7CisgICAgICAgIGlmICghaGFzaFNldCkgewor
ICAgICAgICAgICAgaGFzaFNldCA9IG5ldyBIYXNoU2V0PERhdGFiYXNlKj47CisgICAgICAgICAg
ICBndWlkVG9EYXRhYmFzZU1hcCgpLnNldChtX2d1aWQsIGhhc2hTZXQpOworICAgICAgICB9CisK
KyAgICAgICAgaGFzaFNldC0+YWRkKHRoaXMpOworICAgIH0KKwogICAgIEFTU0VSVChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpOworICAgIG1fZmlsZW5hbWUgPSBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKHNlY3VyaXR5T3Jp
Z2luKCksIG1fbmFtZSk7CiAKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE9wZW5E
YXRhYmFzZSh0aGlzKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5hZGRPcGVuRGF0
YWJhc2UodGhpcyk7CisgICAgY29udGV4dC0+YWRkT3BlbkRhdGFiYXNlKHRoaXMpOwogfQogCiBj
bGFzcyBEZXJlZkNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sgewpAQCAtMTY3LDIxICsyNTMsMTUgQEAgRGF0YWJhc2U6On5EYXRhYmFzZSgpCiAgICAgfQog
fQogCi1TdHJpbmcgRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAotewotICAgIGlmIChtX2RlbGV0
ZWQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFz
ZTo6dmVyc2lvbigpOwotfQotCi1ib29sIERhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihi
b29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBlKQorYm9vbCBEYXRh
YmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oRXhjZXB0aW9uQ29kZSYgZSkKIHsKICAgICBpZiAo
IW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1fZGF0YWJhc2VBdXRob3JpemVyID0gRGF0YWJhc2VBdXRob3JpemVy
OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIERhdGFiYXNlVGFz
a1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+
IHRhc2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0
YWJhc2UsICZzeW5jaHJvbml6ZXIsIGUsIHN1Y2Nlc3MpOworICAgIE93blB0cjxEYXRhYmFzZU9w
ZW5UYXNrPiB0YXNrID0gRGF0YWJhc2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6
ZXIsIGUsIHN1Y2Nlc3MpOwogCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5
bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKQEAgLTE4OSw2ICsyNjksOTMgQEAg
Ym9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdE
YXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAorCitzdGF0
aWMgYm9vbCByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRi
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKK3sKKyAgICBTUUxp
dGVTdGF0ZW1lbnQgc3RhdGVtZW50KGRiLCBxdWVyeSk7CisgICAgaW50IHJlc3VsdCA9IHN0YXRl
bWVudC5wcmVwYXJlKCk7CisKKyAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdE9rKSB7CisgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgKCVpKSBwcmVwYXJpbmcgc3RhdGVtZW50IHRvIHJlYWQgdGV4
dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0LCBxdWVyeS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBzdGF0ZW1l
bnQuc3RlcCgpOworICAgIGlmIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KSB7CisgICAgICAgIHJl
c3VsdFN0cmluZyA9IHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxSZXN1bHREb25lKSB7CisgICAgICAg
IHJlc3VsdFN0cmluZyA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcmVhZGluZyB0ZXh0IHJlc3VsdCBm
cm9tIGRhdGFiYXNlICglcykiLCByZXN1bHQsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBEYXRhYmFzZTo6Z2V0VmVyc2lvbkZy
b21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGdldFZlcnNpb25RdWVyeSwgKCJTRUxFQ1QgdmFsdWUgRlJPTSAiICsgZGF0YWJhc2VJ
bmZvVGFibGVOYW1lKCkgKyAiIFdIRVJFIGtleSA9ICciICsgZGF0YWJhc2VWZXJzaW9uS2V5KCkg
KyAiJzsiKSk7CisKKyAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOworCisgICAg
Ym9vbCByZXN1bHQgPSByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UobV9zcWxpdGVEYXRh
YmFzZSwgZ2V0VmVyc2lvblF1ZXJ5LnRocmVhZHNhZmVDb3B5KCksIHZlcnNpb24pOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSB2ZXJzaW9u
IGZyb20gZGF0YWJhc2UgJXMiLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsK
KworICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5lbmFibGUoKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0YWJh
c2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAg
IFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoZGIsIHF1ZXJ5KTsKKyAgICBpbnQgcmVzdWx0ID0g
c3RhdGVtZW50LnByZXBhcmUoKTsKKworICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZh
bHVlIGluIGRhdGFiYXNlICglcykiLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgdmFsdWUpOwor
CisgICAgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTFJl
c3VsdERvbmUpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RlcCBzdGF0ZW1lbnQg
dG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcykiLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBEYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQor
eworICAgIC8vIFRoZSBJTlNFUlQgd2lsbCByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5IGZvciB0
aGUgZGF0YWJhc2Ugd2l0aCB0aGUgbmV3IHZlcnNpb24gbnVtYmVyLCBkdWUgdG8gdGhlIFVOSVFV
RSBPTiBDT05GTElDVCBSRVBMQUNFCisgICAgLy8gY2xhdXNlIGluIHRoZSBDUkVBVEUgc3RhdGVt
ZW50IChzZWUgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KCkpLgorICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBzZXRWZXJzaW9uUXVlcnksICgiSU5TRVJUIElOVE8gIiArIGRh
dGFiYXNlSW5mb1RhYmxlTmFtZSgpICsgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnIiArIGRhdGFi
YXNlVmVyc2lvbktleSgpICsgIicsID8pOyIpKTsKKworICAgIG1fZGF0YWJhc2VBdXRob3JpemVy
LT5kaXNhYmxlKCk7CisKKyAgICBib29sIHJlc3VsdCA9IHNldFRleHRWYWx1ZUluRGF0YWJhc2Uo
bV9zcWxpdGVEYXRhYmFzZSwgc2V0VmVyc2lvblF1ZXJ5LnRocmVhZHNhZmVDb3B5KCksIHZlcnNp
b24pOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQg
dmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAoJXMpIiwgdmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgc2V0
VmVyc2lvblF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKworICAgIG1fZGF0YWJhc2VBdXRob3JpemVy
LT5lbmFibGUoKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgRGF0YWJhc2U6OnZl
cnNpb25NYXRjaGVzRXhwZWN0ZWQoKSBjb25zdAoreworICAgIGlmICghbV9leHBlY3RlZFZlcnNp
b24uaXNFbXB0eSgpKSB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7
CisgICAgICAgIHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbiA9PSBndWlkVG9WZXJzaW9uTWFwKCku
Z2V0KG1fZ3VpZCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgRGF0YWJh
c2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpCiB7CiAgICAgaWYgKG1fZGVsZXRlZCB8fCAhbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQpAQCAtMjQzLDEzICs0MTAs
MzAgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoQ2xvc2VQb2xpY3kgcG9saWN5KQogewogICAgIFJl
ZlB0cjxEYXRhYmFzZT4gcHJvdGVjdCA9IHRoaXM7CiAKKyAgICBpZiAoIW1fb3BlbmVkKQorICAg
ICAgICByZXR1cm47CisKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7Ci0KLSAgICBj
bG9zZURhdGFiYXNlKCk7Ci0KKyAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgLy8g
TXVzdCByZWYoKSBiZWZvcmUgY2FsbGluZyBkYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFz
ZUNsb3NlZCgpLgogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQo
KS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7CisgICAgbV9vcGVuZWQgPSBmYWxzZTsKKwor
ICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKKworICAgICAg
ICBIYXNoU2V0PERhdGFiYXNlKj4qIGhhc2hTZXQgPSBndWlkVG9EYXRhYmFzZU1hcCgpLmdldCht
X2d1aWQpOworICAgICAgICBBU1NFUlQoaGFzaFNldCk7CisgICAgICAgIEFTU0VSVChoYXNoU2V0
LT5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGhhc2hTZXQtPnJlbW92ZSh0aGlzKTsKKyAgICAg
ICAgaWYgKGhhc2hTZXQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZ3VpZFRvRGF0YWJhc2VN
YXAoKS5yZW1vdmUobV9ndWlkKTsKKyAgICAgICAgICAgIGRlbGV0ZSBoYXNoU2V0OworICAgICAg
ICAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnJlbW92ZShtX2d1aWQpOworICAgICAgICB9CisgICAg
fQorCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT51bnNj
aGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsKICAgICBpZiAocG9saWN5ID09IFJlbW92ZURhdGFi
YXNlRnJvbUNvbnRleHQpCiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soQ29udGV4dFJlbW92ZU9wZW5EYXRhYmFzZVRhc2s6OmNyZWF0ZSh0aGlzKSk7CkBAIC0yODYs
NiArNDcwLDc5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUoKSBj
b25zdAogICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5nZXRNYXhTaXplRm9y
RGF0YWJhc2UodGhpcyk7CiB9CiAKK3ZvaWQgRGF0YWJhc2U6OmRpc2FibGVBdXRob3JpemVyKCkK
K3sKKyAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOworICAgIG1fZGF0YWJhc2VBdXRo
b3JpemVyLT5kaXNhYmxlKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmVuYWJsZUF1dGhvcml6ZXIo
KQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9kYXRhYmFzZUF1
dGhvcml6ZXItPmVuYWJsZSgpOworfQorCit2b2lkIERhdGFiYXNlOjpzZXRBdXRob3JpemVyUmVh
ZE9ubHkoKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9kYXRh
YmFzZUF1dGhvcml6ZXItPnNldFJlYWRPbmx5KCk7Cit9CisKK2Jvb2wgRGF0YWJhc2U6Omxhc3RB
Y3Rpb25DaGFuZ2VkRGF0YWJhc2UoKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXpl
cik7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VBdXRob3JpemVyLT5sYXN0QWN0aW9uQ2hhbmdlZERh
dGFiYXNlKCk7Cit9CisKK2Jvb2wgRGF0YWJhc2U6Omxhc3RBY3Rpb25XYXNJbnNlcnQoKQorewor
ICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VB
dXRob3JpemVyLT5sYXN0QWN0aW9uV2FzSW5zZXJ0KCk7Cit9CisKK3ZvaWQgRGF0YWJhc2U6OnJl
c2V0RGVsZXRlcygpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKKyAgICBt
X2RhdGFiYXNlQXV0aG9yaXplci0+cmVzZXREZWxldGVzKCk7Cit9CisKK2Jvb2wgRGF0YWJhc2U6
OmhhZERlbGV0ZXMoKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAg
cmV0dXJuIG1fZGF0YWJhc2VBdXRob3JpemVyLT5oYWREZWxldGVzKCk7Cit9CisKK3N0YXRpYyBp
bnQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBTdHJpbmcgc3RyaW5nSUQ7CisgICAgaWYgKG9yaWdpbi5lbmRzV2l0
aCgiLyIpKQorICAgICAgICBzdHJpbmdJRCA9IG9yaWdpbiArIG5hbWU7CisgICAgZWxzZQorICAg
ICAgICBzdHJpbmdJRCA9IG9yaWdpbiArICIvIiArIG5hbWU7CisKKyAgICAvLyBOb3RlOiBXZSBk
b24ndCBoYXZlIHRvIHVzZSBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNl
CisgICAgLy8gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Ig
b24gdGhlIG1haW4gdGhyZWFkCisgICAgLy8gYmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQg
Y2FsbCB0aGlzIGZ1bmN0aW9uIGFyZSB1c2VkLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0
ZXgsIHN0cmluZ0lkZW50aWZpZXJNdXRleCwgKCkpOworICAgIE11dGV4TG9ja2VyIGxvY2tlcihz
dHJpbmdJZGVudGlmaWVyTXV0ZXgpOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4g
SURHdWlkTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSURHdWlkTWFwLCBzdHJpbmdJZGVu
dGlmaWVyVG9HVUlETWFwLCAoKSk7CisgICAgaW50IGd1aWQgPSBzdHJpbmdJZGVudGlmaWVyVG9H
VUlETWFwLmdldChzdHJpbmdJRCk7CisgICAgaWYgKCFndWlkKSB7CisgICAgICAgIHN0YXRpYyBp
bnQgY3VycmVudE5ld0dVSUQgPSAxOworICAgICAgICBndWlkID0gY3VycmVudE5ld0dVSUQrKzsK
KyAgICAgICAgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5zZXQoc3RyaW5nSUQsIGd1aWQpOwor
ICAgIH0KKworICAgIHJldHVybiBndWlkOworfQorCit2b2lkIERhdGFiYXNlOjpyZXNldEF1dGhv
cml6ZXIoKQoreworICAgIGlmIChtX2RhdGFiYXNlQXV0aG9yaXplcikKKyAgICAgICAgbV9kYXRh
YmFzZUF1dGhvcml6ZXItPnJlc2V0KCk7Cit9CisKIHZvaWQgRGF0YWJhc2U6OnBlcmZvcm1Qb2xp
Y3lDaGVja3MoKQogewogICAgIC8vIEZJWE1FOiBDb2RlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2lu
ZyB3aWxsIG5lZWQgdG8gYmUgcnVuIHRvIGVuZm9yY2UgdGhlIHBlci1vcmlnaW4gc2l6ZSBsaW1p
dCB0aGUgc3BlYyBtYW5kYXRlcy4KQEAgLTMwMCwxNiArNTU3LDkyIEBAIHZvaWQgRGF0YWJhc2U6
OnBlcmZvcm1Qb2xpY3lDaGVja3MoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wg
RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UsIEV4Y2VwdGlvbkNvZGUmIGUpCitib29sIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eShFeGNlcHRpb25Db2RlJiBlKQogewotICAgIGlmIChBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgZSkpIHsKLSAgICAgICAgaWYg
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKLSAgICAgICAgICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJh
c2VPcGVuKHRoaXMpOworICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5vcGVuKG1fZmlsZW5hbWUs
IHRydWUpKSB7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UgYXQg
cGF0aCAlcyIsIG1fZmlsZW5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBlID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFtX3Nx
bGl0ZURhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQorICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byB0dXJuIG9uIGluY3JlbWVudGFsIGF1dG8tdmFjdXVtIGZvciBkYXRh
YmFzZSAlcyIsIG1fZmlsZW5hbWUuYXNjaWkoKS5kYXRhKCkpOwogCi0gICAgICAgIHJldHVybiB0
cnVlOworICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9zcWxpdGVEYXRh
YmFzZS5zZXRBdXRob3JpemVyKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKKyAgICBtX3NxbGl0ZURh
dGFiYXNlLnNldEJ1c3lUaW1lb3V0KG1heFNxbGl0ZUJ1c3lXYWl0VGltZSk7CisKKyAgICBTdHJp
bmcgY3VycmVudFZlcnNpb247CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3Vp
ZE11dGV4KCkpOworCisgICAgICAgIEd1aWRWZXJzaW9uTWFwOjppdGVyYXRvciBlbnRyeSA9IGd1
aWRUb1ZlcnNpb25NYXAoKS5maW5kKG1fZ3VpZCk7CisgICAgICAgIGlmIChlbnRyeSAhPSBndWlk
VG9WZXJzaW9uTWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIE1hcCBudWxsIHN0cmluZyB0
byBlbXB0eSBzdHJpbmcgKHNlZSB1cGRhdGVHdWlkVmVyc2lvbk1hcCgpKS4KKyAgICAgICAgICAg
IGN1cnJlbnRWZXJzaW9uID0gZW50cnktPnNlY29uZC5pc051bGwoKSA/IFN0cmluZygiIikgOiBl
bnRyeS0+c2Vjb25kOworICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJDdXJyZW50IGNhY2hl
ZCB2ZXJzaW9uIGZvciBndWlkICVpIGlzICVzIiwgbV9ndWlkLCBjdXJyZW50VmVyc2lvbi5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIk5vIGNhY2hlZCB2ZXJzaW9uIGZvciBndWlkICVpIiwgbV9ndWlkKTsKKworICAgICAgICAg
ICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRhYmxlRXhpc3RzKGRhdGFiYXNlSW5mb1RhYmxlTmFt
ZSgpKSkgeworICAgICAgICAgICAgICAgIG1fbmV3ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFICIgKyBk
YXRhYmFzZUluZm9UYWJsZU5hbWUoKSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBjcmVhdGUgdGFibGUgJXMgaW4gZGF0YWJhc2UgJXMiLCBkYXRhYmFzZUluZm9UYWJsZU5h
bWUoKS5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgICAgICAgICAgICAgIGUgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQ2xvc2UgdGhlIGhhbmRsZSB0byB0aGUgZGF0YWJhc2UgZmlsZS4KKyAgICAg
ICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIWdldFZlcnNpb25Gcm9tRGF0YWJhc2UoY3VycmVudFZlcnNpb24pKSB7
CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGN1cnJlbnQgdmVyc2lv
biBmcm9tIGRhdGFiYXNlICVzIiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgICAgICAgICAgZSA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAgICAg
IC8vIENsb3NlIHRoZSBoYW5kbGUgdG8gdGhlIGRhdGFiYXNlIGZpbGUuCisgICAgICAgICAgICAg
ICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJyZW50VmVyc2lvbi5sZW5ndGgo
KSkgeworICAgICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiUmV0cmlldmVkIGN1cnJlbnQg
dmVyc2lvbiAlcyBmcm9tIGRhdGFiYXNlICVzIiwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRh
KCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgfSBl
bHNlIGlmICghbV9uZXcgfHwgIW1fY3JlYXRpb25DYWxsYmFjaykgeworICAgICAgICAgICAgICAg
IExPRyhTdG9yYWdlQVBJLCAiU2V0dGluZyB2ZXJzaW9uICVzIGluIGRhdGFiYXNlICVzIHRoYXQg
d2FzIGp1c3QgY3JlYXRlZCIsIG1fZXhwZWN0ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRh
YmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNl
dFZlcnNpb25JbkRhdGFiYXNlKG1fZXhwZWN0ZWRWZXJzaW9uKSkgeworICAgICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgdmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAlcyIs
IG1fZXhwZWN0ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZSA9IElOVkFMSURfU1RBVEVfRVJS
OworICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFz
ZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBtX2V4cGVjdGVkVmVyc2lvbjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdXBkYXRlR3VpZFZlcnNpb25NYXAobV9ndWlkLCBjdXJyZW50
VmVyc2lvbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY3VycmVudFZlcnNpb24uaXNO
dWxsKCkpIHsKKyAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBkb2VzIG5vdCBo
YXZlIGl0cyB2ZXJzaW9uIHNldCIsIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICBjdXJyZW50VmVyc2lvbiA9ICIiOwogICAgIH0KIAotICAgIHJldHVybiBmYWxz
ZTsKKyAgICAvLyBJZiB0aGUgZXhwZWN0ZWQgdmVyc2lvbiBpc24ndCB0aGUgZW1wdHkgc3RyaW5n
LCBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBkYXRhYmFzZSB2ZXJzaW9uIHdlIGhhdmUgbWF0Y2hl
cyB0aGF0IHZlcnNpb24uIE90aGVyd2lzZSwgc2V0IGFuIGV4Y2VwdGlvbi4KKyAgICAvLyBJZiB0
aGUgZXhwZWN0ZWQgdmVyc2lvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHdlIGFsd2F5cyBy
ZXR1cm4gd2l0aCB3aGF0ZXZlciB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSB3ZSBoYXZlLgorICAg
IGlmICgoIW1fbmV3IHx8ICFtX2NyZWF0aW9uQ2FsbGJhY2spICYmIG1fZXhwZWN0ZWRWZXJzaW9u
Lmxlbmd0aCgpICYmIG1fZXhwZWN0ZWRWZXJzaW9uICE9IGN1cnJlbnRWZXJzaW9uKSB7CisgICAg
ICAgIExPRyhTdG9yYWdlQVBJLCAicGFnZSBleHBlY3RzIHZlcnNpb24gJXMgZnJvbSBkYXRhYmFz
ZSAlcywgd2hpY2ggYWN0dWFsbHkgaGFzIHZlcnNpb24gbmFtZSAlcyAtIG9wZW5EYXRhYmFzZSgp
IGNhbGwgd2lsbCBmYWlsIiwgbV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksCisgICAg
ICAgICAgICBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpLCBjdXJyZW50VmVyc2lv
bi5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGUgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgLy8gQ2xvc2UgdGhlIGhhbmRsZSB0byB0aGUgZGF0YWJhc2UgZmlsZS4KKyAgICAgICAgbV9z
cWxpdGVEYXRhYmFzZS5jbG9zZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gQWxsIGNoZWNrcyBwYXNzZWQgYW5kIHdlIHN0aWxsIGhhdmUgYSBoYW5kbGUgdG8gdGhp
cyBkYXRhYmFzZSBmaWxlLgorICAgIC8vIE1ha2Ugc3VyZSBEYXRhYmFzZVRocmVhZCBjbG9zZXMg
aXQgd2hlbiBEYXRhYmFzZVRocmVhZCBnb2VzIGF3YXkuCisgICAgbV9vcGVuZWQgPSB0cnVlOwor
ICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpCisgICAg
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0
YWJhc2VPcGVuKHRoaXMpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgRGF0YWJhc2U6
OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5l
d1ZlcnNpb24sCkBAIC00MjQsNiArNzU3LDExIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpw
ZXJmb3JtR2V0VGFibGVOYW1lcygpCiAgICAgcmV0dXJuIHRhYmxlTmFtZXM7CiB9CiAKK3ZvaWQg
RGF0YWJhc2U6OnBlcmZvcm1DcmVhdGlvbkNhbGxiYWNrKCkKK3sKKyAgICBtX2NyZWF0aW9uQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcyk7
Cit9CisKIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNl
VGhyZWFkKCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7CkBAIC00MzQsNiArNzcyLDE0IEBAIFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IqIERhdGFiYXNlOjp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkg
Y29uc3QKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVh
ZCgpLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CiB9CiAKK1N0cmluZyBEYXRhYmFzZTo6dmVy
c2lvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fZGVsZXRlZCkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CisgICAgcmV0dXJuIGd1
aWRUb1ZlcnNpb25NYXAoKS5nZXQobV9ndWlkKS50aHJlYWRzYWZlQ29weSgpOworfQorCiBWZWN0
b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB1
c2luZyB0aHJlYWRzYWZlQ29weSBvbiB0aGVzZSBzdHJpbmdzIGxvb2tzIG9rIHNpbmNlIHRocmVh
ZHMgdGFrZSBzdHJpY3QgdHVybnMKQEAgLTQ1MSw2ICs3OTcsMTQgQEAgVmVjdG9yPFN0cmluZz4g
RGF0YWJhc2U6OnRhYmxlTmFtZXMoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgRGF0
YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCit7CisgICAg
bV9leHBlY3RlZFZlcnNpb24gPSB2ZXJzaW9uLnRocmVhZHNhZmVDb3B5KCk7CisgICAgLy8gVXBk
YXRlIHRoZSBpbiBtZW1vcnkgZGF0YWJhc2UgdmVyc2lvbiBtYXAuCisgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKGd1aWRNdXRleCgpKTsKKyAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcChtX2d1aWQsIHZl
cnNpb24pOworfQorCiBTZWN1cml0eU9yaWdpbiogRGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKIHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJl
YWQoKSkKQEAgLTQ2MCw2ICs4MTQsMjkgQEAgU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1N0cmluZyBEYXRhYmFzZTo6
c3RyaW5nSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZv
ciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQorICAgIHJldHVybiBtX25hbWUudGhyZWFkc2Fm
ZUNvcHkoKTsKK30KKworU3RyaW5nIERhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNvbnN0Cit7Cisg
ICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQor
ICAgIHJldHVybiBtX2Rpc3BsYXlOYW1lLnRocmVhZHNhZmVDb3B5KCk7Cit9CisKK3Vuc2lnbmVk
IGxvbmcgRGF0YWJhc2U6OmVzdGltYXRlZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Vz
dGltYXRlZFNpemU7Cit9CisKK1N0cmluZyBEYXRhYmFzZTo6ZmlsZU5hbWUoKSBjb25zdAorewor
ICAgIC8vIFJldHVybiBhIGRlZXAgY29weSBmb3IgcmVmIGNvdW50aW5nIHRocmVhZCBzYWZldHkK
KyAgICByZXR1cm4gbV9maWxlbmFtZS50aHJlYWRzYWZlQ29weSgpOworfQorCiB2b2lkIERhdGFi
YXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCkKIHsKICAgICBpbnQ2NF90IGZyZWVTcGFj
ZVNpemUgPSBtX3NxbGl0ZURhdGFiYXNlLmZyZWVTcGFjZVNpemUoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgKaW5k
ZXggYmMxMjc5Yzk5Yjg2NmZkZjUxYTdmZDU0NDMxMGY2MGU4YmYwMDQyOS4uNDk1Zjk4ZmUzOWZh
MWM5YWE1ZmE5NTAyMjFmOTZkNGQzODFlODRmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgKQEAgLTMzLDEzICsz
MywxOCBAQAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaWZuZGVmIE5ERUJVRwor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRGF0YWJhc2VBdXRob3JpemVyOwogY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKK2NsYXNz
IERhdGFiYXNlVGhyZWFkOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU1FMVHJhbnNhY3Rpb247CkBAIC00OSw2ICs1NCw4IEBAIGNs
YXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKIGNsYXNzIERhdGFiYXNlIDogcHVibGljIEFic3RyYWN0RGF0YWJhc2UgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CkBAIC01NiwxNyArNjMsMzcgQEAgcHVibGljOgog
ICAgIC8vIERpcmVjdCBzdXBwb3J0IGZvciB0aGUgRE9NIEFQSQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxs
YmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29u
c3Q7CisgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2b2lkIGNoYW5nZVZlcnNpb24o
Y29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sCiAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayk7CiAgICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaz4sCiAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBib29sIHJlYWRPbmx5KTsKIAogICAgIC8vIEludGVybmFsIGVuZ2lu
ZSBzdXBwb3J0CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1l
KCk7CisKKyAgICB2b2lkIGRpc2FibGVBdXRob3JpemVyKCk7CisgICAgdm9pZCBlbmFibGVBdXRo
b3JpemVyKCk7CisgICAgdm9pZCBzZXRBdXRob3JpemVyUmVhZE9ubHkoKTsKKyAgICBib29sIGxh
c3RBY3Rpb25DaGFuZ2VkRGF0YWJhc2UoKTsKKyAgICBib29sIGxhc3RBY3Rpb25XYXNJbnNlcnQo
KTsKKyAgICB2b2lkIHJlc2V0RGVsZXRlcygpOworICAgIGJvb2wgaGFkRGVsZXRlcygpOworCiAg
ICAgVmVjdG9yPFN0cmluZz4gdGFibGVOYW1lcygpOwogCisgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOyB9CiAgICAgdmlydHVhbCBTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICBTUUxpdGVEYXRhYmFzZSYgc3FsaXRlRGF0
YWJhc2UoKSB7IHJldHVybiBtX3NxbGl0ZURhdGFiYXNlOyB9CisgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1l
KCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTmFtZSgpIGNvbnN0OworCisgICAgYm9vbCBnZXRW
ZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYpOworICAgIGJvb2wgc2V0VmVyc2lvbkluRGF0YWJh
c2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRFeHBlY3RlZFZlcnNpb24oY29uc3QgU3Ry
aW5nJik7CisgICAgYm9vbCB2ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHZvaWQgbWFya0FzRGVsZXRlZEFuZENsb3NlKCk7CiAgICAgYm9vbCBkZWxldGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWxldGVkOyB9CkBAIC03NCwyMyArMTAxLDI4IEBAIHB1YmxpYzoK
ICAgICBlbnVtIENsb3NlUG9saWN5IHsgRG9Ob3RSZW1vdmVEYXRhYmFzZUZyb21Db250ZXh0LCBS
ZW1vdmVEYXRhYmFzZUZyb21Db250ZXh0IH07CiAgICAgdm9pZCBjbG9zZShDbG9zZVBvbGljeSk7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW1tZWRpYXRlbHkoKTsKKyAgICBib29sIG9wZW5lZCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlbmVkOyB9CiAKICAgICB2b2lkIHN0b3AoKTsKICAgICBib29s
IHN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KIAorICAgIGJvb2wgaXNOZXco
KSBjb25zdCB7IHJldHVybiBtX25ldzsgfQorCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFi
YXNlU2l6ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhpbXVtU2l6ZSgpIGNv
bnN0OwogCiAgICAgLy8gQ2FsbGVkIGZyb20gRGF0YWJhc2VUaHJlYWQsIG11c3QgYmUgcHJlcGFy
ZWQgdG8gd29yayBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQKKyAgICB2b2lkIHJlc2V0QXV0aG9y
aXplcigpOwogICAgIHZvaWQgcGVyZm9ybVBvbGljeUNoZWNrcygpOwogCi0gICAgdmlydHVhbCBi
b29sIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIHZvaWQgaW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCk7CiAgICAg
dm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uQ2FsbGJhY2soU1FMVHJhbnNhY3Rpb24qKTsKICAgICB2
b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uKiwgYm9vbCBpbW1lZGlh
dGVseSA9IGZhbHNlKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1HZXRUYWJsZU5hbWVz
KCk7CisgICAgdm9pZCBwZXJmb3JtQ3JlYXRpb25DYWxsYmFjaygpOwogCiAgICAgU1FMVHJhbnNh
Y3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3Q7CiAgICAgU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0OwpAQCAtOTksMjMg
KzEzMSw0NSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZl
cnNpb24sCi0gICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxs
YmFjaz4pOwogCi0gICAgYm9vbCBvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBvcGVuQW5kVmVyaWZ5VmVy
c2lvbihFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsK
IAotICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2sodm9pZCopOwotCiAgICAg
RGVxdWU8UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiA+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKICAgICBN
dXRleCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4OwogICAgIGJvb2wgbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3M7CiAgICAgYm9vbCBtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQ7CiAKKyAg
ICBzdGF0aWMgdm9pZCBkZWxpdmVyUGVuZGluZ0NhbGxiYWNrKHZvaWQqKTsKKworICAgIFJlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbjsK
KyAgICBTdHJpbmcgbV9uYW1lOworICAgIGludCBtX2d1aWQ7CisgICAgU3RyaW5nIG1fZXhwZWN0
ZWRWZXJzaW9uOworICAgIFN0cmluZyBtX2Rpc3BsYXlOYW1lOworICAgIHVuc2lnbmVkIGxvbmcg
bV9lc3RpbWF0ZWRTaXplOworICAgIFN0cmluZyBtX2ZpbGVuYW1lOwogCiAgICAgYm9vbCBtX2Rl
bGV0ZWQ7CisKICAgICBib29sIG1fc3RvcHBlZDsKKworICAgIGJvb2wgbV9vcGVuZWQ7CisKKyAg
ICBib29sIG1fbmV3OworCisgICAgU1FMaXRlRGF0YWJhc2UgbV9zcWxpdGVEYXRhYmFzZTsKKyAg
ICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2RhdGFiYXNlQXV0aG9yaXplcjsKKworICAg
IFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBtX2NyZWF0aW9uQ2FsbGJhY2s7CisKKyNpZm5kZWYg
TkRFQlVHCisgICAgU3RyaW5nIGRhdGFiYXNlRGVidWdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkgKyAiOjoiICsgbV9uYW1lOyB9
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlQXV0aG9yaXplci5jcHAKaW5kZXggZDE1NWQ2Y2ZmNjUwMTM2NzQ1NGIzMjlhMGU3ZmIwMTE1
Njg5ODQ2ZS4uMWVhOTlkOTY0YTA2Y2EyOTRkNmIwZDJmYTA3MTJlYjcxMGMxMGVhNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKQEAgLTMwLDE5ICszMCwxMyBAQAogI2lu
Y2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQorI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8
RGF0YWJhc2VBdXRob3JpemVyPiBEYXRhYmFzZUF1dGhvcml6ZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERh
dGFiYXNlQXV0aG9yaXplcihkYXRhYmFzZUluZm9UYWJsZU5hbWUpKTsKLX0KLQotRGF0YWJhc2VB
dXRob3JpemVyOjpEYXRhYmFzZUF1dGhvcml6ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9U
YWJsZU5hbWUpCitEYXRhYmFzZUF1dGhvcml6ZXI6OkRhdGFiYXNlQXV0aG9yaXplcigpCiAgICAg
OiBtX3NlY3VyaXR5RW5hYmxlZChmYWxzZSkKLSAgICAsIG1fZGF0YWJhc2VJbmZvVGFibGVOYW1l
KGRhdGFiYXNlSW5mb1RhYmxlTmFtZSkKIHsKICAgICByZXNldCgpOwogICAgIGFkZFdoaXRlbGlz
dGVkRnVuY3Rpb25zKCk7CkBAIC0zOTQsNyArMzg4LDcgQEAgdm9pZCBEYXRhYmFzZUF1dGhvcml6
ZXI6OnNldFJlYWRPbmx5KCkKICAgICBtX3JlYWRPbmx5ID0gdHJ1ZTsKIH0KIAotaW50IERhdGFi
YXNlQXV0aG9yaXplcjo6ZGVueUJhc2VkT25UYWJsZU5hbWUoY29uc3QgU3RyaW5nJiB0YWJsZU5h
bWUpIGNvbnN0CitpbnQgRGF0YWJhc2VBdXRob3JpemVyOjpkZW55QmFzZWRPblRhYmxlTmFtZShj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKICAgICBpZiAoIW1fc2VjdXJpdHlFbmFibGVkKQog
ICAgICAgICByZXR1cm4gU1FMQXV0aEFsbG93OwpAQCAtNDA1LDcgKzM5OSw3IEBAIGludCBEYXRh
YmFzZUF1dGhvcml6ZXI6OmRlbnlCYXNlZE9uVGFibGVOYW1lKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKSBjb25zdAogICAgIC8vICAgIGVxdWFsSWdub3JpbmdDYXNlKHRhYmxlTmFtZSwgInNxbGl0
ZV9zZXF1ZW5jZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHRhYmxlTmFtZSwgRGF0YWJhc2U6OmRh
dGFiYXNlSW5mb1RhYmxlTmFtZSgpKSkKICAgICAvLyAgICAgICAgcmV0dXJuIFNRTEF1dGhEZW55
OwogCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRhYmxlTmFtZSwgbV9kYXRhYmFzZUluZm9U
YWJsZU5hbWUpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0YWJsZU5hbWUsIERhdGFiYXNl
OjpkYXRhYmFzZUluZm9UYWJsZU5hbWUoKSkpCiAgICAgICAgIHJldHVybiBTUUxBdXRoRGVueTsK
IAogICAgIHJldHVybiBTUUxBdXRoQWxsb3c7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VBdXRob3JpemVyLmggYi9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVy
LmgKaW5kZXggYWY2ZTAxNmY0NzAzOTAzYjM0NWExYjE5ZGI3NjdjMGMwNjdhMmFkNi4uN2RhMDE0
Mzg4NTRiZjYyZGUxMmY0NjQ2NmViMzE0ZmQ5MDc4MGVjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUF1dGhvcml6ZXIuaApAQCAtMjgsMTEgKzI4LDEwIEBACiAjaWZuZGVmIERhdGFiYXNlQXV0aG9y
aXplcl9oCiAjZGVmaW5lIERhdGFiYXNlQXV0aG9yaXplcl9oCiAKLSNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVT
aGFyZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NCw3ICs0Myw3IEBAIGV4dGVy
biBjb25zdCBpbnQgU1FMQXV0aERlbnk7CiAKIGNsYXNzIERhdGFiYXNlQXV0aG9yaXplciA6IHB1
YmxpYyBUaHJlYWRTYWZlU2hhcmVkPERhdGFiYXNlQXV0aG9yaXplcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlQXV0aG9yaXplcj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1lKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFz
ZUF1dGhvcml6ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhYmFzZUF1dGhv
cml6ZXIpOyB9CiAKICAgICBpbnQgY3JlYXRlVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUp
OwogICAgIGludCBjcmVhdGVUZW1wVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpOwpAQCAt
OTgsOSArOTcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYWREZWxldGVzKCkgY29uc3QgeyByZXR1
cm4gbV9oYWREZWxldGVzOyB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YWJhc2VBdXRob3JpemVyKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1lKTsKKyAgICBEYXRhYmFzZUF1dGhvcml6
ZXIoKTsKICAgICB2b2lkIGFkZFdoaXRlbGlzdGVkRnVuY3Rpb25zKCk7Ci0gICAgaW50IGRlbnlC
YXNlZE9uVGFibGVOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGludCBkZW55QmFzZWRP
blRhYmxlTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBpbnQgdXBkYXRlRGVsZXRlc0Jhc2VkT25U
YWJsZU5hbWUoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIG1fc2VjdXJpdHlFbmFibGVkIDog
MTsKQEAgLTEwOSw4ICsxMDgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZWFkT25seSA6IDE7
CiAgICAgYm9vbCBtX2hhZERlbGV0ZXMgOiAxOwogCi0gICAgY29uc3QgU3RyaW5nIG1fZGF0YWJh
c2VJbmZvVGFibGVOYW1lOwotCiAgICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4g
bV93aGl0ZWxpc3RlZEZ1bmN0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVN5bmMuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKaW5k
ZXggMmMxYzRhNTQ3YTY2ZTdhZTZiYjJhMWZiMDRmN2NmYjUxNzc5NjgzYi4uMGQzYmVkNTVlZWIy
OTlhMjM1NjljYWUyYjI5NTI5MjlhN2NhODllOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAK
QEAgLTMxLDExMCArMzEsNjggQEAKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNpbmNsdWRlICJE
YXRhYmFzZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPERhdGFiYXNlU3luYz4g
RGF0YWJhc2VTeW5jOjpvcGVuRGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
UGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK2NvbnN0IFN0cmluZyYgRGF0YWJhc2VTeW5jOjpkYXRhYmFzZUluZm9UYWJsZU5h
bWUoKQogewotICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0KLSAgICBp
ZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRl
eHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgewotICAgICAgICBMT0coU3Rv
cmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0
YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
Ci0gICAgUmVmUHRyPERhdGFiYXNlU3luYz4gZGF0YWJhc2UgPSBhZG9wdFJlZihuZXcgRGF0YWJh
c2VTeW5jKGNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUpKTsKLQotICAgIGlmICghZGF0YWJhc2UtPnBlcmZvcm1PcGVuQW5kVmVyaWZ5KCFj
cmVhdGlvbkNhbGxiYWNrLCBlYykpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJGYWlsZWQg
dG8gb3BlbiBhbmQgdmVyaWZ5IHZlcnNpb24gKGV4cGVjdGVkICVzKSBvZiBkYXRhYmFzZSAlcyIs
IGV4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2UtPmRhdGFiYXNlRGVidWdO
YW1lKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURldGFp
bHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1lLCAoIl9fV2ViS2l0
RGF0YWJhc2VJbmZvVGFibGVfXyIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KIAotICAgIGlmIChk
YXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7Ci0gICAgICAgIGRh
dGFiYXNlLT5tX2V4cGVjdGVkVmVyc2lvbiA9ICIiOwotICAgICAgICBMT0coU3RvcmFnZUFQSSwg
Ikludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFi
YXNlLmdldCgpKTsKLSAgICAgICAgY3JlYXRpb25DYWxsYmFjay0+aGFuZGxlRXZlbnQoY29udGV4
dCwgZGF0YWJhc2UuZ2V0KCkpOwotICAgIH0KK1Bhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRh
YmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIFBh
c3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IEZJWE1FOiB1bmNvbW1lbnQgdGhlIGFzc2VydCBvbmNlIHdlIHVzZSB0aGUgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogcGFyYW1ldGVyCisgICAgLy9BU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhy
ZWFkKCkpOwogCi0gICAgcmV0dXJuIGRhdGFiYXNlOworICAgIGVjID0gU0VDVVJJVFlfRVJSOwor
ICAgIHJldHVybiAwOwogfQogCiBEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQotICAgIDogQWJzdHJh
Y3REYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFi
YXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKKyAgICAsIG1fbmFtZShuYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisg
ICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJpbmco
KSkKKyAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkK
KyAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQorICAgICwgbV9jcmVhdGlvbkNh
bGxiYWNrKGNyZWF0aW9uQ2FsbGJhY2spCiB7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKTsKIH0KIAogRGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKCkKIHsKICAgICBB
U1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAg
aWYgKG9wZW5lZCgpKSB7Ci0gICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7Ci0gICAgICBjbG9zZURhdGFiYXNlKCk7Ci0gICAgfQogfQogCi12
b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29k
ZSYpCitTdHJpbmcgRGF0YWJhc2VTeW5jOjp2ZXJzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi12b2lkIERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIGJvb2wsIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUm
KQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKIH0KIAotdm9pZCBEYXRhYmFzZVN5bmM6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpCit2
b2lkIERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjaz4sIGJvb2wsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIC8vIEZJWE1FOiBuZWVk
IHRvIGRvIHNvbWV0aGluZyBzaW1pbGFyIHRvIGNsb3NlSW1tZWRpYXRlbHkoKSwgYnV0IGluIGEg
c3luYyB3YXkKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7CiB9CiAKLWNsYXNzIENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFz
ayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxDbG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRhc2s+IGNy
ZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gZGF0YWJhc2UpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbmV3IENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzayhkYXRhYmFzZSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKQotICAgIHsKLSAgICAgICAgbV9kYXRhYmFzZS0+Y2xvc2VJbW1lZGlhdGVseSgpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBDbG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRh
c2soUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlKQotICAgICAgICA6IG1fZGF0YWJh
c2UoZGF0YWJhc2UpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1f
ZGF0YWJhc2U7Ci19OwotCi12b2lkIERhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSgpCitT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBEYXRhYmFzZVN5bmM6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSkgewotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzazo6Y3JlYXRlKHRoaXMpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghb3BlbmVkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0
aGlzKTsKLQotICAgIGNsb3NlRGF0YWJhc2UoKTsKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlU3luYy5oCmluZGV4IDk2YjRmN2RmOWJhZThiYzEzNDk2ZTBjZDBiYTU1NTQzYWVhY2FiZDcu
LjMyMWI2MjA3YmEzYjVhMzZmZGY5NThlYTQzNGNhMWEwZjMwNmM4ZWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VTeW5jLmgKQEAgLTMwLDM2ICszMCw0OCBAQAogI2RlZmluZSBEYXRhYmFzZVN5bmNfaAogCiAj
aWYgRU5BQkxFKERBVEFCQVNFKQotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaWZuZGVm
IE5ERUJVRwotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrOwogY2xhc3MgU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIC8vIEluc3RhbmNl
cyBvZiB0aGlzIGNsYXNzIHNob3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIG9ubHkgb24gdGhlIHdv
cmtlcidzIGNvbnRleHQgdGhyZWFkLgotY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGljIEFic3Ry
YWN0RGF0YWJhc2UgeworY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0
YWJhc2VTeW5jPiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RGF0YWJhc2VTeW5jKCk7CisgICAg
fkRhdGFiYXNlU3luYygpOwogCisgICAgLy8gRGlyZWN0IHN1cHBvcnQgZm9yIHRoZSBET00gQVBJ
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVuRGF0YWJhc2VTeW5jKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZvaWQgY2hhbmdlVmVyc2lvbihj
b25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBi
b29sIHJlYWRPbmx5LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0Fz
RGVsZXRlZEFuZENsb3NlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlSW1tZWRpYXRlbHkoKTsK
KyAgICAvLyBJbnRlcm5hbCBlbmdpbmUgc3VwcG9ydAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCiBwcml2YXRlOgogICAgIERhdGFiYXNl
U3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXpl
LCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+KTsKKworICAgIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgU3RyaW5nIG1fbmFt
ZTsKKyAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247CisgICAgU3RyaW5nIG1fZGlzcGxheU5h
bWU7CisgICAgdW5zaWduZWQgbG9uZyBtX2VzdGltYXRlZFNpemU7CisgICAgUmVmUHRyPERhdGFi
YXNlQ2FsbGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKKworI2lmbmRlZiBOREVCVUcKKyAgICBT
dHJpbmcgZGF0YWJhc2VEZWJ1Z05hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suY3Bw
CmluZGV4IGJiNDA2YmRkYzRmMjkyZTVjOTdkZGQxZjIzODIwNWVhYTRkNWNkZTQuLjhkNWYwYTg5
NzczOWEyMjNiNGFhNDFiYjA1ZjZjYzExMGQ5MjlmYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVRhc2suY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2su
Y3BwCkBAIC04Nyw5ICs4Nyw4IEBAIHZvaWQgRGF0YWJhc2VUYXNrOjpwZXJmb3JtVGFzaygpCiAv
LyAqKiogRGF0YWJhc2VPcGVuVGFzayAqKioKIC8vIE9wZW5zIHRoZSBkYXRhYmFzZSBmaWxlIGFu
ZCB2ZXJpZmllcyB0aGUgdmVyc2lvbiBtYXRjaGVzIHRoZSBleHBlY3RlZCB2ZXJzaW9uLgogCi1E
YXRhYmFzZU9wZW5UYXNrOjpEYXRhYmFzZU9wZW5UYXNrKERhdGFiYXNlKiBkYXRhYmFzZSwgYm9v
bCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5j
aHJvbml6ZXIsIEV4Y2VwdGlvbkNvZGUmIGNvZGUsIGJvb2wmIHN1Y2Nlc3MpCitEYXRhYmFzZU9w
ZW5UYXNrOjpEYXRhYmFzZU9wZW5UYXNrKERhdGFiYXNlKiBkYXRhYmFzZSwgRGF0YWJhc2VUYXNr
U3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIsIEV4Y2VwdGlvbkNvZGUmIGNvZGUsIGJvb2wmIHN1
Y2Nlc3MpCiAgICAgOiBEYXRhYmFzZVRhc2soZGF0YWJhc2UsIHN5bmNocm9uaXplcikKLSAgICAs
IG1fc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Uoc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpCiAgICAg
LCBtX2NvZGUoY29kZSkKICAgICAsIG1fc3VjY2VzcyhzdWNjZXNzKQogewpAQCAtOTgsNyArOTcs
NyBAQCBEYXRhYmFzZU9wZW5UYXNrOjpEYXRhYmFzZU9wZW5UYXNrKERhdGFiYXNlKiBkYXRhYmFz
ZSwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYgogCiB2b2lkIERhdGFiYXNlT3BlblRhc2s6OmRv
UGVyZm9ybVRhc2soKQogewotICAgIG1fc3VjY2VzcyA9IGRhdGFiYXNlKCktPnBlcmZvcm1PcGVu
QW5kVmVyaWZ5KG1fc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIG1fY29kZSk7CisgICAgbV9zdWNj
ZXNzID0gZGF0YWJhc2UoKS0+cGVyZm9ybU9wZW5BbmRWZXJpZnkobV9jb2RlKTsKIH0KIAogI2lm
bmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suaCBi
L1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suaAppbmRleCBlM2E2MThhYjE5Mjc4MGY5M2U1
OTdkYzcxZDE5NjRkNGJhY2VmOGZjLi4xYTgyMGE1MWYzMTIyNmI4MzBiZTM4YjliMzM0YjI1MmE3
NWYwMzFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGFzay5oCkBAIC04NSwyMCArODUsMTkgQEAgcHJpdmF0
ZToKIAogY2xhc3MgRGF0YWJhc2VPcGVuVGFzayA6IHB1YmxpYyBEYXRhYmFzZVRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IGNyZWF0ZShEYXRh
YmFzZSogZGIsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNo
cm9uaXplciogc3luY2hyb25pemVyLCBFeGNlcHRpb25Db2RlJiBjb2RlLCBib29sJiBzdWNjZXNz
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IGNyZWF0ZShEYXRhYmFz
ZSogZGIsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyLCBFeGNlcHRpb25D
b2RlJiBjb2RlLCBib29sJiBzdWNjZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBEYXRh
YmFzZU9wZW5UYXNrKGRiLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCBj
b2RlLCBzdWNjZXNzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRhYmFzZU9wZW5UYXNrKGRiLCBz
eW5jaHJvbml6ZXIsIGNvZGUsIHN1Y2Nlc3MpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRh
YmFzZU9wZW5UYXNrKERhdGFiYXNlKiwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0
YWJhc2VUYXNrU3luY2hyb25pemVyKiwgRXhjZXB0aW9uQ29kZSYsIGJvb2wmIHN1Y2Nlc3MpOwor
ICAgIERhdGFiYXNlT3BlblRhc2soRGF0YWJhc2UqLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIq
LCBFeGNlcHRpb25Db2RlJiwgYm9vbCYgc3VjY2Vzcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9Q
ZXJmb3JtVGFzaygpOwogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRl
YnVnVGFza05hbWUoKSBjb25zdDsKICNlbmRpZgogCi0gICAgYm9vbCBtX3NldFZlcnNpb25Jbk5l
d0RhdGFiYXNlOwogICAgIEV4Y2VwdGlvbkNvZGUmIG1fY29kZTsKICAgICBib29sJiBtX3N1Y2Nl
c3M7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>