<?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>20633</bug_id>
          
          <creation_ts>2008-09-03 13:50:09 -0700</creation_ts>
          <short_desc>Crash in privateExecute @ cs.byu.edu</short_desc>
          <delta_ts>2010-07-07 08:27:58 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://cs.byu.edu/courses/current</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NeedsReduction</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="BJ Homer">bjhomer</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>bugs.webkit.org</cc>
    
    <cc>dev+webkit</cc>
    
    <cc>ggaren</cc>
    
    <cc>grantg69</cc>
    
    <cc>mrowe</cc>
    
    <cc>webkit</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90059</commentid>
    <comment_count>0</comment_count>
    <who name="BJ Homer">bjhomer</who>
    <bug_when>2008-09-03 13:50:09 -0700</bug_when>
    <thetext>Visiting http://cs.byu.edu/courses/current with the latest nightly build crashes the entire browser.  Error log points to a JavaScript error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90063</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-09-03 14:31:37 -0700</bug_when>
    <thetext>Can you please attach a crash log?  See &lt;http://webkit.org/quality/crashlogs.html&gt; for details about how to get a crash log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90064</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-09-03 14:31:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/6194259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90075</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-09-03 15:00:38 -0700</bug_when>
    <thetext>ASSERTION FAILED: protoObject-&gt;get(exec, codeBlock-&gt;identifiers[vPC[3].u.operand]) == protoObject-&gt;getDirectOffset(offset)
(/Users/matt/Code/WebKit/JavaScriptCore/VM/Machine.cpp:2236 KJS::JSValue* KJS::Machine::privateExecute(KJS::Machine::ExecutionFlag, KJS::ExecState*, KJS::RegisterFile*, KJS::Register*, KJS::ScopeChainNode*, KJS::CodeBlock*, KJS::JSValue**))

Thread 0 Crashed:
0   com.apple.JavaScriptCore      	0x0050ceea KJS::Machine::privateExecute(KJS::Machine::ExecutionFlag, KJS::ExecState*, KJS::RegisterFile*, KJS::Register*, KJS::ScopeChainNode*, KJS::CodeBlock*, KJS::JSValue**) + 25932 (Machine.cpp:2236)
1   com.apple.JavaScriptCore      	0x005118a6 KJS::Machine::execute(KJS::ProgramNode*, KJS::ExecState*, KJS::ScopeChainNode*, KJS::JSObject*, KJS::JSValue**) + 698 (Machine.cpp:795)
2   com.apple.JavaScriptCore      	0x004a380f KJS::Interpreter::evaluate(KJS::ExecState*, KJS::ScopeChain&amp;, KJS::UString const&amp;, int, WTF::PassRefPtr&lt;KJS::SourceProvider&gt;, KJS::JSValue*) + 427 (interpreter.cpp:83)
3   com.apple.WebCore             	0x038f1766 WebCore::ScriptController::evaluate(WebCore::String const&amp;, int, WebCore::String const&amp;) + 268 (ScriptController.cpp:116)
4   com.apple.WebCore             	0x0347cc83 WebCore::FrameLoader::executeScript(WebCore::String const&amp;, int, WebCore::String const&amp;) + 153 (FrameLoader.cpp:790)
5   com.apple.WebCore             	0x0350e9a2 WebCore::HTMLTokenizer::scriptExecution(WebCore::String const&amp;, WebCore::HTMLTokenizer::State, WebCore::String const&amp;, int) + 300 (HTMLTokenizer.cpp:559)
6   com.apple.WebCore             	0x035100b3 WebCore::HTMLTokenizer::scriptHandler(WebCore::HTMLTokenizer::State) + 1537 (HTMLTokenizer.cpp:498)
7   com.apple.WebCore             	0x0351070e WebCore::HTMLTokenizer::parseSpecial(WebCore::SegmentedString&amp;, WebCore::HTMLTokenizer::State) + 996 (HTMLTokenizer.cpp:344)
8   com.apple.WebCore             	0x03512798 WebCore::HTMLTokenizer::parseTag(WebCore::SegmentedString&amp;, WebCore::HTMLTokenizer::State) + 6778 (HTMLTokenizer.cpp:1512)
9   com.apple.WebCore             	0x03513145 WebCore::HTMLTokenizer::write(WebCore::SegmentedString const&amp;, bool) + 1521 (HTMLTokenizer.cpp:1747)
10  com.apple.WebCore             	0x0350eebf WebCore::HTMLTokenizer::notifyFinished(WebCore::CachedResource*) + 807 (HTMLTokenizer.cpp:2027)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90076</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-09-03 15:19:35 -0700</bug_when>
    <thetext>The assertion failure looks sorta similar to that on bug 20626.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90097</commentid>
    <comment_count>5</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-03 19:25:35 -0700</bug_when>
    <thetext>I&apos;ll assign this to myself, since I can&apos;t work on bug 20626.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90099</commentid>
    <comment_count>6</comment_count>
      <attachid>23154</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-03 19:49:11 -0700</bug_when>
    <thetext>Created attachment 23154
Partial reduction

Here is a reduction of the bug. It loads 3 JS libraries and runs one command. Now it&apos;s time to pick apart the libraries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90104</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-09-03 20:54:30 -0700</bug_when>
    <thetext>*** Bug 20636 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90105</commentid>
    <comment_count>8</comment_count>
      <attachid>23156</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-03 20:59:24 -0700</bug_when>
    <thetext>Created attachment 23156
Further reduction

I can&apos;t seem to reduce it much further than this. This bug is very sensitive to the number of properties added to objects, even if they are never actually used. I have been able to replace some useless functions with blank bodies, but removing useless code from the bodies of functions that are actually called can cause the problem to go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90106</commentid>
    <comment_count>9</comment_count>
      <attachid>23157</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-03 21:19:35 -0700</bug_when>
    <thetext>Created attachment 23157
CodeBlock dump

Here is a CodeBlock dump of the crash. The crash occurs at instruction 216, which is the lookup of setArray in the jQuery constructor. The actual property seems to be the right value, but the fast offset lookup returns 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90107</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-03 21:40:11 -0700</bug_when>
    <thetext>This is a strange crash. When the lookup is optimized to become get_by_id_proto, the slot holds the correct value. However, it is zero&apos;d out some time before the lookup is made. I&apos;ll try to figure out what is clearing it. There is nothing in the JS code that is supposed to write to it, at least as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90110</commentid>
    <comment_count>11</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-09-03 21:58:17 -0700</bug_when>
    <thetext>*** Bug 20637 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90112</commentid>
    <comment_count>12</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-03 22:30:12 -0700</bug_when>
    <thetext>The problem occurs in PropertyMap::rehash(). After the only rehash of a PropertyMap table with newTableSize 512, the value with offset 281 is zeroed out. Before the rehash, it is the correct value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90120</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-09-04 00:21:58 -0700</bug_when>
    <thetext>Committed revision 36081.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90128</commentid>
    <comment_count>14</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-04 01:31:07 -0700</bug_when>
    <thetext>*** Bug 20640 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90163</commentid>
    <comment_count>15</comment_count>
    <who name="Kevin Broderick">webkit</who>
    <bug_when>2008-09-04 08:59:09 -0700</bug_when>
    <thetext>Confirming that errant behavior as exhibited on Sears site is no longer present in current nightly (4 Sep 08).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90226</commentid>
    <comment_count>16</comment_count>
    <who name="Grant">grantg69</who>
    <bug_when>2008-09-04 18:45:04 -0700</bug_when>
    <thetext>Fixed, many thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23154</attachid>
            <date>2008-09-03 19:49:11 -0700</date>
            <delta_ts>2008-09-03 20:59:24 -0700</delta_ts>
            <desc>Partial reduction</desc>
            <filename>reduction.html</filename>
            <type>text/html</type>
            <size>383</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8YmFzZSBocmVmPSJodHRwOi8vY3MuYnl1LmVkdS9jb3Vyc2VzL2N1cnJl
bnQiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9taXNjL2pxdWVyeS5q
cyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9saWIvanMv
c2l0ZV9saWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIvc2l0ZXMvYWxsL21vZHVsZXMvanF1ZXJ5X3VwZGF0ZS9jb21wYXQtMS4wLmpzIj48L3Njcmlw
dD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoZm9ybV9zZXR1cEF1dG9TdWJtaXQp
PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23156</attachid>
            <date>2008-09-03 20:59:24 -0700</date>
            <delta_ts>2008-09-03 20:59:24 -0700</delta_ts>
            <desc>Further reduction</desc>
            <filename>reduction.html</filename>
            <type>text/html</type>
            <size>14847</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8YmFzZSBocmVmPSJodHRwOi8vY3MuYnl1LmVkdS9jb3Vyc2VzL2N1cnJl
bnQiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KdmFyIGpRdWVyeSA9IGZ1bmN0
aW9uKGEsYykgewoJLy8gSWYgdGhlIGNvbnRleHQgaXMgZ2xvYmFsLCByZXR1cm4gYSBuZXcgb2Jq
ZWN0CglpZiAoIHdpbmRvdyA9PSB0aGlzICkKCQlyZXR1cm4gbmV3IGpRdWVyeShhLGMpOwoKCS8v
IE1ha2Ugc3VyZSB0aGF0IGEgc2VsZWN0aW9uIHdhcyBwcm92aWRlZAoJYSA9IGEgfHwgZG9jdW1l
bnQ7CgkKCS8vIEhBTkRMRTogJChmdW5jdGlvbikKCS8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCBy
ZWFkeQoJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbihhKSApCgkJcmV0dXJuIG5ldyBqUXVlcnkoZG9j
dW1lbnQpWyBqUXVlcnkuZm4ucmVhZHkgPyAicmVhZHkiIDogImxvYWQiIF0oIGEgKTsKCQoJLy8g
SGFuZGxlIEhUTUwgc3RyaW5ncwoJaWYgKCB0eXBlb2YgYSAgPT0gInN0cmluZyIgKSB7CgkJLy8g
SEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpCgkJdmFyIG0gPSAvXltePF0qKDwoLnxccykrPilb
Xj5dKiQvLmV4ZWMoYSk7CgkJaWYgKCBtICkKCQkJYSA9IGpRdWVyeS5jbGVhbiggWyBtWzFdIF0g
KTsKCQkKCQkvLyBIQU5ETEU6ICQoZXhwcikKCQllbHNlCgkJCXJldHVybiBuZXcgalF1ZXJ5KCBj
ICkuZmluZCggYSApOwoJfQoJCglyZXR1cm4gdGhpcy5zZXRBcnJheSgKCQkvLyBIQU5ETEU6ICQo
YXJyYXkpCgkJYS5jb25zdHJ1Y3RvciA9PSBBcnJheSAmJiBhIHx8CgoJCS8vIEhBTkRMRTogJChh
cnJheWxpa2UpCgkJLy8gV2F0Y2ggZm9yIHdoZW4gYW4gYXJyYXktbGlrZSBvYmplY3QgaXMgcGFz
c2VkIGFzIHRoZSBzZWxlY3RvcgoJCShhLmpxdWVyeSB8fCBhLmxlbmd0aCAmJiBhICE9IHdpbmRv
dyAmJiAhYS5ub2RlVHlwZSAmJiBhWzBdICE9IHVuZGVmaW5lZCAmJiBhWzBdLm5vZGVUeXBlKSAm
JiBqUXVlcnkubWFrZUFycmF5KCBhICkgfHwKCgkJLy8gSEFORExFOiAkKCopCgkJWyBhIF0gKTsK
fTsKCQovLyBNYXAgdGhlIGpRdWVyeSBuYW1lc3BhY2UgdG8gdGhlICckJyBvbmUKdmFyICQgPSBq
UXVlcnk7CgpqUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0gewoJanF1ZXJ5OiAiMS4xLjIi
LAoKCXNpemU6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmxlbmd0aDsKCX0sCgkKCWxlbmd0
aDogMCwKCglnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7CgkJcmV0dXJuIG51bSA9PSB1bmRlZmluZWQg
PwoKCQkJLy8gUmV0dXJuIGEgJ2NsZWFuJyBhcnJheQoJCQlqUXVlcnkubWFrZUFycmF5KCB0aGlz
ICkgOgoKCQkJLy8gUmV0dXJuIGp1c3QgdGhlIG9iamVjdAoJCQl0aGlzW251bV07Cgl9LAoJcHVz
aFN0YWNrOiBmdW5jdGlvbiggYSApIHsKCQl2YXIgcmV0ID0galF1ZXJ5KGEpOwoJCXJldC5wcmV2
T2JqZWN0ID0gdGhpczsKCQlyZXR1cm4gcmV0OwoJfSwKCXNldEFycmF5OiBmdW5jdGlvbiggYSAp
IHsKCQl0aGlzLmxlbmd0aCA9IDA7CgkJW10ucHVzaC5hcHBseSggdGhpcywgYSApOwoJCXJldHVy
biB0aGlzOwoJfSwKCWVhY2g6IGZ1bmN0aW9uKCBmbiwgYXJncyApIHsKCQlyZXR1cm4galF1ZXJ5
LmVhY2goIHRoaXMsIGZuLCBhcmdzICk7Cgl9LAoKCWluZGV4OiBmdW5jdGlvbigpIHsgfSwKCglh
dHRyOiBmdW5jdGlvbigga2V5LCB2YWx1ZSwgdHlwZSApIHsKCQl2YXIgb2JqID0ga2V5OwoJCQoJ
CS8vIExvb2sgZm9yIHRoZSBjYXNlIHdoZXJlIHdlJ3JlIGFjY2Vzc2luZyBhIHN0eWxlIHZhbHVl
CgkJaWYgKCBrZXkuY29uc3RydWN0b3IgPT0gU3RyaW5nICkKCQkJaWYgKCB2YWx1ZSA9PSB1bmRl
ZmluZWQgKQoJCQkJcmV0dXJuIHRoaXMubGVuZ3RoICYmIGpRdWVyeVsgdHlwZSB8fCAiYXR0ciIg
XSggdGhpc1swXSwga2V5ICkgfHwgdW5kZWZpbmVkOwoJCQllbHNlIHsKCQkJCW9iaiA9IHt9OwoJ
CQkJb2JqWyBrZXkgXSA9IHZhbHVlOwoJCQl9CgkJCgkJLy8gQ2hlY2sgdG8gc2VlIGlmIHdlJ3Jl
IHNldHRpbmcgc3R5bGUgdmFsdWVzCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpbmRleCl7
CgkJCS8vIFNldCBhbGwgdGhlIHN0eWxlcwoJCQlmb3IgKCB2YXIgcHJvcCBpbiBvYmogKQoJCQkJ
alF1ZXJ5LmF0dHIoCgkJCQkJdHlwZSA/IHRoaXMuc3R5bGUgOiB0aGlzLAoJCQkJCXByb3AsIGpR
dWVyeS5wcm9wKHRoaXMsIG9ialtwcm9wXSwgdHlwZSwgaW5kZXgsIHByb3ApCgkJCQkpOwoJCX0p
OwoJfSwKCgljc3M6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewoJCXJldHVybiB0aGlzLmF0dHIo
IGtleSwgdmFsdWUsICJjdXJDU1MiICk7Cgl9LAoKCXRleHQ6IGZ1bmN0aW9uKCkgeyB9LAoKICAg
IHdyYXA6IGZ1bmN0aW9uKCkgeyB9LAoKCWFwcGVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRo
aXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCAxLCBmdW5jdGlvbihhKXsKCQkJdGhpcy5hcHBl
bmRDaGlsZCggYSApOwoJCX0pOwoJfSwKCXByZXBlbmQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0
aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgLTEsIGZ1bmN0aW9uKGEpewoJCQl0aGlzLmlu
c2VydEJlZm9yZSggYSwgdGhpcy5maXJzdENoaWxkICk7CgkJfSk7Cgl9LAoJYmVmb3JlOiBmdW5j
dGlvbigpIHsKCQlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIGZhbHNlLCAxLCBmdW5j
dGlvbihhKXsKCQkJdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggYSwgdGhpcyApOwoJCX0p
OwoJfSwKCWFmdGVyOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVu
dHMsIGZhbHNlLCAtMSwgZnVuY3Rpb24oYSl7CgkJCXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZv
cmUoIGEsIHRoaXMubmV4dFNpYmxpbmcgKTsKCQl9KTsKCX0sCgllbmQ6IGZ1bmN0aW9uKCkgewoJ
CXJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgalF1ZXJ5KFtdKTsKCX0sCglmaW5kOiBmdW5jdGlv
bih0KSB7CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlv
bihhKXsKCQkJcmV0dXJuIGpRdWVyeS5maW5kKHQsYSk7CgkJfSksIHQgKTsKCX0sCiAgICBjbG9u
ZTogZnVuY3Rpb24oZGVlcCkgewogICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1h
cCggdGhpcywgZnVuY3Rpb24oYSl7CiAgICAgICAgIHZhciBhID0gYS5jbG9uZU5vZGUoIGRlZXAg
IT0gdW5kZWZpbmVkID8gZGVlcCA6IHRydWUgKTsKICAgICAgICAgYS4kZXZlbnRzID0gbnVsbDsg
Ly8gZHJvcCAkZXZlbnRzIGV4cGFuZG8gdG8gYXZvaWQgZmlyaW5nIGluY29ycmVjdCBldmVudHMK
ICAgICAgICAgcmV0dXJuIGE7CiAgICAgfSkgKTsKICAgIH0sCgoJZmlsdGVyOiBmdW5jdGlvbih0
KSB7CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKAoJCQlqUXVlcnkuaXNGdW5jdGlvbiggdCApICYm
CgkJCWpRdWVyeS5ncmVwKHRoaXMsIGZ1bmN0aW9uKGVsLCBpbmRleCl7CgkJCQlyZXR1cm4gdC5h
cHBseShlbCwgW2luZGV4XSkKCQkJfSkgfHwKCgkJCWpRdWVyeS5tdWx0aUZpbHRlcih0LHRoaXMp
ICk7Cgl9LAoKICAgIG5vdDogZnVuY3Rpb24oKSB7IH0sCgoJYWRkOiBmdW5jdGlvbih0KSB7CgkJ
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWVyZ2UoCgkJCXRoaXMuZ2V0KCksCgkJCXQu
Y29uc3RydWN0b3IgPT0gU3RyaW5nID8KCQkJCWpRdWVyeSh0KS5nZXQoKSA6CgkJCQl0Lmxlbmd0
aCAhPSB1bmRlZmluZWQgJiYgKCF0Lm5vZGVOYW1lIHx8IHQubm9kZU5hbWUgPT0gIkZPUk0iKSA/
CgkJCQkJdCA6IFt0XSApCgkJKTsKCX0sCglpczogZnVuY3Rpb24oZXhwcikgewoJCXJldHVybiBl
eHByID8galF1ZXJ5LmZpbHRlcihleHByLHRoaXMpLnIubGVuZ3RoID4gMCA6IGZhbHNlOwoJfSwK
Cgl2YWw6IGZ1bmN0aW9uKCB2YWwgKSB7CgkJcmV0dXJuIHZhbCA9PSB1bmRlZmluZWQgPwoJCQko
IHRoaXMubGVuZ3RoID8gdGhpc1swXS52YWx1ZSA6IG51bGwgKSA6CgkJCXRoaXMuYXR0ciggInZh
bHVlIiwgdmFsICk7Cgl9LAoKICAgIGh0bWw6IGZ1bmN0aW9uKCB2YWwgKSB7CiAgICAgcmV0dXJu
IHZhbCA9PSB1bmRlZmluZWQgPwogICAgICAgICAoIHRoaXMubGVuZ3RoID8gdGhpc1swXS5pbm5l
ckhUTUwgOiBudWxsICkgOgogICAgICAgICB0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWwgKTsKICAg
IH0sCglkb21NYW5pcDogZnVuY3Rpb24oYXJncywgdGFibGUsIGRpciwgZm4pewoJCXZhciBjbG9u
ZSA9IHRoaXMubGVuZ3RoID4gMTsgCgkJdmFyIGEgPSBqUXVlcnkuY2xlYW4oYXJncyk7CgkJaWYg
KCBkaXIgPCAwICkKCQkJYS5yZXZlcnNlKCk7CgoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
KXsKCQkJdmFyIG9iaiA9IHRoaXM7CgoJCQlpZiAoIHRhYmxlICYmIGpRdWVyeS5ub2RlTmFtZSh0
aGlzLCAidGFibGUiKSAmJiBqUXVlcnkubm9kZU5hbWUoYVswXSwgInRyIikgKQoJCQkJb2JqID0g
dGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXSB8fCB0aGlzLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOwoKCQkJalF1ZXJ5LmVhY2goIGEsIGZ1
bmN0aW9uKCl7CgkJCQlmbi5hcHBseSggb2JqLCBbIGNsb25lID8gdGhpcy5jbG9uZU5vZGUodHJ1
ZSkgOiB0aGlzIF0gKTsKCQkJfSk7CgoJCX0pOwoJfQp9OwoKalF1ZXJ5LmV4dGVuZCA9IGpRdWVy
eS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHsKIC8vIGNvcHkgcmVmZXJlbmNlIHRvIHRhcmdldCBv
YmplY3QKIHZhciB0YXJnZXQgPSBhcmd1bWVudHNbMF0sCiAgICAgYSA9IDE7CgogLy8gZXh0ZW5k
IGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCiBpZiAoIGFyZ3Vt
ZW50cy5sZW5ndGggPT0gMSApIHsKICAgICB0YXJnZXQgPSB0aGlzOwogICAgIGEgPSAwOwogfQog
dmFyIHByb3A7CiB3aGlsZSAocHJvcCA9IGFyZ3VtZW50c1thKytdKQogICAgIC8vIEV4dGVuZCB0
aGUgYmFzZSBvYmplY3QKICAgICBmb3IgKCB2YXIgaSBpbiBwcm9wICkgdGFyZ2V0W2ldID0gcHJv
cFtpXTsKCiAvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdAogcmV0dXJuIHRhcmdldDsKfTsK
CmpRdWVyeS5leHRlbmQoeyAKIC8vIFRoaXMgbWF5IHNlZW0gbGlrZSBzb21lIGNyYXp5IGNvZGUs
IGJ1dCB0cnVzdCBtZSB3aGVuIEkgc2F5IHRoYXQgdGhpcwogLy8gaXMgdGhlIG9ubHkgY3Jvc3Mt
YnJvd3NlciB3YXkgdG8gZG8gdGhpcy4gLS1Kb2huCiBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggZm4g
KSB7CiAgICAgcmV0dXJuICEhZm4gJiYgdHlwZW9mIGZuICE9ICJzdHJpbmciICYmICFmbi5ub2Rl
TmFtZSAmJiAKICAgICAgICAgdHlwZW9mIGZuWzBdID09ICJ1bmRlZmluZWQiICYmIC9mdW5jdGlv
bi9pLnRlc3QoIGZuICsgIiIgKTsKIH0sCgogLy8gYXJncyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ug
b25seQogZWFjaDogZnVuY3Rpb24oIG9iaiwgZm4sIGFyZ3MgKSB7CiAgICAgaWYgKCBvYmoubGVu
Z3RoID09IHVuZGVmaW5lZCApCiAgICAgICAgIGZvciAoIHZhciBpIGluIG9iaiApCiAgICAgICAg
ICAgICBmbi5hcHBseSggb2JqW2ldLCBhcmdzIHx8IFtpLCBvYmpbaV1dICk7CiAgICAgZWxzZQog
ICAgICAgICBmb3IgKCB2YXIgaSA9IDAsIG9sID0gb2JqLmxlbmd0aDsgaSA8IG9sOyBpKysgKQog
ICAgICAgICAgICAgaWYgKCBmbi5hcHBseSggb2JqW2ldLCBhcmdzIHx8IFtpLCBvYmpbaV1dICkg
PT09IGZhbHNlICkgYnJlYWs7CiAgICAgcmV0dXJuIG9iajsKIH0sCgogY2xhc3NOYW1lOiB7CiAg
ICAgLy8gaW50ZXJuYWwgb25seSwgdXNlIGFkZENsYXNzKCJjbGFzcyIpCiAgICAgYWRkOiBmdW5j
dGlvbiggZWxlbSwgYyApewogICAgICAgICBqUXVlcnkuZWFjaCggYy5zcGxpdCgvXHMrLyksIGZ1
bmN0aW9uKGksIGN1cil7CiAgICAgICAgICAgICBpZiAoICFqUXVlcnkuY2xhc3NOYW1lLmhhcygg
ZWxlbS5jbGFzc05hbWUsIGN1ciApICkKICAgICAgICAgICAgICAgICBlbGVtLmNsYXNzTmFtZSAr
PSAoIGVsZW0uY2xhc3NOYW1lID8gIiAiIDogIiIgKSArIGN1cjsKICAgICAgICAgfSk7CiAgICAg
fSwKCiAgICAgLy8gaW50ZXJuYWwgb25seSwgdXNlIHJlbW92ZUNsYXNzKCJjbGFzcyIpCiAgICAg
cmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgYyApewogICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGMg
PwogICAgICAgICAgICAgalF1ZXJ5LmdyZXAoIGVsZW0uY2xhc3NOYW1lLnNwbGl0KC9ccysvKSwg
ZnVuY3Rpb24oY3VyKXsKICAgICAgICAgICAgICAgICByZXR1cm4gIWpRdWVyeS5jbGFzc05hbWUu
aGFzKCBjLCBjdXIgKTsgCiAgICAgICAgICAgICB9KS5qb2luKCIgIikgOiAiIjsKICAgICB9LAoK
ICAgICAvLyBpbnRlcm5hbCBvbmx5LCB1c2UgaXMoIi5jbGFzcyIpCiAgICAgaGFzOiBmdW5jdGlv
biggdCwgYyApIHsKICAgICAgICAgdCA9IHQuY2xhc3NOYW1lIHx8IHQ7CiAgICAgICAgIC8vIGVz
Y2FwZSByZWdleCBjaGFyYWN0ZXJzCiAgICAgICAgIGMgPSBjLnJlcGxhY2UoLyhbXC5cXFwrXCpc
P1xbXF5cXVwkXChcKVx7XH1cPVwhXDxcPlx8XDpdKS9nLCAiXFwkMSIpOwogICAgICAgICByZXR1
cm4gdCAmJiBuZXcgUmVnRXhwKCIoXnxcXHMpIiArIGMgKyAiKFxcc3wkKSIpLnRlc3QoIHQgKTsK
ICAgICB9CiB9LAp9KTsKIApuZXcgZnVuY3Rpb24oKSB7Cgl2YXIgYiA9IG5hdmlnYXRvci51c2Vy
QWdlbnQudG9Mb3dlckNhc2UoKTsKCgkvLyBGaWd1cmUgb3V0IHdoYXQgYnJvd3NlciBpcyBiZWlu
ZyB1c2VkCglqUXVlcnkuYnJvd3NlciA9IHsKCQlzYWZhcmk6IC93ZWJraXQvLnRlc3QoYiksCgkJ
b3BlcmE6IC9vcGVyYS8udGVzdChiKSwKCQltc2llOiAvbXNpZS8udGVzdChiKSAmJiAhL29wZXJh
Ly50ZXN0KGIpLAoJCW1vemlsbGE6IC9tb3ppbGxhLy50ZXN0KGIpICYmICEvKGNvbXBhdGlibGV8
d2Via2l0KS8udGVzdChiKQoJfTsKCgkvLyBDaGVjayB0byBzZWUgaWYgdGhlIFczQyBib3ggbW9k
ZWwgaXMgYmVpbmcgdXNlZAoJalF1ZXJ5LmJveE1vZGVsID0gIWpRdWVyeS5icm93c2VyLm1zaWUg
fHwgZG9jdW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCI7Cn07CgpqUXVlcnkuZWFjaCh7
CglwYXJlbnQ6ICJhLnBhcmVudE5vZGUiLAoJcGFyZW50czogImpRdWVyeS5wYXJlbnRzKGEpIiwK
CW5leHQ6ICJqUXVlcnkubnRoKGEsMiwnbmV4dFNpYmxpbmcnKSIsCglwcmV2OiAialF1ZXJ5Lm50
aChhLDIsJ3ByZXZpb3VzU2libGluZycpIiwKCXNpYmxpbmdzOiAialF1ZXJ5LnNpYmxpbmcoYS5w
YXJlbnROb2RlLmZpcnN0Q2hpbGQsYSkiLAoJY2hpbGRyZW46ICJqUXVlcnkuc2libGluZyhhLmZp
cnN0Q2hpbGQpIgp9LCBmdW5jdGlvbihpLG4pewoJalF1ZXJ5LmZuWyBpIF0gPSBmdW5jdGlvbihh
KSB7CgkJdmFyIHJldCA9IGpRdWVyeS5tYXAodGhpcyxuKTsKCQlpZiAoIGEgJiYgdHlwZW9mIGEg
PT0gInN0cmluZyIgKQoJCQlyZXQgPSBqUXVlcnkubXVsdGlGaWx0ZXIoYSxyZXQpOwoJCXJldHVy
biB0aGlzLnB1c2hTdGFjayggcmV0ICk7Cgl9Owp9KTsKCmpRdWVyeS5lYWNoKHsKIGFwcGVuZFRv
OiAiYXBwZW5kIiwKIHByZXBlbmRUbzogInByZXBlbmQiLAogaW5zZXJ0QmVmb3JlOiAiYmVmb3Jl
IiwKIGluc2VydEFmdGVyOiAiYWZ0ZXIiCn0sIGZ1bmN0aW9uKGksbil7CiBqUXVlcnkuZm5bIGkg
XSA9IGZ1bmN0aW9uKCl7CiAgICAgdmFyIGEgPSBhcmd1bWVudHM7CiAgICAgcmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbigpewogICAgICAgICBmb3IgKCB2YXIgaiA9IDAsIGFsID0gYS5sZW5ndGg7
IGogPCBhbDsgaisrICkKICAgICAgICAgICAgIGpRdWVyeShhW2pdKVtuXSggdGhpcyApOwogICAg
IH0pOwogfTsKfSk7CgpqUXVlcnkuZWFjaCggewoJcmVtb3ZlQXR0cjogZnVuY3Rpb24oIGtleSAp
IHsKCQlqUXVlcnkuYXR0ciggdGhpcywga2V5LCAiIiApOwoJCXRoaXMucmVtb3ZlQXR0cmlidXRl
KCBrZXkgKTsKCX0sCglhZGRDbGFzczogZnVuY3Rpb24oYyl7CgkJalF1ZXJ5LmNsYXNzTmFtZS5h
ZGQodGhpcyxjKTsKCX0sCglyZW1vdmVDbGFzczogZnVuY3Rpb24oYyl7CgkJalF1ZXJ5LmNsYXNz
TmFtZS5yZW1vdmUodGhpcyxjKTsKCX0sCgl0b2dnbGVDbGFzczogZnVuY3Rpb24oIGMgKXsKCQlq
UXVlcnkuY2xhc3NOYW1lWyBqUXVlcnkuY2xhc3NOYW1lLmhhcyh0aGlzLGMpID8gInJlbW92ZSIg
OiAiYWRkIiBdKHRoaXMsIGMpOwoJfSwKCXJlbW92ZTogZnVuY3Rpb24oYSl7CgkJaWYgKCAhYSB8
fCBqUXVlcnkuZmlsdGVyKCBhLCBbdGhpc10gKS5yLmxlbmd0aCApCgkJCXRoaXMucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCggdGhpcyApOwoJfSwKCWVtcHR5OiBmdW5jdGlvbigpIHsKCQl3aGlsZSAo
IHRoaXMuZmlyc3RDaGlsZCApCgkJCXRoaXMucmVtb3ZlQ2hpbGQoIHRoaXMuZmlyc3RDaGlsZCAp
OwoJfQp9LCBmdW5jdGlvbihpLG4pewoJalF1ZXJ5LmZuWyBpIF0gPSBmdW5jdGlvbigpIHsKCQly
ZXR1cm4gdGhpcy5lYWNoKCBuLCBhcmd1bWVudHMgKTsKCX07Cn0pOwoKalF1ZXJ5LmVhY2goIFsg
ImVxIiwgImx0IiwgImd0IiwgImNvbnRhaW5zIiBdLCBmdW5jdGlvbihpLG4pewogalF1ZXJ5LmZu
WyBuIF0gPSBmdW5jdGlvbihudW0sZm4pIHsKICAgICByZXR1cm4gdGhpcy5maWx0ZXIoICI6IiAr
IG4gKyAiKCIgKyBudW0gKyAiKSIsIGZuICk7CiB9Owp9KTsKCmpRdWVyeS5lYWNoKCBbICJoZWln
aHQiLCAid2lkdGgiIF0sIGZ1bmN0aW9uKGksbil7CiBqUXVlcnkuZm5bIG4gXSA9IGZ1bmN0aW9u
KGgpIHsKICAgICByZXR1cm4gaCA9PSB1bmRlZmluZWQgPwogICAgICAgICAoIHRoaXMubGVuZ3Ro
ID8galF1ZXJ5LmNzcyggdGhpc1swXSwgbiApIDogbnVsbCApIDoKICAgICAgICAgdGhpcy5jc3Mo
IG4sIGguY29uc3RydWN0b3IgPT0gU3RyaW5nID8gaCA6IGggKyAicHgiICk7CiB9Owp9KTsKCmpR
dWVyeS5ldmVudCA9IHsKCgkvLyBCaW5kIGFuIGV2ZW50IHRvIGFuIGVsZW1lbnQKCS8vIE9yaWdp
bmFsIGJ5IERlYW4gRWR3YXJkcwoJYWRkOiBmdW5jdGlvbihlbGVtZW50LCB0eXBlLCBoYW5kbGVy
LCBkYXRhKSB7CgkJLy8gRm9yIHdoYXRldmVyIHJlYXNvbiwgSUUgaGFzIHRyb3VibGUgcGFzc2lu
ZyB0aGUgd2luZG93IG9iamVjdAoJCS8vIGFyb3VuZCwgY2F1c2luZyBpdCB0byBiZSBjbG9uZWQg
aW4gdGhlIHByb2Nlc3MKCQlpZiAoIGpRdWVyeS5icm93c2VyLm1zaWUgJiYgZWxlbWVudC5zZXRJ
bnRlcnZhbCAhPSB1bmRlZmluZWQgKQoJCQllbGVtZW50ID0gd2luZG93OwoKCQkvLyBpZiBkYXRh
IGlzIHBhc3NlZCwgYmluZCB0byBoYW5kbGVyCgkJaWYoIGRhdGEgKSAKCQkJaGFuZGxlci5kYXRh
ID0gZGF0YTsKCgkJLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGJlaW5nIGV4ZWN1dGVk
IGhhcyBhIHVuaXF1ZSBJRAoJCWlmICggIWhhbmRsZXIuZ3VpZCApCgkJCWhhbmRsZXIuZ3VpZCA9
IHRoaXMuZ3VpZCsrOwoKCQkvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlCgkJ
aWYgKCFlbGVtZW50LiRldmVudHMpCgkJCWVsZW1lbnQuJGV2ZW50cyA9IHt9OwoKCQkvLyBHZXQg
dGhlIGN1cnJlbnQgbGlzdCBvZiBmdW5jdGlvbnMgYm91bmQgdG8gdGhpcyBldmVudAoJCXZhciBo
YW5kbGVycyA9IGVsZW1lbnQuJGV2ZW50c1t0eXBlXTsKCgkJLy8gSWYgaXQgaGFzbid0IGJlZW4g
aW5pdGlhbGl6ZWQgeWV0CgkJaWYgKCFoYW5kbGVycykgewoJCQkvLyBJbml0IHRoZSBldmVudCBo
YW5kbGVyIHF1ZXVlCgkJCWhhbmRsZXJzID0gZWxlbWVudC4kZXZlbnRzW3R5cGVdID0ge307CgoJ
CQkvLyBSZW1lbWJlciBhbiBleGlzdGluZyBoYW5kbGVyLCBpZiBpdCdzIGFscmVhZHkgdGhlcmUK
CQkJaWYgKGVsZW1lbnRbIm9uIiArIHR5cGVdKQoJCQkJaGFuZGxlcnNbMF0gPSBlbGVtZW50WyJv
biIgKyB0eXBlXTsKCQl9CgoJCS8vIEFkZCB0aGUgZnVuY3Rpb24gdG8gdGhlIGVsZW1lbnQncyBo
YW5kbGVyIGxpc3QKCQloYW5kbGVyc1toYW5kbGVyLmd1aWRdID0gaGFuZGxlcjsKCgkJLy8gQW5k
IGJpbmQgdGhlIGdsb2JhbCBldmVudCBoYW5kbGVyIHRvIHRoZSBlbGVtZW50CgkJZWxlbWVudFsi
b24iICsgdHlwZV0gPSB0aGlzLmhhbmRsZTsKCgkJLy8gUmVtZW1iZXIgdGhlIGZ1bmN0aW9uIGlu
IGEgZ2xvYmFsIGxpc3QgKGZvciB0cmlnZ2VyaW5nKQoJCWlmICghdGhpcy5nbG9iYWxbdHlwZV0p
CgkJCXRoaXMuZ2xvYmFsW3R5cGVdID0gW107CgkJdGhpcy5nbG9iYWxbdHlwZV0ucHVzaCggZWxl
bWVudCApOwoJfSwKCglndWlkOiAxLAoJZ2xvYmFsOiB7fSwKfTsKCmpRdWVyeS5mbi5leHRlbmQo
ewogYmluZDogZnVuY3Rpb24oIHR5cGUsIGRhdGEsIGZuICkgewogICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXsKICAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZSwgZm4g
fHwgZGF0YSwgZGF0YSApOwogICAgIH0pOwogfSwKIG9uZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEs
IGZuICkgewogICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgalF1ZXJ5
LmV2ZW50LmFkZCggdGhpcywgdHlwZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGpR
dWVyeSh0aGlzKS51bmJpbmQoZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuIChmbiB8fCBkYXRh
KS5hcHBseSggdGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgfSwgZGF0YSk7CiAgICAgfSk7CiB9
LAogdW5iaW5kOiBmdW5jdGlvbiggdHlwZSwgZm4gKSB7CiAgICAgcmV0dXJuIHRoaXMuZWFjaChm
dW5jdGlvbigpewogICAgICAgICBqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlLCBmbiAp
OwogICAgIH0pOwogfSwKIHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgewogICAgIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIo
IHR5cGUsIGRhdGEsIHRoaXMgKTsKICAgICB9KTsKIH0sCiByZWFkeTogZnVuY3Rpb24oZikgewog
ICAgIC8vIElmIHRoZSBET00gaXMgYWxyZWFkeSByZWFkeQogICAgIGlmICggalF1ZXJ5LmlzUmVh
ZHkgKQogICAgICAgICAvLyBFeGVjdXRlIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseQogICAgICAg
ICBmLmFwcGx5KCBkb2N1bWVudCwgW2pRdWVyeV0gKTsKICAgICAgICAgCiAgICAgLy8gT3RoZXJ3
aXNlLCByZW1lbWJlciB0aGUgZnVuY3Rpb24gZm9yIGxhdGVyCiAgICAgZWxzZSB7CiAgICAgICAg
IC8vIEFkZCB0aGUgZnVuY3Rpb24gdG8gdGhlIHdhaXQgbGlzdAogICAgICAgICBqUXVlcnkucmVh
ZHlMaXN0LnB1c2goIGZ1bmN0aW9uKCkgeyByZXR1cm4gZi5hcHBseSh0aGlzLCBbalF1ZXJ5XSkg
fSApOwogICAgIH0KIAogICAgIHJldHVybiB0aGlzOwogfQp9KTsKCmpRdWVyeS5leHRlbmQoewog
LyoKICAqIEFsbCB0aGUgY29kZSB0aGF0IG1ha2VzIERPTSBSZWFkeSB3b3JrIG5pY2VseS4KICAq
LwogaXNSZWFkeTogZmFsc2UsCiByZWFkeUxpc3Q6IFtdLAogCiAvLyBIYW5kbGUgd2hlbiB0aGUg
RE9NIGlzIHJlYWR5CiByZWFkeTogZnVuY3Rpb24oKSB7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIERPTSBpcyBub3QgYWxyZWFkeSBsb2FkZWQKICAgICBpZiAoICFqUXVlcnkuaXNSZWFkeSAp
IHsKICAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5CiAgICAgICAgIGpR
dWVyeS5pc1JlYWR5ID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBm
dW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGUKICAgICAgICAgaWYgKCBqUXVlcnkucmVhZHlMaXN0
ICkgewogICAgICAgICAgICAgLy8gRXhlY3V0ZSBhbGwgb2YgdGhlbQogICAgICAgICAgICAgalF1
ZXJ5LmVhY2goIGpRdWVyeS5yZWFkeUxpc3QsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAg
dGhpcy5hcHBseSggZG9jdW1lbnQgKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBSZXNldCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMKICAgICAgICAgICAgIGpR
dWVyeS5yZWFkeUxpc3QgPSBudWxsOwogICAgICAgICB9CiAgICAgfQogfQp9KTsKCm5ldyBmdW5j
dGlvbigpewoKIGpRdWVyeS5lYWNoKCAoImJsdXIsZm9jdXMsbG9hZCxyZXNpemUsc2Nyb2xsLHVu
bG9hZCxjbGljayxkYmxjbGljaywiICsKICAgICAibW91c2Vkb3duLG1vdXNldXAsbW91c2Vtb3Zl
LG1vdXNlb3Zlcixtb3VzZW91dCxjaGFuZ2Usc2VsZWN0LCIgKyAKICAgICAic3VibWl0LGtleWRv
d24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLCBmdW5jdGlvbihpLG8pewogICAg
IAogICAgIC8vIEhhbmRsZSBldmVudCBiaW5kaW5nCiAgICAgalF1ZXJ5LmZuW29dID0gZnVuY3Rp
b24oZil7CiAgICAgICAgIHJldHVybiBmID8gdGhpcy5iaW5kKG8sIGYpIDogdGhpcy50cmlnZ2Vy
KG8pOwogICAgIH07CiAgICAgICAgIAogfSk7CiAKIC8vIElmIE1vemlsbGEgaXMgdXNlZAogaWYg
KCBqUXVlcnkuYnJvd3Nlci5tb3ppbGxhIHx8IGpRdWVyeS5icm93c2VyLm9wZXJhICkKICAgICAv
LyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCiAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBqUXVlcnkucmVhZHksIGZhbHNlICk7CiAKIC8vIElm
IElFIGlzIHVzZWQsIHVzZSB0aGUgZXhjZWxsZW50IGhhY2sgYnkgTWF0dGhpYXMgTWlsbGVyCiAv
LyBodHRwOi8vd3d3Lm91dG9maGFud2VsbC5jb20vYmxvZy9pbmRleC5waHA/dGl0bGU9dGhlX3dp
bmRvd19vbmxvYWRfcHJvYmxlbV9yZXZpc2l0ZWQKIGVsc2UgaWYgKCBqUXVlcnkuYnJvd3Nlci5z
YWZhcmkgKQogICAgIC8vIENvbnRpbnVhbGx5IGNoZWNrIHRvIHNlZSBpZiB0aGUgZG9jdW1lbnQu
cmVhZHlTdGF0ZSBpcyB2YWxpZAogICAgIGpRdWVyeS5zYWZhcmlUaW1lciA9IHNldEludGVydmFs
KGZ1bmN0aW9uKCl7CiAgICAgICAgIC8vIGxvYWRlZCBhbmQgY29tcGxldGUgYXJlIGJvdGggdmFs
aWQgc3RhdGVzCiAgICAgICAgIGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PSAibG9hZGVkIiB8
fCAKICAgICAgICAgICAgIGRvY3VtZW50LnJlYWR5U3RhdGUgPT0gImNvbXBsZXRlIiApIHsKIAog
ICAgICAgICAgICAgLy8gSWYgZWl0aGVyIG9uZSBhcmUgZm91bmQsIHJlbW92ZSB0aGUgdGltZXIK
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoIGpRdWVyeS5zYWZhcmlUaW1lciApOwogICAgICAg
ICAgICAgalF1ZXJ5LnNhZmFyaVRpbWVyID0gbnVsbDsKIAogICAgICAgICAgICAgLy8gYW5kIGV4
ZWN1dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zCiAgICAgICAgICAgICBqUXVlcnkucmVhZHkoKTsK
ICAgICAgICAgfQogICAgIH0sIDEwKTsKfTsKCmZ1bmN0aW9uIGZvcm1fc2V0dXBBdXRvU3VibWl0
KCkgeyB9CgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZvcm1fc2V0dXBBdXRvU3VibWl0KTsKCmZ1
bmN0aW9uIHplYnJhX3N0cmlwZSgpIHsgfQoKalF1ZXJ5KGRvY3VtZW50KS5yZWFkeSh6ZWJyYV9z
dHJpcGUpOwoKLy8gVVBHUkFERTogVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGUgaGVscGVycyBzaG91
bGQgbm93IGJlIHVzZWQgYXM6Ci8vIC5hdHRyKCJ0aXRsZSIpIG9yIC5hdHRyKCJ0aXRsZSIsIm5l
dyB0aXRsZSIpCmpRdWVyeS5lYWNoKFsiaWQiLCJ0aXRsZSIsIm5hbWUiLCJocmVmIiwic3JjIiwi
cmVsIl0sIGZ1bmN0aW9uKGksbil7CiAgalF1ZXJ5LmZuWyBuIF0gPSBmdW5jdGlvbihoKSB7CiAg
ICByZXR1cm4gaCA9PSB1bmRlZmluZWQgPwogICAgICB0aGlzLmxlbmd0aCA/IHRoaXNbMF1bbl0g
OiBudWxsIDoKICAgICAgdGhpcy5hdHRyKCBuLCBoICk7CiAgfTsKfSk7CgovLyBVUEdSQURFOiBU
aGUgZm9sbG93aW5nIGNzcyBoZWxwZXJzIHNob3VsZCBub3cgYmUgdXNlZCBhczoKLy8gLmNzcygi
dG9wIikgb3IgLmNzcygidG9wIiwiMzBweCIpCmpRdWVyeS5lYWNoKCJ0b3AsbGVmdCxwb3NpdGlv
bixmbG9hdCxvdmVyZmxvdyxjb2xvcixiYWNrZ3JvdW5kIi5zcGxpdCgiLCIpLCBmdW5jdGlvbihp
LG4pewogIGpRdWVyeS5mblsgbiBdID0gZnVuY3Rpb24oaCkgewogICAgcmV0dXJuIGggPT0gdW5k
ZWZpbmVkID8KICAgICAgKCB0aGlzLmxlbmd0aCA/IGpRdWVyeS5jc3MoIHRoaXNbMF0sIG4gKSA6
IG51bGwgKSA6CiAgICAgIHRoaXMuY3NzKCBuLCBoICk7CiAgfTsKfSk7CgovLyBVUEdSQURFOiBU
aGUgZm9sbG93aW5nIGV2ZW50IGhlbHBlcnMgc2hvdWxkIG5vdyBiZSB1c2VkIGFzIHN1Y2g6Ci8v
IC5vbmVibHVyKGZuKSAtPiAub25lKCJibHVyIixmbikKLy8gLnVuYmx1cihmbikgLT4gLnVuYmlu
ZCgiYmx1ciIsZm4pCnZhciBlID0gKCJibHVyLGZvY3VzLGxvYWQscmVzaXplLHNjcm9sbCx1bmxv
YWQsY2xpY2ssZGJsY2xpY2ssIiArCiAgIm1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3Vz
ZW92ZXIsbW91c2VvdXQsY2hhbmdlLHJlc2V0LHNlbGVjdCwiICsgCiAgInN1Ym1pdCxrZXlkb3du
LGtleXByZXNzLGtleXVwLGVycm9yIikuc3BsaXQoIiwiKTsKCi8vIEdvIHRocm91Z2ggYWxsIHRo
ZSBldmVudCBuYW1lcywgYnV0IG1ha2Ugc3VyZSB0aGF0Ci8vIGl0IGlzIGVuY2xvc2VkIHByb3Bl
cmx5CmZvciAoIHZhciBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKysgKSBuZXcgZnVuY3Rpb24oKXsK
ICAgICAgCiAgdmFyIG8gPSBlW2ldOwogICAgCiAgLy8gSGFuZGxlIGV2ZW50IHVuYmluZGluZwog
IGpRdWVyeS5mblsidW4iK29dID0gZnVuY3Rpb24oKSB7IH07CiAgICAKICAvLyBGaW5hbGx5LCBo
YW5kbGUgZXZlbnRzIHRoYXQgb25seSBmaXJlIG9uY2UKICBqUXVlcnkuZm5bIm9uZSIrb10gPSBm
dW5jdGlvbigpIHsgfTsKfTsKCiQoZm9ybV9zZXR1cEF1dG9TdWJtaXQpCjwvc2NyaXB0Pgo8L2hl
YWQ+Cjxib2R5Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23157</attachid>
            <date>2008-09-03 21:19:35 -0700</date>
            <delta_ts>2008-09-03 21:19:35 -0700</delta_ts>
            <desc>CodeBlock dump</desc>
            <filename>dump.txt</filename>
            <type>text/plain</type>
            <size>3447</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">ODUgaW5zdHJ1Y3Rpb25zOyAxNDYwIGJ5dGVzIGF0IDB4MTU2MjMyYzA7IDQgbG9jYWxzICgzIHBh
cmFtZXRlcnMpOyAyNSB0ZW1wb3JhcmllcwoKWyAgIDBdIGdldF9zY29wZWRfdmFyCSB0cjcsIC02
LCAwClsgICA0XSBlcQkJIHRyNywgdHI3LCBscjQKWyAgIDhdIGpmYWxzZQkJIHRyNywgMTgoLT4y
OCkKWyAgMTFdIGdldF9zY29wZWRfdmFyCSB0cjcsIC05LCAwClsgIDE1XSBtb3YJCSB0cjE4LCBs
cjMKWyAgMThdIG1vdgkJIHRyMTksIGxyMgpbICAyMV0gY29uc3RydWN0CSB0cjcsIHRyNywgMTcs
IDMKWyAgMjZdIHJldAkJIHRyNwpbICAyOF0gbW92CQkgdHI3LCBscjMKWyAgMzFdIGp0cnVlCQkg
dHI3LCA1KC0+MzgpClsgIDM0XSBnZXRfc2NvcGVkX3ZhcgkgdHI3LCAtNSwgMApbICAzOF0gbW92
CQkgbHIzLCB0cjcKWyAgNDFdIGdldF9zY29wZWRfdmFyCSB0cjcsIC05LCAwClsgIDQ1XSBnZXRf
YnlfaWRfc2VsZgkgdHI4LCB0cjcsIGlzRnVuY3Rpb24oQGlkMCkKWyAgNTNdIG1vdgkJIHRyMTks
IGxyMwpbICA1Nl0gY2FsbAkJIHRyNywgdHI4LCB0cjcsIDE4LCAyClsgIDYyXSBqZmFsc2UJCSB0
cjcsIDYwKC0+MTI0KQpbICA2NV0gZ2V0X3Njb3BlZF92YXIJIHRyNywgLTksIDAKWyAgNjldIGdl
dF9zY29wZWRfdmFyCSB0cjE4LCAtNSwgMApbICA3M10gY29uc3RydWN0CSB0cjcsIHRyNywgMTcs
IDIKWyAgNzhdIGdldF9zY29wZWRfdmFyCSB0cjksIC05LCAwClsgIDgyXSBnZXRfYnlfaWQJIHRy
OSwgdHI5LCBmbihAaWQxKQpbICA5MF0gZ2V0X2J5X2lkCSB0cjksIHRyOSwgcmVhZHkoQGlkMikK
WyAgOThdIGpmYWxzZQkJIHRyOSwgNigtPjEwNikKWyAxMDFdIG1vdgkJIHRyOCwgdHIwClsgMTA0
XSBqbXAJCSA0KC0+MTA5KQpbIDEwNl0gbW92CQkgdHI4LCB0cjEKWyAxMDldIGdldF9ieV92YWwJ
IHRyOCwgdHI3LCB0cjgKWyAxMTNdIG1vdgkJIHRyMTksIGxyMwpbIDExNl0gY2FsbAkJIHRyNywg
dHI4LCB0cjcsIDE4LCAyClsgMTIyXSByZXQJCSB0cjcKWyAxMjRdIHR5cGVvZgkJIHRyNywgbHIz
ClsgMTI3XSBlcQkJIHRyNywgdHI3LCB0cjIKWyAxMzFdIGpmYWxzZQkJIHRyNywgODMoLT4yMTYp
ClsgMTM0XSBuZXdfcmVnZXhwCSB0cjcsIC9eW148XSooPCgufFxzKSs+KVtePl0qJC8oQHJlMCkK
WyAxMzddIGdldF9ieV9pZAkgdHI4LCB0cjcsIGV4ZWMoQGlkMykKWyAxNDVdIG1vdgkJIHRyMTks
IGxyMwpbIDE0OF0gY2FsbAkJIGxyMSwgdHI4LCB0cjcsIDE4LCAyClsgMTU0XSBqZmFsc2UJCSBs
cjEsIDI5KC0+MTg1KQpbIDE1N10gZ2V0X3Njb3BlZF92YXIJIHRyNywgLTksIDAKWyAxNjFdIGdl
dF9ieV9pZAkgdHI4LCB0cjcsIGNsZWFuKEBpZDQpClsgMTY5XSBnZXRfYnlfdmFsCSB0cjIwLCBs
cjEsIHRyMwpbIDE3M10gbmV3X2FycmF5CSB0cjE5LCB0cjIwLCAxClsgMTc3XSBjYWxsCQkgbHIz
LCB0cjgsIHRyNywgMTgsIDIKWyAxODNdIGptcAkJIDMyKC0+MjE2KQpbIDE4NV0gZ2V0X3Njb3Bl
ZF92YXIJIHRyNywgLTksIDAKWyAxODldIG1vdgkJIHRyMTgsIGxyMgpbIDE5Ml0gY29uc3RydWN0
CSB0cjcsIHRyNywgMTcsIDIKWyAxOTddIGdldF9ieV9pZAkgdHI4LCB0cjcsIGZpbmQoQGlkNSkK
WyAyMDVdIG1vdgkJIHRyMTksIGxyMwpbIDIwOF0gY2FsbAkJIHRyNywgdHI4LCB0cjcsIDE4LCAy
ClsgMjE0XSByZXQJCSB0cjcKWyAyMTZdIGdldF9ieV9pZF9wcm90bwkgdHI3LCBscjQsIHNldEFy
cmF5KEBpZDYpClsgMjI0XSBnZXRfYnlfaWRfZ2VuZXJpYwkgdHIxOSwgbHIzLCBjb25zdHJ1Y3Rv
cihAaWQ3KQpbIDIzMl0gcmVzb2x2ZV9za2lwCSB0cjIwLCBBcnJheShAaWQ4KSwgMApbIDIzNl0g
ZXEJCSB0cjE4LCB0cjE5LCB0cjIwClsgMjQwXSBqZmFsc2UJCSB0cjE4LCA0KC0+MjQ2KQpbIDI0
M10gbW92CQkgdHIxOCwgbHIzClsgMjQ2XSBqdHJ1ZQkJIHRyMTgsIDk5KC0+MzQ3KQpbIDI0OV0g
Z2V0X2J5X2lkX2dlbmVyaWMJIHRyMTgsIGxyMywganF1ZXJ5KEBpZDkpClsgMjU3XSBqdHJ1ZQkJ
IHRyMTgsIDY0KC0+MzIzKQpbIDI2MF0gZ2V0X2J5X2lkX2dlbmVyaWMJIHRyMTgsIGxyMywgbGVu
Z3RoKEBpZDEwKQpbIDI2OF0gamZhbHNlCQkgdHIxOCwgOSgtPjI3OSkKWyAyNzFdIGdldF9zY29w
ZWRfdmFyCSB0cjE5LCAtNiwgMApbIDI3NV0gbmVxCQkgdHIxOCwgbHIzLCB0cjE5ClsgMjc5XSBq
ZmFsc2UJCSB0cjE4LCAxMigtPjI5MykKWyAyODJdIGdldF9ieV9pZAkgdHIxOSwgbHIzLCBub2Rl
VHlwZShAaWQxMSkKWyAyOTBdIG5vdAkJIHRyMTgsIHRyMTkKWyAyOTNdIGpmYWxzZQkJIHRyMTgs
IDEzKC0+MzA4KQpbIDI5Nl0gZ2V0X2J5X3ZhbAkgdHIxOSwgbHIzLCB0cjQKWyAzMDBdIGdldF9z
Y29wZWRfdmFyCSB0cjIwLCAtNCwgMApbIDMwNF0gbmVxCQkgdHIxOCwgdHIxOSwgdHIyMApbIDMw
OF0gamZhbHNlCQkgdHIxOCwgMTMoLT4zMjMpClsgMzExXSBnZXRfYnlfdmFsCSB0cjE5LCBscjMs
IHRyNApbIDMxNV0gZ2V0X2J5X2lkCSB0cjE4LCB0cjE5LCBub2RlVHlwZShAaWQxMSkKWyAzMjNd
IGpmYWxzZQkJIHRyMTgsIDIyKC0+MzQ3KQpbIDMyNl0gZ2V0X3Njb3BlZF92YXIJIHRyMTksIC05
LCAwClsgMzMwXSBnZXRfYnlfaWQJIHRyMjAsIHRyMTksIG1ha2VBcnJheShAaWQxMikKWyAzMzhd
IG1vdgkJIHRyMzEsIGxyMwpbIDM0MV0gY2FsbAkJIHRyMTgsIHRyMjAsIHRyMTksIDMwLCAyClsg
MzQ3XSBqdHJ1ZQkJIHRyMTgsIDgoLT4zNTcpClsgMzUwXSBtb3YJCSB0cjE5LCBscjMKWyAzNTNd
IG5ld19hcnJheQkgdHIxOCwgdHIxOSwgMQpbIDM1N10gY2FsbAkJIHRyNywgdHI3LCBscjQsIDE3
LCAyClsgMzYzXSByZXQJCSB0cjcKCklkZW50aWZpZXJzOgogIGlkMCA9IGlzRnVuY3Rpb24KICBp
ZDEgPSBmbgogIGlkMiA9IHJlYWR5CiAgaWQzID0gZXhlYwogIGlkNCA9IGNsZWFuCiAgaWQ1ID0g
ZmluZAogIGlkNiA9IHNldEFycmF5CiAgaWQ3ID0gY29uc3RydWN0b3IKICBpZDggPSBBcnJheQog
IGlkOSA9IGpxdWVyeQogIGlkMTAgPSBsZW5ndGgKICBpZDExID0gbm9kZVR5cGUKICBpZDEyID0g
bWFrZUFycmF5CgpDb25zdGFudHM6CiAgdHIwID0gInJlYWR5IgogIHRyMSA9ICJsb2FkIgogIHRy
MiA9ICJzdHJpbmciCiAgdHIzID0gMQogIHRyNCA9IDAKClJlZ0V4cHM6CiAgcmUwID0gL15bXjxd
Kig8KC58XHMpKz4pW14+XSokLwoKU3RydWN0dXJlSURzOgogIFsgIDQ1XSBnZXRfYnlfaWRfc2Vs
ZjogMHgxNzI1YWU2MAogIFsgIDgyXSBnZXRfYnlfaWQ6IDB4MAogIFsgIDkwXSBnZXRfYnlfaWQ6
IDB4MAogIFsgMTM3XSBnZXRfYnlfaWQ6IDB4MAogIFsgMTYxXSBnZXRfYnlfaWQ6IDB4MAogIFsg
MTk3XSBnZXRfYnlfaWQ6IDB4MAogIFsgMjE2XSBnZXRfYnlfaWRfcHJvdG86IDB4MTViOTgzNDAs
IDB4MTcyMzdiODAKICBbIDI4Ml0gZ2V0X2J5X2lkOiAweDAKICBbIDMxNV0gZ2V0X2J5X2lkOiAw
eDAKICBbIDMzMF0gZ2V0X2J5X2lkOiAweDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>