<?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>86436</bug_id>
          
          <creation_ts>2012-05-14 21:55:57 -0700</creation_ts>
          <short_desc>shrinkToFit() is often not called for Vectors in CodeBlock</short_desc>
          <delta_ts>2012-05-15 19:41:07 -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>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>
          
          <blocked>86548</blocked>
    
    <blocked>86281</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>623634</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-14 21:55:57 -0700</bug_when>
    <thetext>Data collected via bug 86281 show that a lot of vector capacity is wasted via the Vectors allocated here:

2200 vectors, 17.20KB used of 550.00KB, 532.80KB wasted at:
1   0x1069ac725 WTF::Vector&lt;WTF::Vector&lt;JSC::RareCaseProfile, 8ul&gt;*, 32ul&gt;::Vector()
2   0x1069abf25 WTF::Vector&lt;WTF::Vector&lt;JSC::RareCaseProfile, 8ul&gt;*, 32ul&gt;::Vector()
3   0x1069abeb6 WTF::SegmentedVector&lt;JSC::RareCaseProfile, 8ul&gt;::SegmentedVector()
4   0x10699c805 WTF::SegmentedVector&lt;JSC::RareCaseProfile, 8ul&gt;::SegmentedVector()
5   0x1069958d1 JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)

2200 vectors, 20.92KB used of 550.00KB, 529.08KB wasted at:
1   0x1069ad1b5 WTF::Vector&lt;WTF::Vector&lt;JSC::LLIntCallLinkInfo, 8ul&gt;*, 32ul&gt;::Vector()
2   0x1069ad135 WTF::Vector&lt;WTF::Vector&lt;JSC::LLIntCallLinkInfo, 8ul&gt;*, 32ul&gt;::Vector()
3   0x1069ad0e6 WTF::SegmentedVector&lt;JSC::LLIntCallLinkInfo, 8ul&gt;::SegmentedVector()
4   0x10699c675 WTF::SegmentedVector&lt;JSC::LLIntCallLinkInfo, 8ul&gt;::SegmentedVector()
5   0x1069957a1 JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)

2200 vectors, 21.14KB used of 550.00KB, 528.86KB wasted at:
1   0x1069ac725 WTF::Vector&lt;WTF::Vector&lt;JSC::RareCaseProfile, 8ul&gt;*, 32ul&gt;::Vector()
2   0x1069abf25 WTF::Vector&lt;WTF::Vector&lt;JSC::RareCaseProfile, 8ul&gt;*, 32ul&gt;::Vector()
3   0x1069abeb6 WTF::SegmentedVector&lt;JSC::RareCaseProfile, 8ul&gt;::SegmentedVector()
4   0x10699c805 WTF::SegmentedVector&lt;JSC::RareCaseProfile, 8ul&gt;::SegmentedVector()
5   0x1069958be JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)

2200 vectors, 43.21KB used of 550.47KB, 507.26KB wasted at:
1   0x1069aca05 WTF::Vector&lt;WTF::Vector&lt;JSC::ValueProfile, 8ul&gt;*, 32ul&gt;::Vector()
2   0x1069ac985 WTF::Vector&lt;WTF::Vector&lt;JSC::ValueProfile, 8ul&gt;*, 32ul&gt;::Vector()
3   0x1069ac936 WTF::SegmentedVector&lt;JSC::ValueProfile, 8ul&gt;::SegmentedVector()
4   0x10699c7e5 WTF::SegmentedVector&lt;JSC::ValueProfile, 8ul&gt;::SegmentedVector()
5   0x1069958ab JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)

1996 vectors, 323.72KB used of 665.81KB, 342.09KB wasted at:
1   0x1069acf45 WTF::Vector&lt;JSC::StructureStubInfo, 0ul&gt;::Vector()
2   0x10699c6b5 WTF::Vector&lt;JSC::StructureStubInfo, 0ul&gt;::Vector()
3   0x1069957c7 JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
4   0x106a9ea22 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
5   0x106a97ab8 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)

1996 vectors, 102.31KB used of 372.38KB, 270.06KB wasted at:
1   0x1069ace65 WTF::Vector&lt;JSC::CallLinkInfo, 0ul&gt;::Vector()
2   0x10699c705 WTF::Vector&lt;JSC::CallLinkInfo, 0ul&gt;::Vector()
3   0x1069957ed JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
4   0x106a9ea22 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
5   0x106a97ab8 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)



1996 vectors, 57.59KB used of 276.23KB, 218.64KB wasted at:
1   0x1069acd65 WTF::Vector&lt;JSC::MethodCallLinkInfo, 0ul&gt;::Vector()
2   0x10699c725 WTF::Vector&lt;JSC::MethodCallLinkInfo, 0ul&gt;::Vector()
3   0x106995800 JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
4   0x106a9ea22 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
5   0x106a97ab8 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)


2200 vectors, 380.47KB used of 550.00KB, 169.53KB wasted at:
1   0x106985f15 WTF::Vector&lt;JSC::ValueProfile, 8ul&gt;::Vector()
2   0x106985d35 WTF::Vector&lt;JSC::ValueProfile, 8ul&gt;::Vector()
3   0x1069ac924 WTF::SegmentedVector&lt;JSC::ValueProfile, 8ul&gt;::SegmentedVector()
4   0x10699c7e5 WTF::SegmentedVector&lt;JSC::ValueProfile, 8ul&gt;::SegmentedVector()
5   0x1069958ab JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624508</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 13:44:33 -0700</bug_when>
    <thetext>*** Bug 86437 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624521</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 13:52:33 -0700</bug_when>
    <thetext>*** Bug 86435 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624586</commentid>
    <comment_count>3</comment_count>
      <attachid>142058</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 14:38:05 -0700</bug_when>
    <thetext>Created attachment 142058
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624592</commentid>
    <comment_count>4</comment_count>
      <attachid>142061</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 14:41:44 -0700</bug_when>
    <thetext>Created attachment 142061
the patch

Decided to write a comment clearly defining what I mean by &quot;EarlyShrink&quot; and &quot;LateShrink&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624594</commentid>
    <comment_count>5</comment_count>
      <attachid>142062</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 14:44:52 -0700</bug_when>
    <thetext>Created attachment 142062
the patch

Realized that it might be a good idea to have a change log for WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624600</commentid>
    <comment_count>6</comment_count>
      <attachid>142062</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-05-15 14:48:34 -0700</bug_when>
    <thetext>Comment on attachment 142062
the patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2130
&gt;          m_rareData-&gt;m_lineInfo.shrinkToFit();

I think we always have line info now -- it seems we should pull it out of rareData so we&apos;re not unnecessarily creating what is intended to be an uncommon allocation.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2136
&gt; +        m_rareData-&gt;m_callReturnIndexVector.shrinkToFit();
&gt; +#endif
&gt; +#if ENABLE(DFG_JIT)
&gt; +        m_rareData-&gt;m_inlineCallFrames.shrinkToFit();
&gt; +        m_rareData-&gt;m_codeOrigins.shrinkToFit();

Ditto for these -- do we want a lazily instantiated m_jitData member perhaps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624603</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 14:50:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 142062 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142062&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2130
&gt; &gt;          m_rareData-&gt;m_lineInfo.shrinkToFit();
&gt; 
&gt; I think we always have line info now -- it seems we should pull it out of rareData so we&apos;re not unnecessarily creating what is intended to be an uncommon allocation.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2136
&gt; &gt; +        m_rareData-&gt;m_callReturnIndexVector.shrinkToFit();
&gt; &gt; +#endif
&gt; &gt; +#if ENABLE(DFG_JIT)
&gt; &gt; +        m_rareData-&gt;m_inlineCallFrames.shrinkToFit();
&gt; &gt; +        m_rareData-&gt;m_codeOrigins.shrinkToFit();
&gt; 
&gt; Ditto for these -- do we want a lazily instantiated m_jitData member perhaps?

Separate patch for both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624771</commentid>
    <comment_count>8</comment_count>
      <attachid>142062</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-15 17:32:14 -0700</bug_when>
    <thetext>Comment on attachment 142062
the patch

Attachment 142062 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12694792</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624777</commentid>
    <comment_count>9</comment_count>
      <attachid>142108</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 17:36:32 -0700</bug_when>
    <thetext>Created attachment 142108
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624797</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-15 17:57:13 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/117198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624883</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-15 19:39:07 -0700</bug_when>
    <thetext>Even after this change I see a lot of wasted capacity under:


1   0x108813e54 WTF::SegmentedVector&lt;JSC::RareCaseProfile, 8ul&gt;::SegmentedVector()
2   0x10880c43d JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, WTF::HashMap&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::SymbolTableEntry, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;, JSC::SymbolTableIndexHashTraits&gt;*, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
3   0x108878757 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::CodeType, JSC::JSGlobalObject*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, bool, WTF::PassOwnPtr&lt;JSC::CodeBlock&gt;)
4   0x108875c5b JSC::FunctionExecutable::produceCodeBlockFor(JSC::ScopeChainNode*, JSC::CompilationKind, JSC::CodeSpecializationKind, JSC::JSObject*&amp;)
5   0x108875689 JSC::FunctionExecutable::compileForCallInternal(JSC::ExecState*, JSC::ScopeChainNode*, JSC::JITCode::JITType)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624885</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-15 19:41:07 -0700</bug_when>
    <thetext>Actually RareCaseProfile, LLIntCallLinkInfo and ValueProfile still show up as having lots of wasted capacity.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142058</attachid>
            <date>2012-05-15 14:38:05 -0700</date>
            <delta_ts>2012-05-15 14:41:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>shrink_patch_1.diff</filename>
            <type>text/plain</type>
            <size>8856</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTA1LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
c2hyaW5rVG9GaXQoKSBpcyBvZnRlbiBub3QgY2FsbGVkIGZvciBWZWN0b3JzIGluIENvZGVCbG9j
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoZSB2ZWN0b3JzIGluIENvZGVCbG9jayBhcmUgb2Z0ZW4gYXBwZW5kZWQgdG8gZHVyaW5nIHZh
cmlvdXMgc3RhZ2VzIG9mCisgICAgICAgIGNvbXBpbGF0aW9uLCBidXQgd2UgbmVnbGVjdCB0byBz
aHJpbmsgdGhlbSBhZnRlciBjb21waWxhdGlvbiBmaW5pc2hlcy4gVGhpcworICAgICAgICBwYXRj
aCB0YWtlcyB0aGUgbW9zdCBicnV0YWwgcG9zc2libGUgYXBwcm9hY2g6IHNocmluayBhbGwgdGhl
IHZlY3RvcnMgYWZ0ZXIKKyAgICAgICAgdGhlIGJ5dGVjb21waWxlIHBoYXNlLCBhbmQgdGhlbiBz
aHJpbmsgdGhlbSBhZ2FpbiBhZnRlciB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgSklUaW5nIHBo
YXNlLiBUaGUgdHdvIHNocmlua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBKSVQgbWF5IGFw
cGVuZCBtb3JlCisgICAgICAgIHN0dWZmLCBidXQgbWF5IGFsc28gZ2VuZXJhdGUgY29kZSB0aGF0
IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhpbmdzIGluIG90aGVyCisgICAgICAgIHZlY3RvcnM7IGhl
bmNlIHNvbWUgY2FuIG9ubHkgYmUgc2hydW5rIGJlZm9yZSBKSVQgYW5kIHNvbWUgYWZ0ZXIuIEFs
c28sCisgICAgICAgIHdlIG1heSBhbGxvdyBhIENvZGVCbG9jayB0byBzaXQgYXJvdW5kIGZvciBh
IGxvbmcgdGltZSAtIHBvc3NpYmx5IGZvcmV2ZXIgLQorICAgICAgICBiZWZvcmUgaW52b2tpbmcg
dGhlIEpJVCwgaGVuY2UgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSB0d28gc2hyaW5rcy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiB0aGUgbWFqb3IgYmVu
Y2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcHBlbmRXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisKIDIwMTItMDUtMTQgIEx1
a2UgTWFjcGhlcnNvbiAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJv
ZHVjZSBFTkFCTEVfQ1NTX1ZBUklBQkxFUyBjb21waWxlIGZsYWcuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTE3MTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOTIsMjIgKzIwOTIsMzMgQEAgYm9vbCBDb2RlQmxvY2s6Omhhc0dsb2JhbFJl
c29sdmVJbmZvQXRCeQogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgp
Cit2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogewot
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgbV9sbGludENhbGxMaW5rSW5m
b3Muc2hyaW5rVG9GaXQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9zdHJ1Y3R1
cmVTdHViSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaHJp
bmtUb0ZpdCgpOwogICAgIG1fY2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCi0KLSAgICBtX2lkZW50aWZp
ZXJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9mdW5jdGlvbkRlY2xzLnNocmlua1RvRml0KCk7Ci0g
ICAgbV9mdW5jdGlvbkV4cHJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9jb25zdGFudFJlZ2lzdGVy
cy5zaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoc2hy
aW5rTW9kZSA9PSBFYXJseVNocmluaykKKyAgICAgICAgbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMu
c2hyaW5rVG9GaXQoKTsKKyAgICBtX3ZhbHVlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBt
X3JhcmVDYXNlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX3NwZWNpYWxGYXN0Q2FzZVBy
b2ZpbGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hyaW5rTW9kZSA9
PSBFYXJseVNocmluaykgeworICAgICAgICBtX2lkZW50aWZpZXJzLnNocmlua1RvRml0KCk7Cisg
ICAgICAgIG1fZnVuY3Rpb25EZWNscy5zaHJpbmtUb0ZpdCgpOworICAgICAgICBtX2Z1bmN0aW9u
RXhwcnMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtU
b0ZpdCgpOworICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291
bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiAKICAg
ICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRs
ZXJzLnNocmlua1RvRml0KCk7CkBAIC0yMTE3LDYgKzIxMjgsMjEgQEAgdm9pZCBDb2RlQmxvY2s6
OnNocmlua1RvRml0KCkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm8u
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9saW5lSW5mby5zaHJpbmtUb0Zp
dCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAg
ICAgICAgbV9yYXJlRGF0YS0+bV9pbmxpbmVDYWxsRnJhbWVzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fcmFyZURhdGEtPm1fY29kZU9yaWdpbnMuc2hyaW5rVG9GaXQoKTsKKyNlbmRpZgorICAg
IH0KKyAgICAKKyAgICBpZiAobV9kZmdEYXRhKSB7CisgICAgICAgIG1fZGZnRGF0YS0+b3NyRW50
cnkuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LnNocmlua1RvRml0
KCk7CisgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgp
OworICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDExNzE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMzA5LDI2ICszMDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlND
ZWxsPigqZ2xvYmFsRGF0YSgpLCBvd25lckV4ZWN1dGFibGUoKSwgdGFyZ2V0KSk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgc2hyaW5rV2Vha1JlZmVyZW5jZXNUb0ZpdCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fZGZnRGF0YS0+d2Vha1JlZmVyZW5jZXMuc2hyaW5rVG9GaXQo
KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbihKU0NlbGwqIGNvZGVPcmlnaW4sIEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bykK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAg
ICAgICAgICBtX2RmZ0RhdGEtPnRyYW5zaXRpb25zLmFwcGVuZCgKICAgICAgICAgICAgICAgICBX
ZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigqZ2xvYmFsRGF0YSgpLCBvd25lckV4ZWN1dGFibGUoKSwg
Y29kZU9yaWdpbiwgZnJvbSwgdG8pKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9p
ZCBzaHJpbmtXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbnNUb0ZpdCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9kZmdEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgfQogI2Vu
ZGlmCiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVy
bkFkZHJlc3MpCkBAIC04MjYsNyArODEyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
RXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKLSAgICAgICAgdm9p
ZCBzaHJpbmtUb0ZpdCgpOworICAgICAgICBlbnVtIFNocmlua01vZGUgeyBFYXJseVNocmluaywg
TGF0ZVNocmluayB9OworICAgICAgICB2b2lkIHNocmlua1RvRml0KFNocmlua01vZGUpOwogICAg
ICAgICAKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRl
cm5hdGl2ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMTcxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRz
KCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xl
YXIoKTsKIAotICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOworICAgIG1fY29kZUJsb2Nr
LT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkVhcmx5U2hyaW5rKTsKIAogICAgIGlmIChtX2V4cHJl
c3Npb25Ub29EZWVwKQogICAgICAgICByZXR1cm4gY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihtX3Nj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMTcxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDExIEBA
IGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAgICAKICAgICBpZiAo
Y29tcGlsZU1vZGUgPT0gQ29tcGlsZUZ1bmN0aW9uKQogICAgICAgICBkZmcucHJlZGljdEFyZ3Vt
ZW50VHlwZXMoKTsKKyAgICAKKyAgICAvLyBCeSB0aGlzIHBvaW50IHRoZSBERkcgYnl0ZWNvZGUg
cGFyc2VyIHdpbGwgaGF2ZSBwb3RlbnRpYWxseSBtdXRhdGVkIHZhcmlvdXMgdGFibGVzCisgICAg
Ly8gaW4gdGhlIENvZGVCbG9jay4gVGhpcyBpcyBhIGdvb2QgdGltZSB0byBwZXJmb3JtIGFuIGVh
cmx5IHNocmluaywgd2hpY2ggaXMgbW9yZQorICAgIC8vIHBvd2VyZnVsIHRoYW4gYSBsYXRlIG9u
ZS4KKyAgICBjb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6RWFybHlTaHJpbmspOwog
CiAgICAgcGVyZm9ybVJlZHVuZGFudFBoaUVsaW1pbmF0aW9uKGRmZyk7CiAgICAgcGVyZm9ybVBy
ZWRpY3Rpb25Qcm9wYWdhdGlvbihkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDExNzE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAs
OCArMTkwLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAg
ICAgICBleGl0Lm1fY2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIpOwogICAgIH0KICAg
ICAKLSAgICBjb2RlQmxvY2soKS0+c2hyaW5rV2Vha1JlZmVyZW5jZXNUb0ZpdCgpOwotICAgIGNv
ZGVCbG9jaygpLT5zaHJpbmtXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbnNUb0ZpdCgpOworICAgIGNv
ZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwogfQogCiBib29s
IEpJVENvbXBpbGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTE3MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDksNiArNzQ5LDggQEAgSklUQ29kZSBK
SVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHJlc3VsdC5zaXplKCkpIC8KICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2NvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgCisgICAgbV9jb2RlQmxvY2stPnNo
cmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgCiAjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFKQogICAgIGRhdGFMb2coIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAl
cCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwg
cmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9T
ZWdtZW50ZWRWZWN0b3IuaAkocmV2aXNpb24gMTE3MTQ3KQorKysgU291cmNlL1dURi93dGYvU2Vn
bWVudGVkVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsMTEgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRvcigqdGhpcywg
MCwgU2VnbWVudFNpemUpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNocmlu
a1RvRml0KCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9zZWdtZW50cy5zaHJpbmtUb0ZpdCgp
OworICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIFZlY3RvcjxULCBT
ZWdtZW50U2l6ZT4gU2VnbWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142061</attachid>
            <date>2012-05-15 14:41:44 -0700</date>
            <delta_ts>2012-05-15 14:44:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>shrink_patch_1.diff</filename>
            <type>text/plain</type>
            <size>9280</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTA1LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
c2hyaW5rVG9GaXQoKSBpcyBvZnRlbiBub3QgY2FsbGVkIGZvciBWZWN0b3JzIGluIENvZGVCbG9j
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoZSB2ZWN0b3JzIGluIENvZGVCbG9jayBhcmUgb2Z0ZW4gYXBwZW5kZWQgdG8gZHVyaW5nIHZh
cmlvdXMgc3RhZ2VzIG9mCisgICAgICAgIGNvbXBpbGF0aW9uLCBidXQgd2UgbmVnbGVjdCB0byBz
aHJpbmsgdGhlbSBhZnRlciBjb21waWxhdGlvbiBmaW5pc2hlcy4gVGhpcworICAgICAgICBwYXRj
aCB0YWtlcyB0aGUgbW9zdCBicnV0YWwgcG9zc2libGUgYXBwcm9hY2g6IHNocmluayBhbGwgdGhl
IHZlY3RvcnMgYWZ0ZXIKKyAgICAgICAgdGhlIGJ5dGVjb21waWxlIHBoYXNlLCBhbmQgdGhlbiBz
aHJpbmsgdGhlbSBhZ2FpbiBhZnRlciB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgSklUaW5nIHBo
YXNlLiBUaGUgdHdvIHNocmlua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBKSVQgbWF5IGFw
cGVuZCBtb3JlCisgICAgICAgIHN0dWZmLCBidXQgbWF5IGFsc28gZ2VuZXJhdGUgY29kZSB0aGF0
IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhpbmdzIGluIG90aGVyCisgICAgICAgIHZlY3RvcnM7IGhl
bmNlIHNvbWUgY2FuIG9ubHkgYmUgc2hydW5rIGJlZm9yZSBKSVQgYW5kIHNvbWUgYWZ0ZXIuIEFs
c28sCisgICAgICAgIHdlIG1heSBhbGxvdyBhIENvZGVCbG9jayB0byBzaXQgYXJvdW5kIGZvciBh
IGxvbmcgdGltZSAtIHBvc3NpYmx5IGZvcmV2ZXIgLQorICAgICAgICBiZWZvcmUgaW52b2tpbmcg
dGhlIEpJVCwgaGVuY2UgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSB0d28gc2hyaW5rcy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiB0aGUgbWFqb3IgYmVu
Y2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcHBlbmRXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisKIDIwMTItMDUtMTQgIEx1
a2UgTWFjcGhlcnNvbiAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJv
ZHVjZSBFTkFCTEVfQ1NTX1ZBUklBQkxFUyBjb21waWxlIGZsYWcuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTE3MTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOTIsMjIgKzIwOTIsMzMgQEAgYm9vbCBDb2RlQmxvY2s6Omhhc0dsb2JhbFJl
c29sdmVJbmZvQXRCeQogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgp
Cit2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogewot
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgbV9sbGludENhbGxMaW5rSW5m
b3Muc2hyaW5rVG9GaXQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9zdHJ1Y3R1
cmVTdHViSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaHJp
bmtUb0ZpdCgpOwogICAgIG1fY2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCi0KLSAgICBtX2lkZW50aWZp
ZXJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9mdW5jdGlvbkRlY2xzLnNocmlua1RvRml0KCk7Ci0g
ICAgbV9mdW5jdGlvbkV4cHJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9jb25zdGFudFJlZ2lzdGVy
cy5zaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoc2hy
aW5rTW9kZSA9PSBFYXJseVNocmluaykKKyAgICAgICAgbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMu
c2hyaW5rVG9GaXQoKTsKKyAgICBtX3ZhbHVlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBt
X3JhcmVDYXNlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX3NwZWNpYWxGYXN0Q2FzZVBy
b2ZpbGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hyaW5rTW9kZSA9
PSBFYXJseVNocmluaykgeworICAgICAgICBtX2lkZW50aWZpZXJzLnNocmlua1RvRml0KCk7Cisg
ICAgICAgIG1fZnVuY3Rpb25EZWNscy5zaHJpbmtUb0ZpdCgpOworICAgICAgICBtX2Z1bmN0aW9u
RXhwcnMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtU
b0ZpdCgpOworICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291
bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiAKICAg
ICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRs
ZXJzLnNocmlua1RvRml0KCk7CkBAIC0yMTE3LDYgKzIxMjgsMjEgQEAgdm9pZCBDb2RlQmxvY2s6
OnNocmlua1RvRml0KCkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm8u
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9saW5lSW5mby5zaHJpbmtUb0Zp
dCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAg
ICAgICAgbV9yYXJlRGF0YS0+bV9pbmxpbmVDYWxsRnJhbWVzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fcmFyZURhdGEtPm1fY29kZU9yaWdpbnMuc2hyaW5rVG9GaXQoKTsKKyNlbmRpZgorICAg
IH0KKyAgICAKKyAgICBpZiAobV9kZmdEYXRhKSB7CisgICAgICAgIG1fZGZnRGF0YS0+b3NyRW50
cnkuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LnNocmlua1RvRml0
KCk7CisgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgp
OworICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDExNzE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMzA5LDI2ICszMDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlND
ZWxsPigqZ2xvYmFsRGF0YSgpLCBvd25lckV4ZWN1dGFibGUoKSwgdGFyZ2V0KSk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgc2hyaW5rV2Vha1JlZmVyZW5jZXNUb0ZpdCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fZGZnRGF0YS0+d2Vha1JlZmVyZW5jZXMuc2hyaW5rVG9GaXQo
KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbihKU0NlbGwqIGNvZGVPcmlnaW4sIEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bykK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAg
ICAgICAgICBtX2RmZ0RhdGEtPnRyYW5zaXRpb25zLmFwcGVuZCgKICAgICAgICAgICAgICAgICBX
ZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigqZ2xvYmFsRGF0YSgpLCBvd25lckV4ZWN1dGFibGUoKSwg
Y29kZU9yaWdpbiwgZnJvbSwgdG8pKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9p
ZCBzaHJpbmtXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbnNUb0ZpdCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9kZmdEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgfQogI2Vu
ZGlmCiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVy
bkFkZHJlc3MpCkBAIC04MjYsNyArODEyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCi0gICAgICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgZW51bSBTaHJpbmtNb2RlIHsKKyAgICAgICAgICAg
IC8vIFNocmluayBwcmlvciB0byBnZW5lcmF0aW5nIG1hY2hpbmUgY29kZSB0aGF0IG1heSBwb2lu
dCBkaXJlY3RseSBpbnRvIHZlY3RvcnMuCisgICAgICAgICAgICBFYXJseVNocmluaywKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gU2hyaW5rIGFmdGVyIGdlbmVyYXRpbmcgbWFjaGluZSBj
b2RlLCBhbmQgYWZ0ZXIgcG9zc2libHkgY3JlYXRpbmcgbmV3IGVjdG9ycyBhbmQKKyAgICAgICAg
ICAgIC8vIGFwcGVuZGluZyB0byBvdGhlcnMuIEF0IHRoaXMgdGltZSBpdCBpcyBub3Qgc2FmZSB0
byBzaHJpbmsgY2VydGFpbiB2ZWN0b3JzCisgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIHdvdWxk
IGhhdmUgZ2VuZXJhdGVkIG1hY2hpbmUgY29kZSB0aGF0IHJlZmVyZW5jZXMgdGhlbSBkaXJlY3Rs
eS4KKyAgICAgICAgICAgIExhdGVTaHJpbmsKKyAgICAgICAgfTsKKyAgICAgICAgdm9pZCBzaHJp
bmtUb0ZpdChTaHJpbmtNb2RlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJz
ZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0
UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTE3MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBAQCBKU09iamVj
dCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBpZiAoKG1fY29kZVR5cGUgPT0g
RnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmICFt
X2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKQog
ICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CiAKLSAgICBtX2NvZGVCbG9jay0+c2hyaW5r
VG9GaXQoKTsKKyAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpFYXJseVNo
cmluayk7CiAKICAgICBpZiAobV9leHByZXNzaW9uVG9vRGVlcCkKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZU91dE9mTWVtb3J5RXJyb3IobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTE3
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCwxMSBAQCBpbmxpbmUgYm9vbCBjb21waWxlKENvbXBpbGVNb2Rl
IGNvbXBpbGVNCiAgICAgCiAgICAgaWYgKGNvbXBpbGVNb2RlID09IENvbXBpbGVGdW5jdGlvbikK
ICAgICAgICAgZGZnLnByZWRpY3RBcmd1bWVudFR5cGVzKCk7CisgICAgCisgICAgLy8gQnkgdGhp
cyBwb2ludCB0aGUgREZHIGJ5dGVjb2RlIHBhcnNlciB3aWxsIGhhdmUgcG90ZW50aWFsbHkgbXV0
YXRlZCB2YXJpb3VzIHRhYmxlcworICAgIC8vIGluIHRoZSBDb2RlQmxvY2suIFRoaXMgaXMgYSBn
b29kIHRpbWUgdG8gcGVyZm9ybSBhbiBlYXJseSBzaHJpbmssIHdoaWNoIGlzIG1vcmUKKyAgICAv
LyBwb3dlcmZ1bCB0aGFuIGEgbGF0ZSBvbmUuCisgICAgY29kZUJsb2NrLT5zaHJpbmtUb0ZpdChD
b2RlQmxvY2s6OkVhcmx5U2hyaW5rKTsKIAogICAgIHBlcmZvcm1SZWR1bmRhbnRQaGlFbGltaW5h
dGlvbihkZmcpOwogICAgIHBlcmZvcm1QcmVkaWN0aW9uUHJvcGFnYXRpb24oZGZnKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxMTcxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDggKzE5MCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6Omxp
bmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgZXhpdC5tX2NoZWNrLmNvcnJlY3RMYXRlSnVt
cChsaW5rQnVmZmVyKTsKICAgICB9CiAgICAgCi0gICAgY29kZUJsb2NrKCktPnNocmlua1dlYWtS
ZWZlcmVuY2VzVG9GaXQoKTsKLSAgICBjb2RlQmxvY2soKS0+c2hyaW5rV2Vha1JlZmVyZW5jZVRy
YW5zaXRpb25zVG9GaXQoKTsKKyAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9GaXQoQ29kZUJsb2Nr
OjpMYXRlU2hyaW5rKTsKIH0KIAogYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZShKSVRDb2RlJiBl
bnRyeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDExNzE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzQ5LDYgKzc0OSw4IEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4K
ICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZXN1bHQuc2l6ZSgpKSAvCiAgICAgICAgIHN0
YXRpY19jYXN0PGRvdWJsZT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSkpOwog
ICAgIAorICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmsp
OworICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkKICAgICBkYXRhTG9nKCJKSVQgZ2VuZXJh
dGVkIGNvZGUgZm9yICVwIGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVj
dXRhYmxlTWVtb3J5KCktPnN0YXJ0KCksIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCktPmVuZCgp
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJKHJldmlzaW9uIDExNzE0
NykKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODgsNiArMTg4LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIDAsIFNlZ21lbnRTaXplKTsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fc2VnbWVudHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdHlwZWRlZiBWZWN0b3I8VCwgU2VnbWVudFNpemU+IFNlZ21lbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142062</attachid>
            <date>2012-05-15 14:44:52 -0700</date>
            <delta_ts>2012-05-15 17:36:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>shrink_patch_2.diff</filename>
            <type>text/plain</type>
            <size>10255</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTA1LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
c2hyaW5rVG9GaXQoKSBpcyBvZnRlbiBub3QgY2FsbGVkIGZvciBWZWN0b3JzIGluIENvZGVCbG9j
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoZSB2ZWN0b3JzIGluIENvZGVCbG9jayBhcmUgb2Z0ZW4gYXBwZW5kZWQgdG8gZHVyaW5nIHZh
cmlvdXMgc3RhZ2VzIG9mCisgICAgICAgIGNvbXBpbGF0aW9uLCBidXQgd2UgbmVnbGVjdCB0byBz
aHJpbmsgdGhlbSBhZnRlciBjb21waWxhdGlvbiBmaW5pc2hlcy4gVGhpcworICAgICAgICBwYXRj
aCB0YWtlcyB0aGUgbW9zdCBicnV0YWwgcG9zc2libGUgYXBwcm9hY2g6IHNocmluayBhbGwgdGhl
IHZlY3RvcnMgYWZ0ZXIKKyAgICAgICAgdGhlIGJ5dGVjb21waWxlIHBoYXNlLCBhbmQgdGhlbiBz
aHJpbmsgdGhlbSBhZ2FpbiBhZnRlciB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgSklUaW5nIHBo
YXNlLiBUaGUgdHdvIHNocmlua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBKSVQgbWF5IGFw
cGVuZCBtb3JlCisgICAgICAgIHN0dWZmLCBidXQgbWF5IGFsc28gZ2VuZXJhdGUgY29kZSB0aGF0
IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhpbmdzIGluIG90aGVyCisgICAgICAgIHZlY3RvcnM7IGhl
bmNlIHNvbWUgY2FuIG9ubHkgYmUgc2hydW5rIGJlZm9yZSBKSVQgYW5kIHNvbWUgYWZ0ZXIuIEFs
c28sCisgICAgICAgIHdlIG1heSBhbGxvdyBhIENvZGVCbG9jayB0byBzaXQgYXJvdW5kIGZvciBh
IGxvbmcgdGltZSAtIHBvc3NpYmx5IGZvcmV2ZXIgLQorICAgICAgICBiZWZvcmUgaW52b2tpbmcg
dGhlIEpJVCwgaGVuY2UgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSB0d28gc2hyaW5rcy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiB0aGUgbWFqb3IgYmVu
Y2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcHBlbmRXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisKIDIwMTItMDUtMTQgIEx1
a2UgTWFjcGhlcnNvbiAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJv
ZHVjZSBFTkFCTEVfQ1NTX1ZBUklBQkxFUyBjb21waWxlIGZsYWcuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTE3MTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOTIsMjIgKzIwOTIsMzMgQEAgYm9vbCBDb2RlQmxvY2s6Omhhc0dsb2JhbFJl
c29sdmVJbmZvQXRCeQogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgp
Cit2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogewot
I2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgbV9sbGludENhbGxMaW5rSW5m
b3Muc2hyaW5rVG9GaXQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9zdHJ1Y3R1
cmVTdHViSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaHJp
bmtUb0ZpdCgpOwogICAgIG1fY2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCi0KLSAgICBtX2lkZW50aWZp
ZXJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9mdW5jdGlvbkRlY2xzLnNocmlua1RvRml0KCk7Ci0g
ICAgbV9mdW5jdGlvbkV4cHJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9jb25zdGFudFJlZ2lzdGVy
cy5zaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoc2hy
aW5rTW9kZSA9PSBFYXJseVNocmluaykKKyAgICAgICAgbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMu
c2hyaW5rVG9GaXQoKTsKKyAgICBtX3ZhbHVlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBt
X3JhcmVDYXNlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX3NwZWNpYWxGYXN0Q2FzZVBy
b2ZpbGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hyaW5rTW9kZSA9
PSBFYXJseVNocmluaykgeworICAgICAgICBtX2lkZW50aWZpZXJzLnNocmlua1RvRml0KCk7Cisg
ICAgICAgIG1fZnVuY3Rpb25EZWNscy5zaHJpbmtUb0ZpdCgpOworICAgICAgICBtX2Z1bmN0aW9u
RXhwcnMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtU
b0ZpdCgpOworICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291
bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiAKICAg
ICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRs
ZXJzLnNocmlua1RvRml0KCk7CkBAIC0yMTE3LDYgKzIxMjgsMjEgQEAgdm9pZCBDb2RlQmxvY2s6
OnNocmlua1RvRml0KCkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm8u
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9saW5lSW5mby5zaHJpbmtUb0Zp
dCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAg
ICAgICAgbV9yYXJlRGF0YS0+bV9pbmxpbmVDYWxsRnJhbWVzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fcmFyZURhdGEtPm1fY29kZU9yaWdpbnMuc2hyaW5rVG9GaXQoKTsKKyNlbmRpZgorICAg
IH0KKyAgICAKKyAgICBpZiAobV9kZmdEYXRhKSB7CisgICAgICAgIG1fZGZnRGF0YS0+b3NyRW50
cnkuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LnNocmlua1RvRml0
KCk7CisgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgp
OworICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDExNzE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMzA5LDI2ICszMDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlND
ZWxsPigqZ2xvYmFsRGF0YSgpLCBvd25lckV4ZWN1dGFibGUoKSwgdGFyZ2V0KSk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgc2hyaW5rV2Vha1JlZmVyZW5jZXNUb0ZpdCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fZGZnRGF0YS0+d2Vha1JlZmVyZW5jZXMuc2hyaW5rVG9GaXQo
KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbihKU0NlbGwqIGNvZGVPcmlnaW4sIEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bykK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAg
ICAgICAgICBtX2RmZ0RhdGEtPnRyYW5zaXRpb25zLmFwcGVuZCgKICAgICAgICAgICAgICAgICBX
ZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigqZ2xvYmFsRGF0YSgpLCBvd25lckV4ZWN1dGFibGUoKSwg
Y29kZU9yaWdpbiwgZnJvbSwgdG8pKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9p
ZCBzaHJpbmtXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbnNUb0ZpdCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9kZmdEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgfQogI2Vu
ZGlmCiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVy
bkFkZHJlc3MpCkBAIC04MjYsNyArODEyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCi0gICAgICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgZW51bSBTaHJpbmtNb2RlIHsKKyAgICAgICAgICAg
IC8vIFNocmluayBwcmlvciB0byBnZW5lcmF0aW5nIG1hY2hpbmUgY29kZSB0aGF0IG1heSBwb2lu
dCBkaXJlY3RseSBpbnRvIHZlY3RvcnMuCisgICAgICAgICAgICBFYXJseVNocmluaywKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gU2hyaW5rIGFmdGVyIGdlbmVyYXRpbmcgbWFjaGluZSBj
b2RlLCBhbmQgYWZ0ZXIgcG9zc2libHkgY3JlYXRpbmcgbmV3IHZlY3RvcnMKKyAgICAgICAgICAg
IC8vIGFuZCBhcHBlbmRpbmcgdG8gb3RoZXJzLiBBdCB0aGlzIHRpbWUgaXQgaXMgbm90IHNhZmUg
dG8gc2hyaW5rIGNlcnRhaW4gdmVjdG9ycworICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSB3b3Vs
ZCBoYXZlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUgdGhhdCByZWZlcmVuY2VzIHRoZW0gZGlyZWN0
bHkuCisgICAgICAgICAgICBMYXRlU2hyaW5rCisgICAgICAgIH07CisgICAgICAgIHZvaWQgc2hy
aW5rVG9GaXQoU2hyaW5rTW9kZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvcHlQb3N0UGFy
c2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9z
dFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDExNzE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAgSlNPYmpl
Y3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgaWYgKChtX2NvZGVUeXBlID09
IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAh
bV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkK
ICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigpOwogCi0gICAgbV9jb2RlQmxvY2stPnNocmlu
a1RvRml0KCk7CisgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6RWFybHlT
aHJpbmspOwogCiAgICAgaWYgKG1fZXhwcmVzc2lvblRvb0RlZXApCiAgICAgICAgIHJldHVybiBj
cmVhdGVPdXRPZk1lbW9yeUVycm9yKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDEx
NzE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNiArNTgsMTIgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9k
ZSBjb21waWxlTQogICAgIAogICAgIGlmIChjb21waWxlTW9kZSA9PSBDb21waWxlRnVuY3Rpb24p
CiAgICAgICAgIGRmZy5wcmVkaWN0QXJndW1lbnRUeXBlcygpOworICAgIAorICAgIC8vIEJ5IHRo
aXMgcG9pbnQgdGhlIERGRyBieXRlY29kZSBwYXJzZXIgd2lsbCBoYXZlIHBvdGVudGlhbGx5IG11
dGF0ZWQgdmFyaW91cyB0YWJsZXMKKyAgICAvLyBpbiB0aGUgQ29kZUJsb2NrLiBUaGlzIGlzIGEg
Z29vZCB0aW1lIHRvIHBlcmZvcm0gYW4gZWFybHkgc2hyaW5rLCB3aGljaCBpcyBtb3JlCisgICAg
Ly8gcG93ZXJmdWwgdGhhbiBhIGxhdGUgb25lLiBJdCdzIHNhZmUgdG8gZG8gc28gYmVjYXVzZSB3
ZSBoYXZlbid0IGdlbmVyYXRlZCBhbnkgY29kZQorICAgIC8vIHRoYXQgcmVmZXJlbmNlcyBhbnkg
b2YgdGhlIHRhYmxlcyBkaXJlY3RseSwgeWV0LgorICAgIGNvZGVCbG9jay0+c2hyaW5rVG9GaXQo
Q29kZUJsb2NrOjpFYXJseVNocmluayk7CiAKICAgICBwZXJmb3JtUmVkdW5kYW50UGhpRWxpbWlu
YXRpb24oZGZnKTsKICAgICBwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKGRmZyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTE3MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4ICsxOTAsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjps
aW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIGV4aXQubV9jaGVjay5jb3JyZWN0TGF0ZUp1
bXAobGlua0J1ZmZlcik7CiAgICAgfQogICAgIAotICAgIGNvZGVCbG9jaygpLT5zaHJpbmtXZWFr
UmVmZXJlbmNlc1RvRml0KCk7Ci0gICAgY29kZUJsb2NrKCktPnNocmlua1dlYWtSZWZlcmVuY2VU
cmFuc2l0aW9uc1RvRml0KCk7CisgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9j
azo6TGF0ZVNocmluayk7CiB9CiAKIGJvb2wgSklUQ29tcGlsZXI6OmNvbXBpbGUoSklUQ29kZSYg
ZW50cnkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMTcxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0OSw2ICs3NDksOCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVu
CiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwogICAgICAgICBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsK
ICAgICAKKyAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5r
KTsKKyAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZygiSklUIGdlbmVy
YXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVwKS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhl
Y3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQo
KSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcxNjUpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA1LTE1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgc2hyaW5rVG9GaXQoKSBpcyBvZnRl
biBub3QgY2FsbGVkIGZvciBWZWN0b3JzIGluIENvZGVCbG9jaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEdhdmUgU2VnbWVudGVkVmVjdG9y
IGEgc2hyaW5rVG9GaXQoKSBtZXRob2QuIFRoaXMgb25seSBzaHJpbmtzIHRoZSBzZWdtZW50Cisg
ICAgICAgIGxvb2t1cCB0YWJsZSwgd2hpY2ggaXMgbGlrZWx5IHRvIG5vdCBiZSBodWdlbHkgcHJv
Zml0YWJsZSwgYnV0IGl0IGlzIGJldHRlcgorICAgICAgICB0aGFuIG5vdGhpbmcuCisKKyAgICAg
ICAgKiB3dGYvU2VnbWVudGVkVmVjdG9yLmg6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3IpOgor
ICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3I6OnNocmlua1RvRml0KToKKwogMjAxMi0wNS0x
NSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdURl9VU0Vf
U0VDVVJJVFlfRlJBTUVXT1JLIGFuZCB1c2UgaXQgaW4gcGxhY2Ugb2YgdGhlIGxlc3Mgc3BlY2lm
aWMgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJKHJldmlzaW9u
IDExNzE0NykKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODgsNiArMTg4LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIDAsIFNlZ21lbnRTaXplKTsKICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fc2VnbWVudHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8VCwgU2VnbWVudFNpemU+IFNlZ21lbnQ7Cg==
</data>
<flag name="review"
          id="148354"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="148363"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142108</attachid>
            <date>2012-05-15 17:36:32 -0700</date>
            <delta_ts>2012-05-15 17:36:32 -0700</delta_ts>
            <desc>patch for EWS</desc>
            <filename>shrink_patch_3.diff</filename>
            <type>text/plain</type>
            <size>10337</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTA1LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
c2hyaW5rVG9GaXQoKSBpcyBvZnRlbiBub3QgY2FsbGVkIGZvciBWZWN0b3JzIGluIENvZGVCbG9j
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKyAgICAgICAgCisgICAgICAgIFRo
ZSB2ZWN0b3JzIGluIENvZGVCbG9jayBhcmUgb2Z0ZW4gYXBwZW5kZWQgdG8gZHVyaW5nIHZhcmlv
dXMgc3RhZ2VzIG9mCisgICAgICAgIGNvbXBpbGF0aW9uLCBidXQgd2UgbmVnbGVjdCB0byBzaHJp
bmsgdGhlbSBhZnRlciBjb21waWxhdGlvbiBmaW5pc2hlcy4gVGhpcworICAgICAgICBwYXRjaCB0
YWtlcyB0aGUgbW9zdCBicnV0YWwgcG9zc2libGUgYXBwcm9hY2g6IHNocmluayBhbGwgdGhlIHZl
Y3RvcnMgYWZ0ZXIKKyAgICAgICAgdGhlIGJ5dGVjb21waWxlIHBoYXNlLCBhbmQgdGhlbiBzaHJp
bmsgdGhlbSBhZ2FpbiBhZnRlciB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgSklUaW5nIHBoYXNl
LiBUaGUgdHdvIHNocmlua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBKSVQgbWF5IGFwcGVu
ZCBtb3JlCisgICAgICAgIHN0dWZmLCBidXQgbWF5IGFsc28gZ2VuZXJhdGUgY29kZSB0aGF0IGRp
cmVjdGx5IHJlZmVyZW5jZXMgdGhpbmdzIGluIG90aGVyCisgICAgICAgIHZlY3RvcnM7IGhlbmNl
IHNvbWUgY2FuIG9ubHkgYmUgc2hydW5rIGJlZm9yZSBKSVQgYW5kIHNvbWUgYWZ0ZXIuIEFsc28s
CisgICAgICAgIHdlIG1heSBhbGxvdyBhIENvZGVCbG9jayB0byBzaXQgYXJvdW5kIGZvciBhIGxv
bmcgdGltZSAtIHBvc3NpYmx5IGZvcmV2ZXIgLQorICAgICAgICBiZWZvcmUgaW52b2tpbmcgdGhl
IEpJVCwgaGVuY2UgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSB0d28gc2hyaW5rcy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiB0aGUgbWFqb3IgYmVuY2ht
YXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphcHBlbmRXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisKIDIwMTItMDUtMTQgIEx1a2Ug
TWFjcGhlcnNvbiAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJvZHVj
ZSBFTkFCTEVfQ1NTX1ZBUklBQkxFUyBjb21waWxlIGZsYWcuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTE3MTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOTIsMjIgKzIwOTIsMzMgQEAgYm9vbCBDb2RlQmxvY2s6Omhhc0dsb2JhbFJlc29s
dmVJbmZvQXRCeQogfQogI2VuZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgpCit2
b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogewotI2lm
IEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2hy
aW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgbV9sbGludENhbGxMaW5rSW5mb3Mu
c2hyaW5rVG9GaXQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9zdHJ1Y3R1cmVT
dHViSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaHJpbmtU
b0ZpdCgpOwogICAgIG1fY2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fbWV0aG9k
Q2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCi0KLSAgICBtX2lkZW50aWZpZXJz
LnNocmlua1RvRml0KCk7Ci0gICAgbV9mdW5jdGlvbkRlY2xzLnNocmlua1RvRml0KCk7Ci0gICAg
bV9mdW5jdGlvbkV4cHJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9jb25zdGFudFJlZ2lzdGVycy5z
aHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoc2hyaW5r
TW9kZSA9PSBFYXJseVNocmluaykKKyAgICAgICAgbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2hy
aW5rVG9GaXQoKTsKKyAgICBtX3ZhbHVlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX3Jh
cmVDYXNlUHJvZmlsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX3NwZWNpYWxGYXN0Q2FzZVByb2Zp
bGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hyaW5rTW9kZSA9PSBF
YXJseVNocmluaykgeworICAgICAgICBtX2lkZW50aWZpZXJzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIG1fZnVuY3Rpb25EZWNscy5zaHJpbmtUb0ZpdCgpOworICAgICAgICBtX2Z1bmN0aW9uRXhw
cnMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0Zp
dCgpOworICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQg
aGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiAKICAgICBp
ZiAobV9yYXJlRGF0YSkgewogICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
LnNocmlua1RvRml0KCk7CkBAIC0yMTE3LDcgKzIxMjgsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OnNo
cmlua1RvRml0KCkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
LnNocmlua1RvRml0KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm8uc2hy
aW5rVG9GaXQoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9saW5lSW5mby5zaHJpbmtUb0ZpdCgp
OworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4
VmVjdG9yLnNocmlua1RvRml0KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAg
ICAgbV9yYXJlRGF0YS0+bV9pbmxpbmVDYWxsRnJhbWVzLnNocmlua1RvRml0KCk7CisgICAgICAg
IG1fcmFyZURhdGEtPm1fY29kZU9yaWdpbnMuc2hyaW5rVG9GaXQoKTsKKyNlbmRpZgorICAgIH0K
KyAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBpZiAobV9kZmdEYXRhKSB7CisgICAgICAg
IG1fZGZnRGF0YS0+b3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9kZmdEYXRhLT5v
c3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNv
dmVyeS5zaHJpbmtUb0ZpdCgpOworICAgICAgICBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2VzLnNo
cmlua1RvRml0KCk7CisgICAgICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2hyaW5rVG9GaXQo
KTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmNyZWF0ZUFjdGl2YXRpb24o
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMTcxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOSwyNiArMzA5LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kZmdEYXRhLT53ZWFrUmVmZXJlbmNl
cy5hcHBlbmQoV3JpdGVCYXJyaWVyPEpTQ2VsbD4oKmdsb2JhbERhdGEoKSwgb3duZXJFeGVjdXRh
YmxlKCksIHRhcmdldCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHNocmlu
a1dlYWtSZWZlcmVuY2VzVG9GaXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZGZn
RGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RmZ0RhdGEtPndl
YWtSZWZlcmVuY2VzLnNocmlua1RvRml0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAg
IHZvaWQgYXBwZW5kV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oSlNDZWxsKiBjb2RlT3JpZ2luLCBK
U0NlbGwqIGZyb20sIEpTQ2VsbCogdG8pCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURG
R0RhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT50cmFuc2l0aW9ucy5h
cHBlbmQoCiAgICAgICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oKmdsb2JhbERh
dGEoKSwgb3duZXJFeGVjdXRhYmxlKCksIGNvZGVPcmlnaW4sIGZyb20sIHRvKSk7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2hyaW5rV2Vha1JlZmVyZW5jZVRyYW5zaXRpb25z
VG9GaXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2RmZ0RhdGEtPnRyYW5zaXRpb25zLnNocmlu
a1RvRml0KCk7Ci0gICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQpAQCAtODI2LDcgKzgxMiwxNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkg
eyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxD
b2RlQ2FjaGU7IH0KIAotICAgICAgICB2b2lkIHNocmlua1RvRml0KCk7CisgICAgICAgIGVudW0g
U2hyaW5rTW9kZSB7CisgICAgICAgICAgICAvLyBTaHJpbmsgcHJpb3IgdG8gZ2VuZXJhdGluZyBt
YWNoaW5lIGNvZGUgdGhhdCBtYXkgcG9pbnQgZGlyZWN0bHkgaW50byB2ZWN0b3JzLgorICAgICAg
ICAgICAgRWFybHlTaHJpbmssCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFNocmluayBh
ZnRlciBnZW5lcmF0aW5nIG1hY2hpbmUgY29kZSwgYW5kIGFmdGVyIHBvc3NpYmx5IGNyZWF0aW5n
IG5ldyB2ZWN0b3JzCisgICAgICAgICAgICAvLyBhbmQgYXBwZW5kaW5nIHRvIG90aGVycy4gQXQg
dGhpcyB0aW1lIGl0IGlzIG5vdCBzYWZlIHRvIHNocmluayBjZXJ0YWluIHZlY3RvcnMKKyAgICAg
ICAgICAgIC8vIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlIHRo
YXQgcmVmZXJlbmNlcyB0aGVtIGRpcmVjdGx5LgorICAgICAgICAgICAgTGF0ZVNocmluaworICAg
ICAgICB9OworICAgICAgICB2b2lkIHNocmlua1RvRml0KFNocmlua01vZGUpOwogICAgICAgICAK
ICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2
ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMTcxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg5LDcgKzE4OSw3IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8
IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsK
IAotICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOworICAgIG1fY29kZUJsb2NrLT5zaHJp
bmtUb0ZpdChDb2RlQmxvY2s6OkVhcmx5U2hyaW5rKTsKIAogICAgIGlmIChtX2V4cHJlc3Npb25U
b29EZWVwKQogICAgICAgICByZXR1cm4gY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihtX3Njb3BlQ2hh
aW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMTcxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDEyIEBAIGlubGlu
ZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAgICAKICAgICBpZiAoY29tcGls
ZU1vZGUgPT0gQ29tcGlsZUZ1bmN0aW9uKQogICAgICAgICBkZmcucHJlZGljdEFyZ3VtZW50VHlw
ZXMoKTsKKyAgICAKKyAgICAvLyBCeSB0aGlzIHBvaW50IHRoZSBERkcgYnl0ZWNvZGUgcGFyc2Vy
IHdpbGwgaGF2ZSBwb3RlbnRpYWxseSBtdXRhdGVkIHZhcmlvdXMgdGFibGVzCisgICAgLy8gaW4g
dGhlIENvZGVCbG9jay4gVGhpcyBpcyBhIGdvb2QgdGltZSB0byBwZXJmb3JtIGFuIGVhcmx5IHNo
cmluaywgd2hpY2ggaXMgbW9yZQorICAgIC8vIHBvd2VyZnVsIHRoYW4gYSBsYXRlIG9uZS4gSXQn
cyBzYWZlIHRvIGRvIHNvIGJlY2F1c2Ugd2UgaGF2ZW4ndCBnZW5lcmF0ZWQgYW55IGNvZGUKKyAg
ICAvLyB0aGF0IHJlZmVyZW5jZXMgYW55IG9mIHRoZSB0YWJsZXMgZGlyZWN0bHksIHlldC4KKyAg
ICBjb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6RWFybHlTaHJpbmspOwogCiAgICAg
cGVyZm9ybVJlZHVuZGFudFBoaUVsaW1pbmF0aW9uKGRmZyk7CiAgICAgcGVyZm9ybVByZWRpY3Rp
b25Qcm9wYWdhdGlvbihkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDExNzE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsOCArMTkw
LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBl
eGl0Lm1fY2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIpOwogICAgIH0KICAgICAKLSAg
ICBjb2RlQmxvY2soKS0+c2hyaW5rV2Vha1JlZmVyZW5jZXNUb0ZpdCgpOwotICAgIGNvZGVCbG9j
aygpLT5zaHJpbmtXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbnNUb0ZpdCgpOworICAgIGNvZGVCbG9j
aygpLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwogfQogCiBib29sIEpJVENv
bXBpbGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkocmV2aXNpb24gMTE3MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDksNiArNzQ5LDggQEAgSklUQ29kZSBKSVQ6OnBy
aXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJl
c3VsdC5zaXplKCkpIC8KICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgCisgICAgbV9jb2RlQmxvY2stPnNocmlua1Rv
Rml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
KQogICAgIGRhdGFMb2coIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4i
LCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0
LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3
MTY1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMi0wNS0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIHNocmlua1RvRml0KCkgaXMgb2Z0ZW4gbm90IGNhbGxlZCBmb3IgVmVjdG9ycyBpbiBDb2Rl
QmxvY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBHYXZlIFNlZ21lbnRlZFZlY3RvciBhIHNocmlua1RvRml0KCkgbWV0aG9kLiBUaGlzIG9u
bHkgc2hyaW5rcyB0aGUgc2VnbWVudAorICAgICAgICBsb29rdXAgdGFibGUsIHdoaWNoIGlzIGxp
a2VseSB0byBub3QgYmUgaHVnZWx5IHByb2ZpdGFibGUsIGJ1dCBpdCBpcyBiZXR0ZXIKKyAgICAg
ICAgdGhhbiBub3RoaW5nLgorCisgICAgICAgICogd3RmL1NlZ21lbnRlZFZlY3Rvci5oOgorICAg
ICAgICAoU2VnbWVudGVkVmVjdG9yKToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9yOjpz
aHJpbmtUb0ZpdCk6CisKIDIwMTItMDUtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBXVEZfVVNFX1NFQ1VSSVRZX0ZSQU1FV09SSyBhbmQgdXNlIGl0IGlu
IHBsYWNlIG9mIHRoZSBsZXNzIHNwZWNpZmljIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAxMTcxNDcpCisrKyBTb3VyY2UvV1RGL3d0Zi9TZWdt
ZW50ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCwxMSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCAw
LCBTZWdtZW50U2l6ZSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgc2hyaW5r
VG9GaXQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX3NlZ21lbnRzLnNocmlua1RvRml0KCk7
CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPFQsIFNl
Z21lbnRTaXplPiBTZWdtZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>