<?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>198837</bug_id>
          
          <creation_ts>2019-06-13 12:04:49 -0700</creation_ts>
          <short_desc>REGRESSION(r246396): Breaks internal builds (Requested by ShawnRoberts on #webkit).</short_desc>
          <delta_ts>2019-06-13 12:08:43 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198644</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>saam</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1544553</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-13 12:04:49 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/246396 broke the build:
Breaks internal builds (Requested by ShawnRoberts on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544556</commentid>
    <comment_count>1</comment_count>
      <attachid>372073</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-13 12:04:56 -0700</bug_when>
    <thetext>Created attachment 372073
ROLLOUT of r246396

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

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544558</commentid>
    <comment_count>2</comment_count>
      <attachid>372073</attachid>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-06-13 12:06:36 -0700</bug_when>
    <thetext>Comment on attachment 372073
ROLLOUT of r246396

Clearing flags on attachment: 372073

Committed r246409: &lt;https://trac.webkit.org/changeset/246409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544559</commentid>
    <comment_count>3</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-06-13 12:06:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544561</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-13 12:08:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/51717315&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372073</attachid>
            <date>2019-06-13 12:04:56 -0700</date>
            <delta_ts>2019-06-13 12:06:36 -0700</delta_ts>
            <desc>ROLLOUT of r246396</desc>
            <filename>bug-198837-20190613120455.patch</filename>
            <type>text/plain</type>
            <size>64367</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdkYzNkOTkyNmI5Zjk4
ODlhZDk4YmY5YmE0NTlhNzgzZThjMDRkOC4uNmVmMGJhYTQ1ZjgzNDMyZGJiMDA1N2Q0YThlMmI3
MzJlZWRmZDYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA2LTEzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQ2Mzk2IGFuZCByMjQ2Mzk3LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODM3CisKKyAgICAgICAgQnJlYWtzIGludGVy
bmFsIGJ1aWxkcyAoUmVxdWVzdGVkIGJ5IFNoYXduUm9iZXJ0cyBvbiAjd2Via2l0KS4KKworICAg
ICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbV0hMU0xdIEhvb2sgdXAgY29t
cHV0ZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODY0NAorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ2Mzk2CisK
KyAgICAgICAgIltXSExTTF0gSG9vayB1cCBjb21wdXRlIgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NjQ0CisgICAgICAgIGh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yNDYzOTcKKwogMjAxOS0wNi0xMyAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgdHdpdGNoLnR2OiBlbWJlZGRlZCB2aWRlbyBo
b3ZlcnMgZG93biB0aGUgc2NyZWVuIHdoZW4gc2Nyb2xsaW5nIG9uIGlQYWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2lu
dFNjYWZmb2xkaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAppbmRleCAzYmFhMzdmYTU0Yzc1NWZk
MTM0ZWJjMjMyNDU3ZjdkMjI0NzQ0OWRiLi5kYThjMDU3ODU3ZTI4ZDJlMWZiZmFmY2RhYmE1MTJl
OWUyMDAzZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
Y3BwCkBAIC0xNzgsNDEgKzE3OCw2IEBAIE9wdGlvbmFsPFN0cmluZz4gRW50cnlQb2ludFNjYWZm
b2xkaW5nOjpyZXNvdXJjZVNpZ25hdHVyZSgpCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnRlcm5hbFR5cGVGb3JTZW1hbnRpYyhjb25z
dCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQotewotICAgIHN3aXRjaCAo
YnVpbHRJblNlbWFudGljLnZhcmlhYmxlKCkpIHsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFu
dGljOjpWYXJpYWJsZTo6U1ZJbnN0YW5jZUlEOgotICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsK
LSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKLSAg
ICAgICAgcmV0dXJuICJ1aW50Il9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6
VmFyaWFibGU6OlBTaXplOgotICAgICAgICByZXR1cm4gImZsb2F0Il9zdHI7Ci0gICAgY2FzZSBB
U1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNWUG9zaXRpb246Ci0gICAgICAgIHJldHVy
biAiZmxvYXQ0Il9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6
OlNWSXNGcm9udEZhY2U6Ci0gICAgICAgIHJldHVybiAiYm9vbCJfc3RyOwotICAgIGNhc2UgQVNU
OjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVlNhbXBsZUluZGV4OgotICAgICAgICByZXR1
cm4gInVpbnQiX3N0cjsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZJbm5lckNvdmVyYWdlOgotICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsKLSAgICBjYXNlIEFT
VDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZUYXJnZXQ6Ci0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEZXB0
aDoKLSAgICAgICAgcmV0dXJuICJmbG9hdCJfc3RyOwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2Vt
YW50aWM6OlZhcmlhYmxlOjpTVkNvdmVyYWdlOgotICAgICAgICByZXR1cm4gInVpbnQiX3N0cjsK
LSAgICBjYXNlIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVh
ZElEOgotICAgICAgICByZXR1cm4gInVpbnQzIl9zdHI7Ci0gICAgY2FzZSBBU1Q6OkJ1aWx0SW5T
ZW1hbnRpYzo6VmFyaWFibGU6OlNWR3JvdXBJRDoKLSAgICAgICAgcmV0dXJuICJ1aW50MyJfc3Ry
OwotICAgIGNhc2UgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpTVkdyb3VwSW5kZXg6
Ci0gICAgICAgIHJldHVybiAidWludCJfc3RyOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VChidWlsdEluU2VtYW50aWMudmFyaWFibGUoKSA9PSBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFy
aWFibGU6OlNWR3JvdXBUaHJlYWRJRCk7Ci0gICAgICAgIHJldHVybiAidWludDMiX3N0cjsKLSAg
ICB9Ci19Ci0KIE9wdGlvbmFsPFN0cmluZz4gRW50cnlQb2ludFNjYWZmb2xkaW5nOjpidWlsdElu
c1NpZ25hdHVyZSgpCiB7CiAgICAgaWYgKCFtX25hbWVkQnVpbHRJbnMuc2l6ZSgpKQpAQCAtMjI1
LDExICsxOTAsOSBAQCBPcHRpb25hbDxTdHJpbmc+IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6YnVp
bHRJbnNTaWduYXR1cmUoKQogICAgICAgICBhdXRvJiBuYW1lZEJ1aWx0SW4gPSBtX25hbWVkQnVp
bHRJbnNbaV07CiAgICAgICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNb
bmFtZWRCdWlsdEluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdOwogICAgICAgICBhdXRvJiBidWls
dEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKml0ZW0uc2VtYW50
aWMpOwotICAgICAgICBhdXRvIGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNlbWFudGlj
KGJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIGlmIChpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCi0g
ICAgICAgICAgICBpbnRlcm5hbFR5cGUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
Kml0ZW0udW5uYW1lZFR5cGUpOworICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSk7CiAgICAgICAgIGF1
dG8gdmFyaWFibGVOYW1lID0gbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhpbnRlcm5hbFR5cGUsICcgJywgdmFyaWFibGVO
YW1lLCAnICcsIGF0dHJpYnV0ZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYykpKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywg
dmFyaWFibGVOYW1lLCAnICcsIGF0dHJpYnV0ZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYykp
KTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTMz
NiwxMSArMjk5LDkgQEAgU3RyaW5nIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYWNrUmVzb3Vy
Y2VzQW5kTmFtZWRCdWlsdElucygpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBuYW1lZEJ1aWx0
SW4gOiBtX25hbWVkQnVpbHRJbnMpIHsKLSAgICAgICAgYXV0byYgaXRlbSA9IG1fZW50cnlQb2lu
dEl0ZW1zLmlucHV0c1tuYW1lZEJ1aWx0SW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc107Ci0gICAg
ICAgIGF1dG8mIHBhdGggPSBpdGVtLnBhdGg7CisgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRCdWlsdEluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnBh
dGg7CiAgICAgICAgIGF1dG8mIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJpYWJsZU5h
bWU7Ci0gICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCppdGVtLnVubmFtZWRUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZyhtYW5nbGVkSW5wdXRQYXRoKHBhdGgpLCAiID0gIiwgbWFuZ2xlZFR5cGVO
YW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIHZhcmlhYmxl
TmFtZSwgIjtcbiIpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KTsKIH0KQEAgLTM2MywxMyArMzI0LDggQEAgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpW
ZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24KIAogICAg
IG1fbmFtZWRPdXRwdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeVBvaW50SXRlbXMu
b3V0cHV0cy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50
SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0g
bV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKICAgICAgICAgTmFtZWRPdXRwdXQgbmFtZWRP
dXRwdXQ7CiAgICAgICAgIG5hbWVkT3V0cHV0LmVsZW1lbnROYW1lID0gbV90eXBlTmFtZXIuZ2Vu
ZXJhdGVOZXh0U3RydWN0dXJlRWxlbWVudE5hbWUoKTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8QVNUOjpCdWlsdEluU2VtYW50aWM+KCpvdXRwdXRJdGVtLnNlbWFudGljKSkK
LSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUgPSBpbnRlcm5hbFR5cGVG
b3JTZW1hbnRpYyhXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2Vt
YW50aWMpKTsKLSAgICAgICAgaWYgKG5hbWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICBuYW1lZE91dHB1dC5pbnRlcm5hbFR5cGVOYW1lID0gbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpvdXRwdXRJdGVtLnVubmFtZWRUeXBlKTsKICAgICAgICAg
bV9uYW1lZE91dHB1dHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobmFtZWRPdXRwdXQpKTsKICAg
ICB9CiB9CkBAIC0zOTAsMTAgKzM0NiwxMCBAQCBTdHJpbmcgVmVydGV4RW50cnlQb2ludFNjYWZm
b2xkaW5nOjpoZWxwZXJUeXBlcygpCiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
Zygic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwot
ICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJu
YWxUeXBlTmFtZTsKKyAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKm91dHB1dEl0ZW0udW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRv
IGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1
dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgaW50ZXJu
YWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKSk7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBtYW5nbGVkVHlw
ZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIikpOwogICAgIH0K
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcblxuIik7CiAKQEAgLTQ0Miw5ICszOTgsOCBA
QCBTdHJpbmcgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpwYWNrKGNvbnN0IFN0cmluZyYg
aW5wdXRWYXJpYWJsZU5hbWUsIGNvbnN0CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRv
JiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwotICAgICAgICBh
dXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFt
ZTsKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0
aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhvdXRwdXRWYXJpYWJs
ZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlu
cHV0VmFyaWFibGVOYW1lLCBtYW5nbGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4iKSk7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcob3V0cHV0VmFyaWFibGVOYW1lLCAn
LicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsIG1hbmdsZWRPdXRwdXRQ
YXRoKHBhdGgpLCAiO1xuIikpOwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOwogfQpAQCAtNDY5LDEzICs0MjQsOCBAQCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoQVNUOjpGdW5jdGlvbkRlZmluaQog
CiAgICAgbV9uYW1lZE91dHB1dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VudHJ5UG9pbnRJ
dGVtcy5vdXRwdXRzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5
UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIG91dHB1dEl0
ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwogICAgICAgICBOYW1lZE91dHB1dCBu
YW1lZE91dHB1dDsKICAgICAgICAgbmFtZWRPdXRwdXQuZWxlbWVudE5hbWUgPSBtX3R5cGVOYW1l
ci5nZW5lcmF0ZU5leHRTdHJ1Y3R1cmVFbGVtZW50TmFtZSgpOwotICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKm91dHB1dEl0ZW0uc2VtYW50
aWMpKQotICAgICAgICAgICAgbmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFtZSA9IGludGVybmFs
VHlwZUZvclNlbWFudGljKFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqb3V0cHV0SXRl
bS5zZW1hbnRpYykpOwotICAgICAgICBpZiAobmFtZWRPdXRwdXQuaW50ZXJuYWxUeXBlTmFtZS5p
c051bGwoKSkKLSAgICAgICAgICAgIG5hbWVkT3V0cHV0LmludGVybmFsVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm91dHB1dEl0ZW0udW5uYW1lZFR5cGUpOwogICAg
ICAgICBtX25hbWVkT3V0cHV0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShuYW1lZE91dHB1dCkp
OwogICAgIH0KIH0KQEAgLTQ5NiwxMCArNDQ2LDEwIEBAIFN0cmluZyBGcmFnbWVudEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6aGVscGVyVHlwZXMoKQogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIikpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsr
aSkgewogICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
c1tpXTsKLSAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ld
LmludGVybmFsVHlwZU5hbWU7CisgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpvdXRwdXRJdGVtLnVubmFtZWRUeXBlKTsKICAgICAg
ICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAg
ICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNl
bWFudGljKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIs
IGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xu
IikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFu
Z2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpKTsK
ICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG5cbiIpOwogCkBAIC01NDgsOSAr
NDk4LDggQEAgU3RyaW5nIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpwYWNrKGNvbnN0
IFN0cmluZyYgaW5wdXRWYXJpYWJsZU5hbWUsIGNvbnMKICAgICB9CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7Ci0g
ICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5h
bFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG91dHB1
dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUs
ICcoJywgaW5wdXRWYXJpYWJsZU5hbWUsIG1hbmdsZWRPdXRwdXRQYXRoKHBhdGgpLCAiKTtcbiIp
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhvdXRwdXRWYXJpYWJs
ZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgbWFuZ2xl
ZE91dHB1dFBhdGgocGF0aCksICI7XG4iKSk7CiAgICAgfQogICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC01NjksNyArNTE4LDcgQEAgU3RyaW5nIENvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OnNpZ25hdHVyZShTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJrZXJuZWwgdm9pZCAiLCBmdW5jdGlvbk5hbWUsICcoJykpOworICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImNvbXB1dGUgdm9pZCAiLCBmdW5jdGlvbk5h
bWUsICcoJykpOwogICAgIGJvb2wgZW1wdHkgPSB0cnVlOwogICAgIGlmIChhdXRvIHJlc291cmNl
U2lnbmF0dXJlID0gdGhpcy0+cmVzb3VyY2VTaWduYXR1cmUoKSkgewogICAgICAgICBlbXB0eSA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKaW5kZXgg
MGY1Y2VhNTVlNmI1OWNmZTg1ODU5YmMyMTYxYmE5YWI1MThiNDZhMi4uNjY0ZjdmYjRhMjM3NjE5
YTNjMmU1MGYxNzJlZGZhMGQ0YTVlZTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9p
bnRTY2FmZm9sZGluZy5oCkBAIC0xMjksNyArMTI5LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVj
dCBOYW1lZE91dHB1dCB7CiAgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZTsKLSAgICAgICAgU3Ry
aW5nIGludGVybmFsVHlwZU5hbWU7CiAgICAgfTsKICAgICBWZWN0b3I8TmFtZWRPdXRwdXQ+IG1f
bmFtZWRPdXRwdXRzOwogfTsKQEAgLTE1OCw3ICsxNTcsNiBAQCBwcml2YXRlOgogCiAgICAgc3Ry
dWN0IE5hbWVkT3V0cHV0IHsKICAgICAgICAgU3RyaW5nIGVsZW1lbnROYW1lOwotICAgICAgICBT
dHJpbmcgaW50ZXJuYWxUeXBlTmFtZTsKICAgICB9OwogICAgIFZlY3RvcjxOYW1lZE91dHB1dD4g
bV9uYW1lZE91dHB1dHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzRiN2Q5Yzk1MDBjMjVjNDlkMTQ0NTRjZGQwNTU0ODI0YjA0
MDNlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIgotCi0jaWYgRU5B
QkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgotI2lu
Y2x1ZGUgIldITFNMUHJlcGFyZS5oIgotI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgotI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBX
SExTTCB7Ci0KLWNsYXNzIENvbXB1dGVEaW1lbnNpb25zVmlzaXRvciA6IHB1YmxpYyBWaXNpdG9y
IHsKLXB1YmxpYzoKLSAgICBDb21wdXRlRGltZW5zaW9uc1Zpc2l0b3IoQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24mIGVudHJ5UG9pbnQpCi0gICAgICAgIDogbV9lbnRyeVBvaW50KGVudHJ5UG9pbnQp
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkNvbXB1dGVEaW1lbnNpb25zVmlzaXRvcigp
ID0gZGVmYXVsdDsKLQotICAgIE9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGlt
ZW5zaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZURpbWVuc2lvbnM7IH0KLQotcHJpdmF0
ZToKLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNs
YXJhdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGJvb2wgZm91bmROdW1UaHJlYWRzRnVu
Y3Rpb25BdHRyaWJ1dGUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJp
YnV0ZSA6IGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSkgewotICAgICAgICAg
ICAgYXV0byBzdWNjZXNzID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZm91bmRO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmICgm
ZnVuY3Rpb25EZWNsYXJhdGlvbiA9PSAmbV9lbnRyeVBvaW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9jb21wdXRlRGltZW5zaW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
Y29tcHV0ZURpbWVuc2lvbnMgPSB7eyBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUud2lkdGgo
KSwgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmhlaWdodCgpLCBudW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUuZGVwdGgoKSB9fTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9KSwgZnVuY3Rpb25BdHRyaWJ1dGUpOwotICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgc2V0RXJyb3IoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgbV9lbnRyeVBvaW50OwotICAgIE9wdGlvbmFs
PENvbXB1dGVEaW1lbnNpb25zPiBtX2NvbXB1dGVEaW1lbnNpb25zOwotfTsKLQotT3B0aW9uYWw8
Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0sIEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJiBlbnRyeVBvaW50KQotewotICAgIENvbXB1dGVEaW1lbnNp
b25zVmlzaXRvciBjb21wdXRlRGltZW5zaW9ucyhlbnRyeVBvaW50KTsKLSAgICBjb21wdXRlRGlt
ZW5zaW9ucy5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKLSAgICBpZiAoY29tcHV0ZURpbWVuc2lv
bnMuZXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gY29t
cHV0ZURpbWVuc2lvbnMuY29tcHV0ZURpbWVuc2lvbnMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q29tcHV0ZURpbWVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGU0NTA4MTNhNThjOTk1N2FhZmFkNGY2NmUyM2RkMzFlMTFiOTg3My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIFdITFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotT3B0aW9uYWw8Q29tcHV0ZURp
bWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mLCBBU1Q6OkZ1bmN0aW9uRGVmaW5p
dGlvbiYpOwotCi19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVt
cy5jcHAKaW5kZXggYWEyNDljMDJiNzI2ODYxNTFiN2NkOTg1NjYzMGQxYzMxZmZjZTc5MC4uOTk2
ZGQ4NDA3MmQ1MjlmYTA4OTgwZDJjMWEwOThiYTE2NWJmZTU0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVy
RW50cnlQb2ludEl0ZW1zLmNwcApAQCAtMTc1LDggKzE3NSw3IEBAIE9wdGlvbmFsPEVudHJ5UG9p
bnRJdGVtcz4gZ2F0aGVyRW50cnlQb2ludEl0ZW1zKGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNp
Y3MsIEFTCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KICAgICBHYXRo
ZXJlciBvdXRwdXRHYXRoZXJlcihpbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRpb24uc2VtYW50
aWMoKSA/ICYqZnVuY3Rpb25EZWZpbml0aW9uLnNlbWFudGljKCkgOiBudWxscHRyKTsKLSAgICBp
ZiAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpICE9IEFTVDo6RW50cnlQb2lu
dFR5cGU6OkNvbXB1dGUpCi0gICAgICAgIG91dHB1dEdhdGhlcmVyLmNoZWNrRXJyb3JBbmRWaXNp
dChmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKTsKKyAgICBvdXRwdXRHYXRoZXJlci5jaGVja0Vy
cm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7CiAgICAgaWYgKG91dHB1dEdh
dGhlcmVyLmVycm9yKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCmlu
ZGV4IGQ2YjJlNzRkMGIyNjRlNmM5ZmVmMWFkOGNkMTA1MGViZGNlMDk1OGUuLjQyODQ4YzcxMDFk
NjZjZTJhODhmMTEyYjE3NzNmMzU2Njk0NDc0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIldITFNMQXV0b0luaXRpYWxpemVWYXJpYWJsZXMuaCIKICNpbmNsdWRlICJX
SExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiV0hMU0xDaGVja2VyLmgi
Ci0jaW5jbHVkZSAiV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIgogI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuaCIKICNpbmNsdWRlICJXSExTTEhpZ2hab21iaWVGaW5kZXIuaCIK
ICNpbmNsdWRlICJXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oIgpAQCAtMTcxLDE2ICsxNzAsMTIg
QEAgT3B0aW9uYWw8Q29tcHV0ZVByZXBhcmVSZXN1bHQ+IHByZXBhcmUoU3RyaW5nJiB3aGxzbFNv
dXJjZSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3IKICAgICBhdXRvIG1hdGNoZWRTZW1hbnRpY3MgPSBt
YXRjaFNlbWFudGljcygqcHJvZ3JhbSwgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7CiAgICAg
aWYgKCFtYXRjaGVkU2VtYW50aWNzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IGF1dG8gY29tcHV0ZURpbWVuc2lvbnMgPSBXSExTTDo6Y29tcHV0ZURpbWVuc2lvbnMoKnByb2dy
YW0sICptYXRjaGVkU2VtYW50aWNzLT5zaGFkZXIpOwotICAgIGlmICghY29tcHV0ZURpbWVuc2lv
bnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdlbmVyYXRlZENv
ZGUgPSBNZXRhbDo6Z2VuZXJhdGVNZXRhbENvZGUoKnByb2dyYW0sIFdURk1vdmUoKm1hdGNoZWRT
ZW1hbnRpY3MpLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCk7CiAKICAgICBDb21w
dXRlUHJlcGFyZVJlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0Lm1ldGFsU291cmNlID0gV1RGTW92
ZShnZW5lcmF0ZWRDb2RlLm1ldGFsU291cmNlKTsKICAgICByZXN1bHQubWFuZ2xlZEVudHJ5UG9p
bnROYW1lID0gV1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRFbnRyeVBvaW50TmFtZSk7Ci0g
ICAgcmVzdWx0LmNvbXB1dGVEaW1lbnNpb25zID0gV1RGTW92ZSgqY29tcHV0ZURpbWVuc2lvbnMp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKaW5kZXggZWIyMDIxYjdjYTJlYzU4ZmJkNGEw
NTQ5NGM1NDcwODMxMGU1MGVkNi4uNWJkNmRmMDZkYzY5MWE3MmYxY2UyNGRmYzU1NTc2ZWM3ZjUy
ODRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmgKQEAgLTQyLDE2ICs0Miw5IEBAIHN0cnVjdCBSZW5kZXJQcmVwYXJlUmVzdWx0
IHsKIH07CiBPcHRpb25hbDxSZW5kZXJQcmVwYXJlUmVzdWx0PiBwcmVwYXJlKFN0cmluZyYgd2hs
c2xTb3VyY2UsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwogCi1zdHJ1Y3QgQ29tcHV0ZURp
bWVuc2lvbnMgewotICAgIHVuc2lnbmVkIHdpZHRoOwotICAgIHVuc2lnbmVkIGhlaWdodDsKLSAg
ICB1bnNpZ25lZCBkZXB0aDsKLX07Ci0KIHN0cnVjdCBDb21wdXRlUHJlcGFyZVJlc3VsdCB7CiAg
ICAgU3RyaW5nIG1ldGFsU291cmNlOwogICAgIFN0cmluZyBtYW5nbGVkRW50cnlQb2ludE5hbWU7
Ci0gICAgQ29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7CiB9OwogT3B0aW9uYWw8
Q29tcHV0ZVByZXBhcmVSZXN1bHQ+IHByZXBhcmUoU3RyaW5nJiB3aGxzbFNvdXJjZSwgQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAppbmRleCBm
ODBkYTk5NzU4ZDg0OWEyZWMxODk2MzRmM2YzMjQ0YTQxNTE5NTZkLi5hOTNlMDM3MjU2NmM4MzA1
MjI5NGQwMjYxYTE2NmZhNjE1MWFiNjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKQEAg
LTc3NCw4ICs3NzQsNiBAQCB2b2lkIExlZnRWYWx1ZVNpbXBsaWZpZXI6OmZpbmlzaFZpc2l0aW5n
KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eQogICAgIEFTU0VSVChwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYmFzZSgpLnR5cGVBbm5vdGF0aW9uKCkubGVmdEFkZHJlc3NT
cGFjZSgpKTsKICAgICBBU1NFUlQocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmFuZGVyRnVuY3Rp
b24oKSk7CiAKLSAgICBWaXNpdG9yOjp2aXNpdChwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYmFz
ZSgpKTsKLQogICAgIExleGVyOjpUb2tlbiBvcmlnaW4gPSBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24ub3JpZ2luKCk7CiAgICAgYXV0byogYW5kZXJGdW5jdGlvbiA9IHByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5hbmRlckZ1bmN0aW9uKCk7CiAKQEAgLTgwNiw2ICs4MDQsNyBAQCB2b2lkIExlZnRW
YWx1ZVNpbXBsaWZpZXI6OnZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikK
IAogdm9pZCBMZWZ0VmFsdWVTaW1wbGlmaWVyOjp2aXNpdChBU1Q6OkluZGV4RXhwcmVzc2lvbiYg
aW5kZXhFeHByZXNzaW9uKQogeworICAgIFZpc2l0b3I6OnZpc2l0KGluZGV4RXhwcmVzc2lvbik7
CiAgICAgUHJvcGVydHlSZXNvbHZlcigpLlZpc2l0b3I6OnZpc2l0KGluZGV4RXhwcmVzc2lvbi5p
bmRleEV4cHJlc3Npb24oKSk7CiAgICAgZmluaXNoVmlzaXRpbmcoaW5kZXhFeHByZXNzaW9uKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3RhbmRhcmRMaWJyYXJ5LnR4dCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAppbmRleCA1MTcwZTFhZWNkNWJiZWY0NTYxMjIzNmE3
NjMzNGI3ZGQzZGJlNWIzLi4xYzQ1MjdhNmJmMTQ2YzRkZjU3YmFhOTJlNWUzM2YyNWUzOTdiZGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YW5kYXJkTGlicmFyeS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CkBAIC00MzIsMTc4ICs0MzIsMjMgQEAgbmF0aXZl
IG9wZXJhdG9yIGZsb2F0KHNob3J0KTsKIG5hdGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpOwogbmF0
aXZlIG9wZXJhdG9yIGZsb2F0KGhhbGYpOwogCi1uYXRpdmUgZmxvYXQgb3BlcmF0b3IrKGZsb2F0
LCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUg
aW50IG9wZXJhdG9yKyhpbnQsIGludCk7Ci1uYXRpdmUgdWludCBvcGVyYXRvcisodWludCwgdWlu
dCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjwoaW50LCBpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0
b3I8KHVpbnQsIHVpbnQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8KGZsb2F0LCBmbG9hdCk7Ci1u
YXRpdmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0LCBmbG9hdCk7Ci0KLW5hdGl2ZSBib29sIG9wZXJh
dG9yLngoYm9vbDIpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3IueShib29sMik7Ci1uYXRpdmUgYm9v
bCBvcGVyYXRvci54KGJvb2wzKTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yLnkoYm9vbDMpOwotbmF0
aXZlIGJvb2wgb3BlcmF0b3Iueihib29sMyk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvci54KGJvb2w0
KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yLnkoYm9vbDQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3Iu
eihib29sNCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvci53KGJvb2w0KTsKLW5hdGl2ZSBib29sMiBv
cGVyYXRvci54PShib29sMiwgYm9vbCk7Ci1uYXRpdmUgYm9vbDIgb3BlcmF0b3IueT0oYm9vbDIs
IGJvb2wpOwotbmF0aXZlIGJvb2wzIG9wZXJhdG9yLng9KGJvb2wzLCBib29sKTsKLW5hdGl2ZSBi
b29sMyBvcGVyYXRvci55PShib29sMywgYm9vbCk7Ci1uYXRpdmUgYm9vbDMgb3BlcmF0b3Iuej0o
Ym9vbDMsIGJvb2wpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yLng9KGJvb2w0LCBib29sKTsKLW5h
dGl2ZSBib29sNCBvcGVyYXRvci55PShib29sNCwgYm9vbCk7Ci1uYXRpdmUgYm9vbDQgb3BlcmF0
b3Iuej0oYm9vbDQsIGJvb2wpOwotbmF0aXZlIGJvb2w0IG9wZXJhdG9yLnc9KGJvb2w0LCBib29s
KTsKLW5hdGl2ZSB1Y2hhciBvcGVyYXRvci54KHVjaGFyMik7Ci1uYXRpdmUgdWNoYXIgb3BlcmF0
b3IueSh1Y2hhcjIpOwotbmF0aXZlIHVjaGFyIG9wZXJhdG9yLngodWNoYXIzKTsKLW5hdGl2ZSB1
Y2hhciBvcGVyYXRvci55KHVjaGFyMyk7Ci1uYXRpdmUgdWNoYXIgb3BlcmF0b3Iueih1Y2hhcjMp
OwotbmF0aXZlIHVjaGFyIG9wZXJhdG9yLngodWNoYXI0KTsKLW5hdGl2ZSB1Y2hhciBvcGVyYXRv
ci55KHVjaGFyNCk7Ci1uYXRpdmUgdWNoYXIgb3BlcmF0b3Iueih1Y2hhcjQpOwotbmF0aXZlIHVj
aGFyIG9wZXJhdG9yLncodWNoYXI0KTsKLW5hdGl2ZSB1Y2hhcjIgb3BlcmF0b3IueD0odWNoYXIy
LCB1Y2hhcik7Ci1uYXRpdmUgdWNoYXIyIG9wZXJhdG9yLnk9KHVjaGFyMiwgdWNoYXIpOwotbmF0
aXZlIHVjaGFyMyBvcGVyYXRvci54PSh1Y2hhcjMsIHVjaGFyKTsKLW5hdGl2ZSB1Y2hhcjMgb3Bl
cmF0b3IueT0odWNoYXIzLCB1Y2hhcik7Ci1uYXRpdmUgdWNoYXIzIG9wZXJhdG9yLno9KHVjaGFy
MywgdWNoYXIpOwotbmF0aXZlIHVjaGFyNCBvcGVyYXRvci54PSh1Y2hhcjQsIHVjaGFyKTsKLW5h
dGl2ZSB1Y2hhcjQgb3BlcmF0b3IueT0odWNoYXI0LCB1Y2hhcik7Ci1uYXRpdmUgdWNoYXI0IG9w
ZXJhdG9yLno9KHVjaGFyNCwgdWNoYXIpOwotbmF0aXZlIHVjaGFyNCBvcGVyYXRvci53PSh1Y2hh
cjQsIHVjaGFyKTsKLW5hdGl2ZSB1c2hvcnQgb3BlcmF0b3IueCh1c2hvcnQyKTsKLW5hdGl2ZSB1
c2hvcnQgb3BlcmF0b3IueSh1c2hvcnQyKTsKLW5hdGl2ZSB1c2hvcnQgb3BlcmF0b3IueCh1c2hv
cnQzKTsKLW5hdGl2ZSB1c2hvcnQgb3BlcmF0b3IueSh1c2hvcnQzKTsKLW5hdGl2ZSB1c2hvcnQg
b3BlcmF0b3Iueih1c2hvcnQzKTsKLW5hdGl2ZSB1c2hvcnQgb3BlcmF0b3IueCh1c2hvcnQ0KTsK
LW5hdGl2ZSB1c2hvcnQgb3BlcmF0b3IueSh1c2hvcnQ0KTsKLW5hdGl2ZSB1c2hvcnQgb3BlcmF0
b3Iueih1c2hvcnQ0KTsKLW5hdGl2ZSB1c2hvcnQgb3BlcmF0b3Iudyh1c2hvcnQ0KTsKLW5hdGl2
ZSB1c2hvcnQyIG9wZXJhdG9yLng9KHVzaG9ydDIsIHVzaG9ydCk7Ci1uYXRpdmUgdXNob3J0MiBv
cGVyYXRvci55PSh1c2hvcnQyLCB1c2hvcnQpOwotbmF0aXZlIHVzaG9ydDMgb3BlcmF0b3IueD0o
dXNob3J0MywgdXNob3J0KTsKLW5hdGl2ZSB1c2hvcnQzIG9wZXJhdG9yLnk9KHVzaG9ydDMsIHVz
aG9ydCk7Ci1uYXRpdmUgdXNob3J0MyBvcGVyYXRvci56PSh1c2hvcnQzLCB1c2hvcnQpOwotbmF0
aXZlIHVzaG9ydDQgb3BlcmF0b3IueD0odXNob3J0NCwgdXNob3J0KTsKLW5hdGl2ZSB1c2hvcnQ0
IG9wZXJhdG9yLnk9KHVzaG9ydDQsIHVzaG9ydCk7Ci1uYXRpdmUgdXNob3J0NCBvcGVyYXRvci56
PSh1c2hvcnQ0LCB1c2hvcnQpOwotbmF0aXZlIHVzaG9ydDQgb3BlcmF0b3Iudz0odXNob3J0NCwg
dXNob3J0KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yLngodWludDIpOwotbmF0aXZlIHVpbnQgb3Bl
cmF0b3IueSh1aW50Mik7Ci1uYXRpdmUgdWludCBvcGVyYXRvci54KHVpbnQzKTsKLW5hdGl2ZSB1
aW50IG9wZXJhdG9yLnkodWludDMpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3Iueih1aW50Myk7Ci1u
YXRpdmUgdWludCBvcGVyYXRvci54KHVpbnQ0KTsKLW5hdGl2ZSB1aW50IG9wZXJhdG9yLnkodWlu
dDQpOwotbmF0aXZlIHVpbnQgb3BlcmF0b3Iueih1aW50NCk7Ci1uYXRpdmUgdWludCBvcGVyYXRv
ci53KHVpbnQ0KTsKLW5hdGl2ZSB1aW50MiBvcGVyYXRvci54PSh1aW50MiwgdWludCk7Ci1uYXRp
dmUgdWludDIgb3BlcmF0b3IueT0odWludDIsIHVpbnQpOwotbmF0aXZlIHVpbnQzIG9wZXJhdG9y
Lng9KHVpbnQzLCB1aW50KTsKLW5hdGl2ZSB1aW50MyBvcGVyYXRvci55PSh1aW50MywgdWludCk7
Ci1uYXRpdmUgdWludDMgb3BlcmF0b3Iuej0odWludDMsIHVpbnQpOwotbmF0aXZlIHVpbnQ0IG9w
ZXJhdG9yLng9KHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSB1aW50NCBvcGVyYXRvci55PSh1aW50NCwg
dWludCk7Ci1uYXRpdmUgdWludDQgb3BlcmF0b3Iuej0odWludDQsIHVpbnQpOwotbmF0aXZlIHVp
bnQ0IG9wZXJhdG9yLnc9KHVpbnQ0LCB1aW50KTsKLW5hdGl2ZSBjaGFyIG9wZXJhdG9yLngoY2hh
cjIpOwotbmF0aXZlIGNoYXIgb3BlcmF0b3IueShjaGFyMik7Ci1uYXRpdmUgY2hhciBvcGVyYXRv
ci54KGNoYXIzKTsKLW5hdGl2ZSBjaGFyIG9wZXJhdG9yLnkoY2hhcjMpOwotbmF0aXZlIGNoYXIg
b3BlcmF0b3IueihjaGFyMyk7Ci1uYXRpdmUgY2hhciBvcGVyYXRvci54KGNoYXI0KTsKLW5hdGl2
ZSBjaGFyIG9wZXJhdG9yLnkoY2hhcjQpOwotbmF0aXZlIGNoYXIgb3BlcmF0b3IueihjaGFyNCk7
Ci1uYXRpdmUgY2hhciBvcGVyYXRvci53KGNoYXI0KTsKLW5hdGl2ZSBjaGFyMiBvcGVyYXRvci54
PShjaGFyMiwgY2hhcik7Ci1uYXRpdmUgY2hhcjIgb3BlcmF0b3IueT0oY2hhcjIsIGNoYXIpOwot
bmF0aXZlIGNoYXIzIG9wZXJhdG9yLng9KGNoYXIzLCBjaGFyKTsKLW5hdGl2ZSBjaGFyMyBvcGVy
YXRvci55PShjaGFyMywgY2hhcik7Ci1uYXRpdmUgY2hhcjMgb3BlcmF0b3Iuej0oY2hhcjMsIGNo
YXIpOwotbmF0aXZlIGNoYXI0IG9wZXJhdG9yLng9KGNoYXI0LCBjaGFyKTsKLW5hdGl2ZSBjaGFy
NCBvcGVyYXRvci55PShjaGFyNCwgY2hhcik7Ci1uYXRpdmUgY2hhcjQgb3BlcmF0b3Iuej0oY2hh
cjQsIGNoYXIpOwotbmF0aXZlIGNoYXI0IG9wZXJhdG9yLnc9KGNoYXI0LCBjaGFyKTsKLW5hdGl2
ZSBzaG9ydCBvcGVyYXRvci54KHNob3J0Mik7Ci1uYXRpdmUgc2hvcnQgb3BlcmF0b3IueShzaG9y
dDIpOwotbmF0aXZlIHNob3J0IG9wZXJhdG9yLngoc2hvcnQzKTsKLW5hdGl2ZSBzaG9ydCBvcGVy
YXRvci55KHNob3J0Myk7Ci1uYXRpdmUgc2hvcnQgb3BlcmF0b3IueihzaG9ydDMpOwotbmF0aXZl
IHNob3J0IG9wZXJhdG9yLngoc2hvcnQ0KTsKLW5hdGl2ZSBzaG9ydCBvcGVyYXRvci55KHNob3J0
NCk7Ci1uYXRpdmUgc2hvcnQgb3BlcmF0b3IueihzaG9ydDQpOwotbmF0aXZlIHNob3J0IG9wZXJh
dG9yLncoc2hvcnQ0KTsKLW5hdGl2ZSBzaG9ydDIgb3BlcmF0b3IueD0oc2hvcnQyLCBzaG9ydCk7
Ci1uYXRpdmUgc2hvcnQyIG9wZXJhdG9yLnk9KHNob3J0Miwgc2hvcnQpOwotbmF0aXZlIHNob3J0
MyBvcGVyYXRvci54PShzaG9ydDMsIHNob3J0KTsKLW5hdGl2ZSBzaG9ydDMgb3BlcmF0b3IueT0o
c2hvcnQzLCBzaG9ydCk7Ci1uYXRpdmUgc2hvcnQzIG9wZXJhdG9yLno9KHNob3J0Mywgc2hvcnQp
OwotbmF0aXZlIHNob3J0NCBvcGVyYXRvci54PShzaG9ydDQsIHNob3J0KTsKLW5hdGl2ZSBzaG9y
dDQgb3BlcmF0b3IueT0oc2hvcnQ0LCBzaG9ydCk7Ci1uYXRpdmUgc2hvcnQ0IG9wZXJhdG9yLno9
KHNob3J0NCwgc2hvcnQpOwotbmF0aXZlIHNob3J0NCBvcGVyYXRvci53PShzaG9ydDQsIHNob3J0
KTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3IueChpbnQyKTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3IueShp
bnQyKTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3IueChpbnQzKTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3Iu
eShpbnQzKTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3IueihpbnQzKTsKLW5hdGl2ZSBpbnQgb3BlcmF0
b3IueChpbnQ0KTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3IueShpbnQ0KTsKLW5hdGl2ZSBpbnQgb3Bl
cmF0b3IueihpbnQ0KTsKLW5hdGl2ZSBpbnQgb3BlcmF0b3IudyhpbnQ0KTsKLW5hdGl2ZSBpbnQy
IG9wZXJhdG9yLng9KGludDIsIGludCk7Ci1uYXRpdmUgaW50MiBvcGVyYXRvci55PShpbnQyLCBp
bnQpOwotbmF0aXZlIGludDMgb3BlcmF0b3IueD0oaW50MywgaW50KTsKLW5hdGl2ZSBpbnQzIG9w
ZXJhdG9yLnk9KGludDMsIGludCk7Ci1uYXRpdmUgaW50MyBvcGVyYXRvci56PShpbnQzLCBpbnQp
OwotbmF0aXZlIGludDQgb3BlcmF0b3IueD0oaW50NCwgaW50KTsKLW5hdGl2ZSBpbnQ0IG9wZXJh
dG9yLnk9KGludDQsIGludCk7Ci1uYXRpdmUgaW50NCBvcGVyYXRvci56PShpbnQ0LCBpbnQpOwot
bmF0aXZlIGludDQgb3BlcmF0b3Iudz0oaW50NCwgaW50KTsKLW5hdGl2ZSBoYWxmIG9wZXJhdG9y
LngoaGFsZjIpOwotbmF0aXZlIGhhbGYgb3BlcmF0b3IueShoYWxmMik7Ci1uYXRpdmUgaGFsZiBv
cGVyYXRvci54KGhhbGYzKTsKLW5hdGl2ZSBoYWxmIG9wZXJhdG9yLnkoaGFsZjMpOwotbmF0aXZl
IGhhbGYgb3BlcmF0b3IueihoYWxmMyk7Ci1uYXRpdmUgaGFsZiBvcGVyYXRvci54KGhhbGY0KTsK
LW5hdGl2ZSBoYWxmIG9wZXJhdG9yLnkoaGFsZjQpOwotbmF0aXZlIGhhbGYgb3BlcmF0b3Iueiho
YWxmNCk7Ci1uYXRpdmUgaGFsZiBvcGVyYXRvci53KGhhbGY0KTsKLW5hdGl2ZSBoYWxmMiBvcGVy
YXRvci54PShoYWxmMiwgaGFsZik7Ci1uYXRpdmUgaGFsZjIgb3BlcmF0b3IueT0oaGFsZjIsIGhh
bGYpOwotbmF0aXZlIGhhbGYzIG9wZXJhdG9yLng9KGhhbGYzLCBoYWxmKTsKLW5hdGl2ZSBoYWxm
MyBvcGVyYXRvci55PShoYWxmMywgaGFsZik7Ci1uYXRpdmUgaGFsZjMgb3BlcmF0b3Iuej0oaGFs
ZjMsIGhhbGYpOwotbmF0aXZlIGhhbGY0IG9wZXJhdG9yLng9KGhhbGY0LCBoYWxmKTsKLW5hdGl2
ZSBoYWxmNCBvcGVyYXRvci55PShoYWxmNCwgaGFsZik7Ci1uYXRpdmUgaGFsZjQgb3BlcmF0b3Iu
ej0oaGFsZjQsIGhhbGYpOwotbmF0aXZlIGhhbGY0IG9wZXJhdG9yLnc9KGhhbGY0LCBoYWxmKTsK
LW5hdGl2ZSBmbG9hdCBvcGVyYXRvci54KGZsb2F0Mik7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3Iu
eShmbG9hdDIpOwotbmF0aXZlIGZsb2F0IG9wZXJhdG9yLngoZmxvYXQzKTsKLW5hdGl2ZSBmbG9h
dCBvcGVyYXRvci55KGZsb2F0Myk7Ci1uYXRpdmUgZmxvYXQgb3BlcmF0b3IueihmbG9hdDMpOwog
bmF0aXZlIGZsb2F0IG9wZXJhdG9yLngoZmxvYXQ0KTsKIG5hdGl2ZSBmbG9hdCBvcGVyYXRvci55
KGZsb2F0NCk7CiBuYXRpdmUgZmxvYXQgb3BlcmF0b3IueihmbG9hdDQpOwogbmF0aXZlIGZsb2F0
IG9wZXJhdG9yLncoZmxvYXQ0KTsKLW5hdGl2ZSBmbG9hdDIgb3BlcmF0b3IueD0oZmxvYXQyLCBm
bG9hdCk7Ci1uYXRpdmUgZmxvYXQyIG9wZXJhdG9yLnk9KGZsb2F0MiwgZmxvYXQpOwotbmF0aXZl
IGZsb2F0MyBvcGVyYXRvci54PShmbG9hdDMsIGZsb2F0KTsKLW5hdGl2ZSBmbG9hdDMgb3BlcmF0
b3IueT0oZmxvYXQzLCBmbG9hdCk7Ci1uYXRpdmUgZmxvYXQzIG9wZXJhdG9yLno9KGZsb2F0Mywg
ZmxvYXQpOwogbmF0aXZlIGZsb2F0NCBvcGVyYXRvci54PShmbG9hdDQsIGZsb2F0KTsKIG5hdGl2
ZSBmbG9hdDQgb3BlcmF0b3IueT0oZmxvYXQ0LCBmbG9hdCk7CiBuYXRpdmUgZmxvYXQ0IG9wZXJh
dG9yLno9KGZsb2F0NCwgZmxvYXQpOwogbmF0aXZlIGZsb2F0NCBvcGVyYXRvci53PShmbG9hdDQs
IGZsb2F0KTsKIAorbmF0aXZlIGZsb2F0IG9wZXJhdG9yKyhmbG9hdCwgZmxvYXQpOworbmF0aXZl
IGZsb2F0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQpOworbmF0aXZlIGludCBvcGVyYXRvcisoaW50
LCBpbnQpOworbmF0aXZlIHVpbnQgb3BlcmF0b3IrKHVpbnQsIHVpbnQpOworbmF0aXZlIGJvb2wg
b3BlcmF0b3I8KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LCB1aW50KTsK
K25hdGl2ZSBib29sIG9wZXJhdG9yPChmbG9hdCwgZmxvYXQpOworCiBuYXRpdmUgZmxvYXQgZGR4
KGZsb2F0KTsKIG5hdGl2ZSBmbG9hdCBkZHkoZmxvYXQpOwogbmF0aXZlIHZvaWQgQWxsTWVtb3J5
QmFycmllcldpdGhHcm91cFN5bmMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWIyY2ZkMTk0ODdmOGQ2
MmQ1MzBkNzViNTQwNTVkNTdiY2Y1MDRhZi4uMGQzODFkMzhjMWQ2YzkzNDhjYzM2YWUwMDU4Mjhi
Y2Q2ZjQwYTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwNiw3ICszMDYsNiBAQCBNb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiAKIE1vZHVsZXMv
d2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwCiBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUu
Y3BwCi1Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEF1dG9Jbml0aWFsaXplVmFyaWFibGVzLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMThiZmQzMDFk
OTY1NjMyYjdiMTAyOWUwOGJhMzYxYjExZTY0OTM2OC4uNjA0ODMwMzdkMjA1ZmEzMmQ4MjgxMGU4
OTI0ZWViNzU4N2ZkYWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMjYsNyArMzI2
LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFs
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0
YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGFhY2JhNGMxNGIwNzFhZGQ2Y2QxOTZiMWVhNzkyNWZlNzZlNWZlNzIuLjQzMDA3ZTZiMTc1NjBk
NTAyYWI1ZWRmZmU3ZDZmYjZlOWIxMzhlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzOTQsMTAgKzYzOTQsNiBAQAogCQkx
Qzg0MEI5OTIxRUM0MDA4MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRy
eVBvaW50SXRlbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4NDBCOUIyMUVD
NDAwOTAwRDA1MDBEIC8qIFdITFNMQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg2Q0E0QjIyQUEx
OUZGMDAxQkY5NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUM4NkNBNEMyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzg2Q0E0RTIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVN
ZXRhbENvbnZlcnRMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUGlwZWxpbmVNZXRh
bENvbnZlcnRMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzg2Q0E0
RjIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDRERjkwQkE5RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8q
IFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2ha
b21iaWVGaW5kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlBRTVDQjIx
RUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMSGlnaFpvbWJpZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjU0NTIsOCArMjU0NDgsNiBAQAogCQkJCUMyMzRBOUFFMjFFOTJDMUEwMDNDOTg0RCAvKiBXSExT
TENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmggKi8sCiAJCQkJMUM4NDBCOUIyMUVDNDAwOTAwRDA1
MDBEIC8qIFdITFNMQ2hlY2tlci5jcHAgKi8sCiAJCQkJMUM4NDBCOTcyMUVDNDAwNzAwRDA1MDBE
IC8qIFdITFNMQ2hlY2tlci5oICovLAotCQkJCTFDODZDQTRCMjJBQTE5RkYwMDFCRjk2MSAvKiBX
SExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCAqLywKLQkJCQkxQzg2Q0E0QzIyQUExOUZGMDAxQkY5
NjEgLyogV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oICovLAogCQkJCTFDQTBDMkU0MjFFRUQxMkEw
MEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCAqLywKIAkJCQkxQ0EwQzJF
NTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oICovLAogCQkJ
CTFDODQwQjk5MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5j
cHAgKi8sCkBAIC0yNTk5Myw4ICsyNTk4Nyw2IEBACiAJCQkJRDA4OTAzNDAyMjQxQ0U0NjAwRjNG
NDQwIC8qIEdQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tICovLAogCQkJCUQwODkwMzNCMjI0
MTc5QjUwMEYzRjQ0MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSAqLywKIAkJCQlEMDg3
Q0UzQzIxQUNBOTQyMDBCREUxNzQgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8sCi0JCQkJMUM4NkNB
NEUyMkFBMjNDOTAwMUJGOTYxIC8qIEdQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcCAq
LywKLQkJCQkxQzg2Q0E0RjIyQUEyM0M5MDAxQkY5NjEgLyogR1BVUGlwZWxpbmVNZXRhbENvbnZl
cnRMYXlvdXQuaCAqLywKIAkJCQlEMDg3Q0UzQjIxQUNBOTQyMDBCREUxNzQgLyogR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKIAkJCQlEMDg3Q0UzOTIxQUNBOTQyMDBCREUx
NzQgLyogR1BVUXVldWVNZXRhbC5tbSAqLywKIAkJCQlEMDg3Q0UzQTIxQUNBOTQyMDBCREUxNzQg
LyogR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRhbC5tbSAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmUuaAppbmRl
eCA2NTM2N2M5ZDkzNDNhNWM0NjkxODc4YTE5NGMzMmQ4NDA4N2IxMDEzLi4wMzU5ZjI5YmVkMDYw
MWU3NzhlZWY0ZmRlMjg1M2RhZjA3NDVmMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZS5oCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV0hMU0xQcmVwYXJl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDksMTMgKzQ4LDEwIEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFBsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lKiBwbGF0Zm9ybUNvbXB1dGVQaXBl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db21wdXRlUGlwZWxpbmUuZ2V0KCk7IH0K
IAotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fY29tcHV0ZURpbWVuc2lvbnM7IH0KLQogcHJpdmF0ZToKLSAgICBHUFVDb21w
dXRlUGlwZWxpbmUoUGxhdGZvcm1Db21wdXRlUGlwZWxpbmVTbWFydFB0ciYmLCBXSExTTDo6Q29t
cHV0ZURpbWVuc2lvbnMpOworICAgIEdQVUNvbXB1dGVQaXBlbGluZShQbGF0Zm9ybUNvbXB1dGVQ
aXBlbGluZVNtYXJ0UHRyJiYpOwogCiAgICAgUGxhdGZvcm1Db21wdXRlUGlwZWxpbmVTbWFydFB0
ciBtX3BsYXRmb3JtQ29tcHV0ZVBpcGVsaW5lOwotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9u
cyBtX2NvbXB1dGVEaW1lbnNpb25zIHsgMCwgMCwgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQYXNzRW5jb2Rlck1ldGFsLm1tCmlu
ZGV4IGE1YjdjYTk2MzM5NWJkYjc2Njk0Yzk0YmYxOGZiMGUxNDgwNzFmZGMuLjcxM2MxYjc5MTA3
NWEwODZiOTBiMzEzMDk5MTRhNDA1ZDZhZmU2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGFzc0VuY29kZXJNZXRhbC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyTWV0YWwubW0KQEAgLTkyLDExICs5MiwxNiBAQCB2b2lkIEdQVUNvbXB1
dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2godW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQg
eikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3BpcGVsaW5lLT5wbGF0
Zm9ybUNvbXB1dGVQaXBlbGluZSgpKTsKKyAgICBhdXRvIHBpcGVsaW5lU3RhdGUgPSBtX3BpcGVs
aW5lLT5wbGF0Zm9ybUNvbXB1dGVQaXBlbGluZSgpOworICAgIEFTU0VSVChwaXBlbGluZVN0YXRl
KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGF1dG8gdGhyZWFk
c1BlclRocmVhZGdyb3VwID0gTVRMU2l6ZU1ha2UobV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lv
bnMoKS53aWR0aCwgbV9waXBlbGluZS0+Y29tcHV0ZURpbWVuc2lvbnMoKS5oZWlnaHQsIG1fcGlw
ZWxpbmUtPmNvbXB1dGVEaW1lbnNpb25zKCkuZGVwdGgpOworICAgIGF1dG8gdyA9IHBpcGVsaW5l
U3RhdGUudGhyZWFkRXhlY3V0aW9uV2lkdGg7CisgICAgYXV0byBoID0gcGlwZWxpbmVTdGF0ZS5t
YXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCAvIHc7CisKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgZ2xlYW5lZCBmcm9tIHRoZSBzaGFkZXIgaWYgbm90IHVzaW5nIE1TTC4gRm9yIG5v
dywgdXNlIHRoZSBkb2NzJyBleGFtcGxlIGNhbGN1bGF0aW9uLgorICAgIGF1dG8gdGhyZWFkc1Bl
clRocmVhZGdyb3VwID0gTVRMU2l6ZU1ha2UodywgaCwgMSk7CiAKICAgICBhdXRvIHRocmVhZGdy
b3Vwc1BlckdyaWQgPSBNVExTaXplTWFrZSh4LCB5LCB6KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bXB1dGVQaXBlbGluZU1ldGFsLm1tCmluZGV4IGQ2ZWNlZDQ0ZjRiNWE5MTMwYzU2NTUyNzE4ZDRk
ZTU3ZDY2ZDU5ZDcuLmZiZTQzZjQ0MWM4M2E4NDQ1YzBiYzAxYmQ1MzdiMDgxNTAxYWM3OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVD
b21wdXRlUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0KQEAgLTMwLDE3MiArMzAs
NjggQEAKIAogI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2ltcG9y
dCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV0hMU0xQcmVwYXJlLmgiCiAjaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9ucyhj
b25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE1UTExpYnJhcnkgKmNvbXB1dGVNZXRhbExp
YnJhcnksIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIGNvbnN0
IFN0cmluZyYgY29tcHV0ZUVudHJ5UG9pbnROYW1lKQotewotI2lmIExPR19ESVNBQkxFRAotICAg
IFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIWNvbXB1dGVNZXRhbExpYnJhcnkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBNVExMaWJyYXJ5IGZvciBjb21wdXRlIHN0YWdlIGRvZXMgbm90
IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbY29tcHV0ZU1ldGFsTGlicmFyeSBuZXdGdW5j
dGlvbldpdGhOYW1lOmNvbXB1dGVFbnRyeVBvaW50TmFtZV0pOwotICAgIGlmICghZnVuY3Rpb24p
IHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBDYW5ub3QgY3JlYXRlIGNvbXB1dGUgTVRMRnVu
Y3Rpb24gXCIlc1wiISIsIGZ1bmN0aW9uTmFtZSwgY29tcHV0ZUVudHJ5UG9pbnROYW1lLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgW210bERlc2Ny
aXB0b3Igc2V0Q29tcHV0ZUZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsKLSAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CitPQkpDX1BST1RPQ09MKE1UTEZ1
bmN0aW9uKTsKIAotICAgIHJldHVybiBmYWxzZTsKLX0KK25hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIE9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25z
KGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVUGlwZWxpbmVTdGFnZURl
c2NyaXB0b3ImIGNvbXB1dGVTdGFnZSwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIE1UTENvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IqIG10bERlc2NyaXB0b3IsIE9wdGlvbmFsPFdITFNMOjpDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yKQorc3RhdGljIFJldGFpblB0
cjxNVExGdW5jdGlvbj4gdHJ5Q3JlYXRlTXRsQ29tcHV0ZUZ1bmN0aW9uKGNvbnN0IEdQVVBpcGVs
aW5lU3RhZ2VEZXNjcmlwdG9yJiBzdGFnZSkKIHsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVT
RURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5
PiBjb21wdXRlTGlicmFyeTsKLSAgICBTdHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7Ci0KLSAgICBX
SExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnMgeyAxLCAxLCAxIH07Ci0K
LSAgICBpZiAod2hsc2xEZXNjcmlwdG9yKSB7Ci0gICAgICAgIC8vIFdITFNMIGZ1bmN0aW9ucyBh
cmUgY29tcGlsZWQgdG8gTVNMIGZpcnN0LgotICAgICAgICBTdHJpbmcgd2hsc2xTb3VyY2UgPSBj
b21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbFNvdXJjZSgpOwotICAgICAgICBBU1NFUlQoIXdobHNs
U291cmNlLmlzTnVsbCgpKTsKLQotICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmVudHJ5UG9pbnRO
YW1lID0gY29tcHV0ZVN0YWdlLmVudHJ5UG9pbnQ7Ci0KLSAgICAgICAgYXV0byB3aGxzbENvbXBp
bGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSh3aGxzbFNvdXJjZSwgKndobHNsRGVzY3JpcHRvcik7
Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSB3aGxzbENvbXBpbGVSZXN1
bHQtPmNvbXB1dGVEaW1lbnNpb25zOwotCi0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwot
Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAgICAgY29tcHV0ZUxp
YnJhcnkgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNv
dXJjZTp3aGxzbENvbXBpbGVSZXN1bHQtPm1ldGFsU291cmNlIG9wdGlvbnM6bmlsIGVycm9yOiZl
cnJvcl0pOwotICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgICAgIEFT
U0VSVChjb21wdXRlTGlicmFyeSk7Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzcxIE9uY2Ugd2UgemVyby1maWxsIHZhcmlhYmxl
cywgdGhlcmUgc2hvdWxkIGJlIG5vIHdhcm5pbmdzLCBzbyB3ZSBzaG91bGQgYmUgYWJsZSB0byBB
U1NFUlQoIWVycm9yKSBoZXJlLgotCi0gICAgICAgIGNvbXB1dGVFbnRyeVBvaW50ID0gd2hsc2xD
b21waWxlUmVzdWx0LT5tYW5nbGVkRW50cnlQb2ludE5hbWU7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgY29tcHV0ZUxpYnJhcnkgPSBjb21wdXRlU3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1v
ZHVsZSgpOwotICAgICAgICBjb21wdXRlRW50cnlQb2ludCA9IGNvbXB1dGVTdGFnZS5lbnRyeVBv
aW50OworICAgIGlmICghc3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpIHx8IHN0
YWdlLmVudHJ5UG9pbnQuaXNOdWxsKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1
dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKCk6IEludmFsaWQgR1BVU2hhZGVyTW9kdWxlISIpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAodHJ5U2V0TWV0YWxGdW5jdGlv
bnMoZnVuY3Rpb25OYW1lLCBjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgY29t
cHV0ZUVudHJ5UG9pbnQpKQotICAgICAgICByZXR1cm4gY29tcHV0ZURpbWVuc2lvbnM7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLX0KLQotc3RydWN0IENvbnZlcnRSZXN1bHQgewotICAgIFJl
dGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBwaXBlbGluZURlc2NyaXB0b3I7
Ci0gICAgV0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zIGNvbXB1dGVEaW1lbnNpb25zOwotfTsKLXN0
YXRpYyBPcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotewot
ICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9y
OworICAgIFJldGFpblB0cjxNVExGdW5jdGlvbj4gZnVuY3Rpb247CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBuZXddKTsKLQorICAgIGZ1bmN0aW9uID0gYWRvcHROUyhb
c3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpIG5ld0Z1bmN0aW9uV2l0aE5hbWU6
c3RhZ2UuZW50cnlQb2ludF0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICBpZiAoIW10bERlc2NyaXB0b3IpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJvciBj
cmVhdGluZyBNVExEZXNjcmlwdG9yISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgY29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0gZGVz
Y3JpcHRvci5jb21wdXRlU3RhZ2U7Ci0KLSAgICBib29sIGlzV2hsc2wgPSAhY29tcHV0ZVN0YWdl
Lm1vZHVsZS0+d2hsc2xTb3VyY2UoKS5pc051bGwoKTsKLQotICAgIE9wdGlvbmFsPFdITFNMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB3aGxzbERlc2NyaXB0b3I7Ci0gICAgaWYgKGlzV2hs
c2wpCi0gICAgICAgIHdobHNsRGVzY3JpcHRvciA9IFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKCk7Ci0KLSAgICBpZiAoZGVzY3JpcHRvci5sYXlvdXQgJiYgd2hsc2xEZXNjcmlwdG9y
KSB7Ci0gICAgICAgIGlmIChhdXRvIGxheW91dCA9IGNvbnZlcnRMYXlvdXQoKmRlc2NyaXB0b3Iu
bGF5b3V0KSkKLSAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+bGF5b3V0ID0gV1RGTW92ZSgq
bGF5b3V0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVy
cm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVMYXlvdXQhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
YXV0byBjb21wdXRlRGltZW5zaW9ucyA9IHRyeVNldEZ1bmN0aW9ucyhmdW5jdGlvbk5hbWUsIGNv
bXB1dGVTdGFnZSwgZGV2aWNlLCBtdGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3Ip
KQotICAgICAgICByZXR1cm4ge3sgbXRsRGVzY3JpcHRvciwgKmNvbXB1dGVEaW1lbnNpb25zIH19
OworICAgIGlmICghZnVuY3Rpb24pCisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21wdXRlUGlw
ZWxpbmU6OnRyeUNyZWF0ZSgpOiBDYW5ub3QgY3JlYXRlIGNvbXB1dGUgTVRMRnVuY3Rpb24gXCIl
c1wiISIsIHN0YWdlLmVudHJ5UG9pbnQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotc3RydWN0IENyZWF0ZVJlc3Vs
dCB7Ci0gICAgUmV0YWluUHRyPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBwaXBlbGluZVN0YXRl
OwotICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsKLX07Ci1z
dGF0aWMgT3B0aW9uYWw8Q3JlYXRlUmVzdWx0PiB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVURldmljZSYgZGV2
aWNlLCBjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorc3Rh
dGljIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gdHJ5Q3JlYXRlTVRMQ29tcHV0
ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgaWYgKCFkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tcHV0ZVBpcGVsaW5lOjp0
cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gY29udmVy
dFJlc3VsdCA9IGNvbnZlcnRDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwg
ZGVzY3JpcHRvciwgZGV2aWNlKTsKLSAgICBpZiAoIWNvbnZlcnRSZXN1bHQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgQVNTRVJUKGNvbnZlcnRSZXN1bHQtPnBpcGVsaW5lRGVz
Y3JpcHRvcik7Ci0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gY29udmVydFJlc3VsdC0+cGlwZWxp
bmVEZXNjcmlwdG9yOworICAgIGF1dG8gY29tcHV0ZUZ1bmN0aW9uID0gdHJ5Q3JlYXRlTXRsQ29t
cHV0ZUZ1bmN0aW9uKGRlc2NyaXB0b3IuY29tcHV0ZVN0YWdlKTsKKyAgICBpZiAoIWNvbXB1dGVG
dW5jdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8TVRMQ29t
cHV0ZVBpcGVsaW5lU3RhdGU+IHBpcGVsaW5lOworICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlw
ZWxpbmVTdGF0ZT4gcGlwZWxpbmVTdGF0ZTsKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKIAog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBwaXBlbGluZVN0YXRlID0gYWRv
cHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb246Y29tcHV0ZUZ1bmN0aW9uLmdldCgpIGVycm9yOiZlcnJvcl0pOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBw
aXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0NvbXB1dGVQaXBl
bGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBvcHRpb25zOk1UTFBp
cGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9uOm5pbCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAo
IXBpcGVsaW5lKSB7CisgICAgaWYgKCFwaXBlbGluZVN0YXRlKQogICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQ29tcHV0ZVBpcGVsaW5lOjp0cnlDcmVhdGUoKTogJXMhIiwgZXJyb3IgPyBlcnJvci5s
b2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nIDogIlVuYWJsZSB0byBjcmVhdGUgTVRMQ29t
cHV0ZVBpcGVsaW5lU3RhdGUhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fQogCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHJldHVybiB7eyBwaXBl
bGluZSwgY29udmVydFJlc3VsdC0+Y29tcHV0ZURpbWVuc2lvbnMgfX07CisgICAgcmV0dXJuIHBp
cGVsaW5lU3RhdGU7CiB9CiAKIFJlZlB0cjxHUFVDb21wdXRlUGlwZWxpbmU+IEdQVUNvbXB1dGVQ
aXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCkiOwotCi0gICAg
YXV0byBjcmVhdGVSZXN1bHQgPSB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShmdW5j
dGlvbk5hbWUsIGRldmljZSwgZGVzY3JpcHRvcik7Ci0gICAgaWYgKCFjcmVhdGVSZXN1bHQpCisg
ICAgYXV0byBtdGxQaXBlbGluZSA9IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBlbGluZVN0YXRlKGRl
dmljZSwgZGVzY3JpcHRvcik7CisgICAgaWYgKCFtdGxQaXBlbGluZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNvbXB1dGVQaXBlbGluZShX
VEZNb3ZlKGNyZWF0ZVJlc3VsdC0+cGlwZWxpbmVTdGF0ZSksIGNyZWF0ZVJlc3VsdC0+Y29tcHV0
ZURpbWVuc2lvbnMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNvbXB1dGVQaXBlbGlu
ZShXVEZNb3ZlKG10bFBpcGVsaW5lKSkpOwogfQogCi1HUFVDb21wdXRlUGlwZWxpbmU6OkdQVUNv
bXB1dGVQaXBlbGluZShSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+JiYgcGlwZWxp
bmUsIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9ucykKK0dQVUNvbXB1
dGVQaXBlbGluZTo6R1BVQ29tcHV0ZVBpcGVsaW5lKFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxp
bmVTdGF0ZT4mJiBwaXBlbGluZSkKICAgICA6IG1fcGxhdGZvcm1Db21wdXRlUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpCi0gICAgLCBtX2NvbXB1dGVEaW1lbnNpb25zKGNvbXB1dGVEaW1lbnNp
b25zKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0
TGF5b3V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ1NzY4OGY1YmUxODdj
NjY0ZGQxMzhmZTI0NjUyZmQxMTA3NDNmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
OTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIgotCi0jaW5jbHVkZSAiR1BVUGlwZWxpbmVM
YXlvdXQuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RhdGljIE9wdGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFnZUZs
YWdzKEdQVVNoYWRlclN0YWdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0PFdITFNMOjpT
aGFkZXJTdGFnZT4gcmVzdWx0OwotICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlQml0OjpG
bGFnczo6VmVydGV4KQotICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6VmVy
dGV4KTsKLSAgICBpZiAoZmxhZ3MgJiBHUFVTaGFkZXJTdGFnZUJpdDo6RmxhZ3M6OkZyYWdtZW50
KQotICAgICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwotICAg
IGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlQml0OjpGbGFnczo6Q29tcHV0ZSkKLSAgICAgICAg
cmVzdWx0LmFkZChXSExTTDo6U2hhZGVyU3RhZ2U6OkNvbXB1dGUpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+
IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFsQmluZGluZ0Rl
dGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlscykKLXsKLSAgICByZXR1cm4gV1RGOjp2aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5p
Zm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7
Ci0gICAgICAgIHJldHVybiB7IFdITFNMOjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1C
dWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5
b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJp
bmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfSwgWyZd
KEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6
OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiB7IFdITFNMOjpTYW1wbGVyQmluZGlu
ZyB7IH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkg
LT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAgIHJl
dHVybiB7IFdITFNMOjpUZXh0dXJlQmluZGluZyB7IH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdy
b3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyIHN0b3JhZ2VCdWZmZXIpIC0+IE9wdGlvbmFsPFdITFNM
OjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1cm4geyBXSExTTDo6U3Rv
cmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07
Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+
IE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH0pLCBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKLX0KLQot
T3B0aW9uYWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxh
eW91dCYgbGF5b3V0KQotewotICAgIFdITFNMOjpMYXlvdXQgcmVzdWx0OwotICAgIGlmIChsYXlv
dXQuYmluZEdyb3VwTGF5b3V0cygpLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKCkuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgYXV0byYgYmluZEdyb3VwTGF5b3V0ID0gbGF5b3V0LmJpbmRHcm91cExheW91
dHMoKVtpXTsKLSAgICAgICAgV0hMU0w6OkJpbmRHcm91cCBiaW5kR3JvdXA7Ci0gICAgICAgIGJp
bmRHcm91cC5uYW1lID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpOwotICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGtleVZhbHVlUGFpciA6IGJpbmRHcm91cExheW91dC0+YmluZGluZ3NNYXAoKSkg
ewotICAgICAgICAgICAgY29uc3QgYXV0byYgYmluZGluZ0RldGFpbHMgPSBrZXlWYWx1ZVBhaXIu
dmFsdWU7Ci0gICAgICAgICAgICBXSExTTDo6QmluZGluZyBiaW5kaW5nOwotICAgICAgICAgICAg
YmluZGluZy52aXNpYmlsaXR5ID0gY29udmVydFNoYWRlclN0YWdlRmxhZ3MoYmluZGluZ0RldGFp
bHMuZXh0ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkpOwotICAgICAgICAgICAgaWYgKGF1dG8gYmlu
ZGluZ1R5cGUgPSBjb252ZXJ0QmluZGluZ1R5cGUoYmluZGluZ0RldGFpbHMuaW50ZXJuYWxCaW5k
aW5nRGV0YWlscykpCi0gICAgICAgICAgICAgICAgYmluZGluZy5iaW5kaW5nID0gKmJpbmRpbmdU
eXBlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgICAgICBpZiAoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRp
bmcgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgICAgIGJpbmRpbmcuZXh0ZXJuYWxOYW1l
ID0gYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmc7Ci0gICAgICAgICAgICBi
aW5kaW5nLmludGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmludGVybmFsTmFtZTsKLSAgICAg
ICAgICAgIGJpbmRHcm91cC5iaW5kaW5ncy5hcHBlbmQoV1RGTW92ZShiaW5kaW5nKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKGJpbmRHcm91cCkpOwotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyOWQ5M2FmMDI1
ZWEyZTFhNjExY2NhZjM5MmUwMGNjMTZiYjYyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJH
UFUpCi0KLSNpbmNsdWRlICJXSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVVBpcGVsaW5l
TGF5b3V0OwotCi1PcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQ
VVBpcGVsaW5lTGF5b3V0Jik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCmluZGV4IDE3NDVkZjAxN2I2N2RkNGVjODAyMGM0MGNlYWQ0MGVjM2Q2
NzY1YzMuLjRhOWVlYmJlMTMwMjY2MGYwZTliNjQ0YjM4ZTVhYzgzYjg0OGE3ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bXBvcnQgIkdQVURldmljZS5oIgogI2ltcG9ydCAiR1BVTGltaXRzLmgiCi0jaW1wb3J0ICJHUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIgogI2ltcG9ydCAiR1BVVXRpbHMuaCIKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgpAQCAtOTksNiArOTgsMzUg
QEAgc3RhdGljIFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0
ZXhGb3JtYXQgdmVydGV4Rm9ybWF0KQogICAgIH0KIH0KIAorc3RhdGljIE9wdGlvblNldDxXSExT
TDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFnZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxh
Z3MgZmxhZ3MpCit7CisgICAgT3B0aW9uU2V0PFdITFNMOjpTaGFkZXJTdGFnZT4gcmVzdWx0Owor
ICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlQml0OjpGbGFnczo6VmVydGV4KQorICAgICAg
ICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6VmVydGV4KTsKKyAgICBpZiAoZmxhZ3Mg
JiBHUFVTaGFkZXJTdGFnZUJpdDo6RmxhZ3M6OkZyYWdtZW50KQorICAgICAgICByZXN1bHQuYWRk
KFdITFNMOjpTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOworICAgIGlmIChmbGFncyAmIEdQVVNoYWRl
clN0YWdlQml0OjpGbGFnczo6Q29tcHV0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXSExTTDo6U2hh
ZGVyU3RhZ2U6OkNvbXB1dGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBPcHRp
b25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShH
UFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5n
RGV0YWlscykKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShH
UFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9u
YWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgICAgIHJldHVybiB7IFdI
TFNMOjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhO
YW1lIH0gfTsKKyAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1
ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6
U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Cisg
ICAgICAgIHJldHVybiB7IFdITFNMOjpTYW1wbGVyQmluZGluZyB7IH0gfTsKKyAgICB9LCBbJl0o
R1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkgLT4gT3B0aW9uYWw8V0hMU0w6OkJp
bmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgICAgIHJldHVybiB7IFdITFNMOjpUZXh0dXJl
QmluZGluZyB7IH0gfTsKKyAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTdG9yYWdlQnVm
ZmVyIHN0b3JhZ2VCdWZmZXIpIC0+IE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0
YWlscz4geworICAgICAgICByZXR1cm4geyBXSExTTDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBz
dG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07CisgICAgfSwgWyZdKEdQVUJpbmRH
cm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IE9wdGlvbmFsPFdITFNMOjpCaW5k
aW5nOjpCaW5kaW5nRGV0YWlscz4geworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IH0pLCBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKK30KKwogc3RhdGljIE9wdGlvbmFsPFdITFNM
OjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZv
cm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpAQCAtMzQwLDYgKzM2OCwzNCBAQCBzdGF0
aWMgYm9vbCB0cnlTZXRDb2xvclN0YXRlcyhjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUs
IGNvbnN0IFZlY3RvcjxHUFVDbwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgT3B0aW9u
YWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYg
bGF5b3V0KQoreworICAgIFdITFNMOjpMYXlvdXQgcmVzdWx0OworICAgIGlmIChsYXlvdXQuYmlu
ZEdyb3VwTGF5b3V0cygpLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgYXV0byYgYmluZEdyb3VwTGF5b3V0ID0gbGF5b3V0LmJpbmRHcm91cExheW91dHMoKVtp
XTsKKyAgICAgICAgV0hMU0w6OkJpbmRHcm91cCBiaW5kR3JvdXA7CisgICAgICAgIGJpbmRHcm91
cC5uYW1lID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGtleVZhbHVlUGFpciA6IGJpbmRHcm91cExheW91dC0+YmluZGluZ3NNYXAoKSkgeworICAg
ICAgICAgICAgY29uc3QgYXV0byYgYmluZGluZ0RldGFpbHMgPSBrZXlWYWx1ZVBhaXIudmFsdWU7
CisgICAgICAgICAgICBXSExTTDo6QmluZGluZyBiaW5kaW5nOworICAgICAgICAgICAgYmluZGlu
Zy52aXNpYmlsaXR5ID0gY29udmVydFNoYWRlclN0YWdlRmxhZ3MoYmluZGluZ0RldGFpbHMuZXh0
ZXJuYWxCaW5kaW5nLnZpc2liaWxpdHkpOworICAgICAgICAgICAgaWYgKGF1dG8gYmluZGluZ1R5
cGUgPSBjb252ZXJ0QmluZGluZ1R5cGUoYmluZGluZ0RldGFpbHMuaW50ZXJuYWxCaW5kaW5nRGV0
YWlscykpCisgICAgICAgICAgICAgICAgYmluZGluZy5iaW5kaW5nID0gKmJpbmRpbmdUeXBlOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBpZiAoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmcgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGJpbmRpbmcuZXh0ZXJuYWxOYW1lID0gYmlu
ZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmc7CisgICAgICAgICAgICBiaW5kaW5n
LmludGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmludGVybmFsTmFtZTsKKyAgICAgICAgICAg
IGJpbmRHcm91cC5iaW5kaW5ncy5hcHBlbmQoV1RGTW92ZShiaW5kaW5nKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKGJpbmRHcm91cCkpOworICAgIH0KKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9ucyhjb25z
dCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE1UTExpYnJhcnkgKnZlcnRleE1ldGFsTGlicmFy
eSwgTVRMTGlicmFyeSAqZnJhZ21lbnRNZXRhbExpYnJhcnksIE1UTFJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciAqbXRsRGVzY3JpcHRvciwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFt
ZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudEVudHJ5UG9pbnROYW1lKQogewogI2lmIExPR19ESVNB
QkxFRApAQCAtNDEwLDYgKzQ2Niw4IEBAIHN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25z
dCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVVBpcGVsaW5lU3RhCiAgICAgICAg
IGlmICghd2hsc2xDb21waWxlUmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiTWV0YWwgU291cmNlOiAlcyIsIHdobHNsQ29tcGlsZVJlc3Vs
dC0+bWV0YWxTb3VyY2UudXRmOCgpLmRhdGEoKSk7CisKICAgICAgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7CiAKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtNDg0LDEx
ICs1NDIsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4g
Y29udmVydFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihjbwogCiBzdGF0aWMgUmV0YWluUHRyPE1U
TFJlbmRlclBpcGVsaW5lU3RhdGU+IHRyeUNyZWF0ZU10bFJlbmRlclBpcGVsaW5lU3RhdGUoY29u
c3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQogewotICAgIGlmICgh
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbXB1
dGVQaXBlbGluZTo6dHJ5Q3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KICAgICBhdXRvIG10bERlc2NyaXB0b3IgPSBjb252ZXJ0
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgZGVzY3JpcHRvciwgZGV2aWNl
KTsKICAgICBpZiAoIW10bERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
NDk3LDcgKzU1MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4g
dHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjCiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBOU0Vy
cm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQu
R1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKICAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2Rldmlj
ZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpt
dGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOiZlcnJvcl0pOwogICAgIGlmICghcGlwZWxpbmUpCiAg
ICAgICAgIExPRyhXZWJHUFUsICIlczogJXMhIiwgZnVuY3Rpb25OYW1lLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZDRkMjhiMDM2MmZjZTJmNjQwYWNh
MzI0NzlmNTlmMjFiMThiMzdmLi45YmEzOTY0MmU2ODJjNTQzYzY0NDM0NjAwMzljNzg4MTEwMjQy
MWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDYtMTMgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyNDYzOTYgYW5kIHIyNDYzOTcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg4MzcKKworICAgICAgICBCcmVha3MgaW50ZXJuYWwgYnVpbGRzIChS
ZXF1ZXN0ZWQgYnkgU2hhd25Sb2JlcnRzIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVk
IGNoYW5nZXNldHM6CisKKyAgICAgICAgIltXSExTTF0gSG9vayB1cCBjb21wdXRlIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NjQ0CisgICAgICAg
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDYzOTYKKworICAgICAgICAiW1dI
TFNMXSBIb29rIHVwIGNvbXB1dGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg2NDQKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzI0NjM5NworCiAyMDE5LTA2LTEzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICB0d2l0Y2gudHY6IGVtYmVkZGVkIHZpZGVvIGhvdmVycyBkb3duIHRo
ZSBzY3JlZW4gd2hlbiBzY3JvbGxpbmcgb24gaVBhZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2NvbXB1dGUtc3F1YXJlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUv
Y29tcHV0ZS1zcXVhcmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5
MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L2NvbXB1dGUtc3F1YXJlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tcHV0ZS1zcXVhcmVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvY29tcHV0ZS1zcXVhcmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliZmZjMDhkMmFi
MDk2MWM0ZWFhNjVlNjkyMjRmYjZiYzVjYTMyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdwdS9jb21wdXRlLXNxdWFyZXMuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZ
UEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFi
bGVkPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+RXhlY3V0ZSBhIHNp
bXBsZSBjb21wdXRlIHNoYWRlciB3aXRoIFdlYiBHUFUuPC90aXRsZT4KKzxib2R5PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2NvbnN0
IGRhdGEgPSBuZXcgVWludDMyQXJyYXkoWzIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisK
K2NvbnN0IGRhdGFCaW5kaW5nID0gMDsKK2NvbnN0IGJpbmRHcm91cEluZGV4ID0gMDsKKworY29u
c3Qgc2hhZGVyQ29kZSA9IGAKKyNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+CisKK3N0cnVjdCBEYXRh
IHsKKyAgICBkZXZpY2UgdW5zaWduZWQqIG51bWJlcnMgW1tpZCgke2RhdGFCaW5kaW5nfSldXTsK
K307CisKK2tlcm5lbCB2b2lkIGNvbXB1dGUoZGV2aWNlIERhdGEmIGRhdGEgW1tidWZmZXIoJHti
aW5kR3JvdXBJbmRleH0pXV0sIHVuc2lnbmVkIGdpZCBbW3RocmVhZF9wb3NpdGlvbl9pbl9ncmlk
XV0pCit7CisgICAgaWYgKGdpZCA+PSAke2RhdGEubGVuZ3RofSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdW5zaWduZWQgb3JpZ2luYWwgPSBkYXRhLm51bWJlcnNbZ2lkXTsKKyAgICBkYXRhLm51
bWJlcnNbZ2lkXSA9IG9yaWdpbmFsICogb3JpZ2luYWw7Cit9CitgCisKK3Byb21pc2VfdGVzdChh
c3luYyAoKSA9PiB7CisgICAgCisgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0QmFzaWNEZXZp
Y2UoKTsKKyAgICAKKyAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSwgaXNXSExTTDogZmFsc2UgfSk7CisgICAgY29uc3Qg
Y29tcHV0ZVN0YWdlRGVzY3JpcHRvciA9IHsgbW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9p
bnQ6ICJjb21wdXRlIiB9OworICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSh7IGNvbXB1dGVTdGFnZTogY29tcHV0ZVN0YWdlRGVzY3JpcHRvciB9KTsKKyAg
ICAKKyAgICBjb25zdCBkYXRhQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7
IHNpemU6IGRhdGEuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBH
UFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9LCBkYXRhLmJ1ZmZlcik7CisgICAgCisgICAgY29uc3Qg
YmdMYXlvdXRCaW5kaW5nID0geyBiaW5kaW5nOiBkYXRhQmluZGluZywgdmlzaWJpbGl0eTogR1BV
U2hhZGVyU3RhZ2VCaXQuQ09NUFVURSwgdHlwZTogInN0b3JhZ2UtYnVmZmVyIiB9OworICAgIGNv
bnN0IGJnTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7IGJpbmRpbmdzOiBb
YmdMYXlvdXRCaW5kaW5nXSB9KTsKKyAgICAKKyAgICBjb25zdCBidWZmZXJCaW5kaW5nID0geyBi
dWZmZXI6IGRhdGFCdWZmZXIsIHNpemU6IGRhdGEuYnl0ZUxlbmd0aCB9OworICAgIGNvbnN0IGJn
QmluZGluZyA9IHsgYmluZGluZzogZGF0YUJpbmRpbmcsIHJlc291cmNlOiBidWZmZXJCaW5kaW5n
IH07CisgICAgCisgICAgY29uc3QgYmluZEdyb3VwRGVzY3JpcHRvciA9IHsgbGF5b3V0OiBiZ0xh
eW91dCwgYmluZGluZ3M6IFtiZ0JpbmRpbmddIH07CisgICAgY29uc3QgYmluZEdyb3VwID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cChiaW5kR3JvdXBEZXNjcmlwdG9yKTsKKyAgICAKKyAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNv
bnN0IHBhc3NFbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOworICAg
IAorICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91cChiaW5kR3JvdXBJbmRleCwgYmluZEdyb3Vw
KTsKKyAgICAKKyAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7CisgICAgCisg
ICAgLy8gT25lIHRocmVhZCBncm91cC4KKyAgICBwYXNzRW5jb2Rlci5kaXNwYXRjaCgxLCAxLCAx
KTsKKyAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7CisgICAgCisgICAgZGV2aWNlLmdldFF1ZXVl
KCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOworICAgIAorICAgIGNvbnN0IHJl
YWREYXRhQXJyYXlCdWZmZXIgPSBhd2FpdCBkYXRhQnVmZmVyLm1hcFJlYWRBc3luYygpOworICAg
IGFzc2VydF9ub3RfZXF1YWxzKHJlYWREYXRhQXJyYXlCdWZmZXIsIG51bGwsICJBc3luYyByZWFk
IHByb21pc2UgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5Iik7CisgICAgCisgICAgY29uc3QgcmVhZERh
dGEgPSBuZXcgVWludDMyQXJyYXkocmVhZERhdGFBcnJheUJ1ZmZlcik7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHJlYWREYXRhLmxlbmd0aDsgKytpKQorICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlYWREYXRhW2ldLCBkYXRhW2ldICogZGF0YVtpXSwgIkRhdGEgd2FzIHN1Y2Nlc2Z1bGx5IHNx
dWFyZWQiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Cit9LCAiU3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIGEgYmFzaWMgY29tcHV0
ZSBwYXNzIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtY29tcHV0ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtY29tcHV0ZS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMTY2OGExMDNiZWI5MmY3NmVhN2U4ZDdhYTdmZmI1
MGU4OWUyNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWNvbXB1dGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTIgKzAsMCBAQAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi1QQVNTIHJlc3VsdHNGbG9hdDMyQXJyYXlbMF0gaXMgMgotUEFTUyByZXN1
bHRzRmxvYXQzMkFycmF5WzFdIGlzIDQKLVBBU1MgcmVzdWx0c0Zsb2F0MzJBcnJheVsyXSBpcyA2
Ci1QQVNTIHJlc3VsdHNGbG9hdDMyQXJyYXlbM10gaXMgOAotUEFTUyByZXN1bHRzRmxvYXQzMkFy
cmF5WzRdIGlzIDUKLVBBU1MgcmVzdWx0c0Zsb2F0MzJBcnJheVs1XSBpcyA2Ci1QQVNTIHJlc3Vs
dHNGbG9hdDMyQXJyYXlbNl0gaXMgNwotUEFTUyByZXN1bHRzRmxvYXQzMkFycmF5WzddIGlzIDgK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWNvbXB1dGUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC1jb21wdXRlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkwNTg0MDdjOWFlMzZlYTdjYzEzZDlhNWViYTg2ODQ4ZTM1NzljMzIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsLWNvbXB1dGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotY29u
c3Qgc2hhZGVyU291cmNlID0gYAotW251bXRocmVhZHMoMiwgMSwgMSldCi1jb21wdXRlIHZvaWQg
Y29tcHV0ZVNoYWRlcihkZXZpY2UgZmxvYXRbXSBidWZmZXIgOiByZWdpc3Rlcih1MCksIGZsb2F0
MyB0aHJlYWRJRCA6IFNWX0Rpc3BhdGNoVGhyZWFkSUQpIHsKLSAgICBidWZmZXJbdWludCh0aHJl
YWRJRC54KV0gPSBidWZmZXJbdWludCh0aHJlYWRJRC54KV0gKiAyLjA7Ci19Ci1gOwotbGV0IHJl
c3VsdHNGbG9hdDMyQXJyYXk7Ci1hc3luYyBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICBjb25zdCBh
ZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpOwotICAgIGNvbnN0
IGRldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVxdWVzdERldmljZSgpOwotCi0gICAgY29uc3Qgc2hh
ZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNl
LCBpc1dITFNMOiB0cnVlfSk7Ci0gICAgY29uc3QgY29tcHV0ZVN0YWdlID0ge21vZHVsZTogc2hh
ZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAiY29tcHV0ZVNoYWRlciJ9OwotCi0gICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNpYmls
aXR5OiA3LCB0eXBlOiAic3RvcmFnZS1idWZmZXIifV19OwotICAgIGNvbnN0IGJpbmRHcm91cExh
eW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvcik7Ci0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91cExh
eW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKLSAgICBjb25zdCBwaXBlbGluZUxheW91dCA9IGRl
dmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwotCi0g
ICAgY29uc3QgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA9IHtjb21wdXRlU3RhZ2UsIGxheW91
dDogcGlwZWxpbmVMYXlvdXR9OwotICAgIGNvbnN0IGNvbXB1dGVQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7Ci0KLSAgICBj
b25zdCBidWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCAqIDgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfCBHUFVCdWZmZXJVc2Fn
ZS5UUkFOU0ZFUl9TUkN9OwotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIo
YnVmZmVyRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgYnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCBi
dWZmZXIubWFwV3JpdGVBc3luYygpOwotICAgIGNvbnN0IGJ1ZmZlckZsb2F0MzJBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkoYnVmZmVyQXJyYXlCdWZmZXIpOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJh
eVswXSA9IDE7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5WzFdID0gMjsKLSAgICBidWZmZXJGbG9h
dDMyQXJyYXlbMl0gPSAzOwotICAgIGJ1ZmZlckZsb2F0MzJBcnJheVszXSA9IDQ7Ci0gICAgYnVm
ZmVyRmxvYXQzMkFycmF5WzRdID0gNTsKLSAgICBidWZmZXJGbG9hdDMyQXJyYXlbNV0gPSA2Owot
ICAgIGJ1ZmZlckZsb2F0MzJBcnJheVs2XSA9IDc7Ci0gICAgYnVmZmVyRmxvYXQzMkFycmF5Wzdd
ID0gODsKLSAgICBidWZmZXIudW5tYXAoKTsKLQotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXJEZXNj
cmlwdG9yID0ge3NpemU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDgsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIHwg
R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9OwotICAgIGNvbnN0IHJlc3VsdHNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlc3VsdHNCdWZmZXJEZXNjcmlwdG9yKTsKLQotICAgIGNvbnN0IGJ1
ZmZlckJpbmRpbmcgPSB7YnVmZmVyOiByZXN1bHRzQnVmZmVyLCBzaXplOiA0fTsKLSAgICBjb25z
dCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJCaW5kaW5n
fTsKLSAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdyb3VwTGF5
b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKLSAgICBjb25zdCBiaW5kR3JvdXAg
PSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOwotCi0gICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsgLy8ge30K
LSAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyLCAwLCByZXN1bHRz
QnVmZmVyLCAwLCBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA4KTsKLSAgICBjb25z
dCBjb21wdXRlUGFzc0VuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7
Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOwotICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCgyLCAxLCAxKTsKLSAgICBjb21wdXRlUGFzc0VuY29k
ZXIuZW5kUGFzcygpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsK
LQotICAgIGNvbnN0IHJlc3VsdHNBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3VsdHNCdWZmZXIubWFw
UmVhZEFzeW5jKCk7Ci0gICAgcmVzdWx0c0Zsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
cmVzdWx0c0FycmF5QnVmZmVyKTsKLSAgICBzaG91bGRCZSgicmVzdWx0c0Zsb2F0MzJBcnJheVsw
XSIsICIyIik7Ci0gICAgc2hvdWxkQmUoInJlc3VsdHNGbG9hdDMyQXJyYXlbMV0iLCAiNCIpOwot
ICAgIHNob3VsZEJlKCJyZXN1bHRzRmxvYXQzMkFycmF5WzJdIiwgIjYiKTsKLSAgICBzaG91bGRC
ZSgicmVzdWx0c0Zsb2F0MzJBcnJheVszXSIsICI4Iik7Ci0gICAgc2hvdWxkQmUoInJlc3VsdHNG
bG9hdDMyQXJyYXlbNF0iLCAiNSIpOwotICAgIHNob3VsZEJlKCJyZXN1bHRzRmxvYXQzMkFycmF5
WzVdIiwgIjYiKTsKLSAgICBzaG91bGRCZSgicmVzdWx0c0Zsb2F0MzJBcnJheVs2XSIsICI3Iik7
Ci0gICAgc2hvdWxkQmUoInJlc3VsdHNGbG9hdDMyQXJyYXlbN10iLCAiOCIpOwotICAgIHJlc3Vs
dHNCdWZmZXIudW5tYXAoKTsKLX0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVu
Y3Rpb24oKSB7Ci0gICAgc3RhcnQoKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19KTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>