<?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>177460</bug_id>
          
          <creation_ts>2017-09-25 13:36:31 -0700</creation_ts>
          <short_desc>REGRESSION(r222455): broke iOS build (Requested by alexchristensen on #webkit).</short_desc>
          <delta_ts>2017-09-27 12:17:04 -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>177013</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1352380</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-25 13:36:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/222455 broke the build:
broke iOS build (Requested by alexchristensen 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>1352381</commentid>
    <comment_count>1</comment_count>
      <attachid>321732</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-25 13:36:45 -0700</bug_when>
    <thetext>Created attachment 321732
ROLLOUT of r222455

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>1352382</commentid>
    <comment_count>2</comment_count>
      <attachid>321732</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-25 13:38:27 -0700</bug_when>
    <thetext>Comment on attachment 321732
ROLLOUT of r222455

Clearing flags on attachment: 321732

Committed r222462: &lt;http://trac.webkit.org/changeset/222462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352383</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-25 13:38:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353257</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:17:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/34692941&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321732</attachid>
            <date>2017-09-25 13:36:45 -0700</date>
            <delta_ts>2017-09-25 13:38:27 -0700</delta_ts>
            <desc>ROLLOUT of r222455</desc>
            <filename>bug-177460-20170925163644.patch</filename>
            <type>text/plain</type>
            <size>68918</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ3ZGQ2MjAxNzA5ODEy
NTk2ZTU1NzQ1NWI1ZDg1NWJkYmFkZTI3Yi4uZGY0M2UzM2NkMTgyMDkyMGNjMDUxNDI1ZDE4Yjll
MGVjZDIzOTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTI1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjIyNDU1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3NDYwCisKKyAgICAgICAgYnJva2UgaU9TIGJ1aWxkIChSZXF1ZXN0
ZWQgYnkgYWxleGNocmlzdGVuc2VuIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiQWRkIFdLQ29udGVudFJ1bGVMaXN0IG5vdGlmeSBhY3Rpb24g
dHlwZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NzAxMworICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjI0NTUKKwog
MjAxNy0wOS0yNSAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNv
bT4KIAogICAgICAgICBCdWlsZGluZyByZWxlYXNlIHdpdGggLURMT0dfRElTQUJMRUQ9MCBmYWls
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4ZjllYWY2ZDhmMzQzNWM3ZTE4ODRkMzYyMGFmNWFiOTEyMDFlZDA2Li40
ODgwZTMxNDdiYzQzMDU1NzIzN2NkYmQwMjEzMTVmMDgxNDI5ZmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE3LTA5LTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNDU1LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDYwCisKKyAgICAg
ICAgYnJva2UgaU9TIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgYWxleGNocmlzdGVuc2VuIG9uICN3ZWJr
aXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQWRkIFdLQ29u
dGVudFJ1bGVMaXN0IG5vdGlmeSBhY3Rpb24gdHlwZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzAxMworICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yMjI0NTUKKwogMjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNlcGFyYXRlIGZvcm0gc3VibWlz
c2lvbiBmcm9tIFBvbGljeUNoZWNrZXIgaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5o
CmluZGV4IGNiMDJlYWQ5MjA0MTQ5YjFiMTM2YjI1OGE2NGExNzk4N2Y1ZDg3NWYuLjI3Y2Q4NGE4
ZWQzNTg0ZDhiOTk5YWNjZmYzMjIwZjU5ZjZmNGU5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaApA
QCAtMjcsMTIgKzI3LDggQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiAKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CkBAIC00MywzNSArMzksMTcgQEAg
ZW51bSBjbGFzcyBBY3Rpb25UeXBlIDogdWludDhfdCB7CiAgICAgQmxvY2tMb2FkLAogICAgIEJs
b2NrQ29va2llcywKICAgICBDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLAotICAgIE5vdGlmeSwKLSAg
ICBJZ25vcmVQcmV2aW91c1J1bGVzLAotICAgIE1ha2VIVFRQUywKKyAgICBJZ25vcmVQcmV2aW91
c1J1bGVzID0gMywKKyAgICBNYWtlSFRUUFMgPSA0LAogfTsKIAotc3RhdGljIGlubGluZSBib29s
IGhhc1N0cmluZ0FyZ3VtZW50KEFjdGlvblR5cGUgYWN0aW9uVHlwZSkKLXsKLSAgICBzd2l0Y2gg
KGFjdGlvblR5cGUpIHsKLSAgICBjYXNlIEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3I6Ci0gICAgY2FzZSBBY3Rpb25UeXBlOjpOb3RpZnk6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGNhc2UgQWN0aW9uVHlwZTo6QmxvY2tMb2FkOgotICAgIGNhc2UgQWN0aW9uVHlwZTo6Qmxv
Y2tDb29raWVzOgotICAgIGNhc2UgQWN0aW9uVHlwZTo6SWdub3JlUHJldmlvdXNSdWxlczoKLSAg
ICBjYXNlIEFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0
cnVjdCBCbG9ja2VkU3RhdHVzIHsKICAgICBib29sIGJsb2NrZWRMb2FkIHsgZmFsc2UgfTsKICAg
ICBib29sIGJsb2NrZWRDb29raWVzIHsgZmFsc2UgfTsKICAgICBib29sIG1hZGVIVFRQUyB7IGZh
bHNlIH07Ci0gICAgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBub3RpZmljYXRp
b25zOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVl
c3QoY29uc3QgQmxvY2tlZFN0YXR1cyYsIFBhZ2UqLCBSZXNvdXJjZVJlcXVlc3QmKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGNvbnN0IEJsb2NrZWRT
dGF0dXMmLCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVu
c2lvbnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKaW5kZXggNTZkZmY2YTRhNDJjYTZmMTQ2
N2EyNWI1YTc1ODBlYThjYzQzNzk3OS4uZmJmZWNmNTA5YzA4Y2YyMDc0OWJiZjBjZDYzYzY1NWU3
ZWNhMjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCkBAIC02OCw0MSArNjgsNDggQEAg
c3RhdGljIHZvaWQgc2VyaWFsaXplU3RyaW5nKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4m
IGFjdGlvbnMsIGNvbnN0IFN0cmluZyYKICAgICB9CiB9CiAKLS8vIGNzcy1kaXNwbGF5LW5vbmUg
Y29tYmluaW5nIGlzIHNwZWNpYWwgYmVjYXVzZSB3ZSBjb21iaW5lIHRoZSBzdHJpbmcgYXJndW1l
bnRzIHdpdGggY29tbWFzIGJlY2F1c2Ugd2Uga25vdyB0aGV5IGFyZSBjc3Mgc2VsZWN0b3JzLgog
c3RydWN0IFBlbmRpbmdEaXNwbGF5Tm9uZUFjdGlvbnMgewotICAgIFN0cmluZ0J1aWxkZXIgY29t
YmluZWRTZWxlY3RvcnM7Ci0gICAgVmVjdG9yPHVpbnQzMl90PiBjbGllbnRMb2NhdGlvbnM7Cisg
ICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0b3JzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gY2xpZW50
TG9jYXRpb25zOwogfTsKLQogdXNpbmcgUGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9uc01hcCA9IEhh
c2hNYXA8VHJpZ2dlciwgUGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9ucywgVHJpZ2dlckhhc2gsIFRy
aWdnZXJIYXNoVHJhaXRzPjsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZVBlbmRpbmdEaXNwbGF5Tm9u
ZUFjdGlvbnMoVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYgYWN0aW9ucywgVmVjdG9yPHVp
bnQzMl90PiYgYWN0aW9uTG9jYXRpb25zLCBQZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zTWFwJiBt
YXApCitzdGF0aWMgdm9pZCByZXNvbHZlUGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9ucyhWZWN0b3I8
U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiBhY3Rpb25zLCBWZWN0b3I8dW5zaWduZWQ+JiBhY3Rpb25M
b2NhdGlvbnMsIFBlbmRpbmdEaXNwbGF5Tm9uZUFjdGlvbnNNYXAmIHBlbmRpbmdEaXNwbGF5Tm9u
ZUFjdGlvbnNNYXApCiB7Ci0gICAgZm9yIChhdXRvJiBwZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25z
IDogbWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIHVpbnQzMl90IGFjdGlvbkxvY2F0aW9uID0gYWN0
aW9ucy5zaXplKCk7CisgICAgZm9yIChhdXRvJiBzbG90IDogcGVuZGluZ0Rpc3BsYXlOb25lQWN0
aW9uc01hcCkgeworICAgICAgICBQZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zJiBwZW5kaW5nQWN0
aW9ucyA9IHNsb3QudmFsdWU7CisKKyAgICAgICAgU3RyaW5nQnVpbGRlciBjb21iaW5lZFNlbGVj
dG9yczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBlbmRpbmdBY3Rpb25zLnNl
bGVjdG9ycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkpCisgICAgICAgICAgICAg
ICAgY29tYmluZWRTZWxlY3RvcnMuYXBwZW5kKCcsJyk7CisgICAgICAgICAgICBjb21iaW5lZFNl
bGVjdG9ycy5hcHBlbmQocGVuZGluZ0FjdGlvbnMuc2VsZWN0b3JzW2ldKTsKKyAgICAgICAgfQor
CisgICAgICAgIHVuc2lnbmVkIGFjdGlvbkxvY2F0aW9uID0gYWN0aW9ucy5zaXplKCk7CiAgICAg
ICAgIGFjdGlvbnMuYXBwZW5kKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRBY3Rpb25CeXRlPihBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yKSk7Ci0gICAgICAgIHNlcmlhbGl6ZVN0cmlu
ZyhhY3Rpb25zLCBwZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zLmNvbWJpbmVkU2VsZWN0b3JzLnRv
U3RyaW5nKCkpOwotICAgICAgICBmb3IgKHVpbnQzMl90IGNsaWVudExvY2F0aW9uIDogcGVuZGlu
Z0Rpc3BsYXlOb25lQWN0aW9ucy5jbGllbnRMb2NhdGlvbnMpCisgICAgICAgIHNlcmlhbGl6ZVN0
cmluZyhhY3Rpb25zLCBjb21iaW5lZFNlbGVjdG9ycy50b1N0cmluZygpKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBjbGllbnRMb2NhdGlvbiA6IHBlbmRpbmdBY3Rpb25zLmNsaWVudExvY2F0aW9u
cykKICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9uc1tjbGllbnRMb2NhdGlvbl0gPSBhY3Rpb25M
b2NhdGlvbjsKICAgICB9Ci0gICAgbWFwLmNsZWFyKCk7CisgICAgcGVuZGluZ0Rpc3BsYXlOb25l
QWN0aW9uc01hcC5jbGVhcigpOwogfQogCiBzdGF0aWMgVmVjdG9yPHVuc2lnbmVkPiBzZXJpYWxp
emVBY3Rpb25zKGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mIHJ1bGVMaXN0LCBW
ZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiBhY3Rpb25zKQogewogICAgIEFTU0VSVCghYWN0
aW9ucy5zaXplKCkpOwogCi0gICAgVmVjdG9yPHVpbnQzMl90PiBhY3Rpb25Mb2NhdGlvbnM7Cisg
ICAgVmVjdG9yPHVuc2lnbmVkPiBhY3Rpb25Mb2NhdGlvbnM7CiAKKyAgICAvLyBPcmRlciBvbmx5
IG1hdHRlcnMgYmVjYXVzZSBvZiBJZ25vcmVQcmV2aW91c1J1bGVzLiBBbGwgb3RoZXIgaWRlbnRp
Y2FsIGFjdGlvbnMgY2FuIGJlIGNvbWJpbmVkIGJldHdlZW4gZWFjaCBJZ25vcmVQcmV2aW91c1J1
bGVzCisgICAgLy8gYW5kIENTU0Rpc3BsYXlOb25lIHN0cmluZ3MgY2FuIGJlIGNvbWJpbmVkIGlm
IHRoZWlyIHRyaWdnZXJzIGFyZSBpZGVudGljYWwuCiAgICAgdXNpbmcgQWN0aW9uTG9jYXRpb24g
PSB1aW50MzJfdDsKICAgICB1c2luZyBBY3Rpb25NYXAgPSBIYXNoTWFwPFJlc291cmNlRmxhZ3Ms
IEFjdGlvbkxvY2F0aW9uLCBEZWZhdWx0SGFzaDxSZXNvdXJjZUZsYWdzPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxSZXNvdXJjZUZsYWdzPj47Ci0gICAgdXNpbmcg
U3RyaW5nQWN0aW9uTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBSZXNvdXJjZUZsYWdz
PiwgQWN0aW9uTG9jYXRpb24sIERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxTdHJpbmcsIFJlc291cmNl
RmxhZ3M+Pjo6SGFzaCwgUGFpckhhc2hUcmFpdHM8SGFzaFRyYWl0czxTdHJpbmc+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPFJlc291cmNlRmxhZ3M+Pj47CiAgICAgQWN0aW9u
TWFwIGJsb2NrTG9hZEFjdGlvbnNNYXA7CiAgICAgQWN0aW9uTWFwIGJsb2NrQ29va2llc0FjdGlv
bnNNYXA7CiAgICAgUGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9uc01hcCBjc3NEaXNwbGF5Tm9uZUFj
dGlvbnNNYXA7CiAgICAgQWN0aW9uTWFwIGlnbm9yZVByZXZpb3VzUnVsZUFjdGlvbnNNYXA7CiAg
ICAgQWN0aW9uTWFwIG1ha2VIVFRQU0FjdGlvbnNNYXA7Ci0gICAgU3RyaW5nQWN0aW9uTWFwIG5v
dGlmeUFjdGlvbnNNYXA7CiAKICAgICBmb3IgKHVuc2lnbmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJ
bmRleCA8IHJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5kZXgpIHsKICAgICAgICAgY29uc3QgQ29u
dGVudEV4dGVuc2lvblJ1bGUmIHJ1bGUgPSBydWxlTGlzdFtydWxlSW5kZXhdOwpAQCAtMTE1LDcg
KzEyMiw2IEBAIHN0YXRpYyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMoY29uc3Qg
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsCiAgICAgICAgICAgICBibG9ja0Nvb2tp
ZXNBY3Rpb25zTWFwLmNsZWFyKCk7CiAgICAgICAgICAgICBjc3NEaXNwbGF5Tm9uZUFjdGlvbnNN
YXAuY2xlYXIoKTsKICAgICAgICAgICAgIG1ha2VIVFRQU0FjdGlvbnNNYXAuY2xlYXIoKTsKLSAg
ICAgICAgICAgIG5vdGlmeUFjdGlvbnNNYXAuY2xlYXIoKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBpZ25vcmVQcmV2aW91c1J1bGVBY3Rpb25zTWFwLmNsZWFyKCk7CiAKQEAgLTEyNSwx
NyArMTMxLDE2IEBAIHN0YXRpYyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMoY29u
c3QgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsCiAgICAgICAgICAgICBhY3Rpb25M
b2NhdGlvbnMuYXBwZW5kKGFjdGlvbnMuc2l6ZSgpKTsKIAogICAgICAgICAgICAgYWN0aW9ucy5h
cHBlbmQoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZEFjdGlvbkJ5dGU+KGFjdGlvblR5cGUpKTsKLSAg
ICAgICAgICAgIGlmIChoYXNTdHJpbmdBcmd1bWVudChhY3Rpb25UeXBlKSkKKyAgICAgICAgICAg
IGlmIChhY3Rpb25UeXBlID09IEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IpCiAg
ICAgICAgICAgICAgICAgc2VyaWFsaXplU3RyaW5nKGFjdGlvbnMsIHJ1bGUuYWN0aW9uKCkuc3Ry
aW5nQXJndW1lbnQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJU
KHJ1bGUuYWN0aW9uKCkuc3RyaW5nQXJndW1lbnQoKS5pc051bGwoKSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFJlc291cmNlRmxhZ3MgZmxhZ3MgPSBydWxl
LnRyaWdnZXIoKS5mbGFnczsKICAgICAgICAgdW5zaWduZWQgYWN0aW9uTG9jYXRpb24gPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAgICAgICAgIAotICAgICAgICBhdXRv
IGZpbmRPck1ha2VBY3Rpb25Mb2NhdGlvbiA9IFsmXSAoQWN0aW9uTWFwJiBtYXApIHsKKyAgICAg
ICAgYXV0byBmaW5kT3JNYWtlQWN0aW9uTG9jYXRpb24gPSBbJl0gKEFjdGlvbk1hcCYgbWFwKSAK
KyAgICAgICAgewogICAgICAgICAgICAgY29uc3QgYXV0byBleGlzdGluZ0FjdGlvbiA9IG1hcC5m
aW5kKGZsYWdzKTsKICAgICAgICAgICAgIGlmIChleGlzdGluZ0FjdGlvbiA9PSBtYXAuZW5kKCkp
IHsKICAgICAgICAgICAgICAgICBhY3Rpb25Mb2NhdGlvbiA9IGFjdGlvbnMuc2l6ZSgpOwpAQCAt
MTQ0LDI3ICsxNDksMTMgQEAgc3RhdGljIFZlY3Rvcjx1bnNpZ25lZD4gc2VyaWFsaXplQWN0aW9u
cyhjb25zdCBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiBydWwKICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9uID0gZXhpc3RpbmdBY3Rpb24tPnZh
bHVlOwogICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgYXV0byBmaW5kT3JNYWtlU3RyaW5n
QWN0aW9uTG9jYXRpb24gPSBbJl0gKFN0cmluZ0FjdGlvbk1hcCYgbWFwKSB7Ci0gICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gcnVsZS5hY3Rpb24oKS5zdHJpbmdBcmd1bWVudCgp
OwotICAgICAgICAgICAgYXV0byBleGlzdGluZ0FjdGlvbiA9IG1hcC5maW5kKHN0ZDo6bWFrZV9w
YWlyKGFyZ3VtZW50LCBmbGFncykpOwotICAgICAgICAgICAgaWYgKGV4aXN0aW5nQWN0aW9uID09
IG1hcC5lbmQoKSkgewotICAgICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9uID0gYWN0aW9ucy5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgYWN0aW9ucy5hcHBlbmQoc3RhdGljX2Nhc3Q8U2VyaWFs
aXplZEFjdGlvbkJ5dGU+KGFjdGlvblR5cGUpKTsKLSAgICAgICAgICAgICAgICBzZXJpYWxpemVT
dHJpbmcoYWN0aW9ucywgYXJndW1lbnQpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoc3RkOjpt
YWtlX3BhaXIoYXJndW1lbnQsIGZsYWdzKSwgYWN0aW9uTG9jYXRpb24pOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgYWN0aW9uTG9jYXRpb24gPSBleGlzdGluZ0FjdGlvbi0+
dmFsdWU7Ci0gICAgICAgIH07CiAKICAgICAgICAgc3dpdGNoIChhY3Rpb25UeXBlKSB7CiAgICAg
ICAgIGNhc2UgQWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvcjogewogICAgICAgICAg
ICAgY29uc3QgYXV0byBhZGRSZXN1bHQgPSBjc3NEaXNwbGF5Tm9uZUFjdGlvbnNNYXAuYWRkKHJ1
bGUudHJpZ2dlcigpLCBQZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zKCkpOwotICAgICAgICAgICAg
YXV0byYgcGVuZGluZ1N0cmluZ0FjdGlvbnMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwot
ICAgICAgICAgICAgaWYgKCFwZW5kaW5nU3RyaW5nQWN0aW9ucy5jb21iaW5lZFNlbGVjdG9ycy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcGVuZGluZ1N0cmluZ0FjdGlvbnMuY29tYmluZWRT
ZWxlY3RvcnMuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICBwZW5kaW5nU3RyaW5nQWN0aW9ucy5j
b21iaW5lZFNlbGVjdG9ycy5hcHBlbmQocnVsZS5hY3Rpb24oKS5zdHJpbmdBcmd1bWVudCgpKTsK
LSAgICAgICAgICAgIHBlbmRpbmdTdHJpbmdBY3Rpb25zLmNsaWVudExvY2F0aW9ucy5hcHBlbmQo
YWN0aW9uTG9jYXRpb25zLnNpemUoKSk7CisgICAgICAgICAgICBQZW5kaW5nRGlzcGxheU5vbmVB
Y3Rpb25zJiBwZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgICAgIHBlbmRpbmdEaXNwbGF5Tm9uZUFjdGlvbnMuc2VsZWN0b3JzLmFw
cGVuZChydWxlLmFjdGlvbigpLnN0cmluZ0FyZ3VtZW50KCkpOworICAgICAgICAgICAgcGVuZGlu
Z0Rpc3BsYXlOb25lQWN0aW9ucy5jbGllbnRMb2NhdGlvbnMuYXBwZW5kKGFjdGlvbkxvY2F0aW9u
cy5zaXplKCkpOwogCiAgICAgICAgICAgICBhY3Rpb25Mb2NhdGlvbiA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgxLDkgKzE3
Miw2IEBAIHN0YXRpYyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMoY29uc3QgVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsCiAgICAgICAgIGNhc2UgQWN0aW9uVHlwZTo6
TWFrZUhUVFBTOgogICAgICAgICAgICAgZmluZE9yTWFrZUFjdGlvbkxvY2F0aW9uKG1ha2VIVFRQ
U0FjdGlvbnNNYXApOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWN0aW9uVHlw
ZTo6Tm90aWZ5OgotICAgICAgICAgICAgZmluZE9yTWFrZVN0cmluZ0FjdGlvbkxvY2F0aW9uKG5v
dGlmeUFjdGlvbnNNYXApOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBhY3Rpb25Mb2NhdGlvbnMuYXBwZW5kKGFjdGlvbkxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3Iu
Y3BwCmluZGV4IGQ4OGQ4NTExMjg2ZWNjYmM2NTAyMjUwMzkyN2ExZGNlY2Y0NmY5M2QuLjA0Yjhm
ODhmOWY5M2JiYWMwOTk5NDNhM2M0ZGRhOTFiZDliM2RiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNw
cApAQCAtODcsOCArODcsNiBAQCBjb25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0
ZW5zaW9uRXJyb3JDYXRlZ29yeSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJBIHRyaWdnZXIg
Y2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBjb25kaXRpb24gKGlmLWRvbWFpbiwgdW5sZXNzLWRv
bWFpbiwgaWYtdG9wLXVybCwgb3IgdW5sZXNzLXRvcC11cmwpIjsKICAgICAgICAgICAgIGNhc2Ug
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9wVVJMQW5kRG9tYWluQ29uZGl0aW9uczoKICAg
ICAgICAgICAgICAgICByZXR1cm4gIkEgbGlzdCBjYW5ub3QgaGF2ZSBpZi1kb21haW4gYW5kIHVu
bGVzcy1kb21haW4gbWl4ZWQgd2l0aCBpZi10b3AtdXJsIGFuZCB1bmxlc3MtdG9wLXVybCI7Ci0g
ICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWROb3RpZmlj
YXRpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJBIG5vdGlmeSBhY3Rpb24gbXVzdCBoYXZl
IGEgc3RyaW5nIG5vdGlmaWNhdGlvbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6OnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAppbmRleCAzZmYzZTc5OGRmNThlZTUz
YmVhZGUwYmU2YzY3NmRjYWU0ZjdhMDlhLi43YzVjOGJiMDUwNThmZDUzZDg5YmU2MGUzNWY1NDNk
OTY2MGJlYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaApAQCAtNTgsNyArNTgsNiBAQCBlbnVtIGNsYXNz
IENvbnRlbnRFeHRlbnNpb25FcnJvciB7CiAgICAgSlNPTkludmFsaWRBY3Rpb24sCiAgICAgSlNP
TkludmFsaWRBY3Rpb25UeXBlLAogICAgIEpTT05JbnZhbGlkQ1NTRGlzcGxheU5vbmVBY3Rpb25U
eXBlLAotICAgIEpTT05JbnZhbGlkTm90aWZpY2F0aW9uLAogICAgIEpTT05JbnZhbGlkUmVnZXgs
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDRiYjFkNzRmZjA5YWRmNGY1YTk0NzM2
ZmNkMWQ0Zjg2YTVmMjU3M2YuLmI4M2M4ZTllOGQ0YTM0ODg0NjE2ZWMzNjQ2ZWU5ZmIxOWU5M2Rl
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC0yNDgsMTEgKzI0OCwxMSBAQCBzdGF0aWMg
RXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRBY3Rp
b24oRXhlY1N0YXRlJiBleAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGNvbnN0IEpTVmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJhY3Rpb24iKSk7Ci0gICAgaWYgKHNj
b3BlLmV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3QuaXNPYmplY3QoKSkKKyAgICBpZiAoIWFj
dGlvbk9iamVjdCB8fCBzY29wZS5leGNlcHRpb24oKSB8fCAhYWN0aW9uT2JqZWN0LmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05JbnZhbGlkQWN0aW9uKTsKIAogICAgIGNvbnN0IEpTVmFsdWUgdHlwZU9iamVjdCA9IGFj
dGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ0eXBl
IikpOwotICAgIGlmIChzY29wZS5leGNlcHRpb24oKSB8fCAhdHlwZU9iamVjdC5pc1N0cmluZygp
KQorICAgIGlmICghdHlwZU9iamVjdCB8fCBzY29wZS5leGNlcHRpb24oKSB8fCAhdHlwZU9iamVj
dC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVu
c2lvbkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGUpOwogCiAgICAgU3RyaW5nIGFjdGlvblR5
cGUgPSBhc1N0cmluZyh0eXBlT2JqZWN0KS0+dmFsdWUoJmV4ZWMpOwpAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29k
ZT4gbG9hZEFjdGlvbihFeGVjU3RhdGUmIGV4CiAgICAgICAgIHJldHVybiB7eyBBY3Rpb25UeXBl
OjpCbG9ja0Nvb2tpZXMgfX07CiAgICAgaWYgKGFjdGlvblR5cGUgPT0gImNzcy1kaXNwbGF5LW5v
bmUiKSB7CiAgICAgICAgIEpTVmFsdWUgc2VsZWN0b3IgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAic2VsZWN0b3IiKSk7Ci0gICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSB8fCAhc2VsZWN0b3IuaXNTdHJpbmcoKSkKKyAgICAgICAgaWYg
KCFzZWxlY3RvciB8fCBzY29wZS5leGNlcHRpb24oKSB8fCAhc2VsZWN0b3IuaXNTdHJpbmcoKSkK
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05JbnZhbGlkQ1NTRGlzcGxheU5vbmVBY3Rpb25UeXBlKTsKIAogICAgICAgICBTdHJpbmcg
c2VsZWN0b3JTdHJpbmcgPSBhc1N0cmluZyhzZWxlY3RvciktPnZhbHVlKCZleGVjKTsKQEAgLTI3
NywxMiArMjc3LDYgQEAgc3RhdGljIEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8QWN0aW9uPiwgc3Rk
OjplcnJvcl9jb2RlPiBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXgKICAgICB9CiAgICAgaWYgKGFj
dGlvblR5cGUgPT0gIm1ha2UtaHR0cHMiKQogICAgICAgICByZXR1cm4ge3sgQWN0aW9uVHlwZTo6
TWFrZUhUVFBTIH19OwotICAgIGlmIChhY3Rpb25UeXBlID09ICJub3RpZnkiKSB7Ci0gICAgICAg
IEpTVmFsdWUgbm90aWZpY2F0aW9uID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmZXhlYywgIm5vdGlmaWNhdGlvbiIpKTsKLSAgICAgICAgaWYgKHNjb3Bl
LmV4Y2VwdGlvbigpIHx8ICFub3RpZmljYXRpb24uaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkTm90
aWZpY2F0aW9uKTsKLSAgICAgICAgcmV0dXJuIHsgQWN0aW9uKEFjdGlvblR5cGU6Ok5vdGlmeSwg
YXNTdHJpbmcobm90aWZpY2F0aW9uKS0+dmFsdWUoJmV4ZWMpKSB9OwotICAgIH0KICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZEFjdGlv
blR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKaW5kZXggMTQ1YjZmMmI3MGM4NDQ4ZDUxNTJi
NDhjM2RjNDllODk5Y2FjNzk1MC4uNGEyNThkZWI1YjQ3OTI3OTFjYTMwYTBmYjU3ZjM5YzYyZjll
M2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcApAQCAtNjYsNyArNjYsNiBAQCBBY3Rpb24gQWN0aW9u
OjpkZXNlcmlhbGl6ZShjb25zdCBTZXJpYWxpemVkQWN0aW9uQnl0ZSogYWN0aW9ucywgY29uc3Qg
dWludDMyX3QgYQogICAgIGNhc2UgQWN0aW9uVHlwZTo6TWFrZUhUVFBTOgogICAgICAgICByZXR1
cm4gQWN0aW9uKGFjdGlvblR5cGUsIGxvY2F0aW9uKTsKICAgICBjYXNlIEFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3I6Ci0gICAgY2FzZSBBY3Rpb25UeXBlOjpOb3RpZnk6CiAgICAg
ICAgIHJldHVybiBBY3Rpb24oYWN0aW9uVHlwZSwgZGVzZXJpYWxpemVTdHJpbmcoYWN0aW9ucywg
YWN0aW9uc0xlbmd0aCwgbG9jYXRpb24gKyBzaXplb2YoQWN0aW9uVHlwZSkpLCBsb2NhdGlvbik7
CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03OSw3ICs3OCw2
IEBAIEFjdGlvblR5cGUgQWN0aW9uOjpkZXNlcmlhbGl6ZVR5cGUoY29uc3QgU2VyaWFsaXplZEFj
dGlvbkJ5dGUqIGFjdGlvbnMsIGNvbnN0IHVpCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXM6CiAgICAgY2FzZSBBY3Rpb25UeXBlOjpCbG9ja0xv
YWQ6Ci0gICAgY2FzZSBBY3Rpb25UeXBlOjpOb3RpZnk6CiAgICAgY2FzZSBBY3Rpb25UeXBlOjpJ
Z25vcmVQcmV2aW91c1J1bGVzOgogICAgIGNhc2UgQWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvcjoKICAgICBjYXNlIEFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKQEAgLTk3LDcgKzk1LDYg
QEAgdWludDMyX3QgQWN0aW9uOjpzZXJpYWxpemVkTGVuZ3RoKGNvbnN0IFNlcmlhbGl6ZWRBY3Rp
b25CeXRlKiBhY3Rpb25zLCBjb25zdCB1aW4KICAgICBjYXNlIEFjdGlvblR5cGU6Oklnbm9yZVBy
ZXZpb3VzUnVsZXM6CiAgICAgY2FzZSBBY3Rpb25UeXBlOjpNYWtlSFRUUFM6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoQWN0aW9uVHlwZSk7Ci0gICAgY2FzZSBBY3Rpb25UeXBlOjpOb3RpZnk6CiAg
ICAgY2FzZSBBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yOiB7CiAgICAgICAgIHVp
bnQzMl90IHByZWZpeExlbmd0aCA9IHNpemVvZihBY3Rpb25UeXBlKSArIHNpemVvZih1aW50MzJf
dCkgKyBzaXplb2YoYm9vbCk7CiAgICAgICAgIHVpbnQzMl90IHN0cmluZ1N0YXJ0SW5kZXggPSBs
b2NhdGlvbiArIHByZWZpeExlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCmluZGV4IGM2ODY3NDhmZmE4YmUy
Y2IyMThjOGRkZjk5MGQ1OGJhNGFkMmFjZjMuLjc4YTk3Yjg0MjE4ZjJjMjM3NDM3NTdkYjQ0YjM1
YjMxNDEzZDllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgc3RydWN0
IEFjdGlvbiB7CiAgICAgICAgICwgbV9hY3Rpb25JRChhY3Rpb25JRCkKICAgICAgICAgLCBtX3N0
cmluZ0FyZ3VtZW50KHN0cmluZ0FyZ3VtZW50KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc1N0
cmluZ0FyZ3VtZW50KHR5cGUpKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWN0aW9uVHlwZTo6
Q1NTRGlzcGxheU5vbmVTZWxlY3Rvcik7CiAgICAgfQogCiAgICAgQWN0aW9uKEFjdGlvblR5cGUg
dHlwZSwgdWludDMyX3QgYWN0aW9uSUQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KCkpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9hY3Rpb25JRChhY3Rp
b25JRCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghaGFzU3RyaW5nQXJndW1lbnQodHlwZSkpOwor
ICAgICAgICBBU1NFUlQodHlwZSAhPSBBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
KTsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWN0aW9uJiBvdGhlcikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDMwNzIxMDFmM2ZhMDFjZDFjZjgyYmU3
Yzg5YWFmMjEyODE2ZTUyMTYuLmI3ZDJmZTYzMWY5ODU5ZGY2ODY3NTRiNzY0OTYyMGNiYTliMmNm
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtMjgsOCArMjgsNiBAQAogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIAotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb24uaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uc0RlYnVnZ2luZy5oIgpAQCAtNDAsNyArMzgsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKLSNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgpAQCAtMTczLDcgKzE3
MCw2IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29u
dGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgYm9vbCB3aWxsQmxvY2tMb2FkID0g
ZmFsc2U7CiAgICAgYm9vbCB3aWxsQmxvY2tDb29raWVzID0gZmFsc2U7CiAgICAgYm9vbCB3aWxs
TWFrZUhUVFBTID0gZmFsc2U7Ci0gICAgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBub3RpZmljYXRpb25zOwogICAgIGZvciAoY29uc3QgYXV0byYgYWN0aW9uIDogYWN0aW9ucy5m
aXJzdCkgewogICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKCkpIHsKICAgICAgICAgY2FzZSBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkOgpAQCAtMTg4LDkgKzE4NCw2
IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVu
dEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50
RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgY3VycmVudERvY3VtZW50LT5leHRlbnNpb25TdHls
ZVNoZWV0cygpLmFkZERpc3BsYXlOb25lU2VsZWN0b3IoYWN0aW9uLmV4dGVuc2lvbklkZW50aWZp
ZXIoKSwgYWN0aW9uLnN0cmluZ0FyZ3VtZW50KCksIGFjdGlvbi5hY3Rpb25JRCgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpOb3RpZnk6Ci0gICAgICAgICAgICBub3RpZmljYXRpb25zLmFkZChzdGQ6Om1ha2VfcGFpcihh
Y3Rpb24uZXh0ZW5zaW9uSWRlbnRpZmllcigpLCBhY3Rpb24uc3RyaW5nQXJndW1lbnQoKSkpOwot
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6Ok1ha2VIVFRQUzogewogICAgICAgICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0
cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIpKQogICAgICAgICAgICAgICAgICYmICghdXJsLnBv
cnQoKSB8fCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52YWx1ZSgpLCB1cmwu
cHJvdG9jb2woKSkpKQpAQCAtMjIwLDcgKzIxMyw3IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4
dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25z
CiAgICAgICAgIGlmICh3aWxsQmxvY2tMb2FkKQogICAgICAgICAgICAgY3VycmVudERvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb250ZW50QmxvY2tlciwgTWVzc2Fn
ZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJDb250ZW50IGJsb2NrZXIgcHJldmVudGVkIGZyYW1l
IGRpc3BsYXlpbmcgIiwgbWFpbkRvY3VtZW50VVJMLnN0cmluZygpLCAiIGZyb20gbG9hZGluZyBh
IHJlc291cmNlIGZyb20gIiwgdXJsLnN0cmluZygpKSk7CiAgICAgfQotICAgIHJldHVybiB7IHdp
bGxCbG9ja0xvYWQsIHdpbGxCbG9ja0Nvb2tpZXMsIHdpbGxNYWtlSFRUUFMsIFdURk1vdmUobm90
aWZpY2F0aW9ucykgfTsKKyAgICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3aWxsQmxvY2tDb29r
aWVzLCB3aWxsTWFrZUhUVFBTIH07CiB9CiAKIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQpAQCAtMjQ3LDE0ICsyNDAsMTMg
QEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50
RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgICAgICB3aWxsTWFrZUhUVFBT
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yOgotICAgICAgICBjYXNlIENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpOb3RpZnk6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SWdub3JlUHJldmlv
dXNSdWxlczoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3aWxsQmxvY2tDb29r
aWVzLCB3aWxsTWFrZUhUVFBTLCB7IH0gfTsKKyAgICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3
aWxsQmxvY2tDb29raWVzLCB3aWxsTWFrZUhUVFBTIH07CiB9CiAKIGNvbnN0IFN0cmluZyYgQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kOjpkaXNwbGF5Tm9uZUNTU1J1bGUoKQpAQCAtMjYzLDExICsy
NTUsOCBAQCBjb25zdCBTdHJpbmcmIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6ZGlzcGxheU5v
bmVDU1NSdWxlKCkKICAgICByZXR1cm4gcnVsZTsKIH0KIAotdm9pZCBhcHBseUJsb2NrZWRTdGF0
dXNUb1JlcXVlc3QoY29uc3QgQmxvY2tlZFN0YXR1cyYgc3RhdHVzLCBQYWdlKiBwYWdlLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChj
b25zdCBCbG9ja2VkU3RhdHVzJiBzdGF0dXMsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICBpZiAocGFnZSAmJiAhc3RhdHVzLm5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKQotICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ocmVx
dWVzdC51cmwoKSwgc3RhdHVzLm5vdGlmaWNhdGlvbnMpOwotCiAgICAgaWYgKHN0YXR1cy5ibG9j
a2VkQ29va2llcykKICAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMoZmFsc2UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBkMDk5MzNmZGE5MTY3ZjQwMDRl
MzY5Y2Y0ZTc3NjNiODBmODhhZjQ5Li40YjgwYzEwNWNkMTRmMGExNWFkYjBmYTM5MjhiMjA5Y2Y0
YjVhZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3ODAsNyAr
Mjc4MCw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7
CiAgICAgICAgICAgICAgICAgYXV0byBibG9ja2VkU3RhdHVzID0gcGFnZS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3Qu
dXJsKCksIFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcik7Ci0gICAgICAgICAg
ICAgICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGJsb2NrZWRTdGF0dXMsIHBhZ2UsIG5l
d1JlcXVlc3QpOworICAgICAgICAgICAgICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChi
bG9ja2VkU3RhdHVzLCBuZXdSZXF1ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tlZFN0
YXR1cy5ibG9ja2VkTG9hZCkgewogICAgICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0ID0geyB9
OwogICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgaW5pdGlhbFJlcXVlc3QudXJsKCksIGVtcHR5U3RyaW5nKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDgwZDY3ZTMzODIyMjBiNzkzMzIz
NWVhNjE0ZjZhMmExMWU4Y2UyMTQuLjUzYWEyNTc4YzVjNjMzYWJjMmNiNWM1MzUxNzk3OTUzZGNh
YmRhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTc1LDcgKzc1LDcg
QEAgc3RhdGljIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29uc3Qg
RnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXUKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBhdXRvIHN0YXR1cyA9IHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5w
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0LnVybCgpLCByZXNvdXJj
ZVR5cGUsICpkb2N1bWVudExvYWRlcik7Ci0gICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0
KHN0YXR1cywgcGFnZSwgcmVxdWVzdCk7CisgICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0
KHN0YXR1cywgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHN0YXR1cy5ibG9ja2VkTG9hZDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYTUyY2MzMjA3MzE3
N2Y1YjZlYjRmMWE2YTJkNzcwNTI3ZDdkZmY5ZS4uZDdlMjU0N2E2ZWI5ZjkxNjQ1YzBjMjIzMzZj
MjQyOTc1ZGE4NWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0zNDUsMTEgKzM0NSwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlcwogICAgIH0KIAog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNl
LmlzTnVsbCgpICYmIGZyYW1lTG9hZGVyKCkpIHsKKyAgICBpZiAoZnJhbWVMb2FkZXIoKSkgewog
ICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5wYWdlKCk7CiAgICAg
ICAgIGlmIChwYWdlICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8gYmxv
Y2tlZFN0YXR1cyA9IHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5wcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0LnVybCgpLCBtX3Jlc291cmNlVHlwZSwgKm1fZG9j
dW1lbnRMb2FkZXIpOwotICAgICAgICAgICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGJs
b2NrZWRTdGF0dXMsIHBhZ2UsIHJlcXVlc3QpOworICAgICAgICAgICAgYXBwbHlCbG9ja2VkU3Rh
dHVzVG9SZXF1ZXN0KGJsb2NrZWRTdGF0dXMsIHJlcXVlc3QpOwogICAgICAgICAgICAgaWYgKGJs
b2NrZWRTdGF0dXMuYmxvY2tlZExvYWQpIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0geyB9
OwogICAgICAgICAgICAgICAgIGRpZEZhaWwoYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDY0ZmE3M2UwMzk2M2Q0MzI3NjZmMWQwNzFjOWEwODdhOTU5YzEwMWQu
LjBhNjc4Y2NmODVhNzg4YTEyYTQwNDNlNGJjNmFkZjgwNTA0MGE1ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
NzI1LDkgKzcyNSw4IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5tYWluRnJhbWUoKS5w
YWdlKCkgJiYgbV9kb2N1bWVudExvYWRlcikgewogICAgICAgICBjb25zdCBhdXRvJiByZXNvdXJj
ZVJlcXVlc3QgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpOwotICAgICAgICBhdXRvKiBwYWdl
ID0gZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpOwotICAgICAgICBhdXRvIGJsb2NrZWRTdGF0
dXMgPSBwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQocmVzb3VyY2VSZXF1ZXN0LnVybCgpLCB0b1Jlc291cmNlVHlwZSh0eXBlKSwg
Km1fZG9jdW1lbnRMb2FkZXIpOwotICAgICAgICByZXF1ZXN0LmFwcGx5QmxvY2tlZFN0YXR1cyhi
bG9ja2VkU3RhdHVzLCBwYWdlKTsKKyAgICAgICAgYXV0byBibG9ja2VkU3RhdHVzID0gZnJhbWUo
KS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudFByb3ZpZGVyKCkucHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVzb3VyY2VSZXF1ZXN0LnVybCgpLCB0b1Jlc291cmNl
VHlwZSh0eXBlKSwgKm1fZG9jdW1lbnRMb2FkZXIpOworICAgICAgICByZXF1ZXN0LmFwcGx5Qmxv
Y2tlZFN0YXR1cyhibG9ja2VkU3RhdHVzKTsKICAgICAgICAgaWYgKGJsb2NrZWRTdGF0dXMuYmxv
Y2tlZExvYWQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlcXVlc3RS
ZXNvdXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIgKGZyYW1lID0gJXAp
IiwgZnJhbWUoKSk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlw
ZTo6TWFpblJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDdkYWVkN2M0YTNlNTgxNzQ5MjkzZDEy
MGIwNWE3NzdjMjU1ZGU3MzMuLjEzNjJjMzM0ZDBjMTczZDVhZGVmOTk2MjBiMGE5MTM4YmM2NjYy
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCkBAIC0yMTIsOSArMjEyLDkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKCkKIAogI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjphcHBseUJs
b2NrZWRTdGF0dXMoY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMmIGJsb2Nr
ZWRTdGF0dXMsIFBhZ2UqIHBhZ2UpCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6YXBwbHlC
bG9ja2VkU3RhdHVzKGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJiBibG9j
a2VkU3RhdHVzKQogewotICAgIENvbnRlbnRFeHRlbnNpb25zOjphcHBseUJsb2NrZWRTdGF0dXNU
b1JlcXVlc3QoYmxvY2tlZFN0YXR1cywgcGFnZSwgbV9yZXNvdXJjZVJlcXVlc3QpOworICAgIENv
bnRlbnRFeHRlbnNpb25zOjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QoYmxvY2tlZFN0YXR1
cywgbV9yZXNvdXJjZVJlcXVlc3QpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCA1YzhkZjEzOTAw
OGVmMjNhZTYxMjUwYTQwODQxY2YyZmRmMjdkOTlkLi5mNTA3ZmNjNjY3ZWY1NzI4NjgzZGNiMmRh
YjZjOGZlMWU4OTc4ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZUFjY29yZGluZ0NhY2hlTW9kZSgpOwogICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJ
ZGVudGlmaWVySWZOZWVkZWQoKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzKGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2Vk
U3RhdHVzJiwgUGFnZSopOworICAgIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzKGNvbnN0IENvbnRl
bnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJik7CiAjZW5kaWYKICAgICB2b2lkIHNldERvbWFp
bkZvckNhY2hlUGFydGl0aW9uKERvY3VtZW50Jik7CiAgICAgdm9pZCBzZXREb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IDJiNjlmZjk4YzE2YTA4YmJjMmVmNTIxYWMyZDM0YTAyNmE1MzRjMDQuLmRjZDQwMGFlYzgz
ZTJlZDViM2RjODY0MTMxZTE2ZDliZDkyMmE1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtMzcwLDggKzM3MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
U3VkZGVuVGVybWluYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVN1ZGRlblRl
cm1pbmF0aW9uKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4mKSB7IH07Ci0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lk
IHNldExhc3RTZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IEFYU3RhcnRGcmFtZUxvYWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCmluZGV4IGQxODRmZmY5MmRlMDA0MmMwY2I1NzY2ZjFhMWFiNDkzNDhkMWM5ZTAu
LjA5NDJlODAwYWEwZjFlMDA1NzBjZmU5MGYzMTVlNzk1M2U1ZTcyNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgQ29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYgUGluZ0xvYWQ6OmNvbnRlbnRF
eHRlbnNpb25zQmFja2VuZCgKIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIFBpbmdM
b2FkOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7CiAgICAgYXV0byBzdGF0dXMgPSBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQo
KS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQocmVxdWVzdC51cmwoKSwg
bV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCk7Ci0gICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9S
ZXF1ZXN0KHN0YXR1cywgbnVsbHB0ciwgcmVxdWVzdCk7CisgICAgYXBwbHlCbG9ja2VkU3RhdHVz
VG9SZXF1ZXN0KHN0YXR1cywgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5k
ZXggZTAyZWI5OTBlNThmZDcxZTE3Y2JhYjlkMjM3YmE3NTIwYTU3NDgwMy4uNjFkYzcxZGQ4ZmZj
MjlhNGEyZWEwNWVlNWZlYmM5MTYyMjFjNzdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC0xMDYsOCArMTA2LDYgQEAgcHVi
bGljOgogICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogICAgIAotICAgIHZpcnR1
YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiYpIHsgfTsKLSAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2
aXJ0dWFsIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBkZWNpZGVQb2xpY3lGb3JQbHVn
aW5Mb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9s
aWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCBEaWN0aW9uYXJ5KiwgV1RGOjpTdHJpbmcmKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGNjN2Y2
ZjdlMDI3MjkwZjMyNzI1Mzg3MzMxOWZiMDk2YjhiOWZhNTEuLjEwODg2MTIzYWU1OGNlZmU5NDA2
NzdlZWY2NTg5M2E4NzU3NTE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0
czxXS1BhZ2VMb2FkZXJDbGllbnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8V0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwLCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjEs
IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMj4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCwgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYxPiBW
ZXJzaW9uczsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xp
Y3lDbGllbnRCYXNlPiB7CkBAIC0yMjk1LDIxICsyMjk1LDYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
TmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlv
bkNsaWUKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25h
cHNob3QodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmll
cnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykgZmluYWwKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4gYXBpTGlzdElkZW50aWZpZXJzOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBp
ZGVudGlmaWVyIDogbGlzdElkZW50aWZpZXJzKQotICAgICAgICAgICAgICAgIGFwaUxpc3RJZGVu
dGlmaWVycy5hcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShpZGVudGlmaWVyKSk7Ci0KLSAgICAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlOb3RpZmljYXRpb25zOwotICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBub3RpZmljYXRpb24gOiBub3RpZmljYXRpb25zKQot
ICAgICAgICAgICAgICAgIGFwaU5vdGlmaWNhdGlvbnMuYXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVh
dGUobm90aWZpY2F0aW9uKSk7Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmNvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbih0b0FQSSgmcGFnZSksIHRvVVJMUmVmKHVybC5zdHJpbmcoKS5pbXBsKCkp
LCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlMaXN0SWRlbnRpZmllcnMpKS5w
dHIoKSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaU5vdGlmaWNhdGlvbnMp
KS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBk
ZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGx1Z2luTW9kdWxl
TG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5KiBwbHVn
aW5JbmZvcm1hdGlvbiwgU3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBvdmVycmlk
ZQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMTQ4NDNkMmNmZmM5NzkwZjBiNGQyZjBjYTU2
ZmRkYmVhY2IzYmY2Mi4uZWQxNTQ4ZmY4NWFhMjI3MjE4NmUzNDc1OGQ0MmI0ZTgxMmU3MDEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmln
YXRpb25DbGllbnQuaApAQCAtODAsNyArODAsNiBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZp
Z2F0aW9uRGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUpKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGbwog
CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uRGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1
cmVTbmFwc2hvdCkoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCi10
eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Q2FsbGJhY2spKFdLUGFnZVJlZiwgV0tVUkxSZWYsIFdLQXJyYXlSZWYsIFdLQXJyYXlSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VOYXZpZ2F0aW9u
Q2xpZW50QmFzZSB7CiAgICAgaW50IHZlcnNpb247CkBAIC0xNDQsMzkgKzE0Myw2IEBAIHR5cGVk
ZWYgc3RydWN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMSB7CiAgICAgV0tQYWdlTmF2aWdhdGlv
bldlYlByb2Nlc3NEaWRUZXJtaW5hdGVDYWxsYmFjayB3ZWJQcm9jZXNzRGlkVGVybWluYXRlOwog
fSBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjE7CiAKLXR5cGVkZWYgc3RydWN0IFdLUGFnZU5hdmln
YXRpb25DbGllbnRWMiB7Ci0gICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UgYmFzZTsKLSAg
ICAKLSAgICAvLyBWZXJzaW9uIDAuCi0gICAgV0tQYWdlTmF2aWdhdGlvbkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25DYWxsYmFjayBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OwotICAgIFdLUGFnZU5hdmlnYXRpb25EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2VD
YWxsYmFjayBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U7Ci0gICAgV0tQYWdlTmF2
aWdhdGlvbkRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRDYWxsYmFjayBkZWNpZGVQb2xpY3lGb3JQ
bHVnaW5Mb2FkOwotICAgIFdLUGFnZU5hdmlnYXRpb25EaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdh
dGlvbkNhbGxiYWNrIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwotICAgIFdLUGFnZU5h
dmlnYXRpb25EaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb25D
YWxsYmFjayBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb247
Ci0gICAgV0tQYWdlTmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25DYWxsYmFj
ayBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwotICAgIFdLUGFnZU5hdmlnYXRpb25EaWRD
b21taXROYXZpZ2F0aW9uQ2FsbGJhY2sgZGlkQ29tbWl0TmF2aWdhdGlvbjsKLSAgICBXS1BhZ2VO
YXZpZ2F0aW9uRGlkRmluaXNoTmF2aWdhdGlvbkNhbGxiYWNrIGRpZEZpbmlzaE5hdmlnYXRpb247
Ci0gICAgV0tQYWdlTmF2aWdhdGlvbkRpZEZhaWxOYXZpZ2F0aW9uQ2FsbGJhY2sgZGlkRmFpbE5h
dmlnYXRpb247Ci0gICAgV0tQYWdlTmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1
YmZyYW1lQ2FsbGJhY2sgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU7Ci0gICAgV0tQ
YWdlTmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZENhbGxiYWNrIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZDsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkNh
bGxiYWNrIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb247Ci0gICAgV0tQYWdlTmF2aWdhdGlvblJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlQ2FsbGJhY2sgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFu
Z2U7Ci0gICAgV0tQYWdlTmF2aWdhdGlvbkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VDYWxsYmFjayBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOwotICAg
IFdLUGFnZU5hdmlnYXRpb25EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFj
ayBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tQYWdlTmF2aWdhdGlv
bldlYlByb2Nlc3NEaWRDcmFzaENhbGxiYWNrIHdlYlByb2Nlc3NEaWRDcmFzaDsKLSAgICBXS1Bh
Z2VOYXZpZ2F0aW9uQ29weVdlYkNyeXB0b01hc3RlcktleUNhbGxiYWNrIGNvcHlXZWJDcnlwdG9N
YXN0ZXJLZXk7Ci0gICAgV0tQYWdlTmF2aWdhdGlvbkRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUg
ZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uV2lsbEVuZE5h
dmlnYXRpb25HZXN0dXJlIHdpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZTsKLSAgICBXS1BhZ2VOYXZp
Z2F0aW9uRGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU7Ci0g
ICAgV0tQYWdlTmF2aWdhdGlvbkRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QgZGlk
UmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdDsKLSAgICAKLSAgICAvLyBWZXJzaW9uIDEu
Ci0gICAgV0tQYWdlTmF2aWdhdGlvbldlYlByb2Nlc3NEaWRUZXJtaW5hdGVDYWxsYmFjayB3ZWJQ
cm9jZXNzRGlkVGVybWluYXRlOwotCi0gICAgLy8gVmVyc2lvbiAyLgotICAgIFdLUGFnZU5hdmln
YXRpb25Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb25DYWxsYmFjayBjb250ZW50UnVsZUxpc3RO
b3RpZmljYXRpb247Ci19IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMjsKLQogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCAxZGNm
ZDI4NmRjYzAwOTE1MjI4ZjMzNTZjMDY5YzU0NzZkNWFjNGQ4Li5jNzRhMmU4MmUxMGExNjc3YzVj
YzI4MjllN2E5OTFjZDMzMTQyN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBA
IC03OCw4ICs3OCw2IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBf
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hCiAtICh2b2lkKV93ZWJWaWV3
RGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdDooV0tXZWJWaWV3ICopd2ViVmlldyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlk
ZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4z
KSk7CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgVVJMOihOU1VSTCAq
KXVybCBjb250ZW50UnVsZUxpc3RJZGVudGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWlk
ZW50aWZpZXJzIG5vdGlmaWNhdGlvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilub3RpZmljYXRp
b25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwotCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZp
bGVOYW1lOihOU1N0cmluZyAqKWZpbGVOYW1lIHV0aTooTlNTdHJpbmcgKil1dGk7CiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lOihOU0RhdGEgKilkb2N1bWVudERhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDRiNGI3MjBmMjYy
Y2NiZjk2YWY1ZjYwNTIwOGNmMGU4OWNmOTY1OTkuLjgwNzg2MGIxYWQ0Y2NjMzgwNzgwNjAzNzI2
MDAxNzg1MDlmZmMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCkBAIC0xMjEsNyArMTIxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgY29udGVu
dFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYmLCBWZWN0
b3I8U3RyaW5nPiYmLCBWZWN0b3I8U3RyaW5nPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYsIFJlZjxBUEk6Ok5hdmln
YXRpb25BY3Rpb24+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNl
JiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKSBvdmVycmlkZTsKIApAQCAtMjAyLDcgKzIwMSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgd2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXaWxsU25hcHNob3RCYWNrRm9y
d2FyZExpc3RJdGVtIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3TmF2aWdhdGlvbkdlc3R1cmVT
bmFwc2hvdFdhc1JlbW92ZWQgOiAxOwotICAgICAgICBib29sIHdlYlZpZXdVUkxDb250ZW50UnVs
ZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMgOiAxOwogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgICAgICBib29sIHdlYlZpZXdEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGFhNzlmY2RmNTVhZmJkMzUzMTcwNTA2ZTVm
OGQwOWI1ODc0M2Q4MjIuLmE5MWFmYjQyYjczYWJiOGQ0ODYxNjQ4ZTFiNmYwNGFmNzcxNGFiZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KQEAgLTE2OCw3ICsxNjgsNiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlv
bkRlbGVnYXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhO
YXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdh
dGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dpbGxTbmFwc2hvdEJhY2tGb3J3YXJkTGlzdEl0ZW0gPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsU25hcHNob3RCYWNrRm9y
d2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
TmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdFdhc1JlbW92ZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25h
cHNob3Q6KV07Ci0gICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdVUkxDb250
ZW50UnVsZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpVUkw6Y29udGVudFJ1bGVMaXN0SWRlbnRpZmll
cnM6bm90aWZpY2F0aW9uczopXTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
VmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVO
YW1lOnV0aTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWU6KV07CkBAIC00NTksMjggKzQ1OCw2IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNv
cmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxT
dHJpbmc+JiYgbm90aWZpY2F0aW9ucykKLXsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VVJMQ29udGVudFJ1bGVMaXN0SWRlbnRp
ZmllcnNOb3RpZmljYXRpb25zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG5hdmlnYXRp
b25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
OwotICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQobGlzdElkZW50aWZpZXJzLnNpemUoKSA9PSBub3RpZmljYXRpb25zLnNpemUoKSk7Ci0K
LSAgICBhdXRvIGlkZW50aWZpZXJzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5Omxpc3RJZGVudGlmaWVycy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8m
IGlkZW50aWZpZXIgOiBsaXN0SWRlbnRpZmllcnMpCi0gICAgICAgIFtpZGVudGlmaWVycyBhZGRP
YmplY3Q6aWRlbnRpZmllcl07Ci0KLSAgICBhdXRvIG5zTm90aWZpY2F0aW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpub3RpZmljYXRpb25zLnNp
emUoKV0pOwotICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uIDogbm90aWZpY2F0aW9ucykKLSAg
ICAgICAgW25zTm90aWZpY2F0aW9ucyBhZGRPYmplY3Q6bm90aWZpY2F0aW9uXTsKLSAgICAKLSAg
ICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgVVJMOnVybCBjb250ZW50UnVsZUxp
c3RJZGVudGlmaWVyczppZGVudGlmaWVycy5nZXQoKSBub3RpZmljYXRpb25zOm5zTm90aWZpY2F0
aW9ucy5nZXQoKV07Ci19Ci0gICAgCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYsIEFQ
STo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
ICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlRGVjaXNpb25IYW5kbGVyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzNjkyNjUwYmRk
NWQ3Y2M3NDYwOGM3NDM5YjUzNGJhOWExZmJjOTE2Li4yYTdmNjA1NzUxMzlmODA0OWJmMDM1ZjQ3
NWNlNzY1NGQzNzc2ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTM3ODcsMTIgKzM3ODcsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZv
cm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29ucwogICAgIH0p
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdl
YkNvcmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBpZGVudGlmaWVycywgVmVjdG9yPFN0
cmluZz4mJiBub3RpZmljYXRpb25zKQotewotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0g
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKCp0
aGlzLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoaWRlbnRpZmllcnMpLCBXVEZNb3ZlKG5vdGlmaWNh
dGlvbnMpKTsKLX0KLSAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWludDY0X3Qg
ZnJhbWVJRCkgCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDJmNzI5OTIz
MTdlYTM4Mzc3YjI1NDRjZjUxNzdkZDY3MjI5MjU2YS4uNzE1MjgyMjQwOGZjOTQ3ODRkZDNmNjM2
NmI2NTQxYTA0YWI5ZmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTEyODYsOCArMTI4Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVu
dFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgVXNlckRhdGEmKTsKIAogICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7Ci0gICAgICAgIAotICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uKFdlYkNvcmU6OlVSTCYmLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8
U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpOwogCiAgICAgLy8gSGlzdG9yeSBjbGllbnQKICAgICB2
b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRh
U3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjY2IxMjU0YWFlNDk3ZTVkNmI4ZmI5ZjMw
ZmQ4N2UxMGQ3MjJiMTRkLi5jYTJhMGYyZjExN2I4M2JjZmE1NDQ1NjdlY2M3MGM2Y2JhNTZlNGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC00NTgsNyArNDU4LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBI
YW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VOYW1lLCBXZWJLaXQ6OlVzZXJE
YXRhIG1lc3NhZ2VCb2R5KSAtPiAoV2ViS2l0OjpVc2VyRGF0YSByZXR1cm5EYXRhKSBXYW50c0Nv
bm5lY3Rpb24KIAogICAgIEhhbmRsZUF1dG9GaWxsQnV0dG9uQ2xpY2soV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSk7Ci0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6OlVS
TCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBub3RpZmlj
YXRpb25zKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKICAgICBBZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCh1aW50NjRfdCBjb250
ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDI5NWZiYjE5YTQzMzRkOGQ2ZjY0NGU0
NmJiYmFiZDlhMmY2OTY0YzIuLjA1YzhmODc0NGRmZWM5YTI1MzhkOWY2NDU0MzRlMmExMjk2ZWM0
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04NzQsMjAgKzg3NCw2IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCiAgICAgICAgIG1f
cGFnZS5kcmF3aW5nQXJlYSgpLT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwogfQog
Ci12b2lkIFdlYkNocm9tZUNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiBub3Rp
ZmljYXRpb25QYWlycykKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25zOwotICAgIGlkZW50aWZpZXJzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobm90aWZpY2F0aW9uUGFpcnMuc2l6ZSgpKTsKLSAgICBub3RpZmljYXRpb25z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm90aWZpY2F0aW9uUGFpcnMuc2l6ZSgpKTsKLSAgICBm
b3IgKGF1dG8mIG5vdGlmaWNhdGlvbiA6IG5vdGlmaWNhdGlvblBhaXJzKSB7Ci0gICAgICAgIGlk
ZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChub3RpZmljYXRpb24uZmlyc3QpOwotICAgICAgICBu
b3RpZmljYXRpb25zLnVuY2hlY2tlZEFwcGVuZChub3RpZmljYXRpb24uc2Vjb25kKTsKLSAgICB9
Ci0KLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24odXJsLCBpZGVudGlmaWVycywgbm90aWZpY2F0aW9ucykpOwotfQotCiBi
b29sIFdlYkNocm9tZUNsaWVudDo6YWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmcoTGF5ZXJGbHVz
aFRocm90dGxlU3RhdGU6OkZsYWdzIGZsYWdzKQogewogICAgIHJldHVybiBtX3BhZ2UuZHJhd2lu
Z0FyZWEoKSAmJiBtX3BhZ2UuZHJhd2luZ0FyZWEoKS0+YWRqdXN0TGF5ZXJGbHVzaFRocm90dGxp
bmcoZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGQ5NWU4Y2E3NWJlOWNiOGQ0MGI3MmNl
MWRlYmVhN2E1NzBmOWRlZjguLmQ0NGFmZDg2ZDJjYjkzNWVmZGFhZDIxOWIwODg4MGNiNDA3MzM0
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwOCw4ICsyMDgsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFk
anVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRl
OjpGbGFncykgZmluYWw7CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JikgZmluYWw7Ci0gICAgCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BM
QVlfTU9OSVRPUikKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZGUxN2Q1OThlMTQzZWI1NmJmOTI1NDgwNTdlYmQ4ZDJiZmRmMDNmYi4u
YWViNGZlZTIyM2EyMTliYzVkMmUyNjYxZTU3MDA1MDNjZDJjN2I0ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTA5LTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNDU1LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDYwCisKKyAgICAgICAgYnJva2UgaU9TIGJ1
aWxkIChSZXF1ZXN0ZWQgYnkgYWxleGNocmlzdGVuc2VuIG9uICN3ZWJraXQpLgorCisgICAgICAg
IFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQWRkIFdLQ29udGVudFJ1bGVMaXN0IG5v
dGlmeSBhY3Rpb24gdHlwZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NzAxMworICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yMjI0NTUKKwogMjAxNy0wOS0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbl0gcnVuLWFwaS10ZXN0cyBpcyBmYWlsaW5nLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBjZTEwYmU5ZTE2MTA1ZDQzMDgzMTk3M2ViMDE2N2FkMDQwZDMxNTQx
Li5hZTg5NDI4NzQyNWY2M2Y3Yjk2NzQxNDMwYzE2YzhmZTJlYmU2MTRjIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjM2LDcgKzIzNiw2IEBACiAJCTVDOUU1OTQyMUQzRUI1QUMwMEUzQzYy
RSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTkzRjFEM0VCMURFMDBFM0M2MkUgLyogQXBw
bGljYXRpb25DYWNoZS5kYi1zaG0gKi87IH07CiAJCTVDOUU1OTQzMUQzRUI1QUMwMEUzQzYyRSAv
KiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGlj
YXRpb25DYWNoZS5kYi13YWwgKi87IH07CiAJCTVDQTFERUM4MUY3MUY3MDEwMEU3MUJEMyAvKiBI
VFRQSGVhZGVyRmllbGQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNBMURFQzcxRjcxRjQwNzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAg
Ki87IH07Ci0JCTVDQTFERUQ5MUY3NEE5MUEwMEU3MUJEMyAvKiBDb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0ExREVEODFGNzRBODcxMDBFNzFCRDMgLyogQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tICovOyB9OwogCQk1Q0IxOEJBODFGNTY0NUUzMDBFRTIzQzQgLyogQ2xpY2tBdXRvRmlsbEJ1
dHRvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QjE4QkE3MUY1NjQ1QjIwMEVFMjNDNCAvKiBDbGlja0F1dG9GaWxsQnV0dG9uLm1tICovOyB9Owog
CQk1Q0I0MEI0RTFGNEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjQwQjREMUY0Qjk4QkUwMDdEQzdC
OSAvKiBVSURlbGVnYXRlLm1tICovOyB9OwogCQk1Q0UzNTREOTFFNzBEQTVDMDBCRUZFM0IgLyog
V0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0
ZW5zaW9uU3RvcmUubW0gKi87IH07CkBAIC0xMzM0LDcgKzEzMzMsNiBAQAogCQk1QzlFNTkzRjFE
M0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkFwcGxpY2F0
aW9uQ2FjaGUuZGItc2htIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RTU5NDAx
RDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJBcHBsaWNh
dGlvbkNhY2hlLmRiLXdhbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTFERUM3
MUY3MUY0MDcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNUNBMURFRDgxRjc0QTg3MTAwRTcxQkQzIC8qIENvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNCMThCQTcxRjU2NDVCMjAwRUUyM0M0IC8qIENsaWNrQXV0b0ZpbGxCdXR0b24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDbGlja0F1dG9GaWxsQnV0
dG9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I0MEI0RDFGNEI5OEJFMDA3
REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFVJRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRTM1
NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQ29udGVudEV4dGVuc2lvblN0b3Jl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzOSw3ICsxOTM3LDYgQEAKIAkJ
CQlBMThBQThDQzFDM0ZBMjE4MDA5QjJCOTcgLyogQ29udGVudEZpbHRlcmluZy5oICovLAogCQkJ
CUExNEZDNTg2MUI4OTkxQjYwMEQxMDdFQiAvKiBDb250ZW50RmlsdGVyaW5nLm1tICovLAogCQkJ
CUExNEZDNTg5MUI4OTkyNzEwMEQxMDdFQiAvKiBDb250ZW50RmlsdGVyaW5nUGx1Z0luLm1tICov
LAotCQkJCTVDQTFERUQ4MUY3NEE4NzEwMEU3MUJEMyAvKiBDb250ZW50UnVsZUxpc3ROb3RpZmlj
YXRpb24ubW0gKi8sCiAJCQkJNUMyOTM2OTExRDVCRjYzRTAwREVBQjFFIC8qIENvb2tpZUFjY2Vw
dFBvbGljeS5tbSAqLywKIAkJCQk5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5t
bSAqLywKIAkJCQkyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAq
LywKQEAgLTMxNTksNyArMzE1Niw2IEBACiAJCQkJN0NCMTg0QzYxQUEzRjIxMDAwNjZFREZEIC8q
IENvbnRlbnRFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMTQ2QThEMUQyRDcx
MTUwMDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0
RkM1ODgxQjg5OTFCRjAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gaW4gU291cmNlcyAq
LywKLQkJCQk1Q0ExREVEOTFGNzRBOTFBMDBFNzFCRDMgLyogQ29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjgxQTQxMUE3RTAwNDQ3QzRDIC8q
IENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3RkI3Mjk3MURC
MkU4MkYwMEU0MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJODM0OUQzQzIxREI5NkRERTAwNEE5RjY1IC8qIENvbnRleHRNZW51RG93
bmxvYWQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IGRjY2U0Njg4YzUyMjY2
ZjY1NDljNmFhMWIyMTk2M2VjODA1ZTdmMzMuLmVhMDc5YWNkZTZhMDljMzIwMzhkODIwY2Q1ZWMz
YjcxNTBhYzM4NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtNTYsOCArNTYsNiBAQCBpbmxpbmUgc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEFjdGlvblR5cGUm
IGFjdGlvbikKICAgICAgICAgcmV0dXJuIG9zIDw8ICJBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXMi
OwogICAgIGNhc2UgQWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvcjoKICAgICAgICAg
cmV0dXJuIG9zIDw8ICJBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZSI7Ci0gICAgY2FzZSBBY3Rp
b25UeXBlOjpOb3RpZnk6Ci0gICAgICAgIHJldHVybiBvcyA8PCAiQWN0aW9uVHlwZTo6Tm90aWZ5
IjsKICAgICBjYXNlIEFjdGlvblR5cGU6Oklnbm9yZVByZXZpb3VzUnVsZXM6CiAgICAgICAgIHJl
dHVybiBvcyA8PCAiQWN0aW9uVHlwZTo6SWdub3JlUHJldmlvdXNSdWxlcyI7CiAgICAgY2FzZSBB
Y3Rpb25UeXBlOjpNYWtlSFRUUFM6CkBAIC05OSw3ICs5Nyw2IEBAIHB1YmxpYzoKICAgICAgICAg
RVhQRUNUX0VRKGRhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgIH0KIAotcHJp
dmF0ZToKICAgICB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQogCiAg
ICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVk
QWN0aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikg
ZmluYWwKQEAgLTE0MCwyNyArMTM3LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIGZpbmFsaXplZCA9
IHRydWU7CiAgICAgfQogCitwcml2YXRlOgogICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEmIG1fZGF0YTsKICAgICBib29sIGZpbmFsaXplZCB7IGZhbHNlIH07CiB9OwogCiBjbGFzcyBJ
bk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA6IHB1YmxpYyBDb250ZW50RXh0ZW5zaW9u
czo6Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPElu
TWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiBjcmVhdGUoU3RyaW5nJiYgZmlsdGVyKQor
ICAgIHN0YXRpYyBSZWY8SW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb24+IGNyZWF0ZUZy
b21GaWx0ZXIoU3RyaW5nJiYgZmlsdGVyKQogICAgIHsKICAgICAgICAgQ29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uRGF0YSBleHRlbnNpb25EYXRhOwogICAgICAgICBJbk1lbW9yeUNvbnRlbnRFeHRl
bnNpb25Db21waWxhdGlvbkNsaWVudCBjbGllbnQoZXh0ZW5zaW9uRGF0YSk7CiAgICAgICAgIGF1
dG8gY29tcGlsZXJFcnJvciA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QoY2xp
ZW50LCBXVEZNb3ZlKGZpbHRlcikpOworICAgICAgICBpZiAoY29tcGlsZXJFcnJvcikgeworICAg
ICAgICAgICAgLy8gQ29tcGlsaW5nIHNob3VsZCBhbHdheXMgc3VjY2VlZCBoZXJlLiBXZSBoYXZl
IG90aGVyIHRlc3RzIGZvciBjb21waWxlIGZhaWx1cmVzLgorICAgICAgICAgICAgRVhQRUNUX1RS
VUUoZmFsc2UpOworICAgICAgICB9CiAKLSAgICAgICAgLy8gQ29tcGlsaW5nIHNob3VsZCBhbHdh
eXMgc3VjY2VlZCBoZXJlLiBXZSBoYXZlIG90aGVyIHRlc3RzIGZvciBjb21waWxlIGZhaWx1cmVz
LgotICAgICAgICBFWFBFQ1RfRkFMU0UoY29tcGlsZXJFcnJvcik7CisgICAgICAgIHJldHVybiBJ
bk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9u
RGF0YSkpOworICAgIH0KIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbk1lbW9yeUNv
bXBpbGVkQ29udGVudEV4dGVuc2lvbihXVEZNb3ZlKGV4dGVuc2lvbkRhdGEpKSk7CisgICAgc3Rh
dGljIFJlZjxJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbj4gY3JlYXRlKENvbXBpbGVk
Q29udGVudEV4dGVuc2lvbkRhdGEmJiBkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb24oV1RGTW92ZShkYXRhKSkp
OwogICAgIH0KIAotICAgIGNvbnN0IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmIGRhdGEo
KSB7IHJldHVybiBtX2RhdGE7IH07CisgICAgdmlydHVhbCB+SW5NZW1vcnlDb21waWxlZENvbnRl
bnRFeHRlbnNpb24oKQorICAgIHsKKyAgICB9CiAKLXByaXZhdGU6CiAgICAgY29uc3QgQ29udGVu
dEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kYXRhLmFjdGlvbnMuZGF0YSgpOyB9CiAgICAgdW5zaWduZWQgYWN0aW9uc0xl
bmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS5hY3Rpb25zLnNpemUoKTsgfQogICAg
IGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEuZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zLmRhdGEoKTsgfQpAQCAtMTcxLDkgKzE3NiwxMSBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIHRvcFVSTEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKTsgfQogICAgIGJvb2wgY29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmNvbmRpdGlvbnNB
cHBseU9ubHlUb0RvbWFpbjsgfQogCitwcml2YXRlOgogICAgIEluTWVtb3J5Q29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uKENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmJiBkYXRhKQogICAgICAg
ICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQotICAgIHsgfQorICAgIHsKKyAgICB9CiAKICAgICBD
b21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIG1fZGF0YTsKIH07CkBAIC0yMDQsNyArMjExLDcg
QEAgc3RhdGljIFJlc291cmNlTG9hZEluZm8gc3ViUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IGNoYXIq
IHVybCwgY29uc3QgY2hhciogbWFpbkRvY3UKIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQgbWFrZUJhY2tlbmQoY29uc3QgY2hhcioganNvbikKIHsKICAgICBBdG9t
aWNTdHJpbmc6OmluaXQoKTsKLSAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoanNvbik7CisgICAgYXV0byBleHRlbnNpb24gPSBJbk1l
bW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlRnJvbUZpbHRlcihqc29uKTsKICAg
ICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CiAg
ICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJ0ZXN0RmlsdGVyIiwgV1RGTW92ZShleHRl
bnNpb24pKTsKICAgICByZXR1cm4gYmFja2VuZDsKQEAgLTg0OSw4ICs4NTYsOCBAQCBURVNUX0Yo
Q29udGVudEV4dGVuc2lvblRlc3QsIFRvcFVSTCkKIAogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25U
ZXN0LCBNdWx0aXBsZUV4dGVuc2lvbnMpCiB7Ci0gICAgYXV0byBleHRlbnNpb24xID0gSW5NZW1v
cnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZSgiW3tcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImJsb2NrX2xvYWRcIn19
XSIpOwotICAgIGF1dG8gZXh0ZW5zaW9uMiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpjcmVhdGUoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9LFwi
dHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImJsb2NrX2Nvb2tpZXNcIn19XSIpOworICAgIGF1
dG8gZXh0ZW5zaW9uMSA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGVG
cm9tRmlsdGVyKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiYmxvY2tfbG9hZFwifX1dIik7CisgICAgYXV0byBleHRlbnNpb24y
ID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZUZyb21GaWx0ZXIoIlt7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcImJsb2NrX2Nvb2tpZXNcIn19XSIpOwogICAgIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKICAgICBiYWNrZW5kLmFkZENvbnRl
bnRFeHRlbnNpb24oInRlc3RGaWx0ZXIxIiwgV1RGTW92ZShleHRlbnNpb24xKSk7CiAgICAgYmFj
a2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJ0ZXN0RmlsdGVyMiIsIFdURk1vdmUoZXh0ZW5zaW9u
MikpOwpAQCAtODYxLDkgKzg2OCw5IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgTXVs
dGlwbGVFeHRlbnNpb25zKQogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL2Jsb2NrX2xvYWQvYmxvY2tfY29va2llcy5odG1sIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrQ29va2llcywgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9LCAyKTsKICAgICB0ZXN0UmVxdWVzdChi
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy9ibG9ja19jb29r
aWVzL2Jsb2NrX2xvYWQuaHRtbCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0Nvb2tpZXMsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSwg
Mik7CiAgICAgCi0gICAgYXV0byBpZ25vcmVFeHRlbnNpb24xID0gSW5NZW1vcnlDb21waWxlZENv
bnRlbnRFeHRlbnNpb246OmNyZWF0ZSgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImJsb2NrX2xvYWRcIn19LCIKKyAgICBhdXRv
IGlnbm9yZUV4dGVuc2lvbjEgPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3Jl
YXRlRnJvbUZpbHRlcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcImJsb2NrX2xvYWRcIn19LCIKICAgICAgICAgIntcImFjdGlv
blwiOntcInR5cGVcIjpcImlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJpZ25vcmUxXCJ9fV0iKTsKLSAgICBhdXRvIGlnbm9yZUV4dGVuc2lvbjIg
PSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKCJbe1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiYmxvY2stY29va2llc1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJibG9ja19jb29raWVzXCJ9fSwiCisgICAgYXV0byBpZ25vcmVFeHRlbnNpb24yID0gSW5NZW1v
cnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZUZyb21GaWx0ZXIoIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcImJsb2NrX2Nvb2tpZXNcIn19LCIKICAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpc
Imlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJp
Z25vcmUyXCJ9fV0iKTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNC
YWNrZW5kIGJhY2tlbmRXaXRoSWdub3JlOwogICAgIGJhY2tlbmRXaXRoSWdub3JlLmFkZENvbnRl
bnRFeHRlbnNpb24oInRlc3RGaWx0ZXIxIiwgV1RGTW92ZShpZ25vcmVFeHRlbnNpb24xKSk7CkBA
IC04NzcsMTIxICs4ODQsNiBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIE11bHRpcGxl
RXh0ZW5zaW9ucykKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kV2l0aElnbm9yZSwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvYmxvY2tfbG9hZC9ibG9ja19jb29raWVzL2ln
bm9yZTEvaWdub3JlMi5odG1sIiksIHsgfSwgMCk7CiB9CiAKLXN0YXRpYyBib29sIGFjdGlvbnNF
cXVhbChjb25zdCBzdGQ6OnBhaXI8VmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb24+LCBWZWN0b3I8U3RyaW5nPj4mIGFjdHVhbCwgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb24+JiYgZXhwZWN0ZWQsIGJvb2wgaWdub3JlUHJldmlvdXNSdWxlcyA9
IGZhbHNlKQotewotICAgIGlmIChpZ25vcmVQcmV2aW91c1J1bGVzKSB7Ci0gICAgICAgIGlmIChh
Y3R1YWwuc2Vjb25kLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVs
c2UgewotICAgICAgICBpZiAoYWN0dWFsLnNlY29uZC5zaXplKCkgIT0gMSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGFjdHVhbC5zZWNvbmRbMF0gIT0gInRlc3RGaWx0
ZXIiKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhY3R1YWwu
Zmlyc3Quc2l6ZSgpICE9IGV4cGVjdGVkLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwZWN0ZWQuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKGFjdHVhbC5maXJzdFtpXS50eXBlKCkgIT0gZXhwZWN0ZWRbaV0udHlwZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoYWN0dWFsLmZpcnN0W2ldLnN0cmlu
Z0FyZ3VtZW50KCkgIT0gZXhwZWN0ZWRbaV0uc3RyaW5nQXJndW1lbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBjb25z
dCBjaGFyKiBqc29uV2l0aFN0cmluZ3NUb0NvbWJpbmUgPSAiWyIKLSAgICAie1wiYWN0aW9uXCI6
e1widHlwZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjpcIkFBQVwifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJBXCJ9fSwiCi0gICAgIntcImFjdGlvblwiOntcInR5cGVcIjpc
Im5vdGlmeVwiLFwibm90aWZpY2F0aW9uXCI6XCJBQUFcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiQVwifX0sIgotICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJub3RpZnlcIixc
Im5vdGlmaWNhdGlvblwiOlwiQkJCXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIkJc
In19LCIKLSAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwi
c2VsZWN0b3JcIjpcIkNDQ1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJDXCJ9fSwi
Ci0gICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVj
dG9yXCI6XCJzZWxlY3RvckNvbWJpbmVkV2l0aENcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiQ1wifX0sIgotICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1u
b25lXCIsXCJzZWxlY3RvclwiOlwiREREXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
IkRcIn19LCIKLSAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiaWdub3JlLXByZXZpb3VzLXJ1
bGVzXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIkVcIn19LCIKLSAgICAie1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
RlwifX0sIgotICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJub3RpZnlcIixcIm5vdGlmaWNh
dGlvblwiOlwiR0dHXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIkdcIn19LCIKLSAg
ICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjpcIkdH
R1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJJXCJ9fSwiCi0gICAgIntcImFjdGlv
blwiOntcInR5cGVcIjpcIm5vdGlmeVwiLFwibm90aWZpY2F0aW9uXCI6XCJBQUFcIn0sXCJ0cmln
Z2VyXCI6e1widXJsLWZpbHRlclwiOlwiSlwifX0sIgotICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBl
XCI6XCJub3RpZnlcIixcIm5vdGlmaWNhdGlvblwiOlwiR0dHXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIktcIn19IgotIl0iOwotCi1URVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3Qs
IFN0cmluZ1BhcmFtZXRlcnMpCi17Ci0gICAgYXV0byBiYWNrZW5kMSA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjpcInRlc3Ru
b3RpZmljYXRpb25cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwibWF0Y2hlc1wifX1d
Iik7Ci0gICAgQVNTRVJUX1RSVUUoYWN0aW9uc0VxdWFsKGJhY2tlbmQxLmFjdGlvbnNGb3JSZXNv
dXJjZUxvYWQobWFpbkRvY3VtZW50UmVxdWVzdCgidGVzdDovLy9tYXRjaGVzIikpLCB7eyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Tm90aWZ5LCAidGVzdG5vdGlmaWNhdGlvbiIgfX0p
KTsKLQotICAgIGF1dG8gYmFja2VuZDIgPSBtYWtlQmFja2VuZChqc29uV2l0aFN0cmluZ3NUb0Nv
bWJpbmUpOwotICAgIEFTU0VSVF9UUlVFKGFjdGlvbnNFcXVhbChiYWNrZW5kMi5hY3Rpb25zRm9y
UmVzb3VyY2VMb2FkKG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9BIikpLCB7eyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Tm90aWZ5LCAiQUFBIiB9fSkpOwotICAgIEFTU0VSVF9U
UlVFKGFjdGlvbnNFcXVhbChiYWNrZW5kMi5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly9CIikpLCB7eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Tm90aWZ5LCAiQkJCIiB9fSkpOwotICAgIEFTU0VSVF9UUlVFKGFjdGlvbnNFcXVhbChiYWNr
ZW5kMi5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9D
IikpLCB7eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciwgIkNDQyxzZWxlY3RvckNvbWJpbmVkV2l0aEMiIH19KSk7Ci0gICAgQVNTRVJUX1RSVUUo
YWN0aW9uc0VxdWFsKGJhY2tlbmQyLmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQobWFpbkRvY3VtZW50
UmVxdWVzdCgiaHR0cDovL0QiKSksIHt7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCAiREREIiB9fSkpOwotICAgIEFTU0VSVF9UUlVFKGFjdGlv
bnNFcXVhbChiYWNrZW5kMi5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHA6Ly9FIikpLCB7IH0sIHRydWUpKTsKLSAgICBBU1NFUlRfVFJVRShhY3Rpb25zRXF1
YWwoYmFja2VuZDIuYWN0aW9uc0ZvclJlc291cmNlTG9hZChtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vRiIpKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
KTsKLSAgICBBU1NFUlRfVFJVRShhY3Rpb25zRXF1YWwoYmFja2VuZDIuYWN0aW9uc0ZvclJlc291
cmNlTG9hZChtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vRyIpKSwge3sgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6Ok5vdGlmeSwgIkdHRyIgfX0pKTsKLSAgICBBU1NFUlRfVFJVRShh
Y3Rpb25zRXF1YWwoYmFja2VuZDIuYWN0aW9uc0ZvclJlc291cmNlTG9hZChtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwOi8vR0lLIikpLCB7eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
Tm90aWZ5LCAiR0dHIiB9fSkpOwotICAgIEFTU0VSVF9UUlVFKGFjdGlvbnNFcXVhbChiYWNrZW5k
Mi5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9BSiIp
KSwgewotICAgICAgICB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpOb3RpZnksICJB
QUEiIH0sCi0gICAgICAgIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok5vdGlmeSwg
IkFBQSIgfSAvLyBpZ25vcmUtcHJldmlvdXMtcnVsZXMgbWFrZXMgdGhlIEFBQSBhY3Rpb25zIG5l
ZWQgdG8gYmUgdW5pcXVlLgotICAgIH0pKTsKLSAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCB0aGF0
IG1hdGNoZXMgYWN0aW9ucyB3aXRoIEFBQSB3aXRoIGlnbm9yZS1wcmV2aW91cy1ydWxlcyBiZXR3
ZWVuIHRoZW0gYW5kIG1ha2VzIHN1cmUgd2Ugb25seSBnZXQgb25lIG5vdGlmaWNhdGlvbi4KLSAg
ICBBU1NFUlRfVFJVRShhY3Rpb25zRXF1YWwoYmFja2VuZDIuYWN0aW9uc0ZvclJlc291cmNlTG9h
ZChtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vQUUiKSksIHsgfSwgdHJ1ZSkpOwotICAgIEFT
U0VSVF9UUlVFKGFjdGlvbnNFcXVhbChiYWNrZW5kMi5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKG1h
aW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9BQkNERSIpKSwgeyB9LCB0cnVlKSk7Ci0gICAgQVNT
RVJUX1RSVUUoYWN0aW9uc0VxdWFsKGJhY2tlbmQyLmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQobWFp
bkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL0FCQ0RFRkciKSksIHsKLSAgICAgICAgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Tm90aWZ5LCAiR0dHIiB9LAotICAgICAgICB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfQotICAgIH0sIHRydWUpKTsKLSAg
ICBBU1NFUlRfVFJVRShhY3Rpb25zRXF1YWwoYmFja2VuZDIuYWN0aW9uc0ZvclJlc291cmNlTG9h
ZChtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vRkciKSksIHsKLSAgICAgICAgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Tm90aWZ5LCAiR0dHIiB9LAotICAgICAgICB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfQotICAgIH0pKTsKLSAgICBBU1NF
UlRfVFJVRShhY3Rpb25zRXF1YWwoYmFja2VuZDIuYWN0aW9uc0ZvclJlc291cmNlTG9hZChtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vRUZHIikpLCB7Ci0gICAgICAgIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6Ok5vdGlmeSwgIkdHRyIgfSwKLSAgICAgICAgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0KLSAgICB9LCB0cnVlKSk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBjU3RyaW5nTGVuZ3RoPgotc3RhdGljIGludCBzZXF1
ZW5jZUluc3RhbmNlcyhjb25zdCBWZWN0b3I8VD4gdmVjdG9yLCBjb25zdCBjaGFyICgmc2VxdWVu
Y2UpW2NTdHJpbmdMZW5ndGhdKQotewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNp
emVvZihjaGFyKSwgInNlcXVlbmNlSW5zdGFuY2VzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHZh
cmlvdXMgYnl0ZSB2ZWN0b3JzLiIpOwotCi0gICAgc2l6ZV90IHNlcXVlbmNlTGVuZ3RoID0gY1N0
cmluZ0xlbmd0aCAtIDE7Ci0gICAgc2l6ZV90IGluc3RhbmNlcyA9IDA7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPD0gdmVjdG9yLnNpemUoKSAtIHNlcXVlbmNlTGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzZXF1ZW5jZUxlbmd0aDsgaisrKSB7Ci0gICAg
ICAgICAgICBpZiAodmVjdG9yW2kgKyBqXSAhPSBzZXF1ZW5jZVtqXSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGlmIChqID09IHNlcXVlbmNlTGVuZ3RoIC0gMSkKLSAgICAg
ICAgICAgICAgICBpbnN0YW5jZXMrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gaW5z
dGFuY2VzOwotfQotCi1URVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFN0cmluZ0NvbWJpbmlu
ZykKLXsKLSAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpjcmVhdGUoanNvbldpdGhTdHJpbmdzVG9Db21iaW5lKTsKLSAgICBjb25zdCBhdXRvJiBk
YXRhID0gZXh0ZW5zaW9uLT5kYXRhKCk7Ci0KLSAgICBBU1NFUlRfRVEoc2VxdWVuY2VJbnN0YW5j
ZXMoZGF0YS5hY3Rpb25zLCAiQUFBIiksIDIpOwotICAgIEFTU0VSVF9FUShzZXF1ZW5jZUluc3Rh
bmNlcyhkYXRhLmFjdGlvbnMsICJHR0ciKSwgMSk7Ci0KLSAgICBBU1NFUlRfRVEoZGF0YS5hY3Rp
b25zLnNpemUoKSwgNzh1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRp
dGlvbnMuc2l6ZSgpLCAgMzEzdSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhDb25k
aXRpb25zLnNpemUoKSwgIDV1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNp
emUoKSwgIDV1KTsKLSAgICBBU1NFUlRfRkFMU0UoZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9E
b21haW4pOwotCi0gICAgYXV0byBleHRlbnNpb25XaXRoRmxhZ3MgPSBJbk1lbW9yeUNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKCJbIgotICAgICAgICAie1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjpcIkFBQVwifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJBXCJ9fSwiCi0gICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJu
b3RpZnlcIixcIm5vdGlmaWNhdGlvblwiOlwiQUFBXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIkNcIn19LCIKLSAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcIm5vdGlmeVwi
LFwibm90aWZpY2F0aW9uXCI6XCJBQUFcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
QVwiLFwicmVzb3VyY2UtdHlwZVwiOltcImRvY3VtZW50XCJdfX0sIgotICAgICAgICAie1wiYWN0
aW9uXCI6e1widHlwZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjpcIkFBQVwifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJBXCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiZG9jdW1l
bnRcIixcImZvbnRcIl19fSwiCi0gICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJub3Rp
ZnlcIixcIm5vdGlmaWNhdGlvblwiOlwiQUFBXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIkJcIixcInJlc291cmNlLXR5cGVcIjpbXCJkb2N1bWVudFwiXX19IgotICAgICJdIik7Ci0g
ICAgQVNTRVJUX0VRKHNlcXVlbmNlSW5zdGFuY2VzKGV4dGVuc2lvbldpdGhGbGFncy0+ZGF0YSgp
LmFjdGlvbnMsICJBQUEiKSwgMyk7IC8vIFRoZXJlIGFyZSAzIHNldHMgb2YgdW5pcXVlIGZsYWdz
IGZvciBBQUEgYWN0aW9ucy4KLX0KLQogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBUZXJt
c0tub3duVG9NYXRjaEFueXRoaW5nKQogewogICAgIGF1dG8gYmFja2VuZCA9IG1ha2VCYWNrZW5k
KCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiXnByZTEuKnBvc3QxJFwifX0sIgpAQCAtMTQ4NSwxMiArMTM3Nyw2IEBAIFRFU1Rf
RihDb250ZW50RXh0ZW5zaW9uVGVzdCwgSW52YWxpZEpTT04pCiAgICAgY2hlY2tDb21waWxlckVy
cm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwicmVzb3VyY2UtdHlwZVwiOmZhbHNlfX1dIiwKICAg
ICAgICAgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWRUcmlnZ2VyRmxhZ3NBcnJheSk7CiAgICAgCi0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wi
YWN0aW9uXCI6e1widHlwZVwiOlwibm90aWZ5XCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIi4qXCJ9fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpK
U09OSW52YWxpZE5vdGlmaWNhdGlvbik7Ci0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0
aW9uXCI6e1widHlwZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjo1fSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCIuKlwifX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRF
eHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWROb3RpZmljYXRpb24pOwotICAgIGNoZWNrQ29tcGls
ZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcIm5vdGlmeVwiLFwibm90aWZpY2F0aW9u
XCI6W119LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qXCJ9fV0iLCBDb250ZW50RXh0
ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZE5vdGlmaWNhdGlvbik7
Ci0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwibm90aWZ5
XCIsXCJub3RpZmljYXRpb25cIjpcImhlcmUncyBteSBub3RpZmljYXRpb25cIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwiLipcIn19XSIsIHsgfSk7Ci0gICAgY2hlY2tDb21waWxlckVy
cm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwibm90aWZ5XCIsXCJub3RpZmljYXRpb25cIjpc
IlxcdTEyMzRcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipcIn19XSIsIHsgfSk7
Ci0gICAgCiAgICAgU3RyaW5nQnVpbGRlciBydWxlczsKICAgICBydWxlcy5hcHBlbmQoIlsiKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNDk5OTk7ICsraSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFh
MGU0ODNlZmIxYzAyM2ZiM2Y0NzMyMDRlOTdiZGYyNmYyM2VjYTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW0KKysrIC9kZXYvbnVsbApA
QCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYg
V0tfQVBJX0VOQUJMRUQKLQotI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQg
PFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5k
bGVyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaD4KLSNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotc3Rh
dGljIGJvb2wgcmVjZWl2ZWROb3RpZmljYXRpb247Ci1zdGF0aWMgYm9vbCByZWNlaXZlZEFsZXJ0
OwotCi1AaW50ZXJmYWNlIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbkRlbGVnYXRlIDogTlNP
YmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZSwgV0tVUkxTY2hlbWVIYW5kbGVyLCBX
S1VJRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBDb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IFVSTDooTlNVUkwgKil1cmwgY29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnM6KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilpZGVudGlmaWVycyBub3RpZmljYXRpb25zOihOU0FycmF5PE5TU3RyaW5nICo+
ICopbm90aWZpY2F0aW9ucwotewotICAgIEVYUEVDVF9TVFJFUSh1cmwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZywgImFwaXRlc3Q6Ly8vbWF0Y2giKTsKLSAgICBFWFBFQ1RfRVEoaWRlbnRpZmll
cnMuY291bnQsIDF1KTsKLSAgICBFWFBFQ1RfU1RSRVEoW2lkZW50aWZpZXJzIG9iamVjdEF0SW5k
ZXg6MF0uVVRGOFN0cmluZywgInRlc3RpZGVudGlmaWVyIik7Ci0gICAgRVhQRUNUX0VRKG5vdGlm
aWNhdGlvbnMuY291bnQsIDF1KTsKLSAgICBFWFBFQ1RfU1RSRVEoW25vdGlmaWNhdGlvbnMgb2Jq
ZWN0QXRJbmRleDowXS5VVEY4U3RyaW5nLCAidGVzdG5vdGlmaWNhdGlvbiIpOwotICAgIHJlY2Vp
dmVkTm90aWZpY2F0aW9uID0gdHJ1ZTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXJsU2No
ZW1lVGFzawotewotICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdO
YW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKLSAgICBbdXJsU2NoZW1lVGFzayBkaWRGaW5pc2hdOwot
fQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRh
c2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKLXsKLX0KLQotLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAq
KWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgotewotICAgIHJlY2VpdmVkQWxlcnQgPSB0cnVlOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Ci19Ci0KLUBlbmQKLQotc3RhdGljIFJldGFpblB0cjxXS0NvbnRlbnRSdWxlTGlzdD4gbWFrZVdh
cm5Db250ZW50UnVsZUxpc3QoKQotewotICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0g
ZmFsc2U7Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8V0tDb250ZW50UnVsZUxpc3Q+IGNvbnRlbnRS
dWxlTGlzdDsKLSAgICBbW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgZGVmYXVsdFN0b3JlXSBjb21w
aWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjpAInRlc3RpZGVudGlmaWVyIiBlbmNvZGVk
Q29udGVudFJ1bGVMaXN0OkAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcIm5vdGlmeVwiLFwibm90
aWZpY2F0aW9uXCI6XCJ0ZXN0bm90aWZpY2F0aW9uXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIm1hdGNoXCJ9fV0iIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50UnVsZUxpc3Qg
Kmxpc3QsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGxpc3QpOwotICAg
ICAgICBjb250ZW50UnVsZUxpc3QgPSBsaXN0OwotICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1
ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcp
OwotICAgIHJldHVybiBjb250ZW50UnVsZUxpc3Q7Ci19Ci0KLVRFU1QoV2ViS2l0LCBDb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb25NYWluUmVzb3VyY2UpCi17Ci0gICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tDb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkQ29udGVudFJ1bGVMaXN0Om1ha2VXYXJuQ29udGVudFJ1bGVMaXN0KCkuZ2V0
KCldOwotICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6ZGVsZWdhdGUuZ2V0
KCkgZm9yVVJMU2NoZW1lOkAiYXBpdGVzdCJdOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
YXBpdGVzdDovLy9tYXRjaCJdXV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZE5vdGlmaWNhdGlvbik7Ci19Ci0KLVRFU1QoV2ViS2l0LCBDb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb25TdWJyZXNvdXJjZSkKLXsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0Nv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRD
b250ZW50UnVsZUxpc3Q6bWFrZVdhcm5Db250ZW50UnVsZUxpc3QoKS5nZXQoKV07Ci0gICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpkZWxlZ2F0ZS5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJhcGl0ZXN0Il07Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD5mZXRjaCgn
bWF0Y2gnKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXthbGVydCgnZmV0Y2ggY29tcGxldGUnKX0p
PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYXBpdGVzdDovLy8iXV07
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKLSAgICBFWFBF
Q1RfVFJVRShyZWNlaXZlZE5vdGlmaWNhdGlvbik7Ci19Ci0KLSNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>