<?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>178834</bug_id>
          
          <creation_ts>2017-10-25 15:11:47 -0700</creation_ts>
          <short_desc>REGRESSION(r223691): Broke Speedometer 2 React-Redux-TodoMVC test case (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2017-11-08 12:14:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>176601</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178820</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176601</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>rmorisset</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1364517</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-25 15:11:47 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/223691 broke the build:
Broke Speedometer 2 React-Redux-TodoMVC test case (Requested by rniwa 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>1364520</commentid>
    <comment_count>1</comment_count>
      <attachid>324905</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-25 15:11:56 -0700</bug_when>
    <thetext>Created attachment 324905
ROLLOUT of r223691

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>1364525</commentid>
    <comment_count>2</comment_count>
      <attachid>324905</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-25 15:15:43 -0700</bug_when>
    <thetext>Comment on attachment 324905
ROLLOUT of r223691

Clearing flags on attachment: 324905

Committed r223989: &lt;https://trac.webkit.org/changeset/223989&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364527</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-25 15:15:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364531</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 15:19:13 -0700</bug_when>
    <thetext>*** Bug 178820 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368586</commentid>
    <comment_count>5</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-11-06 04:37:05 -0800</bug_when>
    <thetext>With sbarati and fpizlo, we found the origin of this problem: the bug is actually in DFGByteCodeParser.cpp::flush(InlineStackEntry *) and was only made visible in Speedometer by my optimization.
The bug is in the following two lines:
```
if (!inlineStackEntry-&gt;m_inlineCallFrame &amp;&amp; m_graph.needsFlushedThis())
            flushDirect(virtualRegisterForArgument(0));
```
It causes &apos;this&apos; not to be correctly preserved for OSR exit in some corner cases. It is fixed by adding the following just afterwards:
```
else
    phantomLocalDirect(virtualRegisterForArgument(0));
```

I will upload a fix on this bug as soon as I manage to write a minimized test case that triggers without my optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369520</commentid>
    <comment_count>6</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-11-08 12:14:25 -0800</bug_when>
    <thetext>I thought I would do this as a separate patch, but as I could not build a regression test that does not use https://bugs.webkit.org/show_bug.cgi?id=176601, I decided to merge the two bugs together.

*** This bug has been marked as a duplicate of bug 176601 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324905</attachid>
            <date>2017-10-25 15:11:56 -0700</date>
            <delta_ts>2017-10-25 15:15:43 -0700</delta_ts>
            <desc>ROLLOUT of r223691</desc>
            <filename>bug-178834-20171025181155.patch</filename>
            <type>text/plain</type>
            <size>22445</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzOTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NmMyMjM4NzI3NzZkY2ZhNmZmOTM0Y2UyNjBjZDQ3YWI0YjlkZTQyLi44Zjk1ZjE2OTkyYmNjMmZm
M2E0MmI2YmZiNDllZTdlMDhlY2RhMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNy0xMC0yNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzY5MSBhbmQgcjIy
MzcyOS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODgzNAorCisgICAgICAgIEJyb2tlIFNwZWVkb21ldGVyIDIgUmVhY3QtUmVkdXgtVG9kb01WQyB0
ZXN0IGNhc2UgKFJlcXVlc3RlZAorICAgICAgICBieSBybml3YSBvbiAjd2Via2l0KS4KKworICAg
ICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJUdXJuIHJlY3Vyc2l2ZSB0YWls
IGNhbGxzIGludG8gbG9vcHMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY2MDEKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzIyMzY5MQorCisgICAgICAgICJSRUdSRVNTSU9OKHIyMjM2OTEpOiBERkdCeXRlQ29kZVBh
cnNlci5jcHA6MTQ4Mzo4Mzogd2FybmluZzoKKyAgICAgICAgY29tcGFyaXNvbiBpcyBhbHdheXMg
ZmFsc2UgZHVlIHRvIGxpbWl0ZWQgcmFuZ2Ugb2YgZGF0YSB0eXBlCisgICAgICAgIFstV3R5cGUt
bGltaXRzXSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODU0MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjIzNzI5
CisKIDIwMTctMTAtMjUgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMjIzOTM3KTogVXNlIG9mIC1mb2JqYy13ZWFrIGNhdXNlcyBidWls
ZCBmYWlsdXJlcyB3aXRoIG9sZGVyIGNvbXBpbGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDRmNjA0NGJlYmJhYmY3M2YzNmZjY2IwZWZhODQ5MzYz
MzhjYzM2MDguLmVhOWNjMDI0YmFjYzRhMGYwYTIzODI2YmUxZTA1MzFmMGNlZjIzNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTc0Miw3ICs3NDIs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsIHRoaXMgdG8gY2F1c2UgYW4gb3B0aW1pemF0aW9u
IHRyaWdnZXIgdG8gZmlyZSBzb29uLCBidXQKICAgICAvLyBub3QgbmVjZXNzYXJpbHkgdGhlIG5l
eHQgb25lLiBUaGlzIG1ha2VzIHNlbnNlIGlmIG9wdGltaXphdGlvbgotICAgIC8vIHN1Y2NlZWRz
LiBTdWNjZXNzZnVsIG9wdGltaXphdGlvbiBtZWFucyB0aGF0IGFsbCBjYWxscyBhcmUKKyAgICAv
LyBzdWNjZWVkcy4gU3VjY2Vzc2Z1bHkgb3B0aW1pemF0aW9uIG1lYW5zIHRoYXQgYWxsIGNhbGxz
IGFyZQogICAgIC8vIHJlbGlua2VkIHRvIHRoZSBvcHRpbWl6ZWQgY29kZSwgc28gdGhpcyBvbmx5
IGFmZmVjdHMgY2FsbAogICAgIC8vIGZyYW1lcyB0aGF0IGFyZSBzdGlsbCBleGVjdXRpbmcgdGhp
cyBDb2RlQmxvY2suIFRoZSB2YWx1ZSBoZXJlCiAgICAgLy8gaXMgdHVuZWQgdG8gc3RyaWtlIGEg
YmFsYW5jZSBiZXR3ZWVuIHRoZSBjb3N0IG9mIE9TUiBlbnRyeQpAQCAtOTI1LDggKzkyNSw2IEBA
IHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lkKiBwYyk7
CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZENvZGUtPmhhc1RhaWxDYWxscygpOyB9Ci0KIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmFs
aXplTExJbnRJbmxpbmVDYWNoZXMoKTsKICAgICB2b2lkIGZpbmFsaXplQmFzZWxpbmVKSVRJbmxp
bmVDYWNoZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggOWVkOTM1YjA3MDMyZTEzMzc2ZTY4YzdhOTk2Njk3
MjA3MDJhZWRlMC4uNjM2ZjBhODM5MzVkYzhkOGVhOTBjYTBhMDVmYTRmOWQ1Njc0NTc2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAKQEAgLTQyLDExICs0Miw2IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RyCiAgICAg
Ly8gb3BfbG9vcF9oaW50IGRvZXMgbm90IGhhdmUganVtcCB0YXJnZXQgc3RvcmVkIGluIGJ5dGVj
b2RlIGluc3RydWN0aW9ucy4KICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbG9vcF9oaW50KQogICAg
ICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICBlbHNlIGlmIChvcGNvZGVJRCA9
PSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPmhhc1RhaWxDYWxscygpKSB7Ci0gICAgICAgIC8vIFdl
IG5lZWQgdG8gaW5zZXJ0IGEganVtcCBhZnRlciBvcF9lbnRlciwgc28gcmVjdXJzaXZlIHRhaWwg
Y2FsbHMgaGF2ZSBzb21ld2hlcmUgdG8ganVtcCB0by4KLSAgICAgICAgLy8gQnV0IHdlIG9ubHkg
d2FudCB0byBwYXkgdGhhdCBwcmljZSBmb3IgZnVuY3Rpb25zIHRoYXQgaGF2ZSBhdCBsZWFzdCBv
bmUgdGFpbCBjYWxsLgotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2Rl
TGVuZ3Roc1tvcF9lbnRlcl0pOwotICAgIH0KIH0KIAogZW51bSBjbGFzcyBDb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzTW9kZSB7CkBAIC01OCw4ICs1Myw5IEBAIHRlbXBsYXRlPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvCiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQo
b3V0LmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBUaGUgY29kZSBibG9jayBoYXMgYSBzdXBlcnNldCBv
ZiB0aGUganVtcCB0YXJnZXRzLiBTbyBpZiBpdCBjbGFpbXMgdG8gaGF2ZSBub25lLCB3ZSBhcmUg
ZG9uZS4KKyAgICAKKyAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1w
IHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgorICAgIC8vIFNvLCBp
ZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUu
CiAgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0Nv
ZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZThiZTE3MThkOTU5NzA5NmI0YzZlNWJlYjY4
N2FmMjgwNmZkMmM2OS4uNDY1ZDRkMTI3MzJhNWQ3MDhlM2Q4Y2Y0MDJkMTNlNmRkYWFhZjlkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCkBAIC03MCw3ICs3MCw2IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAg
LCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3Rv
cktpbmQoKSkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCi0gICAgLCBtX2hh
c1RhaWxDYWxscyhmYWxzZSkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVt
bihVSU5UX01BWCkKICAgICAsIG1fZGlkT3B0aW1pemUoTWl4ZWRUcmlTdGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
YjFjZjZmYzdhNWEzYWM5ZTQwZDM1ZTA5NzUyMzM4ZmY2ZDRhMzNiYS4uMDZjYmM2MTMzNGYzZjRm
NzgxZmQxNjEzODMwODJlOTUzN2RmMWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyOSw4ICsxMjksNiBAQCBwdWJs
aWM6CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9CiAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVu
Y3Rpb25Db250ZXh0OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDbGFzc0NvbnRleHQ7IH0KLSAgICBib29sIGhhc1RhaWxDYWxscygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzVGFpbENhbGxzOyB9Ci0gICAgdm9pZCBzZXRIYXNUYWlsQ2FsbHMoKSB7IG1faGFz
VGFpbENhbGxzID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25l
ZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRpdm90LAogICAgICAgICBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbik7CkBAIC00NDQs
NyArNDQyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1f
ZXZhbENvbnRleHRUeXBlIDogMjsKLSAgICB1bnNpZ25lZCBtX2hhc1RhaWxDYWxscyA6IDE7CiAg
ICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggMDIxOWQ4OTA5NGFmMDJjZTFiMjg1NmVhNGY0M2I3ZTdjN2IwMTU2
Yi4uNWNiYmY0YThjOTFkZDA0MDJkMzUxYzFkMzJiNTk3MDU3MThmMzBjNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTEzMTMsMTIgKzEzMTMsNiBAQCBVbmxpbmtlZFZhbHVlUHJvZmlsZSBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudGVyKCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX2VudGVy
KTsKLQotICAgIC8vIFdlIG11c3QgYWRkIHRoZSBlbmQgb2Ygb3BfZW50ZXIgYXMgYSBwb3RlbnRp
YWwganVtcCB0YXJnZXQsIGJlY2F1c2UgdGhlIGJ5dGVjb2RlIHBhcnNlciBtYXkgZGVjaWRlIHRv
IHNwbGl0IGl0cyBiYXNpYyBibG9jawotICAgIC8vIHRvIGhhdmUgc29tZXdoZXJlIHRvIGp1bXAg
dG8gaWYgdGhlcmUgaXMgYSByZWN1cnNpdmUgdGFpbC1jYWxsIHRoYXQgcG9pbnRzIHRvIHRoaXMg
ZnVuY3Rpb24uCi0gICAgbV9jb2RlQmxvY2stPmFkZEp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKLSAgICAvLyBUaGlzIGRpc2FibGVzIHBlZXBob2xlIG9wdGltaXphdGlvbnMgd2hl
biBhbiBpbnN0cnVjdGlvbiBpcyBhIGp1bXAgdGFyZ2V0Ci0gICAgbV9sYXN0T3Bjb2RlSUQgPSBv
cF9lbmQ7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb29wSGludCgpCkBAIC0z
MzUzLDExICszMzQ3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENh
bGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCwgRGVidWdnYWJsZUNhbGwgZGVidWdnYWJsZUNhbGwpCiB7Ci0gICAgaWYgKG1faW5U
YWlsUG9zaXRpb24pIHsKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldEhhc1RhaWxDYWxscygpOwot
ICAgICAgICByZXR1cm4gZW1pdENhbGwob3BfdGFpbF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVi
dWdnYWJsZUNhbGwpOwotICAgIH0KLSAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBm
dW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQsIGRlYnVnZ2FibGVDYWxsKTsKKyAgICByZXR1cm4gZW1pdENhbGwobV9pblRhaWxQ
b3NpdGlvbiA/IG9wX3RhaWxfY2FsbCA6IG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBkZWJ1Z2dh
YmxlQ2FsbCk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiBjYWxs
QXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2Fi
bGVDYWxsIGRlYnVnZ2FibGVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzNWI3NjQxOWUxOWI4NTcxYTI4MjBiZDYwZWU3YWUw
OGVkYWU2NWFmLi45Yjk3YmY2NzQ3ZjZlOWE3ZDc4ODAyOWViYTJlYzdhMjBlNDMyZDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MjI0LDcgKzIyNCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2Fs
bFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1udCk7
CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgTm9kZSogZ2V0QXJndW1lbnRDb3VudCgp
OwotICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgIHVu
c2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQn
cyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhh
dmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBp
dCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wg
aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVy
IHRoaXNBcmd1bWVudCwgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25l
ZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWdu
ZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwpAQCAtMjMyLDYgKzIzMSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBhdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFu
Y2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAg
dm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Q2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2lj
QmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpOworICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBC
YXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxh
c3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAg
ICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2Nl
ZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKQEAgLTExMjcsNiArMTEyNyw5
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZl
IHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9i
bG9ja0xpbmtpbmdUYXJnZXRzOwogCisgICAgICAgIC8vIFRoaXMgaXMgc2V0IGJ5IG9wX2VudGVy
IGluIHBhcnNlQmxvY2soKSwgYW5kIGluZGljYXRlcyB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIGZ1
bmN0aW9uLgorICAgICAgICBCYXNpY0Jsb2NrKiBtX2VudHJ5QmxvY2s7CisKICAgICAgICAgLy8g
T3B0aW9uYWw6IGEgY29udGludWF0aW9uIGJsb2NrIGZvciByZXR1cm5zIHRvIGp1bXAgdG8uIEl0
IGlzIHNldCBieSBlYXJseSByZXR1cm5zIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogICAgICAgICBC
YXNpY0Jsb2NrKiBtX2NvbnRpbnVhdGlvbkJsb2NrOwogCkBAIC0xMjE0LDkgKzEyMTcsNiBAQCBC
YXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRhYmxlQmxvY2sodW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCAhPSBVSU5UX01BWCk7
CiAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKGJ5
dGVjb2RlSW5kZXgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwogICAgIEJhc2lj
QmxvY2sqIGJsb2NrUHRyID0gYmxvY2sucHRyKCk7Ci0gICAgLy8gbV9ibG9ja0xpbmtpbmdUYXJn
ZXRzIG11c3QgYWx3YXlzIGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIGJ5dGVjb2Rl
QmVnaW4KLSAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLnNp
emUoKSkKLSAgICAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFy
Z2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBieXRlY29kZUluZGV4KTsKICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrUHRyKTsKICAgICBt
X2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICByZXR1cm4gYmxvY2tQdHI7
CkBAIC0xMjM0LDkgKzEyMzQsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjptYWtlQmxvY2tUYXJn
ZXRhYmxlKEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZAogewogICAgIEFT
U0VSVChibG9jay0+Ynl0ZWNvZGVCZWdpbiA9PSBVSU5UX01BWCk7CiAgICAgYmxvY2stPmJ5dGVj
b2RlQmVnaW4gPSBieXRlY29kZUluZGV4OwotICAgIC8vIG1fYmxvY2tMaW5raW5nVGFyZ2V0cyBt
dXN0IGFsd2F5cyBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBieXRlY29kZUJlZ2lu
Ci0gICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5zaXplKCkp
Ci0gICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMu
bGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgYnl0ZWNvZGVJbmRleCk7CiAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jayk7CiB9CiAKQEAgLTEyOTgs
OSArMTI5NSw2IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICBpZiAoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgewogICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50ID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOwogCi0gICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCAm
JiBoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChjYWxsVGFyZ2V0LCBjYWxsTGlua1N0YXR1cywgcmVn
aXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKQot
ICAgICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwotCiAgICAgICAgIC8vIElubGluaW5nIGlzIHF1
aXRlIGNvbXBsZXgsIGFuZCBtYW5hZ2VkIGJ5IGEgcGlwZWxpbmUgb2YgZnVuY3Rpb25zOgogICAg
ICAgICAvLyBoYW5kbGUoVmFyYXJncylDYWxsIC0+IGhhbmRsZUlubGluaW5nIC0+IGF0dGVtcHRU
b0lubGluZUNhbGwgLT4gaW5saW5lQ2FsbAogICAgICAgICAvLyAtIGhhbmRsZUNhbGwgYW5kIGhh
bmRsZVZhcmFyZ3NDYWxsIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSBubyBpbmxpbmluZyBoYXBw
ZW5zLCBhbmQgZG8gc29tZSBzYW5pdHkgY2hlY2tzIG9uIHRoZWlyIGFyZ3VtZW50cwpAQCAtMTQx
OCw3NCArMTQxMiw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVudFBoYW50b21z
KGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJCiAgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zm
c2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3Rh
dHVzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKLXsKLSAgICAvLyBGSVhNRTogV2UgY3VycmVu
dGx5IG9ubHkgZG8gdGhpcyBvcHRpbWlzYXRpb24gaW4gdGhlIHNpbXBsZSwgbm9uLXBvbHltb3Jw
aGljIGNhc2UuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODM5MAotICAgIGlmIChjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpIHx8IGNh
bGxMaW5rU3RhdHVzLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBh
dXRvIHRhcmdldEV4ZWN1dGFibGUgPSBjYWxsTGlua1N0YXR1c1swXS5leGVjdXRhYmxlKCk7Ci0g
ICAgSW5saW5lU3RhY2tFbnRyeSogc3RhY2tFbnRyeSA9IG1faW5saW5lU3RhY2tUb3A7Ci0gICAg
ZG8gewotICAgICAgICBpZiAodGFyZ2V0RXhlY3V0YWJsZSAhPSBzdGFja0VudHJ5LT5leGVjdXRh
YmxlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgVkVSQk9TRV9MT0coIiAgIFdl
IGZvdW5kIGEgcmVjdXJzaXZlIHRhaWwgY2FsbCwgdHJ5aW5nIHRvIG9wdGltaXplIGl0IGludG8g
YSBqdW1wLlxuIik7Ci0KLSAgICAgICAgaWYgKGF1dG8qIGNhbGxGcmFtZSA9IHN0YWNrRW50cnkt
Pm1faW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBTb21lIGNvZGUgbWF5IHN0YXRp
Y2FsbHkgdXNlIHRoZSBhcmd1bWVudCBjb3VudCBmcm9tIHRoZSBJbmxpbmVDYWxsRnJhbWUsIHNv
IGl0IHdvdWxkIGJlIGludmFsaWQgdG8gbG9vcCBiYWNrIGlmIGl0IGRvZXMgbm90IG1hdGNoLgot
ICAgICAgICAgICAgLy8gV2UgImNvbnRpbnVlIiBpbnN0ZWFkIG9mIHJldHVybmluZyBmYWxzZSBp
biBjYXNlIGFub3RoZXIgc3RhY2sgZW50cnkgZnVydGhlciBvbiB0aGUgc3RhY2sgaGFzIHRoZSBy
aWdodCBudW1iZXIgb2YgYXJndW1lbnRzLgotICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBXZSBhcmUgaW4gdGhlIG1hY2hpbmUgY29kZSBlbnRyeSAoaS5l
LiB0aGUgb3JpZ2luYWwgY2FsbGVyKS4KLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgbW9yZSBh
cmd1bWVudHMgdGhhbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uLCBp
dCBpcyBub3QgY2xlYXIgd2hlcmUgd2UgY291bGQgcHV0IHRoZW0gb24gdGhlIHN0YWNrLgotICAg
ICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gbV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBXZSBtdXN0IGFkZCBzb21lIGNoZWNrIHRoYXQgdGhlIHByb2ZpbGluZyBp
bmZvcm1hdGlvbiB3YXMgY29ycmVjdCBhbmQgdGhlIHRhcmdldCBvZiB0aGlzIGNhbGwgaXMgd2hh
dCB3ZSB0aG91Z2h0Ci0gICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1c1sw
XSwgY2FsbFRhcmdldE5vZGUsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIC8vIFdlIGZsdXNoIGV2
ZXJ5dGhpbmcsIGFzIGlmIHdlIHdlcmUgaW4gdGhlIGJhY2tlZGdlIG9mIGEgbG9vcCAoc2VlIHRy
ZWF0bWVudCBvZiBvcF9qbXAgaW4gcGFyc2VCbG9jaykuCi0gICAgICAgIGZsdXNoRm9yVGVybWlu
YWwoKTsKLQotICAgICAgICAvLyBXZSBtdXN0IHNldCB0aGUgYXJndW1lbnRzIHRvIHRoZSByaWdo
dCB2YWx1ZXMKLSAgICAgICAgaW50IGFyZ0luZGV4ID0gMDsKLSAgICAgICAgZm9yICg7IGFyZ0lu
ZGV4IDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsrYXJnSW5kZXgpIHsKLSAgICAgICAg
ICAgIE5vZGUqIHZhbHVlID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ0luZGV4
LCByZWdpc3Rlck9mZnNldCkpOwotICAgICAgICAgICAgc2V0RGlyZWN0KHN0YWNrRW50cnktPnJl
bWFwT3BlcmFuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmdJbmRleCkpLCB2YWx1ZSwg
Tm9ybWFsU2V0KTsKLSAgICAgICAgfQotICAgICAgICBOb2RlKiB1bmRlZmluZWQgPSBhZGRUb0dy
YXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50VW5kZWZpbmVkKSk7Ci0gICAgICAgIGZv
ciAoOyBhcmdJbmRleCA8IHN0YWNrRW50cnktPm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7
ICsrYXJnSW5kZXgpCi0gICAgICAgICAgICBzZXREaXJlY3Qoc3RhY2tFbnRyeS0+cmVtYXBPcGVy
YW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ0luZGV4KSksIHVuZGVmaW5lZCwgTm9y
bWFsU2V0KTsKLQotICAgICAgICAvLyBXZSBtdXN0IHJlcGVhdCB0aGUgd29yayBvZiBvcF9lbnRl
ciBoZXJlIGFzIHdlIHdpbGwganVtcCByaWdodCBhZnRlciBpdC4KLSAgICAgICAgLy8gV2UganVt
cCByaWdodCBhZnRlciBpdCBhbmQgbm90IGJlZm9yZSBpdCwgYmVjYXVzZSBvZiBzb21lIGludmFy
aWFudCBzYXlpbmcgdGhhdCBhIENGRyByb290IGNhbm5vdCBoYXZlIHByZWRlY2Vzc29ycyBpbiB0
aGUgSVIuCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhY2tFbnRyeS0+bV9jb2RlQmxv
Y2stPm1fbnVtVmFyczsgKytpKQotICAgICAgICAgICAgc2V0RGlyZWN0KHN0YWNrRW50cnktPnJl
bWFwT3BlcmFuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSksIHVuZGVmaW5lZCwgTm9ybWFs
U2V0KTsKLQotICAgICAgICAvLyBXZSB3YW50IHRvIGVtaXQgdGhlIFNldExvY2FscyB3aXRoIGFu
IGV4aXQgb3JpZ2luIHRoYXQgcG9pbnRzIHRvIHRoZSBwbGFjZSB3ZSBhcmUganVtcGluZyB0by4K
LSAgICAgICAgdW5zaWduZWQgb2xkSW5kZXggPSBtX2N1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0
byBvbGRTdGFja1RvcCA9IG1faW5saW5lU3RhY2tUb3A7Ci0gICAgICAgIG1faW5saW5lU3RhY2tU
b3AgPSBzdGFja0VudHJ5OwotICAgICAgICBtX2N1cnJlbnRJbmRleCA9IE9QQ09ERV9MRU5HVEgo
b3BfZW50ZXIpOwotICAgICAgICBtX2V4aXRPSyA9IHRydWU7Ci0gICAgICAgIHByb2Nlc3NTZXRM
b2NhbFF1ZXVlKCk7Ci0gICAgICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7Ci0gICAgICAg
IG1faW5saW5lU3RhY2tUb3AgPSBvbGRTdGFja1RvcDsKLSAgICAgICAgbV9leGl0T0sgPSBmYWxz
ZTsKLQotICAgICAgICBCYXNpY0Jsb2NrKiogZW50cnlCbG9ja1B0ciA9IHRyeUJpbmFyeVNlYXJj
aDxCYXNpY0Jsb2NrKiwgdW5zaWduZWQ+KHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cywgc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLnNpemUoKSwgT1BDT0RFX0xFTkdU
SChvcF9lbnRlciksIGdldEJ5dGVjb2RlQmVnaW5Gb3JCbG9jayk7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVudHJ5QmxvY2tQdHIpOwotICAgICAgICBhZGRKdW1wVG8oKmVudHJ5QmxvY2tQdHIp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgLy8gSXQgd291bGQgYmUgdW5zb3VuZCB0
byBqdW1wIG92ZXIgYSBub24tdGFpbCBjYWxsOiB0aGUgInRhaWwiIGNhbGwgaXMgbm90IHJlYWxs
eSBhIHRhaWwgY2FsbCBpbiB0aGF0IGNhc2UuCi0gICAgfSB3aGlsZSAoc3RhY2tFbnRyeS0+bV9p
bmxpbmVDYWxsRnJhbWUgJiYgc3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUtPmtpbmQgPT0g
SW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbCAmJiAoc3RhY2tFbnRyeSA9IHN0YWNrRW50cnktPm1f
Y2FsbGVyKSk7Ci0KLSAgICAvLyBUaGUgdGFpbCBjYWxsIHdhcyBub3QgcmVjdXJzaXZlCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0
KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCkKIHsKICAgICBDYWxsTW9kZSBjYWxsTW9kZSA9IElubGlu
ZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCk7CkBAIC00Mjg4LDYgKzQyMTQsOCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bV9udW1W
YXJzOyArK2kpCiAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkp
LCB1bmRlZmluZWQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKIAorICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9lbnRyeUJsb2NrID0gbV9jdXJyZW50QmxvY2s7CisKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2VudGVyKTsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01NDc0LDgg
KzU0MDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgaWYgKHRlcm1pbmFsaXR5ID09IE5vblRlcm1pbmFsKQogICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3RhaWxfY2FsbCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgTEFTVF9PUENPREVfTElOS0VEKG9wX3RhaWxfY2FsbCk7Ci0gICAgICAgICAg
ICAvLyBXZSB1c2UgTEFTVF9PUENPREVfTElOS0VEIGluc3RlYWQgb2YgTEFTVF9PUENPREUgYmVj
YXVzZSBpZiB0aGUgdGFpbCBjYWxsIHdhcyBvcHRpbWl6ZWQsIGl0IG1heSBub3cgYmUgYSBqdW1w
IHRvIGEgYnl0ZWNvZGUgaW5kZXggaW4gYSBkaWZmZXJlbnQgSW5saW5lU3RhY2tFbnRyeS4KKyAg
ICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90YWlsX2NhbGwpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6CkBAIC02NTAzLDYgKzY0MzAsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5s
aW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKIAog
ICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CisgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VERkdCeXRlY29kZVBhcnNpbmcoKSkKKyAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAg
bV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKIAogICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlMGY2NWQw
ZWQzZjI4ZmE0ZGExZTlkNzc2NWJmMGIzYWJmN2U0MzEwLi5hYmNiYWYyMmVhN2QwNjk1Zjk0MTc2
NDhmOTkzNTQxYTAyNTY2NmIzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTEwLTI1ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjIzNjkxIGFuZCByMjIzNzI5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODM0CisKKyAgICAgICAgQnJva2UgU3BlZWRvbWV0ZXIg
MiBSZWFjdC1SZWR1eC1Ub2RvTVZDIHRlc3QgY2FzZSAoUmVxdWVzdGVkCisgICAgICAgIGJ5IHJu
aXdhIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAg
ICAgIlR1cm4gcmVjdXJzaXZlIHRhaWwgY2FsbHMgaW50byBsb29wcyIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjYwMQorICAgICAgICBodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjIzNjkxCisKKyAgICAgICAgIlJFR1JFU1NJT04o
cjIyMzY5MSk6IERGR0J5dGVDb2RlUGFyc2VyLmNwcDoxNDgzOjgzOiB3YXJuaW5nOgorICAgICAg
ICBjb21wYXJpc29uIGlzIGFsd2F5cyBmYWxzZSBkdWUgdG8gbGltaXRlZCByYW5nZSBvZiBkYXRh
IHR5cGUKKyAgICAgICAgWy1XdHlwZS1saW1pdHNdIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NTQzCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yMjM3MjkKKwogMjAxNy0xMC0yNSAgUnlhbiBIYWRkYWQgIDxyeWFu
aGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIHRlc3QyNjIueWFtbC90ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy90cnkvdGNvLWNhdGNoLmpzIGFzIHBhc3NpbmcuCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbmxpbmUtY2FsbC10by1yZWN1cnNpdmUtdGFpbC1jYWxs
LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW5saW5lLWNhbGwtdG8tcmVjdXJzaXZlLXRhaWwtY2FsbC5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIzZmY0ZWQ3ZTA0MjMxNmIyMzBiMjNh
MWQwY2JkMzE2MGIxODU1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbmxpbmUtY2FsbC10by1yZWN1cnNpdmUtdGFpbC1jYWxs
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotInVzZSBzdHJpY3QiOwotCi0vLyBm
YWN0b3JpYWwgY2FsbHMgYXV4IHRoYXQgdGFpbC1jYWxscyBiYWNrIGludG8gZmFjdG9yaWFsLgot
Ly8gSXQgaXMgbm90IE9LIHRvIHR1cm4gdGhhdCB0YWlsIGNhbGwgaW50byBhIGp1bXAgYmFjayB0
byB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgY2FsbCB0byBhdXggaXMgbm90
IGEgdGFpbCBjYWxsLgotZnVuY3Rpb24gZmFjdG9yaWFsKG4pIHsKLSAgICBmdW5jdGlvbiBhdXgo
bikgewotICAgICAgICBpZiAobiA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IHJldHVybiBmYWN0b3JpYWwobiAtIDEpOwotICAgIH0KLQotICAgIHJldHVybiBuICogYXV4KG4p
OwotfQotCi0vLyBTYW1lLCBidXQgdGhpcyB0aW1lIHdpdGggYW4gaXJyZWxldmFudCB0YWlsIGNh
bGwgaW4gZmFjdG9yaWFsLgotLy8gVGhpcyBleGVyY2lzZXMgYSBkaWZmZXJlbnQgY29kZSBwYXRo
IGJlY2F1c2UgdGhlIHJlY3Vyc2l2ZSB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIGFib3J0cyBlYXJs
eSBpZiB0aGUgb3BfZW50ZXIgYmxvY2sgaXMgbm90IHNwbGl0LCBhbmQgaXQgaXMgc3BsaXQgYnkg
dGhlIGRldGVjdGlvbiBvZiBhIHRhaWwgY2FsbC4KLWZ1bmN0aW9uIGZhY3RvcmlhbDIobikgewot
ICAgIGZ1bmN0aW9uIGF1eDIobikgewotICAgICAgICBpZiAobiA9PSAxKQotICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIHJldHVybiBmYWN0b3JpYWwyKG4gLSAxKTsKLSAgICB9Ci0gICAg
ZnVuY3Rpb24gaWQobikgewotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
aWQobiAqIGF1eDIobikpOwotfQotCi0vLyBUaGlzIHRpbWUsIGF1eCBpcyB0YWlsLWNhbGxpbmcg
aXRzZWxmOiB0aGUgb3B0aW1pemF0aW9uIGlzIHZhbGlkIGJ1dCBtdXN0IGp1bXAgdG8gdGhlIHN0
YXJ0IG9mIGF1eDMsIG5vdCBvZiBmYWN0b3JpYWwzLgotZnVuY3Rpb24gZmFjdG9yaWFsMyhuKSB7
Ci0gICAgZnVuY3Rpb24gYXV4MyhuLCBhY2MpIHsKLSAgICAgICAgaWYgKG4gPT0gMSkKLSAgICAg
ICAgICAgIHJldHVybiBhY2M7Ci0gICAgICAgIHJldHVybiBhdXgzIChuLTEsIG4qYWNjKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gbiAqIGF1eDMobi0xLCAxKTsKLX0KLQotLy8gSW4gdGhpcyBjYXNl
LCBpdCBpcyB2YWxpZCB0byBqdW1wIGFsbCB0aGUgd2F5IHRvIHRoZSB0b3Agb2YgZmFjdG9yaWFs
NCwgYmVjYXVzZSBhbGwgY2FsbHMgYXJlIHRhaWwgY2FsbHMuCi1mdW5jdGlvbiBmYWN0b3JpYWw0
KG4sIGFjYykgewotICAgIGZ1bmN0aW9uIGF1eDQobiwgYWNjKSB7Ci0gICAgICAgIGlmIChuID09
IDEpCi0gICAgICAgICAgICByZXR1cm4gYWNjOwotICAgICAgICByZXR1cm4gZmFjdG9yaWFsNChu
LTEsIG4qYWNjKTsKLSAgICB9Ci0KLSAgICBpZiAoYWNjKQotICAgICAgICByZXR1cm4gYXV4NChu
LCBhY2MpOwotICAgIHJldHVybiBhdXg0KG4sIDEpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9uIGlz
IHVzZWQgdG8gdGVzdCB0aGF0IHJlY3Vyc2luZyB3aXRoIGEgZGlmZmVyZW50IG51bWJlciBvZiBh
cmd1bWVudHMgZG9lc24ndCBtZXNzIHVwIHdpdGggdGhlIHN0YWNrLgotLy8gVGhlIGZpcnN0IHR3
byB0YWlsIGNhbGxzIHNob3VsZCBiZSBvcHRpbWl6ZWQsIGJ1dCBub3QgdGhlIGxhc3Qgb25lIChu
byBwbGFjZSBvbiB0aGUgc3RhY2sgZm9yIHRoZSB0aGlyZCBhcmd1bWVudCkuCi1mdW5jdGlvbiBm
b28oYSwgYikgewotICAgIGlmIChhID09IDApCi0gICAgICAgIHJldHVybiA0MjsKLSAgICBpZiAo
YSA9PSAxKQotICAgICAgICByZXR1cm4gZm9vKGEgLSAxKTsKLSAgICBpZiAoYSA9PSAyKQotICAg
ICAgICByZXR1cm4gZm9vKGIgLSAxLCBhKTsKLSAgICByZXR1cm4gZm9vIChiIC0gMSwgYSwgNDMp
OwotfQotCi0vLyBTYW1lIGRlYWwgYXMgZm9vLCBqdXN0IHdpdGggYW4gaW5saW5pbmcgdGhyb3du
IGludG8gdGhlIG1peC4KLS8vIEV2ZW4gdGhlIGZpcnN0IHRhaWwgY2FsbCBzaG91bGQgbm90IGJl
IG9wdGltaXplZCBpbiB0aGlzIGNhc2UsIGZvciBzdWJ0bGUgcmVhc29ucy4KLWZ1bmN0aW9uIGJh
cih4LCB5KSB7Ci0gICAgZnVuY3Rpb24gYXV4QmFyKGEsIGIpIHsKLSAgICAgICAgaWYgKGEgPT0g
MCkKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgaWYgKGEgPT0gMSkKLSAgICAgICAg
ICAgIHJldHVybiBmb28oYSAtIDEpOwotICAgICAgICBpZiAoYSA9PSAyKQotICAgICAgICAgICAg
cmV0dXJuIGZvbyhiIC0gMSwgYSk7Ci0gICAgICAgIHJldHVybiBmb28gKGIgLSAxLCBhLCA0Myk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGF1eEJhcih4LCB5KTsKLX0KLQotZnVuY3Rpb24gdGVzdChy
ZXN1bHQsIGV4cGVjdGVkLCBuYW1lKSB7Ci0gICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkKLSAg
ICAgICAgdGhyb3cgIldyb25nIHJlc3VsdCBmb3IgIiArIG5hbWUgKyAiOiAiICsgcmVzdWx0ICsg
IiBpbnN0ZWFkIG9mICIgKyBleHBlY3RlZDsKLX0KLQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgKytpKSB7Ci0gICAgdGVzdChmYWN0b3JpYWwoMjApLCAyNDMyOTAyMDA4MTc2NjQwMDAwLCAi
ZmFjdG9yaWFsIik7Ci0gICAgdGVzdChmYWN0b3JpYWwyKDIwKSwgMjQzMjkwMjAwODE3NjY0MDAw
MCwgImZhY3RvcmlhbDIiKTsKLSAgICB0ZXN0KGZhY3RvcmlhbDMoMjApLCAyNDMyOTAyMDA4MTc2
NjQwMDAwLCAiZmFjdG9yaWFsMyIpOwotICAgIHRlc3QoZmFjdG9yaWFsNCgyMCksIDI0MzI5MDIw
MDgxNzY2NDAwMDAsICJmYWN0b3JpYWw0Iik7Ci0gICAgdGVzdChmb28oMTAsIDEwKSwgNDIsICJm
b28iKTsKLSAgICB0ZXN0KGJhcigxMCwgMTApLCA0MiwgImJhciIpOwotfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>