<?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>159226</bug_id>
          
          <creation_ts>2016-06-28 13:59:01 -0700</creation_ts>
          <short_desc>get_by_id_with_this does not trigger a to_this in caller.</short_desc>
          <delta_ts>2016-06-30 15:07:27 -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>JavaScriptCore</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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</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>1206154</commentid>
    <comment_count>0</comment_count>
      <attachid>282281</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-28 13:59:01 -0700</bug_when>
    <thetext>Created attachment 282281
bad test case.

run the attached test and it will throw an exception, which it should not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206808</commentid>
    <comment_count>1</comment_count>
      <attachid>282456</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 12:33:39 -0700</bug_when>
    <thetext>Created attachment 282456
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206809</commentid>
    <comment_count>2</comment_count>
      <attachid>282456</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-30 12:35:37 -0700</bug_when>
    <thetext>Comment on attachment 282456
patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:554
&gt; +            } else if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval() || isThisUsedInInnerArrowFunction() || functionNode-&gt;usesSuperProperty()) {

Can you tell if we are inside an object literal vs a class? If so, maybe we should only emit the to_this if we are in an object literal. Otherwise file a bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206810</commentid>
    <comment_count>3</comment_count>
      <attachid>282456</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-30 12:36:32 -0700</bug_when>
    <thetext>Comment on attachment 282456
patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:554
&gt;&gt; +            } else if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval() || isThisUsedInInnerArrowFunction() || functionNode-&gt;usesSuperProperty()) {
&gt; 
&gt; Can you tell if we are inside an object literal vs a class? If so, maybe we should only emit the to_this if we are in an object literal. Otherwise file a bug?

Or even better, only do it if the code is strict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206811</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-30 12:36:48 -0700</bug_when>
    <thetext>non-strict*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206814</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 12:39:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; non-strict*

I lied about the only case that matters is non-strict to
strict. Both directions matter. Whenever strictness of callee
vs caller are different, there will be user observable effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206815</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 12:39:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; non-strict*
&gt; 
&gt; I lied about the only case that matters is non-strict to
&gt; strict. Both directions matter. Whenever strictness of callee
&gt; vs caller are different, there will be user observable effects.

I&apos;ll add a test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206818</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 12:54:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 282456 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282456&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:554
&gt; &gt; +            } else if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval() || isThisUsedInInnerArrowFunction() || functionNode-&gt;usesSuperProperty()) {
&gt; 
&gt; Can you tell if we are inside an object literal vs a class? If so, maybe we
&gt; should only emit the to_this if we are in an object literal. Otherwise file
&gt; a bug?

After thinking about it more, I don&apos;t think this is sound.
You don&apos;t know if you&apos;re definitely calling a strict method,
even if you&apos;re in a class because you can muck with the super
class&apos; prototype after it&apos;s been constructed. I&apos;ll verify
that this is correct by adding a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206842</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 13:53:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; non-strict*
&gt; 
&gt; I lied about the only case that matters is non-strict to
&gt; strict. Both directions matter. Whenever strictness of callee
&gt; vs caller are different, there will be user observable effects.

Actually, I think I&apos;m wrong. We only care if the caller is not-strict.
If the caller is strict, and callee is not strict, we don&apos;t need to
to_this for a super property access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206843</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 13:55:07 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 282456 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=282456&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:554
&gt; &gt; &gt; +            } else if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval() || isThisUsedInInnerArrowFunction() || functionNode-&gt;usesSuperProperty()) {
&gt; &gt; 
&gt; &gt; Can you tell if we are inside an object literal vs a class? If so, maybe we
&gt; &gt; should only emit the to_this if we are in an object literal. Otherwise file
&gt; &gt; a bug?
&gt; 
&gt; After thinking about it more, I don&apos;t think this is sound.
&gt; You don&apos;t know if you&apos;re definitely calling a strict method,
&gt; even if you&apos;re in a class because you can muck with the super
&gt; class&apos; prototype after it&apos;s been constructed. I&apos;ll verify
&gt; that this is correct by adding a test.

This is sound, given my previous comment that strict to not-strict
doesn&apos;t need to to_this for super property access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206871</commentid>
    <comment_count>10</comment_count>
      <attachid>282472</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 14:52:00 -0700</bug_when>
    <thetext>Created attachment 282472
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206872</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-30 14:54:27 -0700</bug_when>
    <thetext>Attachment 282472 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:554:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 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>1206873</commentid>
    <comment_count>12</comment_count>
      <attachid>282472</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-30 14:59:00 -0700</bug_when>
    <thetext>Comment on attachment 282472
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206875</commentid>
    <comment_count>13</comment_count>
      <attachid>282472</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-30 15:00:20 -0700</bug_when>
    <thetext>Comment on attachment 282472
patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:552
&gt;              } else if (constructorKind() != ConstructorKind::None) {

You should get rid of these braces though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206877</commentid>
    <comment_count>14</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-30 15:07:27 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/202710</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>282281</attachid>
            <date>2016-06-28 13:59:01 -0700</date>
            <delta_ts>2016-06-30 12:33:39 -0700</delta_ts>
            <desc>bad test case.</desc>
            <filename>foo.js</filename>
            <type>application/x-javascript</type>
            <size>173</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">Y2xhc3MgQSB7IGdldCBiYXIoKSB7IHJldHVybiB0aGlzOyB9IH0KCmNsYXNzIEIgZXh0ZW5kcyBB
IHsKICAgIGJhcigpIHsgcmV0dXJuIHN1cGVyLmJhcjsgfQp9CgppZiAodHlwZW9mIEIucHJvdG90
eXBlLmJhci5jYWxsKCJoZWxsbyIpICE9PSAib2JqZWN0IikKICAgIHRocm93IG5ldyBFcnJvcigp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282456</attachid>
            <date>2016-06-30 12:33:39 -0700</date>
            <delta_ts>2016-06-30 14:52:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>6276</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE2LTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGdldF9ieV9pZF93aXRoX3RoaXMgZG9lcyBub3QgdHJpZ2dlciBhIHRvX3RoaXMgaW4gY2FsbGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBp
cyBhIGJ1ZyBpZiB0aGUgY2FsbGVyIGlzIGluIHNsb3BweSBtb2RlIGFuZCB0aGUgY2FsbGVlIGlz
IGluIHN0cmljdAorICAgICAgICBtb2RlLiBUaGlzIGNhbid0IGhhcHBlbiB3aXRoIEVTNiBjbGFz
c2VzIGJlY2F1c2UgdGhleSdyZSBhbGwgaW4gc3RyaWN0IG1vZGUsCisgICAgICAgIGJ1dCBpdCBj
YW4gaGFwcGVuIHdpdGggbWV0aG9kIHN5bnRheCBvbiBhbiBvYmplY3QgbGl0ZXJhbC4gVGhlIGNh
bGxlciBtdXN0CisgICAgICAgIHRvX3RoaXMgb24gfHRoaXN8IHdoZW4gaXQga25vd3MgdGhhdCBp
dCBwZXJmb3JtcyBzdXBlciBwcm9wZXJ0eSBhY2Nlc3Nlcy4KKworICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3N1cGVyLXBy
b3BlcnR5LWFjY2Vzcy1vYmplY3QtbGl0ZXJhbC10by10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGxldC5vMS5nZXQgZm9vKToKKyAg
ICAgICAgKGxldC5vMi5hKToKKyAgICAgICAgKGxldC5vMi5hYSk6CisgICAgICAgIChsZXQubzIu
Yik6CisgICAgICAgIChsZXQubzIuYmIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zdXBlci1w
cm9wZXJ0eS1hY2Nlc3MtdG8tdGhpcy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChCYXNlLnByb3RvdHlwZS5nZXQgZm9vKToKKyAgICAgICAg
KEJhc2UpOgorICAgICAgICAoQ2hpbGQucHJvdG90eXBlLmEpOgorICAgICAgICAoQ2hpbGQucHJv
dG90eXBlLmIpOgorICAgICAgICAoQ2hpbGQpOgorCiAyMDE2LTA2LTMwICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlIG5lZWQgdG8gdG9fdGhpcyB3aGVuIGFu
IGlubmVyIGFycm93IGZ1bmN0aW9uIHVzZXMgJ3RoaXMnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
cmV2aXNpb24gMjAyNjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MSw3ICs1NTEsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkgewogICAgICAg
ICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1
Y3RvciIpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IGlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlv
bigpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9u
KCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOwogICAg
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3Rlcikp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0
eS1hY2Nlc3Mtb2JqZWN0LWxpdGVyYWwtdG8tdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy1vYmplY3Qt
bGl0ZXJhbC10by10aGlzLmpzCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLW9iamVjdC1saXRlcmFsLXRvLXRo
aXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKK2Z1bmN0aW9uIGFzc2VydChi
KSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24i
KQorfQorCitmdW5jdGlvbiB0ZXN0KGYsIG4gPSAxMDAwKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBuOyArK2kpCisgICAgICAgIGYoKTsKK30KKworbGV0IG8xID0geworICAgIGdldCBmb28o
KSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQor
fTsKKworbGV0IG8yID0geworICAgIF9fcHJvdG9fXzogbzEsCisgICAgYSgpIHsKKyAgICAgICAg
cmV0dXJuIHN1cGVyLmZvbzsKKyAgICB9LAorCisgICAgYWEoKSB7CisgICAgICAgIGxldCBhcnIg
PSAoKSA9PiBzdXBlci5mb287CisgICAgICAgIHJldHVybiBhcnIoKTsKKyAgICB9LAorCisgICAg
YigpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICByZXR1cm4gc3VwZXIuZm9vOwor
ICAgIH0sCisKKyAgICBiYigpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICBsZXQg
YXJyID0gKCkgPT4gc3VwZXIuZm9vOworICAgICAgICByZXR1cm4gYXJyKCk7CisgICAgfQorfTsK
KwordmFyIEEgPSBvMi5hOwordmFyIEFBID0gbzIuYWE7Cit2YXIgQiA9IG8yLmI7Cit2YXIgQkIg
PSBvMi5iOworCitsZXQgZ2xvYmFsT2JqID0gdGhpczsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBsZXQgbnVtID0gbzIuYS5jYWxsKDI1KTsKKyAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gIm9i
amVjdCIpOworICAgIGFzc2VydChudW0gaW5zdGFuY2VvZiBOdW1iZXIpOworCisgICAgbGV0IHN0
ciA9IG8yLmEuY2FsbCgiZm9vIGJhciIpOworICAgIGFzc2VydCh0eXBlb2Ygc3RyID09PSAib2Jq
ZWN0Iik7CisgICAgYXNzZXJ0KHN0ciBpbnN0YW5jZW9mIFN0cmluZyk7CisgICAgYXNzZXJ0KHN0
ciA9PSAiZm9vIGJhciIpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQobzIuYS5jYWxs
KG8pID09PSBvKTsKKworICAgIGFzc2VydChBKCkgPT09IGdsb2JhbE9iaik7Cit9KTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBsZXQgbnVtID0gbzIuYWEuY2FsbCgyNSk7CisgICAgYXNzZXJ0
KHR5cGVvZiBudW0gPT09ICJvYmplY3QiKTsKKyAgICBhc3NlcnQobnVtIGluc3RhbmNlb2YgTnVt
YmVyKTsKKworICAgIGxldCBzdHIgPSBvMi5hYS5jYWxsKCJmb28gYmFyIik7CisgICAgYXNzZXJ0
KHR5cGVvZiBzdHIgPT09ICJvYmplY3QiKTsKKyAgICBhc3NlcnQoc3RyIGluc3RhbmNlb2YgU3Ry
aW5nKTsKKyAgICBhc3NlcnQoc3RyID09ICJmb28gYmFyIik7CisKKyAgICBsZXQgbyA9IHt9Owor
ICAgIGFzc2VydChvMi5hYS5jYWxsKG8pID09PSBvKTsKKworICAgIGFzc2VydChBQSgpID09PSBn
bG9iYWxPYmopOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IG51bSA9IG8yLmIu
Y2FsbCgyNSk7CisgICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICJudW1iZXIiKTsKKyAgICBhc3Nl
cnQobnVtID09PSAyNSk7CisKKyAgICBsZXQgc3RyID0gbzIuYi5jYWxsKCJmb28gYmFyIik7Cisg
ICAgYXNzZXJ0KHR5cGVvZiBzdHIgPT09ICJzdHJpbmciKTsKKyAgICBhc3NlcnQoc3RyID09PSAi
Zm9vIGJhciIpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQobzIuYi5jYWxsKG8pID09
PSBvKTsKKworICAgIGFzc2VydChCKCkgPT09IHVuZGVmaW5lZCk7Cit9KTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICBsZXQgbnVtID0gbzIuYmIuY2FsbCgyNSk7CisgICAgYXNzZXJ0KHR5cGVv
ZiBudW0gPT09ICJudW1iZXIiKTsKKyAgICBhc3NlcnQobnVtID09PSAyNSk7CisKKyAgICBsZXQg
c3RyID0gbzIuYmIuY2FsbCgiZm9vIGJhciIpOworICAgIGFzc2VydCh0eXBlb2Ygc3RyID09PSAi
c3RyaW5nIik7CisgICAgYXNzZXJ0KHN0ciA9PT0gImZvbyBiYXIiKTsKKworICAgIGxldCBvID0g
e307CisgICAgYXNzZXJ0KG8yLmJiLmNhbGwobykgPT09IG8pOworCisgICAgYXNzZXJ0KEJCKCkg
PT09IHVuZGVmaW5lZCk7Cit9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLXRvLXRoaXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MtdG8t
dGhpcy5qcwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy10by10aGlzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDggQEAKKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYg
KCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKQorfQorCitmdW5j
dGlvbiB0ZXN0KGYsIG4gPSAxMDAwKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyArK2kp
CisgICAgICAgIGYoKTsKK30KKworY2xhc3MgQmFzZSB7CisgICAgZ2V0IGZvbygpIHsgcmV0dXJu
IHRoaXM7IH0KK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBCYXNlIHsKKyAgICBhKCkgeworICAg
ICAgICByZXR1cm4gc3VwZXIuZm9vOworICAgIH0KKworICAgIGIoKSB7CisgICAgICAgIGxldCBh
cnIgPSAoKSA9PiBzdXBlci5mb287CisgICAgICAgIHJldHVybiBhcnIoKTsKKyAgICB9Cit9Owor
CitsZXQgQSA9IENoaWxkLnByb3RvdHlwZS5hOwordmFyIEFBID0gQ2hpbGQucHJvdG90eXBlLmE7
Cit0aGlzLkFBQSA9IENoaWxkLnByb3RvdHlwZS5hOworCitsZXQgZ2xvYmFsT2JqID0gdGhpczsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmEuY2FsbCgi
eHl6IikgPT09ICJ4eXoiKTsKKyAgICBsZXQgb2JqID0ge307CisgICAgYXNzZXJ0KENoaWxkLnBy
b3RvdHlwZS5hLmNhbGwob2JqKSA9PT0gb2JqKTsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBl
LmEuY2FsbCgyNSkgPT09IDI1KTsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmEuY2FsbChn
bG9iYWxPYmopID09PSBnbG9iYWxPYmopOworCisgICAgYXNzZXJ0KENoaWxkLnByb3RvdHlwZS5i
LmNhbGwoInh5eiIpID09PSAieHl6Iik7CisgICAgYXNzZXJ0KENoaWxkLnByb3RvdHlwZS5iLmNh
bGwob2JqKSA9PT0gb2JqKTsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmIuY2FsbCgyNSkg
PT09IDI1KTsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmIuY2FsbChnbG9iYWxPYmopID09
PSBnbG9iYWxPYmopOworCisgICAgYXNzZXJ0KEEoKSA9PT0gdW5kZWZpbmVkKTsKKyAgICBhc3Nl
cnQoQUEoKSA9PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoQUFBKCkgPT09IHVuZGVmaW5lZCk7
Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282472</attachid>
            <date>2016-06-30 14:52:00 -0700</date>
            <delta_ts>2016-06-30 14:59:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>9455</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE2LTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGdldF9ieV9pZF93aXRoX3RoaXMgZG9lcyBub3QgdHJpZ2dlciBhIHRvX3RoaXMgaW4gY2FsbGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBp
cyBhIGJ1ZyBpZiB0aGUgY2FsbGVyIGlzIGluIHNsb3BweSBtb2RlIGFuZCB0aGUgY2FsbGVlIGlz
IGluIHN0cmljdAorICAgICAgICBtb2RlLiBUaGlzIGNhbid0IGhhcHBlbiB3aXRoIEVTNiBjbGFz
c2VzIGJlY2F1c2UgdGhleSdyZSBhbGwgaW4gc3RyaWN0IG1vZGUsCisgICAgICAgIGJ1dCBpdCBj
YW4gaGFwcGVuIHdpdGggbWV0aG9kIHN5bnRheCBvbiBhbiBvYmplY3QgbGl0ZXJhbC4gVGhlIGNh
bGxlciBtdXN0CisgICAgICAgIHRvX3RoaXMgb24gfHRoaXN8IHdoZW4gaXQga25vd3MgdGhhdCBp
dCBwZXJmb3JtcyBzdXBlciBwcm9wZXJ0eSBhY2Nlc3Nlcy4KKworICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3N1cGVyLXBy
b3BlcnR5LWFjY2Vzcy1vYmplY3QtbGl0ZXJhbC10by10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGxldC5vMS5nZXQgZm9vKToKKyAg
ICAgICAgKGxldC5vMi5hKToKKyAgICAgICAgKGxldC5vMi5hYSk6CisgICAgICAgIChsZXQubzIu
Yik6CisgICAgICAgIChsZXQubzIuYmIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zdXBlci1w
cm9wZXJ0eS1hY2Nlc3MtdG8tdGhpcy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChCYXNlLnByb3RvdHlwZS5nZXQgZm9vKToKKyAgICAgICAg
KEJhc2UpOgorICAgICAgICAoQ2hpbGQucHJvdG90eXBlLmEpOgorICAgICAgICAoQ2hpbGQucHJv
dG90eXBlLmIpOgorICAgICAgICAoQ2hpbGQpOgorCiAyMDE2LTA2LTMwICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlIG5lZWQgdG8gdG9fdGhpcyB3aGVuIGFu
IGlubmVyIGFycm93IGZ1bmN0aW9uIHVzZXMgJ3RoaXMnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
cmV2aXNpb24gMjAyNjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MSwxMiArNTUxLDMyIEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAgICAgICAgICAg
ICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSB7CiAgICAg
ICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0
cnVjdG9yIik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMo
KSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotICAgICAgICAgICAgICAgIGVtaXRP
cGNvZGUob3BfdG9fdGhpcyk7Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwotICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRFbWl0VG9UaGlz
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1
bmN0aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25z
VXNlRXZhbCgpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRFbWl0VG9UaGlzID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmICgoZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0
eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlclByb3Bl
cnR5KCkpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIG11c3QgZW1pdCB0b190aGlzIHdoZW4gd2UncmUgbm90IGluIHN0cmljdCBtb2Rl
IGJlY2F1c2Ugd2UKKyAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0aGlzfCB0
byBhbiBvYmplY3QsIGFuZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCisgICAgICAgICAgICAg
ICAgICAgIC8vIHRvIGEgc3RyaWN0IGZ1bmN0aW9uIGFzIHx0aGlzfC4gVGhpcyBpcyBvYnNlcnZh
YmxlIGJlY2F1c2UgdGhhdAorICAgICAgICAgICAgICAgICAgICAvLyBzdHJpY3QgZnVuY3Rpb24n
cyB0b190aGlzIHdpbGwganVzdCByZXR1cm4gdGhlIG9iamVjdC4KKyAgICAgICAgICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBlbWl0IHRoaXMg
Zm9yIHN0cmljdC1tb2RlIGNvZGUgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICAvLyBzdHJp
Y3QtbW9kZSBjb2RlIG1heSBjYWxsIGFub3RoZXIgc3RyaWN0IGZ1bmN0aW9uLCB3aGljaCB3aWxs
CisgICAgICAgICAgICAgICAgICAgIC8vIHRvX3RoaXMgaWYgaXQgZGlyZWN0bHkgdXNlcyB0aGlz
OyB0aGlzIGlzIE9LLCBiZWNhdXNlIHdlIGRlZmVyCisgICAgICAgICAgICAgICAgICAgIC8vIHRv
X3RoaXMgdW50aWwgfHRoaXN8IGlzIHVzZWQgZGlyZWN0bHkuIFN0cmljdC1tb2RlIGNvZGUgbWln
aHQKKyAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyBjYWxsIGEgc2xvcHB5IG1vZGUgZnVuY3Rp
b24sIGFuZCB0aGF0IHdpbGwgdG9fdGhpcywgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgLy8g
d2lsbCBkZWZlciB0aGUgY29udmVyc2lvbiwgYWdhaW4sIHVudGlsIG5lY2Vzc2FyeS4KKyAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRvVGhpcyA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXRUb1RoaXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF90b190
aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1f
dGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHkt
YWNjZXNzLW9iamVjdC1saXRlcmFsLXRvLXRoaXMtMi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy1vYmplY3Qt
bGl0ZXJhbC10by10aGlzLTIuanMJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3Mtb2JqZWN0LWxpdGVyYWwtdG8t
dGhpcy0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKK2Z1bmN0aW9uIGFzc2Vy
dChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRp
b24iKQorfQorCitmdW5jdGlvbiB0ZXN0KGYsIG4gPSAxMDAwKSB7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBuOyArK2kpCisgICAgICAgIGYoKTsKK30KKworbGV0IG8xID0geworICAgIGdldCBm
b28oKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK307CisKK2xldCBvMiA9IHsKKyAg
ICBfX3Byb3RvX186IG8xLAorICAgIGEoKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAg
ICAgcmV0dXJuIHN1cGVyLmZvbzsKKyAgICB9LAorCisgICAgYWEoKSB7CisgICAgICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICAgICAgbGV0IGFyciA9ICgpID0+IHN1cGVyLmZvbzsKKyAgICAgICAgcmV0
dXJuIGFycigpOworICAgIH0KK307CisKK3ZhciBBID0gbzIuYTsKK3ZhciBBQSA9IG8yLmFhOwor
CitsZXQgZ2xvYmFsT2JqID0gdGhpczsKKworQUEoKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBsZXQgbnVtID0gbzIuYS5jYWxsKDI1KTsKKyAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gIm9i
amVjdCIpOworICAgIGFzc2VydChudW0gaW5zdGFuY2VvZiBOdW1iZXIpOworCisgICAgbGV0IHN0
ciA9IG8yLmEuY2FsbCgiZm9vIGJhciIpOworICAgIGFzc2VydCh0eXBlb2Ygc3RyID09PSAib2Jq
ZWN0Iik7CisgICAgYXNzZXJ0KHN0ciBpbnN0YW5jZW9mIFN0cmluZyk7CisgICAgYXNzZXJ0KHN0
ciA9PSAiZm9vIGJhciIpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQobzIuYS5jYWxs
KG8pID09PSBvKTsKKworICAgIGFzc2VydChBKCkgPT09IGdsb2JhbE9iaik7CisgICAgYXNzZXJ0
KEFBKCkgPT09IGdsb2JhbE9iaik7CisKKyAgICBhc3NlcnQobzIuYS5jYWxsKHVuZGVmaW5lZCkg
PT09IGdsb2JhbE9iaik7CisgICAgYXNzZXJ0KG8yLmEuY2FsbChudWxsKSA9PT0gZ2xvYmFsT2Jq
KTsKKyAgICBhc3NlcnQobzIuYWEuY2FsbCh1bmRlZmluZWQpID09PSBnbG9iYWxPYmopOworICAg
IGFzc2VydChvMi5hYS5jYWxsKG51bGwpID09PSBnbG9iYWxPYmopOworfSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy1vYmpl
Y3QtbGl0ZXJhbC10by10aGlzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLW9iamVjdC1saXRlcmFsLXRvLXRo
aXMuanMJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3Mtb2JqZWN0LWxpdGVyYWwtdG8tdGhpcy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAo
IWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpCit9CisKK2Z1bmN0
aW9uIHRlc3QoZiwgbiA9IDEwMDApIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkK
KyAgICAgICAgZigpOworfQorCitsZXQgbzEgPSB7CisgICAgZ2V0IGZvbygpIHsKKyAgICAgICAg
InVzZSBzdHJpY3QiOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9OworCitsZXQgbzIg
PSB7CisgICAgX19wcm90b19fOiBvMSwKKyAgICBhKCkgeworICAgICAgICByZXR1cm4gc3VwZXIu
Zm9vOworICAgIH0sCisKKyAgICBhYSgpIHsKKyAgICAgICAgbGV0IGFyciA9ICgpID0+IHN1cGVy
LmZvbzsKKyAgICAgICAgcmV0dXJuIGFycigpOworICAgIH0sCisKKyAgICBiKCkgeworICAgICAg
ICAidXNlIHN0cmljdCI7CisgICAgICAgIHJldHVybiBzdXBlci5mb287CisgICAgfSwKKworICAg
IGJiKCkgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIGxldCBhcnIgPSAoKSA9PiBz
dXBlci5mb287CisgICAgICAgIHJldHVybiBhcnIoKTsKKyAgICB9Cit9OworCit2YXIgQSA9IG8y
LmE7Cit2YXIgQUEgPSBvMi5hYTsKK3ZhciBCID0gbzIuYjsKK3ZhciBCQiA9IG8yLmI7CisKK2xl
dCBnbG9iYWxPYmogPSB0aGlzOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBudW0gPSBv
Mi5hLmNhbGwoMjUpOworICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAib2JqZWN0Iik7CisgICAg
YXNzZXJ0KG51bSBpbnN0YW5jZW9mIE51bWJlcik7CisKKyAgICBsZXQgc3RyID0gbzIuYS5jYWxs
KCJmb28gYmFyIik7CisgICAgYXNzZXJ0KHR5cGVvZiBzdHIgPT09ICJvYmplY3QiKTsKKyAgICBh
c3NlcnQoc3RyIGluc3RhbmNlb2YgU3RyaW5nKTsKKyAgICBhc3NlcnQoc3RyID09ICJmb28gYmFy
Iik7CisKKyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydChvMi5hLmNhbGwobykgPT09IG8pOwor
CisgICAgYXNzZXJ0KEEoKSA9PT0gZ2xvYmFsT2JqKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGxldCBudW0gPSBvMi5hYS5jYWxsKDI1KTsKKyAgICBhc3NlcnQodHlwZW9mIG51bSA9
PT0gIm9iamVjdCIpOworICAgIGFzc2VydChudW0gaW5zdGFuY2VvZiBOdW1iZXIpOworCisgICAg
bGV0IHN0ciA9IG8yLmFhLmNhbGwoImZvbyBiYXIiKTsKKyAgICBhc3NlcnQodHlwZW9mIHN0ciA9
PT0gIm9iamVjdCIpOworICAgIGFzc2VydChzdHIgaW5zdGFuY2VvZiBTdHJpbmcpOworICAgIGFz
c2VydChzdHIgPT0gImZvbyBiYXIiKTsKKworICAgIGxldCBvID0ge307CisgICAgYXNzZXJ0KG8y
LmFhLmNhbGwobykgPT09IG8pOworCisgICAgYXNzZXJ0KEFBKCkgPT09IGdsb2JhbE9iaik7Cit9
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgbnVtID0gbzIuYi5jYWxsKDI1KTsKKyAg
ICBhc3NlcnQodHlwZW9mIG51bSA9PT0gIm51bWJlciIpOworICAgIGFzc2VydChudW0gPT09IDI1
KTsKKworICAgIGxldCBzdHIgPSBvMi5iLmNhbGwoImZvbyBiYXIiKTsKKyAgICBhc3NlcnQodHlw
ZW9mIHN0ciA9PT0gInN0cmluZyIpOworICAgIGFzc2VydChzdHIgPT09ICJmb28gYmFyIik7CisK
KyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydChvMi5iLmNhbGwobykgPT09IG8pOworCisgICAg
YXNzZXJ0KEIoKSA9PT0gdW5kZWZpbmVkKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGxldCBudW0gPSBvMi5iYi5jYWxsKDI1KTsKKyAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gIm51
bWJlciIpOworICAgIGFzc2VydChudW0gPT09IDI1KTsKKworICAgIGxldCBzdHIgPSBvMi5iYi5j
YWxsKCJmb28gYmFyIik7CisgICAgYXNzZXJ0KHR5cGVvZiBzdHIgPT09ICJzdHJpbmciKTsKKyAg
ICBhc3NlcnQoc3RyID09PSAiZm9vIGJhciIpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3Nl
cnQobzIuYmIuY2FsbChvKSA9PT0gbyk7CisKKyAgICBhc3NlcnQoQkIoKSA9PT0gdW5kZWZpbmVk
KTsKK30pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1w
cm9wZXJ0eS1hY2Nlc3MtdG8tdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy10by10aGlzLmpzCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJv
cGVydHktYWNjZXNzLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
InVzZSBzdHJpY3QiOworZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpCit9CisKK2Z1bmN0aW9uIHRlc3QoZiwg
biA9IDEwMDApIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgZigp
OworfQorCitjbGFzcyBCYXNlIHsKKyAgICBnZXQgZm9vKCkgeyByZXR1cm4gdGhpczsgfQorfQor
CitjbGFzcyBDaGlsZCBleHRlbmRzIEJhc2UgeworICAgIGEoKSB7CisgICAgICAgIHJldHVybiBz
dXBlci5mb287CisgICAgfQorCisgICAgYigpIHsKKyAgICAgICAgbGV0IGFyciA9ICgpID0+IHN1
cGVyLmZvbzsKKyAgICAgICAgcmV0dXJuIGFycigpOworICAgIH0KK307CisKK2xldCBBID0gQ2hp
bGQucHJvdG90eXBlLmE7Cit2YXIgQUEgPSBDaGlsZC5wcm90b3R5cGUuYTsKK3RoaXMuQUFBID0g
Q2hpbGQucHJvdG90eXBlLmE7CisKK2xldCBnbG9iYWxPYmogPSB0aGlzOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGFzc2VydChDaGlsZC5wcm90b3R5cGUuYS5jYWxsKCJ4eXoiKSA9PT0gInh5
eiIpOworICAgIGxldCBvYmogPSB7fTsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmEuY2Fs
bChvYmopID09PSBvYmopOworICAgIGFzc2VydChDaGlsZC5wcm90b3R5cGUuYS5jYWxsKDI1KSA9
PT0gMjUpOworICAgIGFzc2VydChDaGlsZC5wcm90b3R5cGUuYS5jYWxsKGdsb2JhbE9iaikgPT09
IGdsb2JhbE9iaik7CisKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmIuY2FsbCgieHl6Iikg
PT09ICJ4eXoiKTsKKyAgICBhc3NlcnQoQ2hpbGQucHJvdG90eXBlLmIuY2FsbChvYmopID09PSBv
YmopOworICAgIGFzc2VydChDaGlsZC5wcm90b3R5cGUuYi5jYWxsKDI1KSA9PT0gMjUpOworICAg
IGFzc2VydChDaGlsZC5wcm90b3R5cGUuYi5jYWxsKGdsb2JhbE9iaikgPT09IGdsb2JhbE9iaik7
CisKKyAgICBhc3NlcnQoQSgpID09PSB1bmRlZmluZWQpOworICAgIGFzc2VydChBQSgpID09PSB1
bmRlZmluZWQpOworICAgIGFzc2VydChBQUEoKSA9PT0gdW5kZWZpbmVkKTsKK30pOwo=
</data>
<flag name="review"
          id="306278"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>