<?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>171390</bug_id>
          
          <creation_ts>2017-04-27 13:19:37 -0700</creation_ts>
          <short_desc>B3::FoldPathConstants does not consider the fall through case for Switch</short_desc>
          <delta_ts>2017-04-27 16:52:46 -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>Java</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302253</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 13:19:37 -0700</bug_when>
    <thetext>Say you have a B3 switch that&apos;s the moral equivalent of this C this:

```
switch (v) {
1: doSomething; break;

2: doSomethingElse;  break;

3:
default: BB that uses v
}
```

we&apos;ll rewrite the BB to replace &quot;v&quot; with the number 3. This is obviously wrong.

Note that the phase already handles IR for:
```
switch (v) {
1:
2: BB;  break;

default: break;
}
```

We are smart enough to not replace &quot;v&quot; inside BB with either &quot;1&quot; or &quot;2&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302287</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-27 14:14:56 -0700</bug_when>
    <thetext>Wow, that&apos;s glorious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302288</commentid>
    <comment_count>2</comment_count>
      <attachid>308444</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 14:16:36 -0700</bug_when>
    <thetext>Created attachment 308444
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302291</commentid>
    <comment_count>3</comment_count>
      <attachid>308444</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 14:18:11 -0700</bug_when>
    <thetext>Comment on attachment 308444
patch

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

&gt; Source/JavaScriptCore/b3/B3FoldPathConstants.cpp:109
&gt; +                if (switchValue-&gt;hasFallThrough())
&gt; +                    targetUses.add(switchValue-&gt;fallThrough(block), 0).iterator-&gt;value++;

If we wanted to, we could be a bit niftier here:
We could check if any target is zero, and if so, we could check if targetUses(fall through) === 0, and if both are true, we could say that in the default block, the switch value is nonzero (obviously only if default block has a single predecessor). I&apos;m not sure if it&apos;s worth bothering though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302292</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-27 14:18:40 -0700</bug_when>
    <thetext>Attachment 308444 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:10784:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10785:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10786:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10786:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10787:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10787:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10788:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10788:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10789:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10789:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 10 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302293</commentid>
    <comment_count>5</comment_count>
      <attachid>308444</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-27 14:20:33 -0700</bug_when>
    <thetext>Comment on attachment 308444
patch

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

R=me without that if.

&gt;&gt; Source/JavaScriptCore/b3/B3FoldPathConstants.cpp:109
&gt;&gt; +                    targetUses.add(switchValue-&gt;fallThrough(block), 0).iterator-&gt;value++;
&gt; 
&gt; If we wanted to, we could be a bit niftier here:
&gt; We could check if any target is zero, and if so, we could check if targetUses(fall through) === 0, and if both are true, we could say that in the default block, the switch value is nonzero (obviously only if default block has a single predecessor). I&apos;m not sure if it&apos;s worth bothering though.

VALIDATE(value-&gt;as&lt;SwitchValue&gt;()-&gt;hasFallThrough(valueOwner.get(value)), (&quot;At &quot;, *value));

Therefore, you don&apos;t need to check if hasFallThrough().  It must hasFallThrough().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302302</commentid>
    <comment_count>6</comment_count>
      <attachid>308448</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 14:33:41 -0700</bug_when>
    <thetext>Created attachment 308448
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302303</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-27 14:36:14 -0700</bug_when>
    <thetext>Attachment 308448 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:10784:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10785:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10786:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10786:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10787:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10787:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10788:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10788:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10789:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:10789:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 10 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302403</commentid>
    <comment_count>8</comment_count>
      <attachid>308448</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-27 16:52:45 -0700</bug_when>
    <thetext>Comment on attachment 308448
patch for landing

Clearing flags on attachment: 308448

Committed r215908: &lt;http://trac.webkit.org/changeset/215908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302404</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-27 16:52:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308444</attachid>
            <date>2017-04-27 14:16:36 -0700</date>
            <delta_ts>2017-04-27 14:33:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>7989</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE1ODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE3LTA0LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEIzOjpGb2xkUGF0aENvbnN0YW50cyBkb2VzIG5vdCBjb25zaWRlciB0aGUgZmFsbCB0aHJvdWdo
IGNhc2UgZm9yIFN3aXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxMzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgZm9sZFBhdGhDb25zdGFudHMgd2FzIG5vdCB0YWtpbmcgaW50byBhY2NvdW50IGEg
U3dpdGNoJ3MgZGVmYXVsdAorICAgICAgICBjYXNlIHdoZW4gaXQgdHJpZWQgdG8gY29uc3RhbnQg
cHJvcGFnYXRlIHRoZSBzd2l0Y2gncyBvcGVyYW5kIHZhbHVlLgorICAgICAgICBlLmcsIHdlIGlu
Y29ycmVjdGx5IHRyYW5zZm9ybWVkIHRoaXMgY29kZToKKyAgICAgICAgCisgICAgICAgIGBgYAor
ICAgICAgICB4ID0gYXJndW1lbnRHUFIwOworICAgICAgICBzd2l0Y2ggKHgpIHsKKyAgICAgICAg
Y2FzZSAxMDogcmV0dXJuIDIwOworICAgICAgICAKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBk
ZWZhdWx0OiByZXR1cm4geCA9PSAwOworICAgICAgICB9CisgICAgICAgIGBgYAorICAgICAgICAK
KyAgICAgICAgaW50bzoKKyAgICAgICAgYGBgCisgICAgICAgIHggPSBhcmd1bWVudEdQUjA7Cisg
ICAgICAgIHN3aXRjaCAoeCkgeworICAgICAgICBjYXNlIDEwOiByZXR1cm4gMjA7CisgICAgICAg
IAorICAgICAgICBjYXNlIDA6CisgICAgICAgIGRlZmF1bHQ6IHJldHVybiAxOworICAgICAgICB9
CisgICAgICAgIGBgYAorICAgICAgICAKKyAgICAgICAgQmVjYXVzZSB3ZSBkaWRuJ3QgdGFrZSBp
bnRvIGFjY291bnQgdGhlIGRlZmF1bHQgY2FzZSwgd2UgaW5jb3JyZWN0bHkKKyAgICAgICAgb3B0
aW1pemVkIHRoZSBjb2RlIGFzIGlmIGNhc2UgMCdzIGJsb2NrIHdhcyBvbmx5IHJlYWNoYWJsZSBp
ZiB4IGlzCisgICAgICAgIGVxdWFsIHRvIHplcm8uIFRoaXMgaXMgb2J2aW91c2x5IG5vdCB0cnVl
LCBzaW5jZSBpdCdzIHRoZSBzYW1lIGJsb2NrCisgICAgICAgIGFzIHRoZSBkZWZhdWx0IGNhc2Uu
CisgICAgICAgIAorICAgICAgICBUaGlzIGZpeCBlbnN1cmVzIHRoYXQgd2UgY2FuIHJ1biB0aGUg
V2ViQXNzZW1ibHkgVGFua3MgZGVtbyBldmVuIHdoZW4KKyAgICAgICAgd2Ugc2V0IHdlYkFzc2Vt
Ymx5QkJRT3B0aW1pemF0aW9uTGV2ZWw9Mi4KKworICAgICAgICAqIGIzL0IzRm9sZFBhdGhDb25z
dGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzU3dpdGNoVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpCMzo6U3dpdGNoVmFsdWU6OmZhbGxUaHJvdWdoKToKKyAgICAgICAgKEpTQzo6QjM6OlN3aXRj
aFZhbHVlOjpyZW1vdmVDYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1N3aXRjaFZhbHVl
Lmg6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDYWxs
RnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN3aXRj
aFNhbWVDYXNlQXNEZWZhdWx0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RXYXNtQm91bmRzQ2hl
Y2spOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxNy0wNC0yNyAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN0b3JlIHNvbWUgY2FjaGluZyBmdW5j
dGlvbmFsaXR5IHRoYXQgZ290IGFjY2lkZW50YWxseSByZW1vdmVkIHdoZW4gZG9pbmcgV2FzbSBQ
SUMgcGF0Y2hlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25z
dGFudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQ
YXRoQ29uc3RhbnRzLmNwcAkocmV2aXNpb24gMjE1ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTEg
KzEwMCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlOjpjb25zdGFu
dChibG9jay0+c3VjY2Vzc29yQmxvY2soMSksIDApKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgU3dpdGNoOiB7CisgICAgICAgICAgICAgICAgU3dpdGNoVmFsdWUq
IHN3aXRjaFZhbHVlID0gYnJhbmNoLT5hczxTd2l0Y2hWYWx1ZT4oKTsKICAgICAgICAgICAgICAg
ICBIYXNoTWFwPEJhc2ljQmxvY2sqLCB1bnNpZ25lZD4gdGFyZ2V0VXNlczsKLSAgICAgICAgICAg
ICAgICBmb3IgKGNvbnN0IFN3aXRjaENhc2UmIHN3aXRjaENhc2UgOiBicmFuY2gtPmFzPFN3aXRj
aFZhbHVlPigpLT5jYXNlcyhibG9jaykpCisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBTd2l0
Y2hDYXNlJiBzd2l0Y2hDYXNlIDogc3dpdGNoVmFsdWUtPmNhc2VzKGJsb2NrKSkKICAgICAgICAg
ICAgICAgICAgICAgdGFyZ2V0VXNlcy5hZGQoc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpLCAwKS5p
dGVyYXRvci0+dmFsdWUrKzsKIAotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgU3dpdGNoQ2Fz
ZSYgc3dpdGNoQ2FzZSA6IGJyYW5jaC0+YXM8U3dpdGNoVmFsdWU+KCktPmNhc2VzKGJsb2NrKSkg
eworICAgICAgICAgICAgICAgIGlmIChzd2l0Y2hWYWx1ZS0+aGFzRmFsbFRocm91Z2goKSkKKyAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0VXNlcy5hZGQoc3dpdGNoVmFsdWUtPmZhbGxUaHJvdWdo
KGJsb2NrKSwgMCkuaXRlcmF0b3ItPnZhbHVlKys7CisKKyAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IFN3aXRjaENhc2UmIHN3aXRjaENhc2UgOiBzd2l0Y2hWYWx1ZS0+Y2FzZXMoYmxvY2spKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRVc2VzLmZpbmQoc3dpdGNoQ2FzZS50YXJn
ZXRCbG9jaygpKS0+dmFsdWUgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuY3BwCShy
ZXZpc2lvbiAyMTU4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE1ICszNywxMCBAQCBTd2l0Y2hWYWx1ZTo6flN3
aXRjaFZhbHVlKCkKIHsKIH0KIAotU3dpdGNoQ2FzZSBTd2l0Y2hWYWx1ZTo6cmVtb3ZlQ2FzZShC
YXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgaW5kZXgpCitCYXNpY0Jsb2NrKiBTd2l0Y2hWYWx1
ZTo6ZmFsbFRocm91Z2goY29uc3QgQmFzaWNCbG9jayogb3duZXIpCiB7Ci0gICAgRnJlcXVlbnRl
ZEJsb2NrIHJlc3VsdEJsb2NrID0gYmxvY2stPnN1Y2Nlc3NvcihpbmRleCk7Ci0gICAgaW50NjRf
dCByZXN1bHRWYWx1ZSA9IG1fdmFsdWVzW2luZGV4XTsKLSAgICBibG9jay0+c3VjY2Vzc29yKGlu
ZGV4KSA9IGJsb2NrLT5zdWNjZXNzb3JzKCkubGFzdCgpOwotICAgIGJsb2NrLT5zdWNjZXNzb3Jz
KCkucmVtb3ZlTGFzdCgpOwotICAgIG1fdmFsdWVzW2luZGV4XSA9IG1fdmFsdWVzLmxhc3QoKTsK
LSAgICBtX3ZhbHVlcy5yZW1vdmVMYXN0KCk7Ci0gICAgcmV0dXJuIFN3aXRjaENhc2UocmVzdWx0
VmFsdWUsIHJlc3VsdEJsb2NrKTsKKyAgICBBU1NFUlQoaGFzRmFsbFRocm91Z2goKSk7CisgICAg
cmV0dXJuIG93bmVyLT5zdWNjZXNzb3Iob3duZXItPm51bVN1Y2Nlc3NvcnMoKSAtIDEpLmJsb2Nr
KCk7CiB9CiAKIGJvb2wgU3dpdGNoVmFsdWU6Omhhc0ZhbGxUaHJvdWdoKGNvbnN0IEJhc2ljQmxv
Y2sqIGJsb2NrKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNo
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hW
YWx1ZS5oCShyZXZpc2lvbiAyMTU4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
d2l0Y2hWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNCArNTAsMTEgQEAgcHVibGljOgog
ICAgIENhc2VDb2xsZWN0aW9uIGNhc2VzKGNvbnN0IEJhc2ljQmxvY2sqIG93bmVyKSBjb25zdCB7
IHJldHVybiBDYXNlQ29sbGVjdGlvbih0aGlzLCBvd25lcik7IH0KICAgICBDYXNlQ29sbGVjdGlv
biBjYXNlcygpIGNvbnN0IHsgcmV0dXJuIGNhc2VzKG93bmVyKTsgfQogCi0gICAgLy8gVGhpcyBy
ZW1vdmVzIHRoZSBjYXNlIGFuZCByZW9yZGVycyB0aGluZ3MgYSBiaXQuIElmIHlvdSdyZSBpdGVy
YXRpbmcgdGhlIGNhc2VzIGZyb20gMCB0byBOLAotICAgIC8vIHRoZW4geW91IGNhbiBrZWVwIGl0
ZXJhdGluZyBhZnRlciB0aGlzIHNvIGxvbmcgYXMgeW91IHJldmlzaXQgdGhpcyBzYW1lIGluZGV4
ICh3aGljaCB3aWxsIG5vdwotICAgIC8vIGNvbnRhaW4gc29tZSBvdGhlciBjYXNlIHZhbHVlKS4g
VGhpcyByZW1vdmVzIHRoZSBjYXNlIHRoYXQgd2FzIHJlbW92ZWQuCi0gICAgU3dpdGNoQ2FzZSBy
ZW1vdmVDYXNlKEJhc2ljQmxvY2sqLCB1bnNpZ25lZCBpbmRleCk7Ci0KICAgICBib29sIGhhc0Zh
bGxUaHJvdWdoKGNvbnN0IEJhc2ljQmxvY2sqKSBjb25zdDsKICAgICBib29sIGhhc0ZhbGxUaHJv
dWdoKCkgY29uc3Q7CiAKKyAgICBCYXNpY0Jsb2NrKiBmYWxsVGhyb3VnaChjb25zdCBCYXNpY0Js
b2NrKiBvd25lcik7CisKICAgICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQg
aW4gYW55IG9yZGVyLgogICAgIHZvaWQgc2V0RmFsbFRocm91Z2goQmFzaWNCbG9jayosIGNvbnN0
IEZyZXF1ZW50ZWRCbG9jayYpOwogICAgIHZvaWQgYXBwZW5kQ2FzZShCYXNpY0Jsb2NrKiwgY29u
c3QgU3dpdGNoQ2FzZSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJl
dmlzaW9uIDIxNTg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDI5MSw2ICsxMDI5MSw5IEBAIGludCBmdW5jdGlvbldpdGhIZWxs
YUFyZ3VtZW50cyhpbnQgYSwgaW4KIAogdm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJn
dW1lbnRzKCkKIHsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTM5MgorICAgIHJldHVybjsKKwogICAgIFByb2NlZHVyZSBwcm9jOwogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTEwNzQ4LDYgKzEwNzUx
LDQ0IEBAIHZvaWQgdGVzdFN3aXRjaCh1bnNpZ25lZCBkZWdyZWUsIHVuc2lnbmUKICAgICBDSEVD
SyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBkZWdyZWUgKiBnYXAgKyAxLCA0MiwgMTEpKTsKIH0K
IAordm9pZCB0ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBCYXNp
Y0Jsb2NrKiByZXR1cm4xMCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByZXR1cm4xMC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByZXR1cm4xMC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEwKSk7
CisKKyAgICBWYWx1ZSogc3dpdGNoT3BlcmFuZCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgIEJh
c2ljQmxvY2sqIGNhc2VBbmREZWZhdWx0ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGNhc2VBbmRE
ZWZhdWx0LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIAorICAgICAgICAgICAgY2FzZUFuZERlZmF1bHQtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHN3
aXRjaE9wZXJhbmQsIGNhc2VBbmREZWZhdWx0LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKSk7CisKKyAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290
LT5hcHBlbmROZXc8U3dpdGNoVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzd2l0Y2hPcGVyYW5kKTsK
KworICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMTAwLCBGcmVxdWVudGVk
QmxvY2socmV0dXJuMTApKSk7CisKKyAgICAvLyBCZWNhdXNlIGNhc2VBbmREZWZhdWx0IGlzIHJl
YWNoZWQgYm90aCBhcyBkZWZhdWx0IGNhc2UsIGFuZCB3aGVuIGl0J3MgMCwKKyAgICAvLyB3ZSBz
aG91bGQgbm90IGluY29ycmVjdGx5IG9wdGltaXplIGFuZCBhc3N1bWUgdGhhdCBzd2l0Y2hPcGVy
YW5kPT0wLgorICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMCwgRnJlcXVl
bnRlZEJsb2NrKGNhc2VBbmREZWZhdWx0KSkpOworICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhy
b3VnaChGcmVxdWVudGVkQmxvY2soY2FzZUFuZERlZmF1bHQpKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAx
MDApID09IDEwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDApID09IDEpOwor
ICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMSkgPT0gMCk7CisgICAgQ0hFQ0soaW52
b2tlPGludDMyX3Q+KCpjb2RlLCAyKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4o
KmNvZGUsIDk5KSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDB4YmFh
ZGJlZWYpID09IDApOworfQorCiB2b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBkZWdy
ZWUsIHVuc2lnbmVkIGdhcCA9IDEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xNTE2Niw2
ICsxNTIwNyw5IEBAIHZvaWQgdGVzdERlcGVuZDY0KCkKIAogdm9pZCB0ZXN0V2FzbUJvdW5kc0No
ZWNrKHVuc2lnbmVkIG9mZnNldCkKIHsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM5MgorICAgIHJldHVybjsKKwogICAgIFByb2NlZHVy
ZSBwcm9jOwogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CiAgICAg
cHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOwpAQCAtMTYzMTcsNiArMTYzNjEsOCBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RTd2l0Y2goMTAwLCAxKSk7CiAgICAg
UlVOKHRlc3RTd2l0Y2goMTAwLCAxMDApKTsKIAorICAgIFJVTih0ZXN0U3dpdGNoU2FtZUNhc2VB
c0RlZmF1bHQoKSk7CisKICAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDAsIDEpKTsKICAgICBS
VU4odGVzdFN3aXRjaENoaWxsRGl2KDEsIDEpKTsKICAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2
KDIsIDEpKTsK
</data>
<flag name="review"
          id="329607"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308448</attachid>
            <date>2017-04-27 14:33:41 -0700</date>
            <delta_ts>2017-04-27 16:52:45 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>8032</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE1ODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE3LTA0LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEIzOjpGb2xkUGF0aENvbnN0YW50cyBkb2VzIG5vdCBjb25zaWRlciB0aGUgZmFsbCB0aHJvdWdo
IGNhc2UgZm9yIFN3aXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxMzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAg
ICAgICAgZm9sZFBhdGhDb25zdGFudHMgd2FzIG5vdCB0YWtpbmcgaW50byBhY2NvdW50IGEgU3dp
dGNoJ3MgZGVmYXVsdAorICAgICAgICBjYXNlIHdoZW4gaXQgdHJpZWQgdG8gY29uc3RhbnQgcHJv
cGFnYXRlIHRoZSBzd2l0Y2gncyBvcGVyYW5kIHZhbHVlLgorICAgICAgICBlLmcsIHdlIGluY29y
cmVjdGx5IHRyYW5zZm9ybWVkIHRoaXMgY29kZToKKyAgICAgICAgCisgICAgICAgIGBgYAorICAg
ICAgICB4ID0gYXJndW1lbnRHUFIwOworICAgICAgICBzd2l0Y2ggKHgpIHsKKyAgICAgICAgY2Fz
ZSAxMDogcmV0dXJuIDIwOworICAgICAgICAKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBkZWZh
dWx0OiByZXR1cm4geCA9PSAwOworICAgICAgICB9CisgICAgICAgIGBgYAorICAgICAgICAKKyAg
ICAgICAgaW50bzoKKyAgICAgICAgYGBgCisgICAgICAgIHggPSBhcmd1bWVudEdQUjA7CisgICAg
ICAgIHN3aXRjaCAoeCkgeworICAgICAgICBjYXNlIDEwOiByZXR1cm4gMjA7CisgICAgICAgIAor
ICAgICAgICBjYXNlIDA6CisgICAgICAgIGRlZmF1bHQ6IHJldHVybiAxOworICAgICAgICB9Cisg
ICAgICAgIGBgYAorICAgICAgICAKKyAgICAgICAgQmVjYXVzZSB3ZSBkaWRuJ3QgdGFrZSBpbnRv
IGFjY291bnQgdGhlIGRlZmF1bHQgY2FzZSwgd2UgaW5jb3JyZWN0bHkKKyAgICAgICAgb3B0aW1p
emVkIHRoZSBjb2RlIGFzIGlmIGNhc2UgMCdzIGJsb2NrIHdhcyBvbmx5IHJlYWNoYWJsZSBpZiB4
IGlzCisgICAgICAgIGVxdWFsIHRvIHplcm8uIFRoaXMgaXMgb2J2aW91c2x5IG5vdCB0cnVlLCBz
aW5jZSBpdCdzIHRoZSBzYW1lIGJsb2NrCisgICAgICAgIGFzIHRoZSBkZWZhdWx0IGNhc2UuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGZpeCBlbnN1cmVzIHRoYXQgd2UgY2FuIHJ1biB0aGUgV2Vi
QXNzZW1ibHkgVGFua3MgZGVtbyBldmVuIHdoZW4KKyAgICAgICAgd2Ugc2V0IHdlYkFzc2VtYmx5
QkJRT3B0aW1pemF0aW9uTGV2ZWw9Mi4KKworICAgICAgICAqIGIzL0IzRm9sZFBhdGhDb25zdGFu
dHMuY3BwOgorICAgICAgICAqIGIzL0IzU3dpdGNoVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6U3dpdGNoVmFsdWU6OmZhbGxUaHJvdWdoKToKKyAgICAgICAgKEpTQzo6QjM6OlN3aXRjaFZh
bHVlOjpyZW1vdmVDYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1N3aXRjaFZhbHVlLmg6
CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDYWxsRnVu
Y3Rpb25XaXRoSGVsbGFBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN3aXRjaFNh
bWVDYXNlQXNEZWZhdWx0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RXYXNtQm91bmRzQ2hlY2sp
OgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxNy0wNC0yNyAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN0b3JlIHNvbWUgY2FjaGluZyBmdW5jdGlv
bmFsaXR5IHRoYXQgZ290IGFjY2lkZW50YWxseSByZW1vdmVkIHdoZW4gZG9pbmcgV2FzbSBQSUMg
cGF0Y2hlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRo
Q29uc3RhbnRzLmNwcAkocmV2aXNpb24gMjE1ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTEgKzEw
MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlOjpjb25zdGFudChi
bG9jay0+c3VjY2Vzc29yQmxvY2soMSksIDApKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgU3dpdGNoOiB7CisgICAgICAgICAgICAgICAgU3dpdGNoVmFsdWUqIHN3
aXRjaFZhbHVlID0gYnJhbmNoLT5hczxTd2l0Y2hWYWx1ZT4oKTsKKwogICAgICAgICAgICAgICAg
IEhhc2hNYXA8QmFzaWNCbG9jayosIHVuc2lnbmVkPiB0YXJnZXRVc2VzOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgU3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSA6IGJyYW5jaC0+YXM8U3dpdGNo
VmFsdWU+KCktPmNhc2VzKGJsb2NrKSkKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFN3aXRj
aENhc2UmIHN3aXRjaENhc2UgOiBzd2l0Y2hWYWx1ZS0+Y2FzZXMoYmxvY2spKQogICAgICAgICAg
ICAgICAgICAgICB0YXJnZXRVc2VzLmFkZChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCksIDApLml0
ZXJhdG9yLT52YWx1ZSsrOworICAgICAgICAgICAgICAgIHRhcmdldFVzZXMuYWRkKHN3aXRjaFZh
bHVlLT5mYWxsVGhyb3VnaChibG9jayksIDApLml0ZXJhdG9yLT52YWx1ZSsrOwogCi0gICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlIDogYnJhbmNoLT5hczxT
d2l0Y2hWYWx1ZT4oKS0+Y2FzZXMoYmxvY2spKSB7CisgICAgICAgICAgICAgICAgZm9yIChjb25z
dCBTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlIDogc3dpdGNoVmFsdWUtPmNhc2VzKGJsb2NrKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VXNlcy5maW5kKHN3aXRjaENhc2UudGFyZ2V0
QmxvY2soKSktPnZhbHVlICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N3aXRjaFZhbHVlLmNwcAkocmV2
aXNpb24gMjE1ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTIgQEAgU3dpdGNoVmFsdWU6On5Td2l0
Y2hWYWx1ZSgpCiB7CiB9CiAKLVN3aXRjaENhc2UgU3dpdGNoVmFsdWU6OnJlbW92ZUNhc2UoQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGluZGV4KQorQmFzaWNCbG9jayogU3dpdGNoVmFsdWU6
OmZhbGxUaHJvdWdoKGNvbnN0IEJhc2ljQmxvY2sqIG93bmVyKQogewotICAgIEZyZXF1ZW50ZWRC
bG9jayByZXN1bHRCbG9jayA9IGJsb2NrLT5zdWNjZXNzb3IoaW5kZXgpOwotICAgIGludDY0X3Qg
cmVzdWx0VmFsdWUgPSBtX3ZhbHVlc1tpbmRleF07Ci0gICAgYmxvY2stPnN1Y2Nlc3NvcihpbmRl
eCkgPSBibG9jay0+c3VjY2Vzc29ycygpLmxhc3QoKTsKLSAgICBibG9jay0+c3VjY2Vzc29ycygp
LnJlbW92ZUxhc3QoKTsKLSAgICBtX3ZhbHVlc1tpbmRleF0gPSBtX3ZhbHVlcy5sYXN0KCk7Ci0g
ICAgbV92YWx1ZXMucmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBTd2l0Y2hDYXNlKHJlc3VsdFZh
bHVlLCByZXN1bHRCbG9jayk7CisgICAgQVNTRVJUKGhhc0ZhbGxUaHJvdWdoKCkpOworICAgIEJh
c2ljQmxvY2sqIGZhbGxUaHJvdWdoID0gb3duZXItPnN1Y2Nlc3Nvcihvd25lci0+bnVtU3VjY2Vz
c29ycygpIC0gMSkuYmxvY2soKTsKKyAgICBBU1NFUlQoZmFsbFRocm91Z2ggPT0gb3duZXItPmZh
bGxUaHJvdWdoKCkuYmxvY2soKSk7CisgICAgcmV0dXJuIGZhbGxUaHJvdWdoOwogfQogCiBib29s
IFN3aXRjaFZhbHVlOjpoYXNGYWxsVGhyb3VnaChjb25zdCBCYXNpY0Jsb2NrKiBibG9jaykgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N3aXRjaFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuaAkocmV2aXNp
b24gMjE1ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsMTQgKzUwLDExIEBAIHB1YmxpYzoKICAgICBDYXNlQ29sbGVj
dGlvbiBjYXNlcyhjb25zdCBCYXNpY0Jsb2NrKiBvd25lcikgY29uc3QgeyByZXR1cm4gQ2FzZUNv
bGxlY3Rpb24odGhpcywgb3duZXIpOyB9CiAgICAgQ2FzZUNvbGxlY3Rpb24gY2FzZXMoKSBjb25z
dCB7IHJldHVybiBjYXNlcyhvd25lcik7IH0KIAotICAgIC8vIFRoaXMgcmVtb3ZlcyB0aGUgY2Fz
ZSBhbmQgcmVvcmRlcnMgdGhpbmdzIGEgYml0LiBJZiB5b3UncmUgaXRlcmF0aW5nIHRoZSBjYXNl
cyBmcm9tIDAgdG8gTiwKLSAgICAvLyB0aGVuIHlvdSBjYW4ga2VlcCBpdGVyYXRpbmcgYWZ0ZXIg
dGhpcyBzbyBsb25nIGFzIHlvdSByZXZpc2l0IHRoaXMgc2FtZSBpbmRleCAod2hpY2ggd2lsbCBu
b3cKLSAgICAvLyBjb250YWluIHNvbWUgb3RoZXIgY2FzZSB2YWx1ZSkuIFRoaXMgcmVtb3ZlcyB0
aGUgY2FzZSB0aGF0IHdhcyByZW1vdmVkLgotICAgIFN3aXRjaENhc2UgcmVtb3ZlQ2FzZShCYXNp
Y0Jsb2NrKiwgdW5zaWduZWQgaW5kZXgpOwotCiAgICAgYm9vbCBoYXNGYWxsVGhyb3VnaChjb25z
dCBCYXNpY0Jsb2NrKikgY29uc3Q7CiAgICAgYm9vbCBoYXNGYWxsVGhyb3VnaCgpIGNvbnN0Owog
CisgICAgQmFzaWNCbG9jayogZmFsbFRocm91Z2goY29uc3QgQmFzaWNCbG9jayogb3duZXIpOwor
CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkIGluIGFueSBvcmRlci4K
ICAgICB2b2lkIHNldEZhbGxUaHJvdWdoKEJhc2ljQmxvY2sqLCBjb25zdCBGcmVxdWVudGVkQmxv
Y2smKTsKICAgICB2b2lkIGFwcGVuZENhc2UoQmFzaWNCbG9jayosIGNvbnN0IFN3aXRjaENhc2Um
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTU4ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyOTEsNiArMTAyOTEsOSBAQCBpbnQgZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMoaW50
IGEsIGluCiAKIHZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50cygpCiB7Cisg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEz
OTIKKyAgICByZXR1cm47CisKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwogCkBAIC0xMDc0OCw2ICsxMDc1MSw0NCBAQCB2b2lkIHRl
c3RTd2l0Y2godW5zaWduZWQgZGVncmVlLCB1bnNpZ25lCiAgICAgQ0hFQ0soIWludm9rZTxpbnQz
Ml90PigqY29kZSwgZGVncmVlICogZ2FwICsgMSwgNDIsIDExKSk7CiB9CiAKK3ZvaWQgdGVzdFN3
aXRjaFNhbWVDYXNlQXNEZWZhdWx0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQmFzaWNCbG9jayogcmV0dXJu
MTAgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcmV0dXJuMTAtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcmV0dXJuMTAtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOworCisgICAgVmFsdWUq
IHN3aXRjaE9wZXJhbmQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisKKyAgICBCYXNpY0Jsb2NrKiBjYXNl
QW5kRGVmYXVsdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBjYXNlQW5kRGVmYXVsdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIGNhc2VBbmREZWZhdWx0LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBzd2l0Y2hPcGVyYW5kLCBj
YXNlQW5kRGVmYXVsdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSkpOworCisgICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFN3
aXRjaFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3dpdGNoT3BlcmFuZCk7CisKKyAgICBzd2l0Y2hW
YWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKDEwMCwgRnJlcXVlbnRlZEJsb2NrKHJldHVybjEw
KSkpOworCisgICAgLy8gQmVjYXVzZSBjYXNlQW5kRGVmYXVsdCBpcyByZWFjaGVkIGJvdGggYXMg
ZGVmYXVsdCBjYXNlLCBhbmQgd2hlbiBpdCdzIDAsCisgICAgLy8gd2Ugc2hvdWxkIG5vdCBpbmNv
cnJlY3RseSBvcHRpbWl6ZSBhbmQgYXNzdW1lIHRoYXQgc3dpdGNoT3BlcmFuZD09MC4KKyAgICBz
d2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKDAsIEZyZXF1ZW50ZWRCbG9jayhjYXNl
QW5kRGVmYXVsdCkpKTsKKyAgICBzd2l0Y2hWYWx1ZS0+c2V0RmFsbFRocm91Z2goRnJlcXVlbnRl
ZEJsb2NrKGNhc2VBbmREZWZhdWx0KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKworICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMTAwKSA9PSAxMCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAwKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZv
a2U8aW50MzJfdD4oKmNvZGUsIDEpID09IDApOworICAgIENIRUNLKGludm9rZTxpbnQzMl90Pigq
Y29kZSwgMikgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCA5OSkgPT0g
MCk7CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAweGJhYWRiZWVmKSA9PSAwKTsK
K30KKwogdm9pZCB0ZXN0U3dpdGNoQ2hpbGxEaXYodW5zaWduZWQgZGVncmVlLCB1bnNpZ25lZCBn
YXAgPSAxKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTUxNjYsNiArMTUyMDcsOSBAQCB2
b2lkIHRlc3REZXBlbmQ2NCgpCiAKIHZvaWQgdGVzdFdhc21Cb3VuZHNDaGVjayh1bnNpZ25lZCBv
ZmZzZXQpCiB7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzEzOTIKKyAgICByZXR1cm47CisKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBH
UFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwogICAgIHByb2MucGluUmVnaXN0
ZXIocGlubmVkKTsKQEAgLTE2MzE3LDYgKzE2MzYxLDggQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogICAgIFJVTih0ZXN0U3dpdGNoKDEwMCwgMSkpOwogICAgIFJVTih0ZXN0U3dpdGNo
KDEwMCwgMTAwKSk7CiAKKyAgICBSVU4odGVzdFN3aXRjaFNhbWVDYXNlQXNEZWZhdWx0KCkpOwor
CiAgICAgUlVOKHRlc3RTd2l0Y2hDaGlsbERpdigwLCAxKSk7CiAgICAgUlVOKHRlc3RTd2l0Y2hD
aGlsbERpdigxLCAxKSk7CiAgICAgUlVOKHRlc3RTd2l0Y2hDaGlsbERpdigyLCAxKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>