<?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>153213</bug_id>
          
          <creation_ts>2016-01-18 16:31:20 -0800</creation_ts>
          <short_desc>Fix Air shuffling assertions</short_desc>
          <delta_ts>2016-01-19 10:36:17 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156478</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-18 16:31:20 -0800</bug_when>
    <thetext>Running JSC tests in debug shows a lot of assertions in shuffling.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156479</commentid>
    <comment_count>1</comment_count>
      <attachid>269243</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-18 16:31:55 -0800</bug_when>
    <thetext>Created attachment 269243
fixed two bugs so far</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156481</commentid>
    <comment_count>2</comment_count>
      <attachid>269244</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-18 16:49:24 -0800</bug_when>
    <thetext>Created attachment 269244
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156482</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-18 16:50:37 -0800</bug_when>
    <thetext>Attachment 269244 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/testair.cpp:716:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/testair.cpp:717:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/testair.cpp:718:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/testair.cpp:719:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/testair.cpp:720:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/testair.cpp:721:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
Total errors found: 6 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>1156527</commentid>
    <comment_count>4</comment_count>
      <attachid>269244</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-18 19:37:02 -0800</bug_when>
    <thetext>Comment on attachment 269244
the patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:-736
&gt; -        ASSERT(-128 &lt;= imm.m_value &amp;&amp; imm.m_value &lt; 128);

Why get rid of this assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156538</commentid>
    <comment_count>5</comment_count>
      <attachid>269244</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-18 20:43:38 -0800</bug_when>
    <thetext>Comment on attachment 269244
the patch

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:-736
&gt;&gt; -        ASSERT(-128 &lt;= imm.m_value &amp;&amp; imm.m_value &lt; 128);
&gt; 
&gt; Why get rid of this assertion?

It was firing. 

Air sometimes does Store8 with a 8-bit immediate that isn&apos;t in this range. For example &quot;250&quot;. It obviously makes sense as an immediate for Store8, but it fails this assertion. 

I don&apos;t think it makes sense to teach Air to turn immediately passed to Store8 into the form that would placate this assertion. I cannot imagine what bug this assertion could ever catch. But I can imagine that I&apos;d have to significantly change how Air handles constants to be able to preserve this assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156560</commentid>
    <comment_count>6</comment_count>
      <attachid>269244</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-19 00:32:06 -0800</bug_when>
    <thetext>Comment on attachment 269244
the patch

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

&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:-736
&gt;&gt;&gt; -        ASSERT(-128 &lt;= imm.m_value &amp;&amp; imm.m_value &lt; 128);
&gt;&gt; 
&gt;&gt; Why get rid of this assertion?
&gt; 
&gt; It was firing. 
&gt; 
&gt; Air sometimes does Store8 with a 8-bit immediate that isn&apos;t in this range. For example &quot;250&quot;. It obviously makes sense as an immediate for Store8, but it fails this assertion. 
&gt; 
&gt; I don&apos;t think it makes sense to teach Air to turn immediately passed to Store8 into the form that would placate this assertion. I cannot imagine what bug this assertion could ever catch. But I can imagine that I&apos;d have to significantly change how Air handles constants to be able to preserve this assertion.

You could assert that the upper 24 bits are zero if passed in a number with absolute value
&gt;= 128

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:-737
&gt; -        m_assembler.movb_i8m(imm.m_value, address.offset, address.base);

I agree though that this probably isn&apos;t finding any bugs in our code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156605</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-19 07:42:34 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 269244 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=269244&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:-736
&gt; &gt;&gt;&gt; -        ASSERT(-128 &lt;= imm.m_value &amp;&amp; imm.m_value &lt; 128);
&gt; &gt;&gt; 
&gt; &gt;&gt; Why get rid of this assertion?
&gt; &gt; 
&gt; &gt; It was firing. 
&gt; &gt; 
&gt; &gt; Air sometimes does Store8 with a 8-bit immediate that isn&apos;t in this range. For example &quot;250&quot;. It obviously makes sense as an immediate for Store8, but it fails this assertion. 
&gt; &gt; 
&gt; &gt; I don&apos;t think it makes sense to teach Air to turn immediately passed to Store8 into the form that would placate this assertion. I cannot imagine what bug this assertion could ever catch. But I can imagine that I&apos;d have to significantly change how Air handles constants to be able to preserve this assertion.
&gt; 
&gt; You could assert that the upper 24 bits are zero if passed in a number with
&gt; absolute value
&gt; &gt;= 128

Imagine I have a Store8 like this:

Move 0x1234, %tmp
...
Store8 %tmp, (%ptr)

Then let&apos;s say that the spiller spills:

Move 0x123, (stack)
...
Move (stack), %tmp&apos;
Store8 %tmp&apos;, (%ptr)

Then we want the rematerialization to realize that we&apos;re talking about an immediate and constant-propagate through the spill and get this:

Store8 $1234, (%ptr)

Why did the rematerialization know that it could do this?  Other than the forward flow to prove the value of %tmp&apos;, it knew that a &quot;Arg::imm&quot; is acceptable to Store8 and on x86 Arg::imm accepts any 32-bit immediate. So, the remat code isn&apos;t going to the special case for Store8 and clip the immediate just to placate Storr8&apos;s assertion. We won&apos;t do that because the whole point of operands in Air is that you can reason about what is valid just based on high-level queries (does arg#0 of store8 admit an immediate and does an immediate admit 0x1234). 

To make any version of this assertion work, we&apos;d have to teach Air that x86 has an additional kind of immediate, Arg::imm8. Then we would teach Store8 that it doesn&apos;t really admit imm but imm8. We&apos;d have to teach all other instructions that admit imm that this implies that they also admit imm8. We&apos;d have to teach all phases that deal with immediates that there is a new immediate. 

That&apos;s a huge nightmare. The lesser evil is to just say that Store8 admits a 32-bit immediate just like the rest of the instructions do, and then make sure that Store8 ignores the upper 24 bits of the immediate. 

&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:-737
&gt; &gt; -        m_assembler.movb_i8m(imm.m_value, address.offset, address.base);
&gt; 
&gt; I agree though that this probably isn&apos;t finding any bugs in our code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156637</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-19 10:36:17 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/195296

Follow-up fix landed in http://trac.webkit.org/changeset/195297</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269243</attachid>
            <date>2016-01-18 16:31:55 -0800</date>
            <delta_ts>2016-01-18 16:49:24 -0800</delta_ts>
            <desc>fixed two bugs so far</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>6032</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUu
Y3BwCShyZXZpc2lvbiAxOTUyMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckVtaXRTaHVmZmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTIgQEAgdm9pZCBT
aHVmZmxlUGFpcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogVmVjdG9yPEluc3Q+IGVtaXRTaHVm
ZmxlKAogICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8QXJnLCAyPiBz
Y3JhdGNoZXMsIEFyZzo6VHlwZSB0eXBlLCBWYWx1ZSogb3JpZ2luKQogeworICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJz
OiAiLCBsaXN0RHVtcChwYWlycyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIs
ICIsCisgICAgICAgICAgICBzY3JhdGNoZXNbMV0sICJcbiIpOworICAgIH0KKyAgICAKICAgICBw
YWlycy5yZW1vdmVBbGxNYXRjaGluZygKICAgICAgICAgWyZdIChjb25zdCBTaHVmZmxlUGFpciYg
cGFpcikgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gcGFpci5zcmMoKSA9PSBwYWlyLmRz
dCgpOwpAQCAtMTcwLDEwICsxNzYsMTggQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJ
dCdzIGEgcm90YXRlLlxuIik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsKKworICAg
ICAgICAgICAgICAgIC8vIFRoZSBjb21tb24gY2FzZSBpcyB0aGF0IHRoZSByb3RhdGUgZG9lcyBu
b3QgaGF2ZSBmcmluZ2UuIFRoZSBvbmx5IHdheSB0bworICAgICAgICAgICAgICAgIC8vIGNoZWNr
IGZvciB0aGlzIGlzIHRvIGV4YW1pbmUgdGhlIHdob2xlIHJvdGF0ZS4KKyAgICAgICAgICAgICAg
ICBib29sIG9rOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFpcnMubGFzdCgpLmRzdCgp
ID09IG9yaWdpbmFsU3JjKSB7CisgICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudFBhaXJzLnNpemUoKSAtIDE7
IGktLTspCisgICAgICAgICAgICAgICAgICAgICAgICBvayAmPSBjdXJyZW50UGFpcnNbaV0uZHN0
KCkgPT0gY3VycmVudFBhaXJzW2kgKyAxXS5zcmMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2UgaXMgdGhhdCB0aGUgcm90YXRlIGRvZXMgbm90
IGhhdmUgZnJpbmdlLiBXaGVuIHRoaXMgaGFwcGVucywgdGhlCi0gICAgICAgICAgICAgICAgLy8g
bGFzdCBkZXN0aW5hdGlvbiBpcyB0aGUgZmlyc3Qgc291cmNlLgotICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50UGFpcnMubGFzdCgpLmRzdCgpID09IG9yaWdpbmFsU3JjKQorICAgICAgICAgICAg
ICAgIGlmIChvaykKICAgICAgICAgICAgICAgICAgICAgcm90YXRlLmxvb3AgPSBXVEZNb3ZlKGN1
cnJlbnRQYWlycyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIHNsb3cgcGF0aC4gVGhlIHJvdGF0ZSBoYXMgZnJpbmdlLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJl
Z0FsbG9jLmNwcAkocmV2aXNpb24gMTk1MjM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiAr
MjExLDExIEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAg
ICAgICAgICAgIHBhaXJzLmFwcGVuZChwYWlyKTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAg
ICAgICAgICAgICAvLyBGb3IgZmluZGluZyBzY3JhdGNoIHJlZ2lzdGVycywgd2UgbmVlZCB0byBh
Y2NvdW50IGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdAorICAgICAgICAgICAgICAgIC8vIHRoZSBy
ZXN1bHQgaXMgZGVhZC4KKyAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxSZXN1bHQuaXNSZWco
KSkKKyAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ3Muc2V0KG9yaWdpbmFsUmVzdWx0LnJlZygp
KTsKKwogICAgICAgICAgICAgICAgIGdwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhsaXZlUmVncywg
QXJnOjpHUCk7CiAgICAgICAgICAgICAgICAgZnBTY3JhdGNoID0gZ2V0U2NyYXRjaGVzKGxpdmVS
ZWdzLCBBcmc6OkZQKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkocmV2aXNpb24gMTk1MjM4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc2LDYgKzY3
Niw1MSBAQCB2b2lkIHRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZSgpCiAgICAgQ0hFQ0sodGhp
bmdzWzVdID09IDMpOwogfQogCit2b2lkIHRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZUluV2Vp
cmRPcmRlcigpCit7CisgICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgIENvZGUmIGNvZGUgPSBw
cm9jLmNvZGUoKTsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7Cisg
ICAgbG9hZENvbnN0YW50KHJvb3QsIDEsIFRtcChHUFJJbmZvOjpyZWdUMCkpOworICAgIGxvYWRD
b25zdGFudChyb290LCAyLCBUbXAoR1BSSW5mbzo6cmVnVDEpKTsKKyAgICBsb2FkQ29uc3RhbnQo
cm9vdCwgMywgVG1wKEdQUkluZm86OnJlZ1QyKSk7CisgICAgbG9hZENvbnN0YW50KHJvb3QsIDQs
IFRtcChHUFJJbmZvOjpyZWdUMykpOworICAgIGxvYWRDb25zdGFudChyb290LCA1LCBUbXAoR1BS
SW5mbzo6cmVnVDQpKTsKKyAgICBsb2FkQ29uc3RhbnQocm9vdCwgNiwgVG1wKEdQUkluZm86OnJl
Z1Q1KSk7CisgICAgcm9vdC0+YXBwZW5kKAorICAgICAgICBTaHVmZmxlLCBudWxscHRyLAorICAg
ICAgICBUbXAoR1BSSW5mbzo6cmVnVDApLCBUbXAoR1BSSW5mbzo6cmVnVDMpLCBBcmc6OndpZHRo
QXJnKEFyZzo6V2lkdGgzMiksCisgICAgICAgIFRtcChHUFJJbmZvOjpyZWdUMCksIFRtcChHUFJJ
bmZvOjpyZWdUMSksIEFyZzo6d2lkdGhBcmcoQXJnOjpXaWR0aDMyKSwKKyAgICAgICAgVG1wKEdQ
UkluZm86OnJlZ1QxKSwgVG1wKEdQUkluZm86OnJlZ1Q0KSwgQXJnOjp3aWR0aEFyZyhBcmc6Oldp
ZHRoMzIpLAorICAgICAgICBUbXAoR1BSSW5mbzo6cmVnVDIpLCBUbXAoR1BSSW5mbzo6cmVnVDAp
LCBBcmc6OndpZHRoQXJnKEFyZzo6V2lkdGgzMiksCisgICAgICAgIFRtcChHUFJJbmZvOjpyZWdU
MiksIFRtcChHUFJJbmZvOjpyZWdUNSksIEFyZzo6d2lkdGhBcmcoQXJnOjpXaWR0aDMyKSwKKyAg
ICAgICAgVG1wKEdQUkluZm86OnJlZ1QxKSwgVG1wKEdQUkluZm86OnJlZ1QyKSwgQXJnOjp3aWR0
aEFyZyhBcmc6OldpZHRoMzIpKTsKKworICAgIGludDMyX3QgdGhpbmdzWzZdOworICAgIFRtcCBi
YXNlID0gY29kZS5uZXdUbXAoQXJnOjpHUCk7CisgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxw
dHIsIEFyZzo6aW1tNjQoYml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwor
ICAgIHJvb3QtPmFwcGVuZChNb3ZlMzIsIG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZWdUMCksIEFy
Zzo6YWRkcihiYXNlLCAwICogc2l6ZW9mKGludDMyX3QpKSk7CisgICAgcm9vdC0+YXBwZW5kKE1v
dmUzMiwgbnVsbHB0ciwgVG1wKEdQUkluZm86OnJlZ1QxKSwgQXJnOjphZGRyKGJhc2UsIDEgKiBz
aXplb2YoaW50MzJfdCkpKTsKKyAgICByb290LT5hcHBlbmQoTW92ZTMyLCBudWxscHRyLCBUbXAo
R1BSSW5mbzo6cmVnVDIpLCBBcmc6OmFkZHIoYmFzZSwgMiAqIHNpemVvZihpbnQzMl90KSkpOwor
ICAgIHJvb3QtPmFwcGVuZChNb3ZlMzIsIG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZWdUMyksIEFy
Zzo6YWRkcihiYXNlLCAzICogc2l6ZW9mKGludDMyX3QpKSk7CisgICAgcm9vdC0+YXBwZW5kKE1v
dmUzMiwgbnVsbHB0ciwgVG1wKEdQUkluZm86OnJlZ1Q0KSwgQXJnOjphZGRyKGJhc2UsIDQgKiBz
aXplb2YoaW50MzJfdCkpKTsKKyAgICByb290LT5hcHBlbmQoTW92ZTMyLCBudWxscHRyLCBUbXAo
R1BSSW5mbzo6cmVnVDUpLCBBcmc6OmFkZHIoYmFzZSwgNSAqIHNpemVvZihpbnQzMl90KSkpOwor
ICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmltbSgwKSwgVG1wKEdQUkluZm86
OnJldHVyblZhbHVlR1BSKSk7CisgICAgcm9vdC0+YXBwZW5kKFJldDMyLCBudWxscHRyLCBUbXAo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKworICAgIG1lbXNldCh0aGluZ3MsIDAsIHNpemVv
Zih0aGluZ3MpKTsKKyAgICAKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsK
KworICAgIENIRUNLKHRoaW5nc1swXSA9PSAzKTsKKyAgICBDSEVDSyh0aGluZ3NbMV0gPT0gMSk7
CisgICAgQ0hFQ0sodGhpbmdzWzJdID09IDIpOworICAgIENIRUNLKHRoaW5nc1szXSA9PSAxKTsK
KyAgICBDSEVDSyh0aGluZ3NbNF0gPT0gMik7CisgICAgQ0hFQ0sodGhpbmdzWzVdID09IDMpOwor
fQorCiB2b2lkIHRlc3RTaHVmZmxlUm90YXRlV2l0aExvbmdGcmluZ2UoKQogewogICAgIEIzOjpQ
cm9jZWR1cmUgcHJvYzsKQEAgLTE2MjUsNiArMTY3MCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIq
IGZpbHRlcikKICAgICBSVU4odGVzdFNodWZmbGVUcmVlU2hpZnRPdGhlckJhY2t3YXJkKCkpOwog
ICAgIFJVTih0ZXN0U2h1ZmZsZU11bHRpcGxlU2hpZnRzKCkpOwogICAgIFJVTih0ZXN0U2h1ZmZs
ZVJvdGF0ZVdpdGhGcmluZ2UoKSk7CisgICAgUlVOKHRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5n
ZUluV2VpcmRPcmRlcigpKTsKICAgICBSVU4odGVzdFNodWZmbGVSb3RhdGVXaXRoTG9uZ0ZyaW5n
ZSgpKTsKICAgICBSVU4odGVzdFNodWZmbGVNdWx0aXBsZVJvdGF0ZXMoKSk7CiAgICAgUlVOKHRl
c3RTaHVmZmxlU2hpZnRBbmRSb3RhdGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmgJKHJldmlzaW9uIDE5NTIzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gV2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhw
ZXJpbWVudGFsIHRyYW5zaXRpb24gZnJvbSBMTFZNIHRvIEIzIGFzIHRoZSBiYWNrZW5kIGZvciB0
aGUgRlRMLiBXZSBkb24ndAogLy8geWV0IGtub3cgaG93IGl0IHdpbGwgdHVybiBvdXQuIEZvciBu
b3csIHRoaXMgZmxhZyB3aWxsIGNvbnRyb2wgd2hldGhlciBGVEwgdXNlcyBCMy4gUmVtZW1iZXIg
dG8gc2V0IHRoaXMKIC8vIHRvIDAgYmVmb3JlIGNvbW1pdHRpbmchCi0jZGVmaW5lIEZUTF9VU0VT
X0IzIDAKKyNkZWZpbmUgRlRMX1VTRVNfQjMgMQogCiBzdHJ1Y3QgTm9kZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269244</attachid>
            <date>2016-01-18 16:49:24 -0800</date>
            <delta_ts>2016-01-19 00:32:06 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7708</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1MjM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE2LTAxLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IEFpciBzaHVmZmxpbmcgYXNzZXJ0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgc29tZSBhc3NlcnRpb25zIHRoYXQgSSB3YXMgc2Vl
aW5nIHJ1bm5pbmcgSlNDIHRlc3RzLiBBZGRzIGEgbmV3IEFpciB0ZXN0LgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6Z2V0VW51c2VkUmVnaXN0ZXIpOgorICAgICAgICAqIGIzL2Fpci9BaXJFbWl0
U2h1ZmZsZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmVtaXRTaHVmZmxlKToKKyAgICAg
ICAgKiBiMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvdGVzdGFpci5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZSk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZUluV2VpcmRP
cmRlcik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlUm90YXRlV2l0aExvbmdG
cmluZ2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpydW4pOgorCiAyMDE2LTAxLTE4ICBTYWFt
IGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZUTCBkb2Vzbid0IGRvIHBy
b3BlciBzcGlsbGluZyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gR2V0QnlJZC9TbmlwcGV0
cyBnbyB0byBzbG93IHBhdGgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE5NTIz
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDE0ICs3MzMsMTIgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKC0xMjggPD0gaW1tLm1fdmFsdWUgJiYgaW1tLm1fdmFsdWUgPCAxMjgp
OwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX2k4bShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfaThtKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
ICAgICB9CiAKICAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIEFTU0VSVCgtMTI4IDw9IGltbS5tX3ZhbHVlICYmIGltbS5t
X3ZhbHVlIDwgMTI4KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9pOG0oaW1tLm1fdmFsdWUs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX2k4bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVnaXN0
ZXJJRCBnZXRVbnVzZWRSZWdpc3RlcihCYXNlSW5kZXggYWRkcmVzcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCShyZXZpc2lvbiAx
OTUyMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTIgQEAgdm9pZCBTaHVmZmxlUGFpcjo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KQogVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgIFZlY3Rv
cjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoZXMsIEFyZzo6
VHlwZSB0eXBlLCBWYWx1ZSogb3JpZ2luKQogeworICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
IGRhdGFMb2coCisgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJzOiAiLCBsaXN0RHVtcChw
YWlycyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIsICIsCisgICAgICAgICAg
ICBzY3JhdGNoZXNbMV0sICJcbiIpOworICAgIH0KKyAgICAKICAgICBwYWlycy5yZW1vdmVBbGxN
YXRjaGluZygKICAgICAgICAgWyZdIChjb25zdCBTaHVmZmxlUGFpciYgcGFpcikgLT4gYm9vbCB7
CiAgICAgICAgICAgICByZXR1cm4gcGFpci5zcmMoKSA9PSBwYWlyLmRzdCgpOwpAQCAtMTcwLDEw
ICsxNzYsMTggQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgcm90YXRlLlxu
Iik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsKKworICAgICAgICAgICAgICAgIC8v
IFRoZSBjb21tb24gY2FzZSBpcyB0aGF0IHRoZSByb3RhdGUgZG9lcyBub3QgaGF2ZSBmcmluZ2Uu
IFRoZSBvbmx5IHdheSB0bworICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciB0aGlzIGlzIHRv
IGV4YW1pbmUgdGhlIHdob2xlIHJvdGF0ZS4KKyAgICAgICAgICAgICAgICBib29sIG9rOworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50UGFpcnMubGFzdCgpLmRzdCgpID09IG9yaWdpbmFsU3Jj
KSB7CisgICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gY3VycmVudFBhaXJzLnNpemUoKSAtIDE7IGktLTspCisgICAgICAg
ICAgICAgICAgICAgICAgICBvayAmPSBjdXJyZW50UGFpcnNbaV0uZHN0KCkgPT0gY3VycmVudFBh
aXJzW2kgKyAxXS5zcmMoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBU
aGUgY29tbW9uIGNhc2UgaXMgdGhhdCB0aGUgcm90YXRlIGRvZXMgbm90IGhhdmUgZnJpbmdlLiBX
aGVuIHRoaXMgaGFwcGVucywgdGhlCi0gICAgICAgICAgICAgICAgLy8gbGFzdCBkZXN0aW5hdGlv
biBpcyB0aGUgZmlyc3Qgc291cmNlLgotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFpcnMu
bGFzdCgpLmRzdCgpID09IG9yaWdpbmFsU3JjKQorICAgICAgICAgICAgICAgIGlmIChvaykKICAg
ICAgICAgICAgICAgICAgICAgcm90YXRlLmxvb3AgPSBXVEZNb3ZlKGN1cnJlbnRQYWlycyk7CiAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHNsb3cgcGF0aC4gVGhlIHJvdGF0ZSBoYXMgZnJpbmdlLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAkocmV2
aXNpb24gMTk1MjM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFm
dGVyUmVnQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiArMjExLDExIEBAIHZvaWQg
bG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIHBhaXJz
LmFwcGVuZChwYWlyKTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAvLyBG
b3IgZmluZGluZyBzY3JhdGNoIHJlZ2lzdGVycywgd2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUg
cG9zc2liaWxpdHkgdGhhdAorICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgaXMgZGVhZC4K
KyAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxSZXN1bHQuaXNSZWcoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbGl2ZVJlZ3Muc2V0KG9yaWdpbmFsUmVzdWx0LnJlZygpKTsKKwogICAgICAgICAg
ICAgICAgIGdwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhsaXZlUmVncywgQXJnOjpHUCk7CiAgICAg
ICAgICAgICAgICAgZnBTY3JhdGNoID0gZ2V0U2NyYXRjaGVzKGxpdmVSZWdzLCBBcmc6OkZQKTsK
ICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVz
dGFpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAkocmV2aXNpb24gMTk1MjM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci90ZXN0YWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc2LDYgKzY3Niw1MSBAQCB2b2lkIHRl
c3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZSgpCiAgICAgQ0hFQ0sodGhpbmdzWzVdID09IDMpOwog
fQogCit2b2lkIHRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZUluV2VpcmRPcmRlcigpCit7Cisg
ICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUoKTsKKwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CisgICAgbG9hZENvbnN0YW50
KHJvb3QsIDEsIFRtcChHUFJJbmZvOjpyZWdUMCkpOworICAgIGxvYWRDb25zdGFudChyb290LCAy
LCBUbXAoR1BSSW5mbzo6cmVnVDEpKTsKKyAgICBsb2FkQ29uc3RhbnQocm9vdCwgMywgVG1wKEdQ
UkluZm86OnJlZ1QyKSk7CisgICAgbG9hZENvbnN0YW50KHJvb3QsIDQsIFRtcChHUFJJbmZvOjpy
ZWdUMykpOworICAgIGxvYWRDb25zdGFudChyb290LCA1LCBUbXAoR1BSSW5mbzo6cmVnVDQpKTsK
KyAgICBsb2FkQ29uc3RhbnQocm9vdCwgNiwgVG1wKEdQUkluZm86OnJlZ1Q1KSk7CisgICAgcm9v
dC0+YXBwZW5kKAorICAgICAgICBTaHVmZmxlLCBudWxscHRyLAorICAgICAgICBUbXAoR1BSSW5m
bzo6cmVnVDApLCBUbXAoR1BSSW5mbzo6cmVnVDMpLCBBcmc6OndpZHRoQXJnKEFyZzo6V2lkdGgz
MiksCisgICAgICAgIFRtcChHUFJJbmZvOjpyZWdUMCksIFRtcChHUFJJbmZvOjpyZWdUMSksIEFy
Zzo6d2lkdGhBcmcoQXJnOjpXaWR0aDMyKSwKKyAgICAgICAgVG1wKEdQUkluZm86OnJlZ1QxKSwg
VG1wKEdQUkluZm86OnJlZ1Q0KSwgQXJnOjp3aWR0aEFyZyhBcmc6OldpZHRoMzIpLAorICAgICAg
ICBUbXAoR1BSSW5mbzo6cmVnVDIpLCBUbXAoR1BSSW5mbzo6cmVnVDApLCBBcmc6OndpZHRoQXJn
KEFyZzo6V2lkdGgzMiksCisgICAgICAgIFRtcChHUFJJbmZvOjpyZWdUMiksIFRtcChHUFJJbmZv
OjpyZWdUNSksIEFyZzo6d2lkdGhBcmcoQXJnOjpXaWR0aDMyKSwKKyAgICAgICAgVG1wKEdQUklu
Zm86OnJlZ1QxKSwgVG1wKEdQUkluZm86OnJlZ1QyKSwgQXJnOjp3aWR0aEFyZyhBcmc6OldpZHRo
MzIpKTsKKworICAgIGludDMyX3QgdGhpbmdzWzZdOworICAgIFRtcCBiYXNlID0gY29kZS5uZXdU
bXAoQXJnOjpHUCk7CisgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6aW1tNjQo
Yml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOworICAgIHJvb3QtPmFwcGVu
ZChNb3ZlMzIsIG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZWdUMCksIEFyZzo6YWRkcihiYXNlLCAw
ICogc2l6ZW9mKGludDMyX3QpKSk7CisgICAgcm9vdC0+YXBwZW5kKE1vdmUzMiwgbnVsbHB0ciwg
VG1wKEdQUkluZm86OnJlZ1QxKSwgQXJnOjphZGRyKGJhc2UsIDEgKiBzaXplb2YoaW50MzJfdCkp
KTsKKyAgICByb290LT5hcHBlbmQoTW92ZTMyLCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmVnVDIp
LCBBcmc6OmFkZHIoYmFzZSwgMiAqIHNpemVvZihpbnQzMl90KSkpOworICAgIHJvb3QtPmFwcGVu
ZChNb3ZlMzIsIG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZWdUMyksIEFyZzo6YWRkcihiYXNlLCAz
ICogc2l6ZW9mKGludDMyX3QpKSk7CisgICAgcm9vdC0+YXBwZW5kKE1vdmUzMiwgbnVsbHB0ciwg
VG1wKEdQUkluZm86OnJlZ1Q0KSwgQXJnOjphZGRyKGJhc2UsIDQgKiBzaXplb2YoaW50MzJfdCkp
KTsKKyAgICByb290LT5hcHBlbmQoTW92ZTMyLCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmVnVDUp
LCBBcmc6OmFkZHIoYmFzZSwgNSAqIHNpemVvZihpbnQzMl90KSkpOworICAgIHJvb3QtPmFwcGVu
ZChNb3ZlLCBudWxscHRyLCBBcmc6OmltbSgwKSwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BS
KSk7CisgICAgcm9vdC0+YXBwZW5kKFJldDMyLCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpKTsKKworICAgIG1lbXNldCh0aGluZ3MsIDAsIHNpemVvZih0aGluZ3MpKTsKKyAg
ICAKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKworICAgIENIRUNLKHRo
aW5nc1swXSA9PSAzKTsKKyAgICBDSEVDSyh0aGluZ3NbMV0gPT0gMSk7CisgICAgQ0hFQ0sodGhp
bmdzWzJdID09IDIpOworICAgIENIRUNLKHRoaW5nc1szXSA9PSAxKTsKKyAgICBDSEVDSyh0aGlu
Z3NbNF0gPT0gMik7CisgICAgQ0hFQ0sodGhpbmdzWzVdID09IDMpOworfQorCiB2b2lkIHRlc3RT
aHVmZmxlUm90YXRlV2l0aExvbmdGcmluZ2UoKQogewogICAgIEIzOjpQcm9jZWR1cmUgcHJvYzsK
QEAgLTE2MjUsNiArMTY3MCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBS
VU4odGVzdFNodWZmbGVUcmVlU2hpZnRPdGhlckJhY2t3YXJkKCkpOwogICAgIFJVTih0ZXN0U2h1
ZmZsZU11bHRpcGxlU2hpZnRzKCkpOwogICAgIFJVTih0ZXN0U2h1ZmZsZVJvdGF0ZVdpdGhGcmlu
Z2UoKSk7CisgICAgUlVOKHRlc3RTaHVmZmxlUm90YXRlV2l0aEZyaW5nZUluV2VpcmRPcmRlcigp
KTsKICAgICBSVU4odGVzdFNodWZmbGVSb3RhdGVXaXRoTG9uZ0ZyaW5nZSgpKTsKICAgICBSVU4o
dGVzdFNodWZmbGVNdWx0aXBsZVJvdGF0ZXMoKSk7CiAgICAgUlVOKHRlc3RTaHVmZmxlU2hpZnRB
bmRSb3RhdGUoKSk7Cg==
</data>
<flag name="review"
          id="294176"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>