<?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>92065</bug_id>
          
          <creation_ts>2012-07-23 22:52:39 -0700</creation_ts>
          <short_desc>Ensure Noah&apos;s ark without reading the DOM tree.</short_desc>
          <delta_ts>2012-07-24 15:51:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>92057</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Kwang Yul Seo">skyul</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>676408</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-23 22:52:39 -0700</bug_when>
    <thetext>Technically we shouldn&apos;t read attributes back from the DOM. If JavaScript changes the attributes values, we could get a slightly wrong output here.
    
Changed HTMLStackItem to store the qualified name. Read attributes from tokens saved in the active formatting element list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676409</commentid>
    <comment_count>1</comment_count>
      <attachid>153966</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-23 22:55:40 -0700</bug_when>
    <thetext>Created attachment 153966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676413</commentid>
    <comment_count>2</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-23 23:02:14 -0700</bug_when>
    <thetext>This patch &apos;slightly&apos; changes the behavior because HTMLFormattingElementList::ensureNoahsArkCondition now reads attributes from the saved token, not from the element.

If you think we need a layout test case to cover this change, I will add one. 

BTW, where is the most appropriate directory to put the test case? fast/parser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676429</commentid>
    <comment_count>3</comment_count>
      <attachid>153966</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 23:35:10 -0700</bug_when>
    <thetext>Comment on attachment 153966
Patch

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

&gt; Source/WebCore/html/parser/HTMLFormattingElementList.cpp:181
&gt; +    Vector&lt;Attribute&gt; attributes = newItem-&gt;token()-&gt;attributes();

This makes a copy of the attribute vector.  Is that what you intend?  Another option is to use the type &quot;const Vector&lt;Attribute&gt;&amp;&quot; to avoid the copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676430</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 23:35:36 -0700</bug_when>
    <thetext>Can you run the html-parser benchmark on this change?  I suspect it won&apos;t show any change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676432</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 23:36:38 -0700</bug_when>
    <thetext>&gt; BTW, where is the most appropriate directory to put the test case? fast/parser?

Yes.  fast/parser is the right place.

I&apos;m not sure exactly how to write a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676434</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 23:37:16 -0700</bug_when>
    <thetext>Let&apos;s give Eric a chance to look at the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676435</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 23:37:30 -0700</bug_when>
    <thetext>(I should say that it generally looks good to me.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676443</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-07-23 23:57:06 -0700</bug_when>
    <thetext>Looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676493</commentid>
    <comment_count>9</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 01:08:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/html/parser/HTMLFormattingElementList.cpp:181
&gt; &gt; +    Vector&lt;Attribute&gt; attributes = newItem-&gt;token()-&gt;attributes();
&gt; 
&gt; This makes a copy of the attribute vector.  Is that what you intend?  Another option is to use the type &quot;const Vector&lt;Attribute&gt;&amp;&quot; to avoid the copy.

Oops. That&apos;s not my intention. I will fix the patch to use the type &quot;const Vector&lt;Attribute&gt;&amp;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676495</commentid>
    <comment_count>10</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 01:10:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;m not sure exactly how to write a test.

That&apos;s the reason why I couldn&apos;t write a test ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676499</commentid>
    <comment_count>11</comment_count>
      <attachid>153983</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 01:17:30 -0700</bug_when>
    <thetext>Created attachment 153983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676500</commentid>
    <comment_count>12</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 01:18:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=153983) [details]
&gt; Patch

Changed to use the type &quot;const Vector&lt;Attribute&gt;&amp;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676503</commentid>
    <comment_count>13</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 01:19:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can you run the html-parser benchmark on this change?  I suspect it won&apos;t show any change.

Sure. I will post the html-parser benchmark results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676695</commentid>
    <comment_count>14</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 05:35:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Sure. I will post the html-parser benchmark results.

Unfortunately this patch causes 2.3% performance regression!

* Before

kseo@cat:WebKit (master)&gt; ./Tools/Scripts/run-perf-tests Parser/html-parser.html
Running 1 tests
Running Parser/html-parser.html (1 of 1)
RESULT Parser: html-parser= 2740.75 ms
median= 2740.5 ms, stdev= 3.85843232414 ms, min= 2734.0 ms, max= 2750.0 ms

* After

kseo@cat:WebKit (master)&gt; ./Tools/Scripts/run-perf-tests Parser/html-parser.html
Running 1 tests
Running Parser/html-parser.html (1 of 1)
RESULT Parser: html-parser= 2804.0 ms
median= 2804.0 ms, stdev= 3.89871773792 ms, min= 2798.0 ms, max= 2814.0 ms


It seems creating a QualifiedName in HTMLStackNode is expensive. Let&apos;s see how we can improve this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676731</commentid>
    <comment_count>15</comment_count>
      <attachid>154038</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 06:08:48 -0700</bug_when>
    <thetext>Created attachment 154038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676734</commentid>
    <comment_count>16</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 06:13:22 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=154038) [details]
&gt; Patch

* After this new patch

kseo@cat:WebKit (master)&gt; ./Tools/Scripts/run-perf-tests Parser/html-parser.html
Running 1 tests
Running Parser/html-parser.html (1 of 1)
RESULT Parser: html-parser= 2755.45 ms
median= 2754.0 ms, stdev= 4.76943392868 ms, min= 2748.0 ms, max= 2765.0 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676739</commentid>
    <comment_count>17</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 06:18:09 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Created an attachment (id=154038) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; * After this new patch
&gt; 
&gt; kseo@cat:WebKit (master)&gt; ./Tools/Scripts/run-perf-tests Parser/html-parser.html
&gt; Running 1 tests
&gt; Running Parser/html-parser.html (1 of 1)
&gt; RESULT Parser: html-parser= 2755.45 ms
&gt; median= 2754.0 ms, stdev= 4.76943392868 ms, min= 2748.0 ms, max= 2765.0 ms

This patch has two changes:

1. Don&apos;t create a QualifedName in HTMLStackItem.
2. Compare the local name and namespace URI. If the local names are different, we don&apos;t need to compare namespace URIs. Use || short-circuits.

-        Element* candidate = entry.element();
-        if (newElement-&gt;tagQName() != candidate-&gt;tagQName())
+        HTMLStackItem* candidate = entry.stackItem().get();
+        if (newItem-&gt;localName() != candidate-&gt;localName() || newItem-&gt;namespaceURI() != candidate-&gt;namespaceURI())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676999</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-24 10:40:41 -0700</bug_when>
    <thetext>&gt; Unfortunately this patch causes 2.3% performance regression!

Thanks for running the benchmark.  It can be hard to predict what changes will have an effect, which is why we like to be careful and run it for each change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677004</commentid>
    <comment_count>19</comment_count>
      <attachid>154038</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-24 10:43:54 -0700</bug_when>
    <thetext>Comment on attachment 154038
Patch

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

&gt; Source/WebCore/html/parser/HTMLFormattingElementList.cpp:134
&gt; -void HTMLFormattingElementList::tryToEnsureNoahsArkConditionQuickly(Element* newElement, Vector&lt;Element*&gt;&amp; remainingCandidates)
&gt; +void HTMLFormattingElementList::tryToEnsureNoahsArkConditionQuickly(HTMLStackItem* newItem, Vector&lt;HTMLStackItem*&gt;&amp; remainingCandidates)

Yeah, this function is very hot.

&gt; Source/WebCore/html/parser/HTMLStackItem.h:60
&gt; +    const AtomicString&amp; localName() const { return m_token-&gt;name(); }

I assume that m_token-&gt;name() is already an AtomicString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677240</commentid>
    <comment_count>20</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 15:14:33 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I assume that m_token-&gt;name() is already an AtomicString.

Yes, it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677252</commentid>
    <comment_count>21</comment_count>
      <attachid>154038</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 15:20:00 -0700</bug_when>
    <thetext>Comment on attachment 154038
Patch

Clearing flags on attachment: 154038

Committed r123537: &lt;http://trac.webkit.org/changeset/123537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677253</commentid>
    <comment_count>22</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-24 15:20:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153966</attachid>
            <date>2012-07-23 22:55:40 -0700</date>
            <delta_ts>2012-07-24 01:17:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92065-20120724145527.patch</filename>
            <type>text/plain</type>
            <size>9718</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzMDRkODNkMDM1NmU4
ZDIxNjU5NTg4MGNmZjEzZDg2ZWY4MTg1Mi4uZWIyMDI0YWYxMjFjYjQ3YTM0N2IzMTExMjAyYWFk
MDg1NzgxZDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEyLTA3LTIzICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKKyAgICAgICAgRW5zdXJlIE5vYWgn
cyBhcmsgd2l0aG91dCByZWFkaW5nIHRoZSBET00gdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVjaG5pY2FsbHkgd2Ugc2hvdWxkbid0IHJlYWQg
YXR0cmlidXRlcyBiYWNrIGZyb20gdGhlIERPTS4gSWYgSmF2YVNjcmlwdCBjaGFuZ2VzCisgICAg
ICAgIHRoZSBhdHRyaWJ1dGVzIHZhbHVlcywgd2UgY291bGQgZ2V0IGEgc2xpZ2h0bHkgd3Jvbmcg
b3V0cHV0IGhlcmUuCisKKyAgICAgICAgQ2hhbmdlZCBIVE1MU3RhY2tJdGVtIHRvIHN0b3JlIHRo
ZSBxdWFsaWZpZWQgbmFtZS4gUmVhZCBhdHRyaWJ1dGVzIGZyb20gdG9rZW5zIHNhdmVkCisgICAg
ICAgIGluIHRoZSBhY3RpdmUgZm9ybWF0dGluZyBlbGVtZW50IGxpc3QuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
dHRyaWJ1dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24pOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaDoKKyAgICAg
ICAgKEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06Om5hbWVzcGFj
ZVVSSSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVtOjp0YWdRTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVtOjpIVE1MU3RhY2tJdGVtKToKKyAgICAgICAgKEhU
TUxTdGFja0l0ZW0pOgorCisyMDEyLTA3LTIzICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFu
eTEwMC5uZXQ+CisKICAgICAgICAgQ2xlYXIgdGhlIGV4dGVybmFsIGNoYXJhY3RlcnMgcG9pbnRl
ciBvZiBhbiBBdG9taWNIVE1MVG9rZW4gYmVmb3JlIHRoZSByYXcgdG9rZW4gaXMgY2xlYXJlZC4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDU2CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdC5jcHAKaW5kZXggYjQyY2ViZDZiZGIzMDBmYTI4NmJkNTY0ZjEwOTk0YjcxZDli
YTk2OC4uM2EzZTdlMTQ0NWI3ODE3ZWE3ODEwMDRiN2UxYjM1MDg5MzI4ZmYwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50
TGlzdC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTm9haCdz
IEFyayBvZiBGb3JtYXR0aW5nIEVsZW1lbnRzIGNhbiBmaXQgdGhyZWUgb2YgZWFjaCBlbGVtZW50
Lgogc3RhdGljIGNvbnN0IHNpemVfdCBrTm9haHNBcmtDYXBhY2l0eSA9IDM7CiAKLXN0YXRpYyBp
bmxpbmUgc2l6ZV90IGF0dHJpYnV0ZUNvdW50V2l0aG91dFVwZGF0ZShFbGVtZW50KiBlbGVtZW50
KQorc3RhdGljIGlubGluZSBzaXplX3QgYXR0cmlidXRlQ291bnQoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKIHsKLSAgICByZXR1cm4gZWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUo
KSA/IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCkgOiAwOworICAgIHJldHVybiB0b2tlbi0+YXR0
cmlidXRlcygpLnNpemUoKTsKIH0KIAogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6SFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdCgpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBIVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0Ojpzd2FwVG8oRWxlbWVudCogb2xkRWxlbWVudCwgUGFzc1JlZlB0cjxI
VE1MU3RhY2sKIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjphcHBlbmQoUGFzc1Jl
ZlB0cjxIVE1MU3RhY2tJdGVtPiBpdGVtKQogewotICAgIGVuc3VyZU5vYWhzQXJrQ29uZGl0aW9u
KGl0ZW0tPmVsZW1lbnQoKSk7CisgICAgZW5zdXJlTm9haHNBcmtDb25kaXRpb24oaXRlbS5nZXQo
KSk7CiAgICAgbV9lbnRyaWVzLmFwcGVuZChpdGVtKTsKIH0KIApAQCAtMTMxLDcgKzEzMSw3IEBA
IHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6Y2xlYXJUb0xhc3RNYXJrZXIoKQogICAg
IH0KIH0KIAotdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhz
QXJrQ29uZGl0aW9uUXVpY2tseShFbGVtZW50KiBuZXdFbGVtZW50LCBWZWN0b3I8RWxlbWVudCo+
JiByZW1haW5pbmdDYW5kaWRhdGVzKQordm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0
cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3RhY2tJdGVtKiBuZXdJdGVt
LCBWZWN0b3I8SFRNTFN0YWNrSXRlbSo+JiByZW1haW5pbmdDYW5kaWRhdGVzKQogewogICAgIEFT
U0VSVChyZW1haW5pbmdDYW5kaWRhdGVzLmlzRW1wdHkoKSk7CiAKQEAgLTE0MCw5ICsxNDAsOSBA
QCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25k
aXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogCiAgICAgLy8gVXNlIGEgdmVjdG9yIHdpdGggaW5s
aW5lIGNhcGFjaXR5IHRvIGF2b2lkIGEgbWFsbG9jIGluIHRoZSBjb21tb24gY2FzZQogICAgIC8v
IG9mIGEgcXVpY2tseSBlbnN1cmluZyB0aGUgY29uZGl0aW9uLgotICAgIFZlY3RvcjxFbGVtZW50
KiwgMTA+IGNhbmRpZGF0ZXM7CisgICAgVmVjdG9yPEhUTUxTdGFja0l0ZW0qLCAxMD4gY2FuZGlk
YXRlczsKIAotICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQgPSBhdHRyaWJ1dGVD
b3VudFdpdGhvdXRVcGRhdGUobmV3RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0l0ZW1BdHRyaWJ1
dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50KG5ld0l0ZW0tPnRva2VuKCkpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IG1fZW50cmllcy5zaXplKCk7IGk7ICkgewogICAgICAgICAtLWk7CkBAIC0xNTEs
MTAgKzE1MSwxMCBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJl
Tm9haHNBcmtDb25kaXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgLy8gUXVpY2tseSByZWplY3Qgb2J2aW91c2x5IG5vbi1tYXRjaGluZyBjYW5k
aWRhdGVzLgotICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBlbnRyeS5lbGVtZW50KCk7Ci0g
ICAgICAgIGlmIChuZXdFbGVtZW50LT50YWdRTmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFnUU5hbWUo
KSkKKyAgICAgICAgSFRNTFN0YWNrSXRlbSogY2FuZGlkYXRlID0gZW50cnkuc3RhY2tJdGVtKCku
Z2V0KCk7CisgICAgICAgIGlmIChuZXdJdGVtLT50YWdRTmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFn
UU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXR0cmlidXRlQ291
bnRXaXRob3V0VXBkYXRlKGNhbmRpZGF0ZSkgIT0gbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50KQor
ICAgICAgICBpZiAoYXR0cmlidXRlQ291bnQoY2FuZGlkYXRlLT50b2tlbigpKSAhPSBuZXdJdGVt
QXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjYW5kaWRh
dGVzLmFwcGVuZChjYW5kaWRhdGUpOwpAQCAtMTY2LDM4ICsxNjYsMzEgQEAgdm9pZCBIVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShF
bGVtZW50KiBuZXcKICAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGVzKTsK
IH0KIAotdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRp
dGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQordm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQogewotICAg
IFZlY3RvcjxFbGVtZW50Kj4gY2FuZGlkYXRlczsKLSAgICB0cnlUb0Vuc3VyZU5vYWhzQXJrQ29u
ZGl0aW9uUXVpY2tseShuZXdFbGVtZW50LCBjYW5kaWRhdGVzKTsKKyAgICBWZWN0b3I8SFRNTFN0
YWNrSXRlbSo+IGNhbmRpZGF0ZXM7CisgICAgdHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1
aWNrbHkobmV3SXRlbSwgY2FuZGlkYXRlcyk7CiAgICAgaWYgKGNhbmRpZGF0ZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBwcmUtYWxsb2NhdGUgYW5kIHJlLXVzZSB0
aGlzIHNlY29uZCB2ZWN0b3IgdG8gc2F2ZSBvbmUgbWFsbG9jIHBlcgogICAgIC8vIGF0dHJpYnV0
ZSB0aGF0IHdlIHZlcmlmeS4KLSAgICBWZWN0b3I8RWxlbWVudCo+IHJlbWFpbmluZ0NhbmRpZGF0
ZXM7CisgICAgVmVjdG9yPEhUTUxTdGFja0l0ZW0qPiByZW1haW5pbmdDYW5kaWRhdGVzOwogICAg
IHJlbWFpbmluZ0NhbmRpZGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYW5kaWRhdGVzLnNp
emUoKSk7CiAKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRl
Q291bnRXaXRob3V0VXBkYXRlKG5ld0VsZW1lbnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQ7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgVmVjdG9yPEF0
dHJpYnV0ZT4gYXR0cmlidXRlcyA9IG5ld0l0ZW0tPnRva2VuKCktPmF0dHJpYnV0ZXMoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgQXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2ldOwogCiAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgY2FuZGlkYXRlcy5zaXplKCk7ICsraikgewotICAgICAgICAgICAg
RWxlbWVudCogY2FuZGlkYXRlID0gY2FuZGlkYXRlc1tqXTsKKyAgICAgICAgICAgIEhUTUxTdGFj
a0l0ZW0qIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbal07CiAKICAgICAgICAgICAgIC8vIFRoZXNl
IHByb3BlcnRpZXMgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGNoZWNrZWQgYnkgdHJ5VG9FbnN1
cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkuCi0gICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVu
dC0+YXR0cmlidXRlQ291bnQoKSA9PSBjYW5kaWRhdGUtPmF0dHJpYnV0ZUNvdW50KCkpOwotICAg
ICAgICAgICAgQVNTRVJUKG5ld0VsZW1lbnQtPnRhZ1FOYW1lKCkgPT0gY2FuZGlkYXRlLT50YWdR
TmFtZSgpKTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IFRlY2huaWNhbGx5IHdlIHNob3VsZG4n
dCByZWFkIHRoaXMgaW5mb3JtYXRpb24gYmFjayBmcm9tCi0gICAgICAgICAgICAvLyB0aGUgRE9N
LiBJbnN0ZWFkLCB0aGUgcGFyc2VyIHNob3VsZCBrZWVwIGEgY29weSBvZiB0aGUgaW5mb3JtYXRp
b24uCi0gICAgICAgICAgICAvLyBUaGlzIGlzbid0IHJlYWxseSBtdWNoIG9mIGEgcHJvYmxlbSBm
b3Igb3VyIGltcGxlbWVudGF0aW9uIGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHdlIHJ1biB0aGUg
cGFyc2VyIG9uIHRoZSBtYWluIHRocmVhZCwgYnV0IHRoZSBzcGVjIGlzIHdyaXR0ZW4gc28KLSAg
ICAgICAgICAgIC8vIHRoYXQgaW1wbGVtZW50YXRpb25zIGNhbiBydW4gb2ZmIHRoZSBtYWluIHRo
cmVhZC4gSWYgSmF2YVNjcmlwdAotICAgICAgICAgICAgLy8gY2hhbmdlcyB0aGUgYXR0cmlidXRl
cyB2YWx1ZXMsIHdlIGNvdWxkIGdldCBhIHNsaWdodGx5IHdyb25nCi0gICAgICAgICAgICAvLyBv
dXRwdXQgaGVyZS4KLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmZhc3RHZXRBdHRyaWJ1dGUo
YXR0cmlidXRlLT5uYW1lKCkpID09IGF0dHJpYnV0ZS0+dmFsdWUoKSkKKyAgICAgICAgICAgIEFT
U0VSVChhdHRyaWJ1dGVDb3VudChuZXdJdGVtLT50b2tlbigpKSA9PSBhdHRyaWJ1dGVDb3VudChj
YW5kaWRhdGUtPnRva2VuKCkpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdJdGVtLT50YWdRTmFt
ZSgpID09IGNhbmRpZGF0ZS0+dGFnUU5hbWUoKSk7CisKKyAgICAgICAgICAgIEF0dHJpYnV0ZSog
Y2FuZGlkYXRlQXR0cmlidXRlID0gY2FuZGlkYXRlLT50b2tlbigpLT5nZXRBdHRyaWJ1dGVJdGVt
KGF0dHJpYnV0ZS5uYW1lKCkpOworICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUF0dHJpYnV0ZSAm
JiBjYW5kaWRhdGVBdHRyaWJ1dGUtPnZhbHVlKCkgPT0gYXR0cmlidXRlLnZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgcmVtYWluaW5nQ2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlKTsKICAgICAg
ICAgfQogCkBAIC0yMTIsNyArMjA1LDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQogICAgIC8vIGhv
d2V2ZXIsIHRoYXQgd2Ugd2lsIHNwaW4gdGhlIGxvb3AgbW9yZSB0aGFuIG9uY2UgYmVjYXVzZSBv
ZiBob3cgdGhlCiAgICAgLy8gZm9ybWF0dGluZyBlbGVtZW50IGxpc3QgZ2V0cyBwZXJtdXRlZC4K
ICAgICBmb3IgKHNpemVfdCBpID0ga05vYWhzQXJrQ2FwYWNpdHkgLSAxOyBpIDwgY2FuZGlkYXRl
cy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVtb3ZlKGNhbmRpZGF0ZXNbaV0pOworICAgICAgICBy
ZW1vdmUoY2FuZGlkYXRlc1tpXS0+ZWxlbWVudCgpKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuaAppbmRleCA5ZjM1NDVkMjVjMTVjMzhiYTJmZDgwYjNiZWY4MjY0Y2FjMGM2NmIwLi4z
NWFjMTdjYzJhYjgyNmU0NzU2MGUxZmI3MTkwOTg5NjgwOGRlMzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oCkBA
IC0xMzAsOCArMTMwLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNsaXN0
LW9mLWFjdGl2ZS1mb3JtYXR0aW5nLWVsZW1lbnRzCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGVu
Zm9yY2UgdGhlICJOb2FoJ3MgQXJrIiBjb25kaXRpb24sIHdoaWNoIHJlbW92ZXMgcmVkdW5kYW50
IG1pcy1uZXN0ZWQgZWxlbWVudHMuCi0gICAgdm9pZCB0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0
aW9uUXVpY2tseShFbGVtZW50KiwgVmVjdG9yPEVsZW1lbnQqPiYgcmVtYWluaW5nQ2FuZGlhdGVz
KTsKLSAgICB2b2lkIGVuc3VyZU5vYWhzQXJrQ29uZGl0aW9uKEVsZW1lbnQqKTsKKyAgICB2b2lk
IHRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFja0l0ZW0qLCBWZWN0
b3I8SFRNTFN0YWNrSXRlbSo+JiByZW1haW5pbmdDYW5kaWF0ZXMpOworICAgIHZvaWQgZW5zdXJl
Tm9haHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSopOwogCiAgICAgVmVjdG9yPEVudHJ5PiBt
X2VudHJpZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFN0YWNrSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5o
CmluZGV4IDdkYzc2MDczMGY1ZGQ0NDk3MzZmYjNiMTA2ZmQ3ODMyMjcyZjIxZjEuLjc2NGM0MzA2
M2Q2OGZiNzcyMzRiMjE1N2IzNjhkZTY5NzYzNjc2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKQEAgLTU2LDI3ICs1NiwyOSBAQCBwdWJsaWM6CiAgICAg
Q29udGFpbmVyTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQogCiAg
ICAgQXRvbWljSFRNTFRva2VuKiB0b2tlbigpIHsgcmV0dXJuIG1fdG9rZW4uZ2V0KCk7IH0KLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZXNwYWNlVVJJOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25z
dCB7IHJldHVybiBtX25hbWUubmFtZXNwYWNlVVJJKCk7IH0KKyAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdRTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiBwcml2YXRlOgogICAg
IEhUTUxTdGFja0l0ZW0oUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBub2RlKQogICAgICAgICA6
IG1fbm9kZShub2RlKQorICAgICAgICAsIG1fbmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxB
dG9tKQogICAgICAgICAsIG1faXNEb2N1bWVudEZyYWdtZW50Tm9kZSh0cnVlKQogICAgIHsKICAg
ICB9CiAKICAgICBIVE1MU3RhY2tJdGVtKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSwg
UGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSA9IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCiAgICAgICAgIDogbV9u
b2RlKG5vZGUpCisgICAgICAgICwgbV9uYW1lKG51bGxBdG9tLCB0b2tlbi0+bmFtZSgpLCBuYW1l
c3BhY2VVUkkpCiAgICAgICAgICwgbV90b2tlbih0b2tlbikKLSAgICAgICAgLCBtX25hbWVzcGFj
ZVVSSShuYW1lc3BhY2VVUkkpCiAgICAgICAgICwgbV9pc0RvY3VtZW50RnJhZ21lbnROb2RlKGZh
bHNlKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbV9ub2RlOwog
CisgICAgUXVhbGlmaWVkTmFtZSBtX25hbWU7CiAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4g
bV90b2tlbjsKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2VVUkk7CiAgICAgYm9vbCBtX2lz
RG9jdW1lbnRGcmFnbWVudE5vZGU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153983</attachid>
            <date>2012-07-24 01:17:30 -0700</date>
            <delta_ts>2012-07-24 06:08:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92065-20120724171717.patch</filename>
            <type>text/plain</type>
            <size>9731</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzMDRkODNkMDM1NmU4
ZDIxNjU5NTg4MGNmZjEzZDg2ZWY4MTg1Mi4uZWIyMDI0YWYxMjFjYjQ3YTM0N2IzMTExMjAyYWFk
MDg1NzgxZDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEyLTA3LTIzICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKKyAgICAgICAgRW5zdXJlIE5vYWgn
cyBhcmsgd2l0aG91dCByZWFkaW5nIHRoZSBET00gdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVjaG5pY2FsbHkgd2Ugc2hvdWxkbid0IHJlYWQg
YXR0cmlidXRlcyBiYWNrIGZyb20gdGhlIERPTS4gSWYgSmF2YVNjcmlwdCBjaGFuZ2VzCisgICAg
ICAgIHRoZSBhdHRyaWJ1dGVzIHZhbHVlcywgd2UgY291bGQgZ2V0IGEgc2xpZ2h0bHkgd3Jvbmcg
b3V0cHV0IGhlcmUuCisKKyAgICAgICAgQ2hhbmdlZCBIVE1MU3RhY2tJdGVtIHRvIHN0b3JlIHRo
ZSBxdWFsaWZpZWQgbmFtZS4gUmVhZCBhdHRyaWJ1dGVzIGZyb20gdG9rZW5zIHNhdmVkCisgICAg
ICAgIGluIHRoZSBhY3RpdmUgZm9ybWF0dGluZyBlbGVtZW50IGxpc3QuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
dHRyaWJ1dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24pOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaDoKKyAgICAg
ICAgKEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06Om5hbWVzcGFj
ZVVSSSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVtOjp0YWdRTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVtOjpIVE1MU3RhY2tJdGVtKToKKyAgICAgICAgKEhU
TUxTdGFja0l0ZW0pOgorCisyMDEyLTA3LTIzICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFu
eTEwMC5uZXQ+CisKICAgICAgICAgQ2xlYXIgdGhlIGV4dGVybmFsIGNoYXJhY3RlcnMgcG9pbnRl
ciBvZiBhbiBBdG9taWNIVE1MVG9rZW4gYmVmb3JlIHRoZSByYXcgdG9rZW4gaXMgY2xlYXJlZC4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDU2CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdC5jcHAKaW5kZXggYjQyY2ViZDZiZGIzMDBmYTI4NmJkNTY0ZjEwOTk0YjcxZDli
YTk2OC4uMjQwMmMwNTQ4MzUxNDRhYzM1ZWI4MDQzMzJlYjIwNjI4MmJiMDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50
TGlzdC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTm9haCdz
IEFyayBvZiBGb3JtYXR0aW5nIEVsZW1lbnRzIGNhbiBmaXQgdGhyZWUgb2YgZWFjaCBlbGVtZW50
Lgogc3RhdGljIGNvbnN0IHNpemVfdCBrTm9haHNBcmtDYXBhY2l0eSA9IDM7CiAKLXN0YXRpYyBp
bmxpbmUgc2l6ZV90IGF0dHJpYnV0ZUNvdW50V2l0aG91dFVwZGF0ZShFbGVtZW50KiBlbGVtZW50
KQorc3RhdGljIGlubGluZSBzaXplX3QgYXR0cmlidXRlQ291bnQoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKIHsKLSAgICByZXR1cm4gZWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUo
KSA/IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCkgOiAwOworICAgIHJldHVybiB0b2tlbi0+YXR0
cmlidXRlcygpLnNpemUoKTsKIH0KIAogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6SFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdCgpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBIVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0Ojpzd2FwVG8oRWxlbWVudCogb2xkRWxlbWVudCwgUGFzc1JlZlB0cjxI
VE1MU3RhY2sKIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjphcHBlbmQoUGFzc1Jl
ZlB0cjxIVE1MU3RhY2tJdGVtPiBpdGVtKQogewotICAgIGVuc3VyZU5vYWhzQXJrQ29uZGl0aW9u
KGl0ZW0tPmVsZW1lbnQoKSk7CisgICAgZW5zdXJlTm9haHNBcmtDb25kaXRpb24oaXRlbS5nZXQo
KSk7CiAgICAgbV9lbnRyaWVzLmFwcGVuZChpdGVtKTsKIH0KIApAQCAtMTMxLDcgKzEzMSw3IEBA
IHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6Y2xlYXJUb0xhc3RNYXJrZXIoKQogICAg
IH0KIH0KIAotdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhz
QXJrQ29uZGl0aW9uUXVpY2tseShFbGVtZW50KiBuZXdFbGVtZW50LCBWZWN0b3I8RWxlbWVudCo+
JiByZW1haW5pbmdDYW5kaWRhdGVzKQordm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0
cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3RhY2tJdGVtKiBuZXdJdGVt
LCBWZWN0b3I8SFRNTFN0YWNrSXRlbSo+JiByZW1haW5pbmdDYW5kaWRhdGVzKQogewogICAgIEFT
U0VSVChyZW1haW5pbmdDYW5kaWRhdGVzLmlzRW1wdHkoKSk7CiAKQEAgLTE0MCw5ICsxNDAsOSBA
QCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25k
aXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogCiAgICAgLy8gVXNlIGEgdmVjdG9yIHdpdGggaW5s
aW5lIGNhcGFjaXR5IHRvIGF2b2lkIGEgbWFsbG9jIGluIHRoZSBjb21tb24gY2FzZQogICAgIC8v
IG9mIGEgcXVpY2tseSBlbnN1cmluZyB0aGUgY29uZGl0aW9uLgotICAgIFZlY3RvcjxFbGVtZW50
KiwgMTA+IGNhbmRpZGF0ZXM7CisgICAgVmVjdG9yPEhUTUxTdGFja0l0ZW0qLCAxMD4gY2FuZGlk
YXRlczsKIAotICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQgPSBhdHRyaWJ1dGVD
b3VudFdpdGhvdXRVcGRhdGUobmV3RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0l0ZW1BdHRyaWJ1
dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50KG5ld0l0ZW0tPnRva2VuKCkpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IG1fZW50cmllcy5zaXplKCk7IGk7ICkgewogICAgICAgICAtLWk7CkBAIC0xNTEs
MTAgKzE1MSwxMCBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJl
Tm9haHNBcmtDb25kaXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgLy8gUXVpY2tseSByZWplY3Qgb2J2aW91c2x5IG5vbi1tYXRjaGluZyBjYW5k
aWRhdGVzLgotICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBlbnRyeS5lbGVtZW50KCk7Ci0g
ICAgICAgIGlmIChuZXdFbGVtZW50LT50YWdRTmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFnUU5hbWUo
KSkKKyAgICAgICAgSFRNTFN0YWNrSXRlbSogY2FuZGlkYXRlID0gZW50cnkuc3RhY2tJdGVtKCku
Z2V0KCk7CisgICAgICAgIGlmIChuZXdJdGVtLT50YWdRTmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFn
UU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXR0cmlidXRlQ291
bnRXaXRob3V0VXBkYXRlKGNhbmRpZGF0ZSkgIT0gbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50KQor
ICAgICAgICBpZiAoYXR0cmlidXRlQ291bnQoY2FuZGlkYXRlLT50b2tlbigpKSAhPSBuZXdJdGVt
QXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjYW5kaWRh
dGVzLmFwcGVuZChjYW5kaWRhdGUpOwpAQCAtMTY2LDM4ICsxNjYsMzEgQEAgdm9pZCBIVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShF
bGVtZW50KiBuZXcKICAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGVzKTsK
IH0KIAotdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRp
dGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQordm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQogewotICAg
IFZlY3RvcjxFbGVtZW50Kj4gY2FuZGlkYXRlczsKLSAgICB0cnlUb0Vuc3VyZU5vYWhzQXJrQ29u
ZGl0aW9uUXVpY2tseShuZXdFbGVtZW50LCBjYW5kaWRhdGVzKTsKKyAgICBWZWN0b3I8SFRNTFN0
YWNrSXRlbSo+IGNhbmRpZGF0ZXM7CisgICAgdHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1
aWNrbHkobmV3SXRlbSwgY2FuZGlkYXRlcyk7CiAgICAgaWYgKGNhbmRpZGF0ZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBwcmUtYWxsb2NhdGUgYW5kIHJlLXVzZSB0
aGlzIHNlY29uZCB2ZWN0b3IgdG8gc2F2ZSBvbmUgbWFsbG9jIHBlcgogICAgIC8vIGF0dHJpYnV0
ZSB0aGF0IHdlIHZlcmlmeS4KLSAgICBWZWN0b3I8RWxlbWVudCo+IHJlbWFpbmluZ0NhbmRpZGF0
ZXM7CisgICAgVmVjdG9yPEhUTUxTdGFja0l0ZW0qPiByZW1haW5pbmdDYW5kaWRhdGVzOwogICAg
IHJlbWFpbmluZ0NhbmRpZGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYW5kaWRhdGVzLnNp
emUoKSk7CiAKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRl
Q291bnRXaXRob3V0VXBkYXRlKG5ld0VsZW1lbnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQ7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgY29uc3QgVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBuZXdJdGVtLT50b2tlbigpLT5hdHRyaWJ1dGVz
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpXTsKIAog
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNhbmRpZGF0ZXMuc2l6ZSgpOyArK2opIHsK
LSAgICAgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbal07CisgICAgICAg
ICAgICBIVE1MU3RhY2tJdGVtKiBjYW5kaWRhdGUgPSBjYW5kaWRhdGVzW2pdOwogCiAgICAgICAg
ICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBjaGVja2Vk
IGJ5IHRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5LgotICAgICAgICAgICAgQVNT
RVJUKG5ld0VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCkgPT0gY2FuZGlkYXRlLT5hdHRyaWJ1dGVD
b3VudCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdFbGVtZW50LT50YWdRTmFtZSgpID09IGNh
bmRpZGF0ZS0+dGFnUU5hbWUoKSk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBUZWNobmljYWxs
eSB3ZSBzaG91bGRuJ3QgcmVhZCB0aGlzIGluZm9ybWF0aW9uIGJhY2sgZnJvbQotICAgICAgICAg
ICAgLy8gdGhlIERPTS4gSW5zdGVhZCwgdGhlIHBhcnNlciBzaG91bGQga2VlcCBhIGNvcHkgb2Yg
dGhlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgLy8gVGhpcyBpc24ndCByZWFsbHkgbXVjaCBv
ZiBhIHByb2JsZW0gZm9yIG91ciBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlCi0gICAgICAgICAgICAv
LyB3ZSBydW4gdGhlIHBhcnNlciBvbiB0aGUgbWFpbiB0aHJlYWQsIGJ1dCB0aGUgc3BlYyBpcyB3
cml0dGVuIHNvCi0gICAgICAgICAgICAvLyB0aGF0IGltcGxlbWVudGF0aW9ucyBjYW4gcnVuIG9m
ZiB0aGUgbWFpbiB0aHJlYWQuIElmIEphdmFTY3JpcHQKLSAgICAgICAgICAgIC8vIGNoYW5nZXMg
dGhlIGF0dHJpYnV0ZXMgdmFsdWVzLCB3ZSBjb3VsZCBnZXQgYSBzbGlnaHRseSB3cm9uZwotICAg
ICAgICAgICAgLy8gb3V0cHV0IGhlcmUuCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5mYXN0
R2V0QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpKSA9PSBhdHRyaWJ1dGUtPnZhbHVlKCkpCisg
ICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlQ291bnQobmV3SXRlbS0+dG9rZW4oKSkgPT0gYXR0
cmlidXRlQ291bnQoY2FuZGlkYXRlLT50b2tlbigpKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3
SXRlbS0+dGFnUU5hbWUoKSA9PSBjYW5kaWRhdGUtPnRhZ1FOYW1lKCkpOworCisgICAgICAgICAg
ICBBdHRyaWJ1dGUqIGNhbmRpZGF0ZUF0dHJpYnV0ZSA9IGNhbmRpZGF0ZS0+dG9rZW4oKS0+Z2V0
QXR0cmlidXRlSXRlbShhdHRyaWJ1dGUubmFtZSgpKTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRh
dGVBdHRyaWJ1dGUgJiYgY2FuZGlkYXRlQXR0cmlidXRlLT52YWx1ZSgpID09IGF0dHJpYnV0ZS52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRp
ZGF0ZSk7CiAgICAgICAgIH0KIApAQCAtMjEyLDcgKzIwNSw3IEBAIHZvaWQgSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oRWxlbWVudCogbmV3RWxlbWVu
dCkKICAgICAvLyBob3dldmVyLCB0aGF0IHdlIHdpbCBzcGluIHRoZSBsb29wIG1vcmUgdGhhbiBv
bmNlIGJlY2F1c2Ugb2YgaG93IHRoZQogICAgIC8vIGZvcm1hdHRpbmcgZWxlbWVudCBsaXN0IGdl
dHMgcGVybXV0ZWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGtOb2Foc0Fya0NhcGFjaXR5IC0gMTsg
aSA8IGNhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlbW92ZShjYW5kaWRhdGVzW2ld
KTsKKyAgICAgICAgcmVtb3ZlKGNhbmRpZGF0ZXNbaV0tPmVsZW1lbnQoKSk7CiB9CiAKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmgKaW5kZXggOWYzNTQ1ZDI1YzE1YzM4YmEyZmQ4MGIzYmVmODI2
NGNhYzBjNjZiMC4uMzVhYzE3Y2MyYWI4MjZlNDc1NjBlMWZiNzE5MDk4OTY4MDhkZTM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuaApAQCAtMTMwLDggKzEzMCw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJz
aW5nLmh0bWwjbGlzdC1vZi1hY3RpdmUtZm9ybWF0dGluZy1lbGVtZW50cwogICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyBlbmZvcmNlIHRoZSAiTm9haCdzIEFyayIgY29uZGl0aW9uLCB3aGljaCByZW1v
dmVzIHJlZHVuZGFudCBtaXMtbmVzdGVkIGVsZW1lbnRzLgotICAgIHZvaWQgdHJ5VG9FbnN1cmVO
b2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoRWxlbWVudCosIFZlY3RvcjxFbGVtZW50Kj4mIHJlbWFp
bmluZ0NhbmRpYXRlcyk7Ci0gICAgdm9pZCBlbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihFbGVtZW50
Kik7CisgICAgdm9pZCB0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3Rh
Y2tJdGVtKiwgVmVjdG9yPEhUTUxTdGFja0l0ZW0qPiYgcmVtYWluaW5nQ2FuZGlhdGVzKTsKKyAg
ICB2b2lkIGVuc3VyZU5vYWhzQXJrQ29uZGl0aW9uKEhUTUxTdGFja0l0ZW0qKTsKIAogICAgIFZl
Y3RvcjxFbnRyeT4gbV9lbnRyaWVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTdGFja0l0ZW0uaAppbmRleCA3ZGM3NjA3MzBmNWRkNDQ5NzM2ZmIzYjEwNmZkNzgzMjI3MmYy
MWYxLi43NjRjNDMwNjNkNjhmYjc3MjM0YjIxNTdiMzY4ZGU2OTc2MzY3NjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCkBAIC01NiwyNyArNTYsMjkgQEAg
cHVibGljOgogICAgIENvbnRhaW5lck5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUu
Z2V0KCk7IH0KIAogICAgIEF0b21pY0hUTUxUb2tlbiogdG9rZW4oKSB7IHJldHVybiBtX3Rva2Vu
LmdldCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7
IHJldHVybiBtX25hbWVzcGFjZVVSSTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLm5hbWVzcGFjZVVSSSgpOyB9CisgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAog
cHJpdmF0ZToKICAgICBIVE1MU3RhY2tJdGVtKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9k
ZSkKICAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICAgICAgLCBtX25hbWUobnVsbEF0b20sIG51
bGxBdG9tLCBudWxsQXRvbSkKICAgICAgICAgLCBtX2lzRG9jdW1lbnRGcmFnbWVudE5vZGUodHJ1
ZSkKICAgICB7CiAgICAgfQogCiAgICAgSFRNTFN0YWNrSXRlbShQYXNzUmVmUHRyPENvbnRhaW5l
ck5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8QXRvbWljSFRNTFRva2VuPiB0b2tlbiwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQog
ICAgICAgICA6IG1fbm9kZShub2RlKQorICAgICAgICAsIG1fbmFtZShudWxsQXRvbSwgdG9rZW4t
Pm5hbWUoKSwgbmFtZXNwYWNlVVJJKQogICAgICAgICAsIG1fdG9rZW4odG9rZW4pCi0gICAgICAg
ICwgbV9uYW1lc3BhY2VVUkkobmFtZXNwYWNlVVJJKQogICAgICAgICAsIG1faXNEb2N1bWVudEZy
YWdtZW50Tm9kZShmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPENvbnRhaW5lck5v
ZGU+IG1fbm9kZTsKIAorICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOwogICAgIFJlZlB0cjxBdG9t
aWNIVE1MVG9rZW4+IG1fdG9rZW47Ci0gICAgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlVVJJOwog
ICAgIGJvb2wgbV9pc0RvY3VtZW50RnJhZ21lbnROb2RlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154038</attachid>
            <date>2012-07-24 06:08:48 -0700</date>
            <delta_ts>2012-07-24 15:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92065-20120724220835.patch</filename>
            <type>text/plain</type>
            <size>8873</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ4NzNiOGRjNzNkODhk
MDQ4NTNkMGMwYzBiN2RkNTMzZGJjMzNkOC4uYjg1MWY0YjM4ZDVlYjgyMjRkZGZkZmRjNGQ1NWEw
YWMxZDQyOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTIzICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgRW5zdXJlIE5vYWgn
cyBhcmsgd2l0aG91dCByZWFkaW5nIHRoZSBET00gdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVjaG5pY2FsbHkgd2Ugc2hvdWxkbid0IHJlYWQg
YXR0cmlidXRlcyBiYWNrIGZyb20gdGhlIERPTS4gSWYgSmF2YVNjcmlwdCBjaGFuZ2VzCisgICAg
ICAgIHRoZSBhdHRyaWJ1dGVzIHZhbHVlcywgd2UgY291bGQgZ2V0IGEgc2xpZ2h0bHkgd3Jvbmcg
b3V0cHV0IGhlcmUuCisKKyAgICAgICAgUmVhZCBhdHRyaWJ1dGVzIGZyb20gdG9rZW5zIHNhdmVk
IGluIHRoZSBhY3RpdmUgZm9ybWF0dGluZyBlbGVtZW50IGxpc3QuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRy
aWJ1dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6
dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaDoKKyAgICAgICAg
KEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxT
dGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06OmxvY2FsTmFtZSk6
CisgICAgICAgIChIVE1MU3RhY2tJdGVtKToKKwogMjAxMi0wNy0yMyAgSGFueWVlIEtpbSAgPGNo
b2NvQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFdoZW4gdXNpbmcgVGV4dHVyZU1hcHBlciwg
V2ViS2l0IGRvZXMgbm90IHJldGFpbiBmaW5hbCB2YWx1ZSBvZiBvcGFjaXR5IGluIGFuaW1hdGlv
bnMsIHVubGVzcyBpdCBpcyBzcGVjaWZpZWQgb24gdGhlIGxhc3Qga2V5IGZyYW1lLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcAppbmRleCBiNDJjZWJkNmJkYjMwMGZhMjg2YmQ1NjRmMTA5OTRiNzFkOWJhOTY4Li4x
YTQ1ZmI0NjllOGRkYmM1ZDJjMGEwMTZmN2IxYmE3NGI1OTAzNDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNw
cApAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb2FoJ3MgQXJrIG9m
IEZvcm1hdHRpbmcgRWxlbWVudHMgY2FuIGZpdCB0aHJlZSBvZiBlYWNoIGVsZW1lbnQuCiBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtOb2Foc0Fya0NhcGFjaXR5ID0gMzsKIAotc3RhdGljIGlubGluZSBz
aXplX3QgYXR0cmlidXRlQ291bnRXaXRob3V0VXBkYXRlKEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0
aWMgaW5saW5lIHNpemVfdCBhdHRyaWJ1dGVDb3VudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
ewotICAgIHJldHVybiBlbGVtZW50LT5oYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpID8gZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKSA6IDA7CisgICAgcmV0dXJuIHRva2VuLT5hdHRyaWJ1dGVz
KCkuc2l6ZSgpOwogfQogCiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjpIVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0KCkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3Q6OnN3YXBUbyhFbGVtZW50KiBvbGRFbGVtZW50LCBQYXNzUmVmUHRyPEhUTUxTdGFj
awogCiB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPEhU
TUxTdGFja0l0ZW0+IGl0ZW0pCiB7Ci0gICAgZW5zdXJlTm9haHNBcmtDb25kaXRpb24oaXRlbS0+
ZWxlbWVudCgpKTsKKyAgICBlbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihpdGVtLmdldCgpKTsKICAg
ICBtX2VudHJpZXMuYXBwZW5kKGl0ZW0pOwogfQogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBI
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjpjbGVhclRvTGFzdE1hcmtlcigpCiAgICAgfQogfQog
Ci12b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25k
aXRpb25RdWlja2x5KEVsZW1lbnQqIG5ld0VsZW1lbnQsIFZlY3RvcjxFbGVtZW50Kj4mIHJlbWFp
bmluZ0NhbmRpZGF0ZXMpCit2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5z
dXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFja0l0ZW0qIG5ld0l0ZW0sIFZlY3Rv
cjxIVE1MU3RhY2tJdGVtKj4mIHJlbWFpbmluZ0NhbmRpZGF0ZXMpCiB7CiAgICAgQVNTRVJUKHJl
bWFpbmluZ0NhbmRpZGF0ZXMuaXNFbXB0eSgpKTsKIApAQCAtMTQwLDkgKzE0MCw5IEBAIHZvaWQg
SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1
aWNrbHkoRWxlbWVudCogbmV3CiAKICAgICAvLyBVc2UgYSB2ZWN0b3Igd2l0aCBpbmxpbmUgY2Fw
YWNpdHkgdG8gYXZvaWQgYSBtYWxsb2MgaW4gdGhlIGNvbW1vbiBjYXNlCiAgICAgLy8gb2YgYSBx
dWlja2x5IGVuc3VyaW5nIHRoZSBjb25kaXRpb24uCi0gICAgVmVjdG9yPEVsZW1lbnQqLCAxMD4g
Y2FuZGlkYXRlczsKKyAgICBWZWN0b3I8SFRNTFN0YWNrSXRlbSosIDEwPiBjYW5kaWRhdGVzOwog
Ci0gICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50V2l0
aG91dFVwZGF0ZShuZXdFbGVtZW50KTsKKyAgICBzaXplX3QgbmV3SXRlbUF0dHJpYnV0ZUNvdW50
ID0gYXR0cmlidXRlQ291bnQobmV3SXRlbS0+dG9rZW4oKSk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gbV9lbnRyaWVzLnNpemUoKTsgaTsgKSB7CiAgICAgICAgIC0taTsKQEAgLTE1MSwxMCArMTUx
LDEwIEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fy
a0NvbmRpdGlvblF1aWNrbHkoRWxlbWVudCogbmV3CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAvLyBRdWlja2x5IHJlamVjdCBvYnZpb3VzbHkgbm9uLW1hdGNoaW5nIGNhbmRpZGF0ZXMu
Ci0gICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IGVudHJ5LmVsZW1lbnQoKTsKLSAgICAgICAg
aWYgKG5ld0VsZW1lbnQtPnRhZ1FOYW1lKCkgIT0gY2FuZGlkYXRlLT50YWdRTmFtZSgpKQorICAg
ICAgICBIVE1MU3RhY2tJdGVtKiBjYW5kaWRhdGUgPSBlbnRyeS5zdGFja0l0ZW0oKS5nZXQoKTsK
KyAgICAgICAgaWYgKG5ld0l0ZW0tPmxvY2FsTmFtZSgpICE9IGNhbmRpZGF0ZS0+bG9jYWxOYW1l
KCkgfHwgbmV3SXRlbS0+bmFtZXNwYWNlVVJJKCkgIT0gY2FuZGlkYXRlLT5uYW1lc3BhY2VVUkko
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXR0cmlidXRlQ291bnRXaXRo
b3V0VXBkYXRlKGNhbmRpZGF0ZSkgIT0gbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50KQorICAgICAg
ICBpZiAoYXR0cmlidXRlQ291bnQoY2FuZGlkYXRlLT50b2tlbigpKSAhPSBuZXdJdGVtQXR0cmli
dXRlQ291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjYW5kaWRhdGVzLmFw
cGVuZChjYW5kaWRhdGUpOwpAQCAtMTY2LDM4ICsxNjYsMzEgQEAgdm9pZCBIVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShFbGVtZW50
KiBuZXcKICAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGVzKTsKIH0KIAot
dm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihF
bGVtZW50KiBuZXdFbGVtZW50KQordm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1
cmVOb2Foc0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQogewotICAgIFZlY3Rv
cjxFbGVtZW50Kj4gY2FuZGlkYXRlczsKLSAgICB0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9u
UXVpY2tseShuZXdFbGVtZW50LCBjYW5kaWRhdGVzKTsKKyAgICBWZWN0b3I8SFRNTFN0YWNrSXRl
bSo+IGNhbmRpZGF0ZXM7CisgICAgdHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHko
bmV3SXRlbSwgY2FuZGlkYXRlcyk7CiAgICAgaWYgKGNhbmRpZGF0ZXMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBXZSBwcmUtYWxsb2NhdGUgYW5kIHJlLXVzZSB0aGlzIHNl
Y29uZCB2ZWN0b3IgdG8gc2F2ZSBvbmUgbWFsbG9jIHBlcgogICAgIC8vIGF0dHJpYnV0ZSB0aGF0
IHdlIHZlcmlmeS4KLSAgICBWZWN0b3I8RWxlbWVudCo+IHJlbWFpbmluZ0NhbmRpZGF0ZXM7Cisg
ICAgVmVjdG9yPEhUTUxTdGFja0l0ZW0qPiByZW1haW5pbmdDYW5kaWRhdGVzOwogICAgIHJlbWFp
bmluZ0NhbmRpZGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYW5kaWRhdGVzLnNpemUoKSk7
CiAKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlQ291bnRX
aXRob3V0VXBkYXRlKG5ld0VsZW1lbnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdFbGVtZW50QXR0cmlidXRlQ291bnQ7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgY29uc3QgVmVjdG9yPEF0
dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBuZXdJdGVtLT50b2tlbigpLT5hdHRyaWJ1dGVzKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpXTsKIAogICAgICAg
ICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNhbmRpZGF0ZXMuc2l6ZSgpOyArK2opIHsKLSAgICAg
ICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbal07CisgICAgICAgICAgICBI
VE1MU3RhY2tJdGVtKiBjYW5kaWRhdGUgPSBjYW5kaWRhdGVzW2pdOwogCiAgICAgICAgICAgICAv
LyBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBjaGVja2VkIGJ5IHRy
eVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5LgotICAgICAgICAgICAgQVNTRVJUKG5l
d0VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCkgPT0gY2FuZGlkYXRlLT5hdHRyaWJ1dGVDb3VudCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdFbGVtZW50LT50YWdRTmFtZSgpID09IGNhbmRpZGF0
ZS0+dGFnUU5hbWUoKSk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBUZWNobmljYWxseSB3ZSBz
aG91bGRuJ3QgcmVhZCB0aGlzIGluZm9ybWF0aW9uIGJhY2sgZnJvbQotICAgICAgICAgICAgLy8g
dGhlIERPTS4gSW5zdGVhZCwgdGhlIHBhcnNlciBzaG91bGQga2VlcCBhIGNvcHkgb2YgdGhlIGlu
Zm9ybWF0aW9uLgotICAgICAgICAgICAgLy8gVGhpcyBpc24ndCByZWFsbHkgbXVjaCBvZiBhIHBy
b2JsZW0gZm9yIG91ciBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlCi0gICAgICAgICAgICAvLyB3ZSBy
dW4gdGhlIHBhcnNlciBvbiB0aGUgbWFpbiB0aHJlYWQsIGJ1dCB0aGUgc3BlYyBpcyB3cml0dGVu
IHNvCi0gICAgICAgICAgICAvLyB0aGF0IGltcGxlbWVudGF0aW9ucyBjYW4gcnVuIG9mZiB0aGUg
bWFpbiB0aHJlYWQuIElmIEphdmFTY3JpcHQKLSAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIGF0
dHJpYnV0ZXMgdmFsdWVzLCB3ZSBjb3VsZCBnZXQgYSBzbGlnaHRseSB3cm9uZwotICAgICAgICAg
ICAgLy8gb3V0cHV0IGhlcmUuCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5mYXN0R2V0QXR0
cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpKSA9PSBhdHRyaWJ1dGUtPnZhbHVlKCkpCisgICAgICAg
ICAgICBBU1NFUlQoYXR0cmlidXRlQ291bnQobmV3SXRlbS0+dG9rZW4oKSkgPT0gYXR0cmlidXRl
Q291bnQoY2FuZGlkYXRlLT50b2tlbigpKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3SXRlbS0+
bG9jYWxOYW1lKCkgPT0gY2FuZGlkYXRlLT5sb2NhbE5hbWUoKSAmJiBuZXdJdGVtLT5uYW1lc3Bh
Y2VVUkkoKSA9PSBjYW5kaWRhdGUtPm5hbWVzcGFjZVVSSSgpKTsKKworICAgICAgICAgICAgQXR0
cmlidXRlKiBjYW5kaWRhdGVBdHRyaWJ1dGUgPSBjYW5kaWRhdGUtPnRva2VuKCktPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlLm5hbWUoKSk7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlQXR0
cmlidXRlICYmIGNhbmRpZGF0ZUF0dHJpYnV0ZS0+dmFsdWUoKSA9PSBhdHRyaWJ1dGUudmFsdWUo
KSkKICAgICAgICAgICAgICAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUp
OwogICAgICAgICB9CiAKQEAgLTIxMiw3ICsyMDUsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29uZGl0aW9uKEVsZW1lbnQqIG5ld0VsZW1lbnQpCiAg
ICAgLy8gaG93ZXZlciwgdGhhdCB3ZSB3aWwgc3BpbiB0aGUgbG9vcCBtb3JlIHRoYW4gb25jZSBi
ZWNhdXNlIG9mIGhvdyB0aGUKICAgICAvLyBmb3JtYXR0aW5nIGVsZW1lbnQgbGlzdCBnZXRzIHBl
cm11dGVkLgogICAgIGZvciAoc2l6ZV90IGkgPSBrTm9haHNBcmtDYXBhY2l0eSAtIDE7IGkgPCBj
YW5kaWRhdGVzLnNpemUoKTsgKytpKQotICAgICAgICByZW1vdmUoY2FuZGlkYXRlc1tpXSk7Cisg
ICAgICAgIHJlbW92ZShjYW5kaWRhdGVzW2ldLT5lbGVtZW50KCkpOwogfQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5oCmluZGV4IDlmMzU0NWQyNWMxNWMzOGJhMmZkODBiM2JlZjgyNjRjYWMw
YzY2YjAuLjM1YWMxN2NjMmFiODI2ZTQ3NTYwZTFmYjcxOTA5ODk2ODA4ZGUzN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmgKQEAgLTEzMCw4ICsxMzAsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5o
dG1sI2xpc3Qtb2YtYWN0aXZlLWZvcm1hdHRpbmctZWxlbWVudHMKICAgICAvLyBUaGVzZSBmdW5j
dGlvbnMgZW5mb3JjZSB0aGUgIk5vYWgncyBBcmsiIGNvbmRpdGlvbiwgd2hpY2ggcmVtb3ZlcyBy
ZWR1bmRhbnQgbWlzLW5lc3RlZCBlbGVtZW50cy4KLSAgICB2b2lkIHRyeVRvRW5zdXJlTm9haHNB
cmtDb25kaXRpb25RdWlja2x5KEVsZW1lbnQqLCBWZWN0b3I8RWxlbWVudCo+JiByZW1haW5pbmdD
YW5kaWF0ZXMpOwotICAgIHZvaWQgZW5zdXJlTm9haHNBcmtDb25kaXRpb24oRWxlbWVudCopOwor
ICAgIHZvaWQgdHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoSFRNTFN0YWNrSXRl
bSosIFZlY3RvcjxIVE1MU3RhY2tJdGVtKj4mIHJlbWFpbmluZ0NhbmRpYXRlcyk7CisgICAgdm9p
ZCBlbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKik7CiAKICAgICBWZWN0b3I8
RW50cnk+IG1fZW50cmllczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3RhY2tJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Rh
Y2tJdGVtLmgKaW5kZXggN2RjNzYwNzMwZjVkZDQ0OTczNmZiM2IxMDZmZDc4MzIyNzJmMjFmMS4u
OWZjYzMxZGFlMzVlMmYyN2FlMTQ4ZDE0ZWMwNzQ0OWQ0ZTk3YjM0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6
CiAKICAgICBBdG9taWNIVE1MVG9rZW4qIHRva2VuKCkgeyByZXR1cm4gbV90b2tlbi5nZXQoKTsg
fQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lc3BhY2VVUkk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdG9rZW4tPm5hbWUoKTsgfQogCiBwcml2YXRlOgogICAgIEhUTUxTdGFj
a0l0ZW0oUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBub2RlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>