<?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>58762</bug_id>
          
          <creation_ts>2011-04-17 22:58:17 -0700</creation_ts>
          <short_desc>localStorage string values truncated at \x00 characters on browser restart</short_desc>
          <delta_ts>2022-08-19 18:56:00 -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>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">inexorabletash</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adauria</cc>
    
    <cc>ahmad.saleem792</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>d</cc>
    
    <cc>dwim79</cc>
    
    <cc>jonathan.dong.webkit</cc>
    
    <cc>jorlow</cc>
    
    <cc>naveenbobbili</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>387552</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">inexorabletash</who>
    <bug_when>2011-04-17 22:58:17 -0700</bug_when>
    <thetext>Repro steps:

1. Launch WebKit
2. Browse to any site (e.g. https://bugs.webkit.org
3. Develop &gt; Show Error Console
4. Enter: localStorage.setItem(&apos;foo&apos;,&apos;123\x00567&apos;)
5. Enter: localStorage.getItem(&apos;foo&apos;).length

Expected: 7
Actual: 7

6. Quit WebKit
7. Launch WebKit
8. Browse back to the site
9. Develop &gt; Show Error Console
10. Enter: localStorage.getItem(&apos;foo&apos;).length

Expected: 7
Actual: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387857</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-18 10:46:46 -0700</bug_when>
    <thetext>Whoa!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419193</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-06-11 01:02:27 -0700</bug_when>
    <thetext>I studied the behavior in latest version of Opera and Firefox, in Opera it just truncated the string from \x00 and only &apos;123&apos; left, while in Firefox it converted the \x00 into &quot;\0&quot; then the value became &quot;123\0567&quot;.
I also checked the spec of Web Storage (http://dev.w3.org/html5/webstorage/), it implies that &quot;Values can be any data type supported by the structured clone algorithm.&quot; But actually, it seems the main stream browsers just treated the value as String.
So I suppose what we should do now is just make sure that the string saved in StorageMap equals to the string we saved into the SQLite database. Just follow either Opera way or Firefox way.

Any opinion about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420196</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-06-13 21:27:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I studied the behavior in latest version of Opera and Firefox, in Opera it just truncated the string from \x00 and only &apos;123&apos; left, while in Firefox it converted the \x00 into &quot;\0&quot; then the value became &quot;123\0567&quot;.
&gt; I also checked the spec of Web Storage (http://dev.w3.org/html5/webstorage/), it implies that &quot;Values can be any data type supported by the structured clone algorithm.&quot; But actually, it seems the main stream browsers just treated the value as String.
&gt; So I suppose what we should do now is just make sure that the string saved in StorageMap equals to the string we saved into the SQLite database. Just follow either Opera way or Firefox way.
&gt; 
&gt; Any opinion about that?

Yeah, at the very least the value should not change when the browser is restarted.  It&apos;s likely getting mangled in SQLite, but I&apos;m not entirely sure.  (In IndexedDB, we switched to using a blob type in SQLite to avoid similar problems.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420433</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-06-14 08:38:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Yeah, at the very least the value should not change when the browser is restarted.  It&apos;s likely getting mangled in SQLite, but I&apos;m not entirely sure.  (In IndexedDB, we switched to using a blob type in SQLite to avoid similar problems.)

you are right, I traced the codes, and the string was mangled by SQLite when generate SQL insert statement using sqlite3_bind_text() in SQLiteStatement::bindText(), which was called in StorageAreaSync::sync() as the value string was treated as a string.

So I suppose the best way to handle this bug is to use BLOB instead of TEXT as the value type in ItemTable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420434</commentid>
    <comment_count>5</comment_count>
      <attachid>97124</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-06-14 08:42:00 -0700</bug_when>
    <thetext>Created attachment 97124
patch

changed the structure of ItemTable, use BLOB instead of TEXT as the value type, and modified the way we get and set value string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420466</commentid>
    <comment_count>6</comment_count>
      <attachid>97124</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-06-14 09:07:06 -0700</bug_when>
    <thetext>Comment on attachment 97124
patch

Will this work for existing databases?  My guess is that you&apos;ll need to do some sort of migration.  (i.e. check when loading stuff whether it&apos;s text, and if so, convert it.)

Also, you&apos;ll need a layout test.  Also I believe the patch is backwards (i.e. I see the change log entry being deleted).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420472</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-14 09:13:51 -0700</bug_when>
    <thetext>Do we have a way to test something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420477</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-06-14 09:20:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Do we have a way to test something like this?

One could add something to the layout test controller.  Though that&apos;d be a lot of effort for little gain.  A manual test would do the trick though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420506</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-06-14 09:50:55 -0700</bug_when>
    <thetext>I doubt it&apos;ll be useful, but in case it is, here&apos;s the related indexedDB bug: https://bugs.webkit.org/show_bug.cgi?id=52890

Since IndexedDB doesn&apos;t &quot;cache&quot; things in memory, the layout test was trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432547</commentid>
    <comment_count>10</comment_count>
      <attachid>99775</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-05 18:51:08 -0700</bug_when>
    <thetext>Created attachment 99775
patch

Thanks for all your suggestions. Actually I&apos;m trying to contribute my first patch in webkit. :)

I&apos;ve created a new patch including the ItemTable migration and a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432551</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 18:54:50 -0700</bug_when>
    <thetext>Attachment 99775 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:17:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:18:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:20:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:21:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:23:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:25:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:27:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:28:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 10 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433258</commentid>
    <comment_count>12</comment_count>
      <attachid>99775</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-07-06 22:02:27 -0700</bug_when>
    <thetext>Comment on attachment 99775
patch

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

looking pretty good

&gt; Source/WebCore/ChangeLog:7
&gt; +

Data migrations scare me and people like release engineers and QA...might be worth a bit more of a note with something like DATA MIGRATION in all caps so it can catch the right people&apos;s attention if they&apos;re skimming the ChangeLog.  :-)

&gt; Source/WebCore/manual-tests/localstorage-value-truncation.html:18
&gt; +        document.write(&quot;&lt;/p&gt;&lt;p&gt;The expected value is: &apos;123\x0056&apos;, the expected length is: 6&lt;/p&gt;&quot;);

You should also be able to write a big pass or fail for whether it seems correct.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:270
&gt; +    SQLiteStatement query(m_database, &quot;SELECT key, value FROM ItemTable&quot;);

This will be very heavyweight.  There must be some way to examine just the column.  If not, at least limit it to one row.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:273
&gt; +    query.finalize();

The destructor finalizes, so maybe a bit cleaner to just wrap the block in {}&apos;s so query goes out of scope at this point.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:284
&gt; +    size_t numOfCommands = sizeof(commands) / sizeof(commands[0]);

Does webkit have any macro for this?  I vaguely remember the answer being no, but just double checking.  Alternately, putting a NULL as the last element and looping until you see it might be slightly cleaner.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:286
&gt; +    SQLiteTransaction transaction(m_database, false);

If you&apos;re feeling particularly heroic, creating an enum for read only and read write and replacing the second param for SQLiteTransactions would be awesome.  Prob in another patch.  cc me if you decide to do it.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:289
&gt; +        if (!m_database.executeCommand(commands[i])) {

This worries me some...  If this happens, will localStorage not be able to proceed?  I kind of think in such a case we should just drop all the old data (well, save it to some special table name so that it is at least possible to recover it) and move on...

And there should be a NOTREACHED here since someone with it under debugger would probably like to know if we fail.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434945</commentid>
    <comment_count>13</comment_count>
      <attachid>100315</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-11 09:55:01 -0700</bug_when>
    <thetext>Created attachment 100315
patch

Thank you for your help Jeremy, you are so kind and patient, and your suggestions are very useful to me.
I&apos;ve modified all the problems you&apos;ve mentioned, please help me to review it.

BTW, I&apos;m interested in creating an enum for the SQLiteTransactions, could you tell me how can we start?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434948</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 09:57:42 -0700</bug_when>
    <thetext>Attachment 100315 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/storage/StorageAreaSync.cpp:302:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434950</commentid>
    <comment_count>15</comment_count>
      <attachid>100315</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-11 09:58:27 -0700</bug_when>
    <thetext>Comment on attachment 100315
patch

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

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:298
&gt; +    return String(&quot;BLOB&quot;) == String(reinterpret_cast&lt;const UChar*&gt;(sqlite3_column_decltype16(m_statement, col))).upper();

Please use equalIgnoringCase function here.

&gt; Source/WebCore/platform/sql/SQLiteStatement.h:77
&gt; +    bool isColumnDeclearedAsBlob(int col);

s/Decleared/Declared/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435336</commentid>
    <comment_count>16</comment_count>
      <attachid>100391</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-11 17:41:12 -0700</bug_when>
    <thetext>Created attachment 100391
patch

Thanks Alexey, I&apos;ve fixed issues that you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436305</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-07-13 01:32:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=100315) [details]
&gt; patch
&gt; 
&gt; Thank you for your help Jeremy, you are so kind and patient, and your suggestions are very useful to me.
&gt; I&apos;ve modified all the problems you&apos;ve mentioned, please help me to review it.
&gt; 
&gt; BTW, I&apos;m interested in creating an enum for the SQLiteTransactions, could you tell me how can we start?

Simply create it in that class, change the bool param in the method to use your enum, search for all places that call the method, and change them to use the enum instead of the boolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436308</commentid>
    <comment_count>18</comment_count>
      <attachid>100391</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-07-13 01:43:54 -0700</bug_when>
    <thetext>Comment on attachment 100391
patch

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

Should be r+able if this stuff is addressed.  Thanks!

&gt; Source/WebCore/storage/StorageAreaSync.cpp:276
&gt; +        SQLiteStatement query(m_database, &quot;SELECT value FROM ItemTable where rowid = 1&quot;);

Hm...will this always work?  What if someone inserts something, inserts another something, then deletes that first something.  Won&apos;t then there be items in it but no rowid = 1?  I think you just want s/where rowid = 1/limit 1/.  Right?

&gt; Source/WebCore/storage/StorageAreaSync.cpp:277
&gt; +        if (query.isColumnDeclaredAsBlob(0))

Wait, will this work if there was no data in the table?

&gt; Source/WebCore/storage/StorageAreaSync.cpp:294
&gt; +    while (commands[i]) {

Probably a bit cleaner to do for (size_t i = 0; commands[i]; ++i)

&gt; Source/WebCore/storage/StorageAreaSync.cpp:299
&gt; +            // save the ItemTable for future restore by renaming it.

Mention that this will essentially delete the current database, but that&apos;s better than continually hitting this case and never being able to use the local storage.  Mention that if this is ever hit, it&apos;s definitely a bug, and that&apos;s why we assert not reached below.

Actually, you should probably move the assert not reached to just above this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436316</commentid>
    <comment_count>19</comment_count>
      <attachid>100391</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-13 02:30:01 -0700</bug_when>
    <thetext>Comment on attachment 100391
patch

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

&gt;&gt; Source/WebCore/storage/StorageAreaSync.cpp:276
&gt;&gt; +        SQLiteStatement query(m_database, &quot;SELECT value FROM ItemTable where rowid = 1&quot;);
&gt; 
&gt; Hm...will this always work?  What if someone inserts something, inserts another something, then deletes that first something.  Won&apos;t then there be items in it but no rowid = 1?  I think you just want s/where rowid = 1/limit 1/.  Right?

yes your way is more appropriate, thanks.

&gt;&gt; Source/WebCore/storage/StorageAreaSync.cpp:277
&gt;&gt; +        if (query.isColumnDeclaredAsBlob(0))
&gt; 
&gt; Wait, will this work if there was no data in the table?

I&apos;ve tested on the empty ItemTable and it works. Actually we just prepare() but not really step() the statement in isColumnDeclaredAsBlob() function, as the sqlite3_column_decltype16() do not need to execute the statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436492</commentid>
    <comment_count>20</comment_count>
      <attachid>100681</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-13 10:04:17 -0700</bug_when>
    <thetext>Created attachment 100681
patch

Thanks Jeremy, I&apos;ve learned a lot from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436632</commentid>
    <comment_count>21</comment_count>
      <attachid>100681</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-07-13 13:40:59 -0700</bug_when>
    <thetext>Comment on attachment 100681
patch

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

A few suggestions to make things more clear.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:276
&gt; +        SQLiteStatement query(m_database, &quot;SELECT value FROM ItemTable LIMIT 1&quot;);

Add a comment to note that this query isn&apos;t ever executed.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:298
&gt; +            ASSERT_NOT_REACHED();

Maybe put this between the comment and the if statement since the comment partially explains this too.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:300
&gt; +            // finally it will try to save the ItemTable by renaming it, for manually restore in the future.

nit: It&apos;s nice to puse proper sentences.

&gt; Source/WebCore/storage/StorageAreaSync.cpp:301
&gt; +            // NOTICE: this will eventually DELETE the current database, but that&apos;s better

Did you mean &quot;essentially&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437098</commentid>
    <comment_count>22</comment_count>
      <attachid>100810</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-14 08:34:37 -0700</bug_when>
    <thetext>Created attachment 100810
patch

Thanks a lot, Jeremy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437275</commentid>
    <comment_count>23</comment_count>
      <attachid>100810</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 13:01:32 -0700</bug_when>
    <thetext>Comment on attachment 100810
patch

Rejecting attachment 100810 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 1

Last 500 characters of output:
hangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).
Updating OpenSource
Current branch master is up to date.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/9061334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437514</commentid>
    <comment_count>24</comment_count>
      <attachid>100923</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2011-07-14 20:41:15 -0700</bug_when>
    <thetext>Created attachment 100923
patch

Sorry Jeremy, I thought commit bot will add your name into ChangeLog as the reviewer but it seems I have to add it manually. thank you for your patient! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437614</commentid>
    <comment_count>25</comment_count>
      <attachid>100923</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-07-15 00:41:39 -0700</bug_when>
    <thetext>Comment on attachment 100923
patch

rubber stamp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437629</commentid>
    <comment_count>26</comment_count>
      <attachid>100923</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-15 01:35:29 -0700</bug_when>
    <thetext>Comment on attachment 100923
patch

Clearing flags on attachment: 100923

Committed r91060: &lt;http://trac.webkit.org/changeset/91060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463972</commentid>
    <comment_count>27</comment_count>
    <who name="Dongwoo Joshua Im">dwim79</who>
    <bug_when>2011-09-08 02:53:14 -0700</bug_when>
    <thetext>I</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463973</commentid>
    <comment_count>28</comment_count>
    <who name="Dongwoo Joshua Im">dwim79</who>
    <bug_when>2011-09-08 02:56:21 -0700</bug_when>
    <thetext>I have one question. Why do we need to convert ItemTable to ItemTable2, rather than just create the ItemTable use BLOB value for the first time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472191</commentid>
    <comment_count>29</comment_count>
    <who name="Naveen Bobbili">naveenbobbili</who>
    <bug_when>2011-09-23 06:07:38 -0700</bug_when>
    <thetext>As per sqlite3 API , NULL pointer is returned if we try to get the value for an empty string (&quot;&quot;) stored as blob. So storing an empty string as would return NULL string while retrieving.
Test Case:
&lt;html&gt; 
  &lt;head&gt; 
    &lt;script&gt; 
      console.log(localStorage[&apos;test1&apos;] + &quot;|&quot;+localStorage[&apos;test2&apos;]+&quot;|&quot;);
      localStorage[&apos;test1&apos;] = &quot;hi&quot;;
      localStorage[&apos;test2&apos;] = &quot;&quot;;
    &lt;/script&gt; 
  &lt;/head&gt; 
  &lt;body&gt;
  &lt;/body&gt;
&lt;/html&gt;

2. Load in chrome  and on first visit it reads &quot;undefined|undefined&quot; in the console. Reload and you get &quot;hi||&quot;.
3. Restart browser and it prints &quot;hi|undefined&quot;. But it is supposed to print &quot;hi||&quot; on restarting the browser.

This issue has creeped in once we started storing the value as BLOB and was working well on previous versions of chrome.

For reference: http://code.google.com/p/chromium/issues/detail?id=90879
We can fix it in sqlite3 api to return the valid pointer instead of a NULL pointer when the length of the string is 0. 

But seemed logical to start a discussion here. Please post your replies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475397</commentid>
    <comment_count>30</comment_count>
    <who name="Naveen Bobbili">naveenbobbili</who>
    <bug_when>2011-09-29 06:37:18 -0700</bug_when>
    <thetext>I checked from my end to make an attempt to checkin code changes to Sqlite3 api code in chrome. It is not approved. 
So we might have to make changes in LocalStorage code.
There are 2 approaches that I could think of

1) Since local storage doesn&apos;t allow NULL blobs so we surely know that if we get a NULL pointer for sqlite3_column_blob() API it is because we have stored an empty string. Keeping this in perspective we can check if blobisempty and return TRUE when sqlite3_column_blob() return NULL . But this patch has some evident problems. The check would return TRUE for caller who allow storing NULL blobs also. So its not consistent.

2) Add a new column inside local storage TABLE which sets an INTEGER value to 1 when if we are storing EMPTY string and 0 other wise. While retrieving the value from db we can use this column&apos;s value. 

Please let me know which is the preferred solution, so that I can put up a patch for the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475969</commentid>
    <comment_count>31</comment_count>
    <who name="Naveen Bobbili">naveenbobbili</who>
    <bug_when>2011-09-30 01:19:06 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=69138 
Added to track changes to fix empty string issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554145</commentid>
    <comment_count>32</comment_count>
      <attachid>100681</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-10 10:18:16 -0800</bug_when>
    <thetext>Comment on attachment 100681
patch

Cleared Jeremy Orlow&apos;s review+ from obsolete attachment 100681 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890701</commentid>
    <comment_count>33</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-08-11 14:29:00 -0700</bug_when>
    <thetext>I took the test case from patch and changed it into JSFiddle:

Link - https://jsfiddle.net/614mp9Lb/

Opened new window (non-Private) and run the test and then closed the window and then reopen the test and it showed this:

The value of TruncVal is: &apos;123567&apos;, the length is: 7
PASS.

NOTE - I had Private Window of Safari open.

I don&apos;t know whether it is something going to affect this test result but just wanted to share updated test results. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892582</commentid>
    <comment_count>34</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-08-19 18:56:00 -0700</bug_when>
    <thetext>I followed the original steps including relaunching Safari Technology Preview, and got a successful result (7).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97124</attachid>
            <date>2011-06-14 08:42:00 -0700</date>
            <delta_ts>2011-07-05 18:51:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patchOfBug58762.patch</filename>
            <type>text/plain</type>
            <size>2571</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYThhZGJkLi43YWY3YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDE3ICsxLDMg
QEAKLTIwMTEtMDYtMTQgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KLQotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkuCi0KLSAgICAgICAgbG9jYWxT
dG9yYWdlIHN0cmluZyB2YWx1ZXMgdHJ1bmNhdGVkIGF0IFx4MDAgY2hhcmFjdGVycyBvbiBicm93
c2VyIHJlc3RhcnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4NzYyCi0KLSAgICAgICAgTm8gbmV3IHRlc3RzLgotCi0gICAgICAgICogc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwOiBDaGFuZ2UgdGhlIGxvY2FsU3RvcmFnZSB2YWx1ZSB0eXBlIGZy
b20gVGV4dCB0byBCTE9CIHRvIGF2b2lkIHRoZSB2YWx1ZSBzdHJpbmcgdHJ1bmNhdGlvbiBhdCBc
eDAwLgotICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UpOiBD
aGFuZ2UgdGhlIGRhdGFiYXNlIHN0cnVjdHVyZSwgdXNlIEJMT0IgdG8gcmVwbGFjZSB0aGUgVEVY
VCB0eXBlIG9mIHZhbHVlIHNlZ21lbnQgaW4gSXRlbVRhYmxlLgotICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KTogVXNlIGdldENvbHVtbkJsb2JBc1N0cmlu
ZygpIHRvIGltcG9ydCB0aGUgQkxPQiB2YWx1ZS4KLSAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhU3luYzo6c3luYyk6IFVzZSBiaW5kQmxvYigpIHRvIGJpbmQgdmFsdWUgc3RyaW5nIHRvIHRo
ZSBTUUxpdGVTdGF0ZW1lbnQgZm9yIHRoZSBkYXRhYmFzZSBleGVjdXRpb24uCi0KIDIwMTEtMDYt
MTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmNwcAppbmRleCA3MzhiNThiLi45NGEwMDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBT
dG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUgb3Blbmlu
Z1N0cmF0ZWd5KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBJdGVtVGFibGUgKGtl
eSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwpIikpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
IkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCki
KSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdGFibGUgSXRlbVRhYmxl
IGZvciBsb2NhbCBzdG9yYWdlIik7CiAgICAgICAgIG1hcmtJbXBvcnRlZCgpOwogICAgICAgICBt
X2RhdGFiYXNlT3BlbkZhaWxlZCA9IHRydWU7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBTdG9y
YWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQoKQogCiAgICAgaW50IHJlc3VsdCA9IHF1ZXJ5LnN0
ZXAoKTsKICAgICB3aGlsZSAocmVzdWx0ID09IFNRTFJlc3VsdFJvdykgewotICAgICAgICBpdGVt
TWFwLnNldChxdWVyeS5nZXRDb2x1bW5UZXh0KDApLCBxdWVyeS5nZXRDb2x1bW5CbG9iQXNTdHJp
bmcoMSkpOworICAgICAgICBpdGVtTWFwLnNldChxdWVyeS5nZXRDb2x1bW5UZXh0KDApLCBxdWVy
eS5nZXRDb2x1bW5UZXh0KDEpKTsKICAgICAgICAgcmVzdWx0ID0gcXVlcnkuc3RlcCgpOwogICAg
IH0KIApAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jKGJvb2wg
Y2xlYXJJdGVtcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zCiAKICAgICAg
ICAgLy8gSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBub24tbnVsbCwgd2UncmUgZG9pbmcgYW4g
aW5zZXJ0LCBzbyBiaW5kIGl0IGFzIHRoZSB2YWx1ZS4KICAgICAgICAgaWYgKCFpdC0+c2Vjb25k
LmlzTnVsbCgpKQotICAgICAgICAgICAgcXVlcnkuYmluZEJsb2IoMiwgaXQtPnNlY29uZCk7Cisg
ICAgICAgICAgICBxdWVyeS5iaW5kVGV4dCgyLCBpdC0+c2Vjb25kKTsKIAogICAgICAgICBpbnQg
cmVzdWx0ID0gcXVlcnkuc3RlcCgpOwogICAgICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERv
bmUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99775</attachid>
            <date>2011-07-05 18:51:08 -0700</date>
            <delta_ts>2011-07-11 09:55:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.58762</filename>
            <type>text/plain</type>
            <size>8282</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYWJmMGQzLi40MWRkNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMDctMDUgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBsb2NhbFN0b3JhZ2U6IHN0cmluZyB2YWx1ZXMgdHJ1bmNhdGVkIGF0IFx4MDAgY2hhcmFjdGVy
cyBvbiBicm93c2VyIHJlc3RhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU4NzYyCisKKyAgICAgICAgVGVzdHM6IG1hbnVhbC10ZXN0cy9sb2NhbHN0
b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sCisKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvbG9j
YWxzdG9yYWdlLXZhbHVlLXRydW5jYXRpb24uaHRtbDogQWRkZWQuCisJCURlbW9zdHJhdGUgdGhl
IHRlc3RjYXNlIHNob3duIGluIGJ1ZyA1ODc2Mi4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6aXND
b2x1bW5CbG9iKToKKwkJVGVzdCBpZiB0aGUgcHJlLWRlZmluZWQgdHlwZSBvZiB2YWx1ZSBpcyBC
TE9CLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisJCUNoYW5nZSB0aGUgbG9jYWxTdG9yYWdl
IHZhbHVlIHR5cGUgZnJvbSBUZXh0IHRvIEJMT0IgdG8gYXZvaWQgdGhlCisJCXZhbHVlIHN0cmlu
ZyB0cnVuY2F0aW9uIGF0IFx4MDAuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6
Om9wZW5EYXRhYmFzZSk6CisJCUNoYW5nZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJlLCB1c2UgQkxP
QiB0byByZXBsYWNlIHRoZSBURVhUIHR5cGUgb2YKKwkJdmFsdWUgc2VnbWVudCBpbiBJdGVtVGFi
bGUuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJ
Zk5lZWRlZCk6CisJCU1pZ3JhdGUgdGhlIEl0ZW1UYWJsZSBpZiB0aGUgcHJlLWRlZmluZWQgdHlw
ZSBvZiB2YWx1ZSBpcyBURVhULgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpw
ZXJmb3JtSW1wb3J0KToKKwkJVXNlIGdldENvbHVtbkJsb2JBc1N0cmluZygpIHRvIGltcG9ydCB0
aGUgQkxPQiB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6c3luYyk6
CisJCVVzZSBiaW5kQmxvYigpIHRvIGJpbmQgdmFsdWUgc3RyaW5nIHRvIHRoZSBTUUxpdGVTdGF0
ZW1lbnQgZm9yIHRoZQorCQlkYXRhYmFzZSBleGVjdXRpb24uCisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuaDoKKwogMjAxMS0wNi0yMiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZp
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS12
YWx1ZS10cnVuY2F0aW9uLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvbG9jYWxz
dG9yYWdlLXZhbHVlLXRydW5jYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xNGUxMGRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFs
LXRlc3RzL2xvY2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKQEAgLTAsMCArMSwyNiBA
QAorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5JbiB0aGlzIHRlc3Qgd2UgbmVlZCB0byBmaW5kIG91
dCBpZiB0aGUgYnJvd3NlciBjYW4gc2F2ZSB0aGUgbG9jYWxTdG9yYWdlIGl0ZW0gY29ycmVjdGx5
IHdpdGhvdXQgdHJ1bmNhdGVkIGJ5IHRoZSBceDAwIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmlu
Zy48L2E+PGJyPgorICAgIDxicj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICB2YXIgeCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdUcnVuY1ZhbCcpOworICAgIGlmICgheCkg
eworICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVHJ1bmNWYWwnLCAnMTIzXHgwMDU2Jyk7
CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5JdCBoYXMgbm90IHRoZSAnVHJ1bmNWYWwnIGlu
IHRoZSBsb2NhbFN0b3JhZ2UgZGF0YWJhc2UsIGNyZWF0ZSBpdCB1c2luZzo8YnI+Iik7CisgICAg
ICAgIGRvY3VtZW50LndyaXRlKCI8Y29kZT5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVHJ1bmNWYWwn
LCAnMTIzXHgwMDU2Jyk7PC9jb2RlPjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIk5v
dyBjbG9zZSB5b3VyIGJyb3dzZXIgYW5kIHN0YXJ0IGl0IGFnYWluIHRvIHNlZSB0aGUgcmVzdWx0
cy48L3A+Iik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+
VGhlIHZhbHVlIG9mIFRydW5jVmFsIGlzOiAnIik7CisgICAgICAgIGRvY3VtZW50LndyaXRlKHgp
OworICAgICAgICBkb2N1bWVudC53cml0ZSgiJywgdGhlIGxlbmd0aCBpczogIik7CisgICAgICAg
IGRvY3VtZW50LndyaXRlKHgubGVuZ3RoKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIjwvcD48
cD5UaGUgZXhwZWN0ZWQgdmFsdWUgaXM6ICcxMjNceDAwNTYnLCB0aGUgZXhwZWN0ZWQgbGVuZ3Ro
IGlzOiA2PC9wPiIpOworICAgICAgICBkb2N1bWVudC53cml0ZSgiPGEgaHJlZj1cImphdmFzY3Jp
cHQ6bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ1RydW5jVmFsJyk7XCI+cmVtb3ZlICdUcnVuY1Zh
bCcgZnJvbSBsb2NhbFN0b3JhZ2U8L2E+Iik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxicj4KKzxw
PlRoaXMgaXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01ODc2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzYy
PC9hPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkOTE4NmRjLi44MzAyODliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg3LDYgKzI4
NywxOCBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5OdWxsKGludCBjb2wpCiAgICAg
cmV0dXJuIHNxbGl0ZTNfY29sdW1uX3R5cGUobV9zdGF0ZW1lbnQsIGNvbCkgPT0gU1FMSVRFX05V
TEw7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkJsb2IoaW50IGNvbCkKK3sK
KyAgICBBU1NFUlQoY29sID49IDApOworICAgIGlmICghbV9zdGF0ZW1lbnQpCisgICAgICAgIGlm
IChwcmVwYXJlQW5kU3RlcCgpICE9IFNRTElURV9ST1cpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29sKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gU3RyaW5nKCJCTE9CIikgPT0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBjb2wp
KSkudXBwZXIoKTsKK30KKwogU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFtZShp
bnQgY29sKQogewogICAgIEFTU0VSVChjb2wgPj0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKaW5kZXggMzVkY2VjZi4uNWZiYzlmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApAQCAtNzQsNiAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgaW50IGNvbHVtbkNvdW50KCk7CiAgICAgCiAgICAgYm9vbCBp
c0NvbHVtbk51bGwoaW50IGNvbCk7CisgICAgYm9vbCBpc0NvbHVtbkJsb2IoaW50IGNvbCk7CiAg
ICAgU3RyaW5nIGdldENvbHVtbk5hbWUoaW50IGNvbCk7CiAgICAgU1FMVmFsdWUgZ2V0Q29sdW1u
VmFsdWUoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVtblRleHQoaW50IGNvbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggOTRhMDAyYS4uNjg5
NTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNR
TGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTdG9yYWdlQXJlYUltcGwuaCIKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKQEAg
LTI1NCw3ICsyNTUsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5E
YXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBO
T1QgRVhJU1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
IHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIGlmICghbV9k
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRh
YmxlIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMKSIpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKICAgICAgICAgbWFy
a0ltcG9ydGVkKCk7CiAgICAgICAgIG1fZGF0YWJhc2VPcGVuRmFpbGVkID0gdHJ1ZTsKQEAgLTI2
NCw2ICsyNjUsMzYgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0
YWJhc2VQYXJhbVR5cGUgb3BlbmluZ1N0cmF0ZWd5KQogICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFj
a2VyKCkuc2V0T3JpZ2luRGV0YWlscyhtX2RhdGFiYXNlSWRlbnRpZmllciwgZGF0YWJhc2VGaWxl
bmFtZSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVk
ZWQoKQoreworICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFiYXNlLCAiU0VMRUNUIGtl
eSwgdmFsdWUgRlJPTSBJdGVtVGFibGUiKTsKKyAgICBpZiAocXVlcnkuaXNDb2x1bW5CbG9iKDEp
KQorICAgICAgICByZXR1cm47CisgICAgcXVlcnkuZmluYWxpemUoKTsKKworICAgIC8vIGFsdGVy
IHRhYmxlIGZvciBiYWNrd2FyZCBjb21wbGlhbmNlLCBjaGFuZ2UgdGhlIHZhbHVlIHR5cGUgZnJv
bSBURVhUIHRvIEJMT0IuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbW1hbmRzW10gPSB7Cisg
ICAgICAgICJEUk9QIFRBQkxFIElGIEVYSVNUUyBJdGVtVGFibGUyIiwKKyAgICAgICAgIkNSRUFU
RSBUQUJMRSBJdGVtVGFibGUyIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwg
dmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIsCisgICAgICAgICJJTlNFUlQg
SU5UTyBJdGVtVGFibGUyIFNFTEVDVCAqIGZyb20gSXRlbVRhYmxlIiwKKyAgICAgICAgIkRST1Ag
VEFCTEUgSXRlbVRhYmxlIiwKKyAgICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIgUkVOQU1F
IFRPIEl0ZW1UYWJsZSIsCisgICAgfTsKKworICAgIHNpemVfdCBudW1PZkNvbW1hbmRzID0gc2l6
ZW9mKGNvbW1hbmRzKSAvIHNpemVvZihjb21tYW5kc1swXSk7CisKKyAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbihtX2RhdGFiYXNlLCBmYWxzZSk7CisgICAgdHJhbnNhY3Rpb24uYmVn
aW4oKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9mQ29tbWFuZHM7ICsraSkgewor
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZHNbaV0pKSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1UYWJsZSBm
b3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXSk7CisgICAg
ICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOworfQorCiB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CkBAIC0yNzUsNiArMzA2LDggQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBv
cnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgbWlncmF0ZUl0ZW1UYWJsZUlmTmVl
ZGVkKCk7CisKICAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCBr
ZXksIHZhbHVlIEZST00gSXRlbVRhYmxlIik7CiAgICAgaWYgKHF1ZXJ5LnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPaykgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZWxlY3QgaXRlbXMg
ZnJvbSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKQEAgLTI4Niw3ICszMTksNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCgpCiAKICAgICBpbnQgcmVzdWx0ID0g
cXVlcnkuc3RlcCgpOwogICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAg
ICAgIGl0ZW1NYXAuc2V0KHF1ZXJ5LmdldENvbHVtblRleHQoMCksIHF1ZXJ5LmdldENvbHVtblRl
eHQoMSkpOworICAgICAgICBpdGVtTWFwLnNldChxdWVyeS5nZXRDb2x1bW5UZXh0KDApLCBxdWVy
eS5nZXRDb2x1bW5CbG9iQXNTdHJpbmcoMSkpOwogICAgICAgICByZXN1bHQgPSBxdWVyeS5zdGVw
KCk7CiAgICAgfQogCkBAIC0zOTIsNyArNDI1LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5
bmMoYm9vbCBjbGVhckl0ZW1zLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMK
IAogICAgICAgICAvLyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5vbi1udWxsLCB3ZSdyZSBk
b2luZyBhbiBpbnNlcnQsIHNvIGJpbmQgaXQgYXMgdGhlIHZhbHVlLgogICAgICAgICBpZiAoIWl0
LT5zZWNvbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICBxdWVyeS5iaW5kVGV4dCgyLCBpdC0+c2Vj
b25kKTsKKyAgICAgICAgICAgIHF1ZXJ5LmJpbmRCbG9iKDIsIGl0LT5zZWNvbmQpOwogCiAgICAg
ICAgIGludCByZXN1bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FM
UmVzdWx0RG9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
QXJlYVN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKaW5k
ZXggZWJmYjA1My4uM2EzNGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5oCkBAIC0xMDIsNiArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBt
dXRhYmxlIFRocmVhZENvbmRpdGlvbiBtX2ltcG9ydENvbmRpdGlvbjsKICAgICAgICAgbXV0YWJs
ZSBib29sIG1faW1wb3J0Q29tcGxldGU7CiAgICAgICAgIHZvaWQgbWFya0ltcG9ydGVkKCk7Cisg
ICAgICAgIHZvaWQgbWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCk7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="94328"
          type_id="1"
          status="-"
          setter="jorlow"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100315</attachid>
            <date>2011-07-11 09:55:01 -0700</date>
            <delta_ts>2011-07-11 17:41:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>58762-3.patch</filename>
            <type>text/plain</type>
            <size>8662</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NmYwYzA3Li4xMWFhNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDctMTEgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBMb2NhbFN0b3JhZ2U6IENoYW5nZWQgdGhlIHZhbHVlIHR5cGUg
b2YgSXRlbVRhYmxlIGZyb20gVEVYVCB0byBCTE9CCisgICAgICAgIHRvIGF2b2lkIHN0cmluZyB0
cnVuY2F0aW9uLgorICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWxzbyBjb252ZXJ0IHRoZSBleHNp
c3RpbmcgSXRlbVRhYmxlIGFuZCBwZXJmb3JtCisgICAgICAgIHRoZSBEQVRBIE1JR1JBVElPTiBq
b2IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBtYW51YWwtdGVzdHMvbG9jYWxzdG9yYWdlLXZhbHVlLXRydW5jYXRpb24uaHRtbAorCisgICAg
ICAgICogbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICBEZW1vc3RyYXRlIHRoZSB0ZXN0Y2FzZSBzaG93biBpbiBidWcgNTg3NjIu
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGVhcmVkQXNCbG9iKToKKyAgICAg
ICAgVGVzdCBpZiB0aGUgcHJlLWRlZmluZWQgdHlwZSBvZiB2YWx1ZSBpcyBCTE9CLgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIENoYW5nZSB0aGUgbG9jYWxTdG9yYWdlIHZhbHVl
IHR5cGUgZnJvbSBUZXh0IHRvIEJMT0IgdG8gYXZvaWQgdGhlCisgICAgICAgIHZhbHVlIHN0cmlu
ZyB0cnVuY2F0aW9uIGF0IFx4MDAuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6
Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIENoYW5nZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJlLCB1
c2UgQkxPQiB0byByZXBsYWNlIHRoZSBURVhUIHR5cGUgb2YKKyAgICAgICAgdmFsdWUgc2VnbWVu
dCBpbiBJdGVtVGFibGUuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6Om1pZ3Jh
dGVJdGVtVGFibGVJZk5lZWRlZCk6CisgICAgICAgIE1pZ3JhdGUgdGhlIEl0ZW1UYWJsZSBpZiB0
aGUgcHJlLWRlZmluZWQgdHlwZSBvZiB2YWx1ZSBpcyBURVhULgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KToKKyAgICAgICAgVXNlIGdldENvbHVtbkJs
b2JBc1N0cmluZygpIHRvIGltcG9ydCB0aGUgQkxPQiB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhU3luYzo6c3luYyk6CisgICAgICAgIFVzZSBiaW5kQmxvYigpIHRvIGJpbmQg
dmFsdWUgc3RyaW5nIHRvIHRoZSBTUUxpdGVTdGF0ZW1lbnQgZm9yIHRoZQorICAgICAgICBkYXRh
YmFzZSBleGVjdXRpb24uCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaDoKKwog
MjAxMS0wNy0xMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIEFkZGVkIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9uIHdoZW4gdmFsdWUgaXMgY2hhbmdl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2Ut
dmFsdWUtdHJ1bmNhdGlvbi5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xvY2Fs
c3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjQyMzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hbnVh
bC10ZXN0cy9sb2NhbHN0b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzxodG1sPgorPGJvZHk+CisgICAgPHA+SW4gdGhpcyB0ZXN0IHdlIG5lZWQgdG8gZmluZCBv
dXQgaWYgdGhlIGJyb3dzZXIgY2FuIHNhdmUgdGhlIGxvY2FsU3RvcmFnZSBpdGVtIGNvcnJlY3Rs
eSB3aXRob3V0IHRydW5jYXRlZCBieSB0aGUgXHgwMCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHJp
bmcuPC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBrZXkgPSAn
VHJ1bmNWYWwnOworICAgIHZhciB2YWx1ZSA9ICcxMjNceDAwNTY3JzsKKworICAgIHZhciB4ID0g
bG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgbG9jYWxT
dG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5J
dCBoYXNuJ3QgZ290IHRoZSAnIiArIGtleSArICInIGluIHRoZSBsb2NhbFN0b3JhZ2UgZGF0YWJh
c2UsIHdpbGwgY3JlYXRlIGl0IHVzaW5nOjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUo
Ijxjb2RlPmxvY2FsU3RvcmFnZS5zZXRJdGVtKCciICsga2V5ICsgIicsICciICsgdmFsdWUgKyAi
Jyk7PC9jb2RlPjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIk5vdyBjbG9zZSB5b3Vy
IGJyb3dzZXIgYW5kIHN0YXJ0IGl0IGFnYWluIHRvIHNlZSB0aGUgcmVzdWx0cy48L3A+Iik7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+VGhlIHZhbHVlIG9m
ICIgKyBrZXkgKyAiIGlzOiAnIiArIHggKyAiJywgdGhlIGxlbmd0aCBpczogIiArIHgubGVuZ3Ro
ICsgIjxicj4iKTsKKworICAgICAgICBpZiAoeCA9PSB2YWx1ZSkgeworICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIlBBU1MuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBkb2N1bWVudC53cml0ZSgiRkFJTDogVGhlIGV4cGVjdGVkIHZhbHVlIGlzOiAnIiArIHZh
bHVlICsgIicsIHRoZSBleHBlY3RlZCBsZW5ndGggaXM6ICIgKyB2YWx1ZS5sZW5ndGgpOworICAg
ICAgICB9CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3A+PGEgaHJlZj1cImphdmFzY3JpcHQ6
bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJyIgKyBrZXkgKyAiJyk7XCI+cmVtb3ZlICciICsga2V5
ICsgIicgZnJvbSBsb2NhbFN0b3JhZ2U8L2E+Iik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxwPlRo
aXMgaXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODc2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzYyPC9h
PgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkOTE4NmRjLi4wZWM5NjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg3LDYg
KzI4NywxNyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5OdWxsKGludCBjb2wpCiAg
ICAgcmV0dXJuIHNxbGl0ZTNfY29sdW1uX3R5cGUobV9zdGF0ZW1lbnQsIGNvbCkgPT0gU1FMSVRF
X05VTEw7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xlYXJlZEFzQmxv
YihpbnQgY29sKQoreworICAgIEFTU0VSVChjb2wgPj0gMCk7CisgICAgaWYgKCFtX3N0YXRlbWVu
dCkgeworICAgICAgICBpZiAocHJlcGFyZSgpICE9IFNRTElURV9PSykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCJCTE9CIikgPT0gU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9kZWNsdHlwZTE2
KG1fc3RhdGVtZW50LCBjb2wpKSkudXBwZXIoKTsKK30KKwogU3RyaW5nIFNRTGl0ZVN0YXRlbWVu
dDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQogewogICAgIEFTU0VSVChjb2wgPj0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKaW5kZXggMzVkY2Vj
Zi4uMzk0Y2M1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgaW50IGNvbHVtbkNvdW50KCk7
CiAgICAgCiAgICAgYm9vbCBpc0NvbHVtbk51bGwoaW50IGNvbCk7CisgICAgYm9vbCBpc0NvbHVt
bkRlY2xlYXJlZEFzQmxvYihpbnQgY29sKTsKICAgICBTdHJpbmcgZ2V0Q29sdW1uTmFtZShpbnQg
Y29sKTsKICAgICBTUUxWYWx1ZSBnZXRDb2x1bW5WYWx1ZShpbnQgY29sKTsKICAgICBTdHJpbmcg
Z2V0Q29sdW1uVGV4dChpbnQgY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAppbmRleCA5NGEwMDJhLi5iMjQ3ODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgpAQCAtMjU0LDcgKzI1NSw5IEBAIHZvaWQgU3RvcmFn
ZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJh
dGVneSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9kYXRhYmFzZS5leGVj
dXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRhYmxlIChrZXkgVEVY
VCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMKSIpKSB7CisgICAgbWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCk7CisKKyAgICBp
ZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RT
IEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJM
T0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgewogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBjcmVhdGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIik7CiAgICAg
ICAgIG1hcmtJbXBvcnRlZCgpOwogICAgICAgICBtX2RhdGFiYXNlT3BlbkZhaWxlZCA9IHRydWU7
CkBAIC0yNjQsNiArMjY3LDQ3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2Uo
T3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJhdGVneSkKICAgICBTdG9yYWdlVHJhY2tl
cjo6dHJhY2tlcigpLnNldE9yaWdpbkRldGFpbHMobV9kYXRhYmFzZUlkZW50aWZpZXIsIGRhdGFi
YXNlRmlsZW5hbWUpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJs
ZUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkl0ZW1UYWJs
ZSIpKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBx
dWVyeShtX2RhdGFiYXNlLCAiU0VMRUNUIHZhbHVlIEZST00gSXRlbVRhYmxlIHdoZXJlIHJvd2lk
ID0gMSIpOworICAgICAgICBpZiAocXVlcnkuaXNDb2x1bW5EZWNsZWFyZWRBc0Jsb2IoMCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gYWx0ZXIgdGFibGUgZm9yIGJhY2t3
YXJkIGNvbXBsaWFuY2UsIGNoYW5nZSB0aGUgdmFsdWUgdHlwZSBmcm9tIFRFWFQgdG8gQkxPQi4K
KyAgICBzdGF0aWMgY29uc3QgY2hhciogY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRST1AgVEFC
TEUgSUYgRVhJU1RTIEl0ZW1UYWJsZTIiLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJs
ZTIgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpIiwKKyAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIg
U0VMRUNUICogZnJvbSBJdGVtVGFibGUiLAorICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUi
LAorICAgICAgICAiQUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwK
KyAgICAgICAgMCwKKyAgICB9OworCisgICAgc2l6ZV90IGkgPSAwOworICAgIFNRTGl0ZVRyYW5z
YWN0aW9uIHRyYW5zYWN0aW9uKG1fZGF0YWJhc2UsIGZhbHNlKTsKKyAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOworICAgIHdoaWxlIChjb21tYW5kc1tpXSkgeworICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZHNbaV0pKSB7CisgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSB3aGVu
IGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXSk7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi5y
b2xsYmFjaygpOworCisgICAgICAgICAgICAvLyBzYXZlIHRoZSBJdGVtVGFibGUgZm9yIGZ1dHVy
ZSByZXN0b3JlIGJ5IHJlbmFtaW5nIGl0LgorICAgICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBJdGVtVGFibGUgUkVOQU1FIFRPIEJhY2t1cF9JdGVt
VGFibGUiKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNhdmUgSXRl
bVRhYmxlIGFmdGVyIG1pZ3JhdGlvbiBqb2IgZmFpbGVkLiIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgKytpOworICAgIH0KKyAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKK30K
Kwogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQoKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwpAQCAtMjg2LDcgKzMzMCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5j
OjpwZXJmb3JtSW1wb3J0KCkKIAogICAgIGludCByZXN1bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAg
d2hpbGUgKHJlc3VsdCA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgaXRlbU1hcC5zZXQocXVl
cnkuZ2V0Q29sdW1uVGV4dCgwKSwgcXVlcnkuZ2V0Q29sdW1uVGV4dCgxKSk7CisgICAgICAgIGl0
ZW1NYXAuc2V0KHF1ZXJ5LmdldENvbHVtblRleHQoMCksIHF1ZXJ5LmdldENvbHVtbkJsb2JBc1N0
cmluZygxKSk7CiAgICAgICAgIHJlc3VsdCA9IHF1ZXJ5LnN0ZXAoKTsKICAgICB9CiAKQEAgLTM5
Miw3ICs0MzYsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luYyhib29sIGNsZWFySXRlbXMs
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcwogCiAgICAgICAgIC8vIElmIHRo
ZSBzZWNvbmQgYXJndW1lbnQgaXMgbm9uLW51bGwsIHdlJ3JlIGRvaW5nIGFuIGluc2VydCwgc28g
YmluZCBpdCBhcyB0aGUgdmFsdWUuCiAgICAgICAgIGlmICghaXQtPnNlY29uZC5pc051bGwoKSkK
LSAgICAgICAgICAgIHF1ZXJ5LmJpbmRUZXh0KDIsIGl0LT5zZWNvbmQpOworICAgICAgICAgICAg
cXVlcnkuYmluZEJsb2IoMiwgaXQtPnNlY29uZCk7CiAKICAgICAgICAgaW50IHJlc3VsdCA9IHF1
ZXJ5LnN0ZXAoKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAppbmRleCBlYmZiMDUzLi4zYTM0ZWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKQEAgLTEwMiw2ICsx
MDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgVGhyZWFkQ29uZGl0
aW9uIG1faW1wb3J0Q29uZGl0aW9uOwogICAgICAgICBtdXRhYmxlIGJvb2wgbV9pbXBvcnRDb21w
bGV0ZTsKICAgICAgICAgdm9pZCBtYXJrSW1wb3J0ZWQoKTsKKyAgICAgICAgdm9pZCBtaWdyYXRl
SXRlbVRhYmxlSWZOZWVkZWQoKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="94982"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100391</attachid>
            <date>2011-07-11 17:41:12 -0700</date>
            <delta_ts>2011-07-13 10:04:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>58762-4.patch</filename>
            <type>text/plain</type>
            <size>8653</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NmYwYzA3Li4xMWFhNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDctMTEgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBMb2NhbFN0b3JhZ2U6IENoYW5nZWQgdGhlIHZhbHVlIHR5cGUg
b2YgSXRlbVRhYmxlIGZyb20gVEVYVCB0byBCTE9CCisgICAgICAgIHRvIGF2b2lkIHN0cmluZyB0
cnVuY2F0aW9uLgorICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWxzbyBjb252ZXJ0IHRoZSBleHNp
c3RpbmcgSXRlbVRhYmxlIGFuZCBwZXJmb3JtCisgICAgICAgIHRoZSBEQVRBIE1JR1JBVElPTiBq
b2IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBtYW51YWwtdGVzdHMvbG9jYWxzdG9yYWdlLXZhbHVlLXRydW5jYXRpb24uaHRtbAorCisgICAg
ICAgICogbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICBEZW1vc3RyYXRlIHRoZSB0ZXN0Y2FzZSBzaG93biBpbiBidWcgNTg3NjIu
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGVhcmVkQXNCbG9iKToKKyAgICAg
ICAgVGVzdCBpZiB0aGUgcHJlLWRlZmluZWQgdHlwZSBvZiB2YWx1ZSBpcyBCTE9CLgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIENoYW5nZSB0aGUgbG9jYWxTdG9yYWdlIHZhbHVl
IHR5cGUgZnJvbSBUZXh0IHRvIEJMT0IgdG8gYXZvaWQgdGhlCisgICAgICAgIHZhbHVlIHN0cmlu
ZyB0cnVuY2F0aW9uIGF0IFx4MDAuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6
Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIENoYW5nZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJlLCB1
c2UgQkxPQiB0byByZXBsYWNlIHRoZSBURVhUIHR5cGUgb2YKKyAgICAgICAgdmFsdWUgc2VnbWVu
dCBpbiBJdGVtVGFibGUuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6Om1pZ3Jh
dGVJdGVtVGFibGVJZk5lZWRlZCk6CisgICAgICAgIE1pZ3JhdGUgdGhlIEl0ZW1UYWJsZSBpZiB0
aGUgcHJlLWRlZmluZWQgdHlwZSBvZiB2YWx1ZSBpcyBURVhULgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KToKKyAgICAgICAgVXNlIGdldENvbHVtbkJs
b2JBc1N0cmluZygpIHRvIGltcG9ydCB0aGUgQkxPQiB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhU3luYzo6c3luYyk6CisgICAgICAgIFVzZSBiaW5kQmxvYigpIHRvIGJpbmQg
dmFsdWUgc3RyaW5nIHRvIHRoZSBTUUxpdGVTdGF0ZW1lbnQgZm9yIHRoZQorICAgICAgICBkYXRh
YmFzZSBleGVjdXRpb24uCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaDoKKwog
MjAxMS0wNy0xMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIEFkZGVkIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9uIHdoZW4gdmFsdWUgaXMgY2hhbmdl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2Ut
dmFsdWUtdHJ1bmNhdGlvbi5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xvY2Fs
c3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjQyMzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hbnVh
bC10ZXN0cy9sb2NhbHN0b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzxodG1sPgorPGJvZHk+CisgICAgPHA+SW4gdGhpcyB0ZXN0IHdlIG5lZWQgdG8gZmluZCBv
dXQgaWYgdGhlIGJyb3dzZXIgY2FuIHNhdmUgdGhlIGxvY2FsU3RvcmFnZSBpdGVtIGNvcnJlY3Rs
eSB3aXRob3V0IHRydW5jYXRlZCBieSB0aGUgXHgwMCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHJp
bmcuPC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBrZXkgPSAn
VHJ1bmNWYWwnOworICAgIHZhciB2YWx1ZSA9ICcxMjNceDAwNTY3JzsKKworICAgIHZhciB4ID0g
bG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgbG9jYWxT
dG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5J
dCBoYXNuJ3QgZ290IHRoZSAnIiArIGtleSArICInIGluIHRoZSBsb2NhbFN0b3JhZ2UgZGF0YWJh
c2UsIHdpbGwgY3JlYXRlIGl0IHVzaW5nOjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUo
Ijxjb2RlPmxvY2FsU3RvcmFnZS5zZXRJdGVtKCciICsga2V5ICsgIicsICciICsgdmFsdWUgKyAi
Jyk7PC9jb2RlPjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIk5vdyBjbG9zZSB5b3Vy
IGJyb3dzZXIgYW5kIHN0YXJ0IGl0IGFnYWluIHRvIHNlZSB0aGUgcmVzdWx0cy48L3A+Iik7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+VGhlIHZhbHVlIG9m
ICIgKyBrZXkgKyAiIGlzOiAnIiArIHggKyAiJywgdGhlIGxlbmd0aCBpczogIiArIHgubGVuZ3Ro
ICsgIjxicj4iKTsKKworICAgICAgICBpZiAoeCA9PSB2YWx1ZSkgeworICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIlBBU1MuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBkb2N1bWVudC53cml0ZSgiRkFJTDogVGhlIGV4cGVjdGVkIHZhbHVlIGlzOiAnIiArIHZh
bHVlICsgIicsIHRoZSBleHBlY3RlZCBsZW5ndGggaXM6ICIgKyB2YWx1ZS5sZW5ndGgpOworICAg
ICAgICB9CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3A+PGEgaHJlZj1cImphdmFzY3JpcHQ6
bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJyIgKyBrZXkgKyAiJyk7XCI+cmVtb3ZlICciICsga2V5
ICsgIicgZnJvbSBsb2NhbFN0b3JhZ2U8L2E+Iik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxwPlRo
aXMgaXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODc2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzYyPC9h
PgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkOTE4NmRjLi4xMzgwNGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg3LDYg
KzI4NywxNyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5OdWxsKGludCBjb2wpCiAg
ICAgcmV0dXJuIHNxbGl0ZTNfY29sdW1uX3R5cGUobV9zdGF0ZW1lbnQsIGNvbCkgPT0gU1FMSVRF
X05VTEw7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNCbG9i
KGludCBjb2wpCit7CisgICAgQVNTRVJUKGNvbCA+PSAwKTsKKyAgICBpZiAoIW1fc3RhdGVtZW50
KSB7CisgICAgICAgIGlmIChwcmVwYXJlKCkgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmco
IkJMT0IiKSwgU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2Nv
bHVtbl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBjb2wpKSkpOworfQorCiBTdHJpbmcgU1FMaXRl
U3RhdGVtZW50OjpnZXRDb2x1bW5OYW1lKGludCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+PSAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRl
eCAzNWRjZWNmLi44YTllNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgY29sdW1u
Q291bnQoKTsKICAgICAKICAgICBib29sIGlzQ29sdW1uTnVsbChpbnQgY29sKTsKKyAgICBib29s
IGlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVtbk5h
bWUoaW50IGNvbCk7CiAgICAgU1FMVmFsdWUgZ2V0Q29sdW1uVmFsdWUoaW50IGNvbCk7CiAgICAg
U3RyaW5nIGdldENvbHVtblRleHQoaW50IGNvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggOTRhMDAyYS4uOWI5YWU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIK
ICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKQEAgLTI1NCw3ICsyNTUsOSBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVu
aW5nU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0ZW1UYWJsZSAo
a2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIG1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpOwor
CisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9U
IEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2
YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIp
OwogICAgICAgICBtYXJrSW1wb3J0ZWQoKTsKICAgICAgICAgbV9kYXRhYmFzZU9wZW5GYWlsZWQg
PSB0cnVlOwpAQCAtMjY0LDYgKzI2Nyw0NyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRh
dGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAgICAgU3RvcmFn
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRPcmlnaW5EZXRhaWxzKG1fZGF0YWJhc2VJZGVudGlmaWVy
LCBkYXRhYmFzZUZpbGVuYW1lKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJ
dGVtVGFibGVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJJ
dGVtVGFibGUiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeworICAgICAgICBTUUxpdGVTdGF0
ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSB3aGVy
ZSByb3dpZCA9IDEiKTsKKyAgICAgICAgaWYgKHF1ZXJ5LmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2Io
MCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gYWx0ZXIgdGFibGUgZm9y
IGJhY2t3YXJkIGNvbXBsaWFuY2UsIGNoYW5nZSB0aGUgdmFsdWUgdHlwZSBmcm9tIFRFWFQgdG8g
QkxPQi4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRS
T1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1UYWJsZTIiLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0
ZW1UYWJsZTIgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9C
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIiwKKyAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1U
YWJsZTIgU0VMRUNUICogZnJvbSBJdGVtVGFibGUiLAorICAgICAgICAiRFJPUCBUQUJMRSBJdGVt
VGFibGUiLAorICAgICAgICAiQUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRh
YmxlIiwKKyAgICAgICAgMCwKKyAgICB9OworCisgICAgc2l6ZV90IGkgPSAwOworICAgIFNRTGl0
ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGF0YWJhc2UsIGZhbHNlKTsKKyAgICB0cmFuc2Fj
dGlvbi5iZWdpbigpOworICAgIHdoaWxlIChjb21tYW5kc1tpXSkgeworICAgICAgICBpZiAoIW1f
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZHNbaV0pKSB7CisgICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFn
ZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXSk7CisgICAgICAgICAgICB0cmFuc2Fj
dGlvbi5yb2xsYmFjaygpOworCisgICAgICAgICAgICAvLyBzYXZlIHRoZSBJdGVtVGFibGUgZm9y
IGZ1dHVyZSByZXN0b3JlIGJ5IHJlbmFtaW5nIGl0LgorICAgICAgICAgICAgaWYgKCFtX2RhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBJdGVtVGFibGUgUkVOQU1FIFRPIEJhY2t1
cF9JdGVtVGFibGUiKSkKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzYXZl
IEl0ZW1UYWJsZSBhZnRlciBtaWdyYXRpb24gam9iIGZhaWxlZC4iKTsKKworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgKytpOworICAgIH0KKyAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKK30KKwogdm9pZCBT
dG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMjg2LDcgKzMzMCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3Jt
SW1wb3J0KCkKIAogICAgIGludCByZXN1bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAgd2hpbGUgKHJl
c3VsdCA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgaXRlbU1hcC5zZXQocXVlcnkuZ2V0Q29s
dW1uVGV4dCgwKSwgcXVlcnkuZ2V0Q29sdW1uVGV4dCgxKSk7CisgICAgICAgIGl0ZW1NYXAuc2V0
KHF1ZXJ5LmdldENvbHVtblRleHQoMCksIHF1ZXJ5LmdldENvbHVtbkJsb2JBc1N0cmluZygxKSk7
CiAgICAgICAgIHJlc3VsdCA9IHF1ZXJ5LnN0ZXAoKTsKICAgICB9CiAKQEAgLTM5Miw3ICs0MzYs
NyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luYyhib29sIGNsZWFySXRlbXMsIGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVtcwogCiAgICAgICAgIC8vIElmIHRoZSBzZWNvbmQg
YXJndW1lbnQgaXMgbm9uLW51bGwsIHdlJ3JlIGRvaW5nIGFuIGluc2VydCwgc28gYmluZCBpdCBh
cyB0aGUgdmFsdWUuCiAgICAgICAgIGlmICghaXQtPnNlY29uZC5pc051bGwoKSkKLSAgICAgICAg
ICAgIHF1ZXJ5LmJpbmRUZXh0KDIsIGl0LT5zZWNvbmQpOworICAgICAgICAgICAgcXVlcnkuYmlu
ZEJsb2IoMiwgaXQtPnNlY29uZCk7CiAKICAgICAgICAgaW50IHJlc3VsdCA9IHF1ZXJ5LnN0ZXAo
KTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAppbmRleCBlYmZiMDUzLi4zYTM0ZWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgVGhyZWFkQ29uZGl0aW9uIG1faW1w
b3J0Q29uZGl0aW9uOwogICAgICAgICBtdXRhYmxlIGJvb2wgbV9pbXBvcnRDb21wbGV0ZTsKICAg
ICAgICAgdm9pZCBtYXJrSW1wb3J0ZWQoKTsKKyAgICAgICAgdm9pZCBtaWdyYXRlSXRlbVRhYmxl
SWZOZWVkZWQoKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="95288"
          type_id="1"
          status="-"
          setter="jorlow"
    />
    <flag name="commit-queue"
          id="95087"
          type_id="3"
          status="-"
          setter="jorlow"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100681</attachid>
            <date>2011-07-13 10:04:17 -0700</date>
            <delta_ts>2012-02-10 10:18:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>58762-5.patch</filename>
            <type>text/plain</type>
            <size>8924</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTdiZDVmLi5iZTllMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDctMTMgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBMb2NhbFN0b3JhZ2U6IENoYW5nZWQgdGhlIHZhbHVlIHR5cGUg
b2YgSXRlbVRhYmxlIGZyb20gVEVYVCB0byBCTE9CCisgICAgICAgIHRvIGF2b2lkIHN0cmluZyB0
cnVuY2F0aW9uLgorICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWxzbyBjb252ZXJ0IHRoZSBleHNp
c3RpbmcgSXRlbVRhYmxlIGFuZCBwZXJmb3JtCisgICAgICAgIHRoZSBEQVRBIE1JR1JBVElPTiBq
b2IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBtYW51YWwtdGVzdHMvbG9jYWxzdG9yYWdlLXZhbHVlLXRydW5jYXRpb24uaHRtbAorCisgICAg
ICAgICogbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICBEZW1vc3RyYXRlIHRoZSB0ZXN0Y2FzZSBzaG93biBpbiBidWcgNTg3NjIu
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGVhcmVkQXNCbG9iKToKKyAgICAg
ICAgVGVzdCBpZiB0aGUgcHJlLWRlZmluZWQgdHlwZSBvZiBjb2x1bW4gaXMgQkxPQi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICBDaGFuZ2UgdGhlIGxvY2FsU3RvcmFnZSB2YWx1
ZSB0eXBlIGZyb20gVGV4dCB0byBCTE9CIHRvIGF2b2lkIHRoZQorICAgICAgICB2YWx1ZSBzdHJp
bmcgdHJ1bmNhdGlvbiBhdCBceDAwLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5j
OjpvcGVuRGF0YWJhc2UpOgorICAgICAgICBDaGFuZ2UgdGhlIGRhdGFiYXNlIHN0cnVjdHVyZSwg
dXNlIEJMT0IgdG8gcmVwbGFjZSB0aGUgVEVYVCB0eXBlIG9mCisgICAgICAgIHZhbHVlIHNlZ21l
bnQgaW4gSXRlbVRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjptaWdy
YXRlSXRlbVRhYmxlSWZOZWVkZWQpOgorICAgICAgICBNaWdyYXRlIHRoZSBJdGVtVGFibGUgaWYg
dGhlIHByZS1kZWZpbmVkIHR5cGUgb2YgdmFsdWUgaXMgVEVYVC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCk6CisgICAgICAgIFVzZSBnZXRDb2x1bW5C
bG9iQXNTdHJpbmcoKSB0byBpbXBvcnQgdGhlIEJMT0IgdmFsdWUuCisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVN5bmM6OnN5bmMpOgorICAgICAgICBVc2UgYmluZEJsb2IoKSB0byBiaW5k
IHZhbHVlIHN0cmluZyB0byB0aGUgU1FMaXRlU3RhdGVtZW50IGZvciB0aGUKKyAgICAgICAgZGF0
YWJhc2UgZXhlY3V0aW9uLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmg6CisK
IDIwMTEtMDctMTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBmYWN0b3IgTmV0d29ya0xvZ1ZpZXcgb3V0IG9mIE5ldHdvcmsg
cGFuZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9sb2NhbHN0b3Jh
Z2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xv
Y2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjQyMzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzxodG1sPgorPGJvZHk+CisgICAgPHA+SW4gdGhpcyB0ZXN0IHdlIG5lZWQgdG8gZmlu
ZCBvdXQgaWYgdGhlIGJyb3dzZXIgY2FuIHNhdmUgdGhlIGxvY2FsU3RvcmFnZSBpdGVtIGNvcnJl
Y3RseSB3aXRob3V0IHRydW5jYXRlZCBieSB0aGUgXHgwMCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBz
dHJpbmcuPC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBrZXkg
PSAnVHJ1bmNWYWwnOworICAgIHZhciB2YWx1ZSA9ICcxMjNceDAwNTY3JzsKKworICAgIHZhciB4
ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgbG9j
YWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8
cD5JdCBoYXNuJ3QgZ290IHRoZSAnIiArIGtleSArICInIGluIHRoZSBsb2NhbFN0b3JhZ2UgZGF0
YWJhc2UsIHdpbGwgY3JlYXRlIGl0IHVzaW5nOjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3Jp
dGUoIjxjb2RlPmxvY2FsU3RvcmFnZS5zZXRJdGVtKCciICsga2V5ICsgIicsICciICsgdmFsdWUg
KyAiJyk7PC9jb2RlPjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIk5vdyBjbG9zZSB5
b3VyIGJyb3dzZXIgYW5kIHN0YXJ0IGl0IGFnYWluIHRvIHNlZSB0aGUgcmVzdWx0cy48L3A+Iik7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+VGhlIHZhbHVl
IG9mICIgKyBrZXkgKyAiIGlzOiAnIiArIHggKyAiJywgdGhlIGxlbmd0aCBpczogIiArIHgubGVu
Z3RoICsgIjxicj4iKTsKKworICAgICAgICBpZiAoeCA9PSB2YWx1ZSkgeworICAgICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIlBBU1MuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBkb2N1bWVudC53cml0ZSgiRkFJTDogVGhlIGV4cGVjdGVkIHZhbHVlIGlzOiAnIiAr
IHZhbHVlICsgIicsIHRoZSBleHBlY3RlZCBsZW5ndGggaXM6ICIgKyB2YWx1ZS5sZW5ndGgpOwor
ICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3A+PGEgaHJlZj1cImphdmFzY3Jp
cHQ6bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJyIgKyBrZXkgKyAiJyk7XCI+cmVtb3ZlICciICsg
a2V5ICsgIicgZnJvbSBsb2NhbFN0b3JhZ2U8L2E+Iik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxw
PlRoaXMgaXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01ODc2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzYy
PC9hPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkOTE4NmRjLi4xMzgwNGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg3
LDYgKzI4NywxNyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5OdWxsKGludCBjb2wp
CiAgICAgcmV0dXJuIHNxbGl0ZTNfY29sdW1uX3R5cGUobV9zdGF0ZW1lbnQsIGNvbCkgPT0gU1FM
SVRFX05VTEw7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNC
bG9iKGludCBjb2wpCit7CisgICAgQVNTRVJUKGNvbCA+PSAwKTsKKyAgICBpZiAoIW1fc3RhdGVt
ZW50KSB7CisgICAgICAgIGlmIChwcmVwYXJlKCkgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShTdHJp
bmcoIkJMT0IiKSwgU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUz
X2NvbHVtbl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBjb2wpKSkpOworfQorCiBTdHJpbmcgU1FM
aXRlU3RhdGVtZW50OjpnZXRDb2x1bW5OYW1lKGludCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+
PSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApp
bmRleCAzNWRjZWNmLi44YTllNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgY29s
dW1uQ291bnQoKTsKICAgICAKICAgICBib29sIGlzQ29sdW1uTnVsbChpbnQgY29sKTsKKyAgICBi
b29sIGlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVt
bk5hbWUoaW50IGNvbCk7CiAgICAgU1FMVmFsdWUgZ2V0Q29sdW1uVmFsdWUoaW50IGNvbCk7CiAg
ICAgU3RyaW5nIGdldENvbHVtblRleHQoaW50IGNvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggOTRhMDAyYS4uMTE0YjI5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwu
aCIKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKQEAgLTI1NCw3ICsyNTUsOSBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBv
cGVuaW5nU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0ZW1UYWJs
ZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIG1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgp
OworCisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYg
Tk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFn
ZSIpOwogICAgICAgICBtYXJrSW1wb3J0ZWQoKTsKICAgICAgICAgbV9kYXRhYmFzZU9wZW5GYWls
ZWQgPSB0cnVlOwpAQCAtMjY0LDYgKzI2Nyw0OSBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3Bl
bkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAgICAgU3Rv
cmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRPcmlnaW5EZXRhaWxzKG1fZGF0YWJhc2VJZGVudGlm
aWVyLCBkYXRhYmFzZUZpbGVuYW1lKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3Jh
dGVJdGVtVGFibGVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3Rz
KCJJdGVtVGFibGUiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeworICAgICAgICBTUUxpdGVT
dGF0ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSBM
SU1JVCAxIik7CisgICAgICAgIGlmIChxdWVyeS5pc0NvbHVtbkRlY2xhcmVkQXNCbG9iKDApKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGFsdGVyIHRhYmxlIGZvciBiYWNr
d2FyZCBjb21wbGlhbmNlLCBjaGFuZ2UgdGhlIHZhbHVlIHR5cGUgZnJvbSBURVhUIHRvIEJMT0Iu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbW1hbmRzW10gPSB7CisgICAgICAgICJEUk9QIFRB
QkxFIElGIEVYSVNUUyBJdGVtVGFibGUyIiwKKyAgICAgICAgIkNSRUFURSBUQUJMRSBJdGVtVGFi
bGUyIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMKSIsCisgICAgICAgICJJTlNFUlQgSU5UTyBJdGVtVGFibGUy
IFNFTEVDVCAqIGZyb20gSXRlbVRhYmxlIiwKKyAgICAgICAgIkRST1AgVEFCTEUgSXRlbVRhYmxl
IiwKKyAgICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIgUkVOQU1FIFRPIEl0ZW1UYWJsZSIs
CisgICAgICAgIDAsCisgICAgfTsKKworICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KG1fZGF0YWJhc2UsIGZhbHNlKTsKKyAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBjb21tYW5kc1tpXTsgKytpKSB7CisgICAgICAgIGlmICghbV9kYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZChjb21tYW5kc1tpXSkpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIG1pZ3JhdGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIHdoZW4g
ZXhlY3V0aW5nOiAlcyIsIGNvbW1hbmRzW2ldKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJv
bGxiYWNrKCk7CisKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAg
ICAgICAvLyBmaW5hbGx5IGl0IHdpbGwgdHJ5IHRvIHNhdmUgdGhlIEl0ZW1UYWJsZSBieSByZW5h
bWluZyBpdCwgZm9yIG1hbnVhbGx5IHJlc3RvcmUgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAg
IC8vIE5PVElDRTogdGhpcyB3aWxsIGV2ZW50dWFsbHkgREVMRVRFIHRoZSBjdXJyZW50IGRhdGFi
YXNlLCBidXQgdGhhdCdzIGJldHRlcgorICAgICAgICAgICAgLy8gdGhhbiBjb250aW51YWxseSBo
aXR0aW5nIHRoaXMgY2FzZSBhbmQgbmV2ZXIgYmVpbmcgYWJsZSB0byB1c2UgdGhlIGxvY2FsIHN0
b3JhZ2UuCisgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGV2ZXIgaGl0LCBpdCdzIGRlZmluaXRl
bHkgYSBidWcuCisgICAgICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFM
VEVSIFRBQkxFIEl0ZW1UYWJsZSBSRU5BTUUgVE8gQmFja3VwX0l0ZW1UYWJsZSIpKQorICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNhdmUgSXRlbVRhYmxlIGFmdGVyIG1pZ3Jh
dGlvbiBqb2IgZmFpbGVkLiIpOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7Cit9CisKIHZvaWQgU3RvcmFnZUFyZWFTeW5j
OjpwZXJmb3JtSW1wb3J0KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTI4
Niw3ICszMzIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCgpCiAKICAg
ICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgpOwogICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMUmVz
dWx0Um93KSB7Ci0gICAgICAgIGl0ZW1NYXAuc2V0KHF1ZXJ5LmdldENvbHVtblRleHQoMCksIHF1
ZXJ5LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBpdGVtTWFwLnNldChxdWVyeS5nZXRDb2x1
bW5UZXh0KDApLCBxdWVyeS5nZXRDb2x1bW5CbG9iQXNTdHJpbmcoMSkpOwogICAgICAgICByZXN1
bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAgfQogCkBAIC0zOTIsNyArNDM4LDcgQEAgdm9pZCBTdG9y
YWdlQXJlYVN5bmM6OnN5bmMoYm9vbCBjbGVhckl0ZW1zLCBjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYgaXRlbXMKIAogICAgICAgICAvLyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5v
bi1udWxsLCB3ZSdyZSBkb2luZyBhbiBpbnNlcnQsIHNvIGJpbmQgaXQgYXMgdGhlIHZhbHVlLgog
ICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICBxdWVyeS5iaW5k
VGV4dCgyLCBpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHF1ZXJ5LmJpbmRCbG9iKDIsIGl0LT5z
ZWNvbmQpOwogCiAgICAgICAgIGludCByZXN1bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAgICAgIGlm
IChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmgKaW5kZXggZWJmYjA1My4uM2EzNGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhU3luYy5oCkBAIC0xMDIsNiArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBtdXRhYmxlIFRocmVhZENvbmRpdGlvbiBtX2ltcG9ydENvbmRpdGlvbjsK
ICAgICAgICAgbXV0YWJsZSBib29sIG1faW1wb3J0Q29tcGxldGU7CiAgICAgICAgIHZvaWQgbWFy
a0ltcG9ydGVkKCk7CisgICAgICAgIHZvaWQgbWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCk7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100810</attachid>
            <date>2011-07-14 08:34:37 -0700</date>
            <delta_ts>2011-12-21 15:29:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>58762-6.patch</filename>
            <type>text/plain</type>
            <size>8951</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTdiZDVmLi5iZTllMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDctMTMgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBMb2NhbFN0b3JhZ2U6IENoYW5nZWQgdGhlIHZhbHVlIHR5cGUg
b2YgSXRlbVRhYmxlIGZyb20gVEVYVCB0byBCTE9CCisgICAgICAgIHRvIGF2b2lkIHN0cmluZyB0
cnVuY2F0aW9uLgorICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWxzbyBjb252ZXJ0IHRoZSBleHNp
c3RpbmcgSXRlbVRhYmxlIGFuZCBwZXJmb3JtCisgICAgICAgIHRoZSBEQVRBIE1JR1JBVElPTiBq
b2IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBtYW51YWwtdGVzdHMvbG9jYWxzdG9yYWdlLXZhbHVlLXRydW5jYXRpb24uaHRtbAorCisgICAg
ICAgICogbWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICBEZW1vc3RyYXRlIHRoZSB0ZXN0Y2FzZSBzaG93biBpbiBidWcgNTg3NjIu
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGVhcmVkQXNCbG9iKToKKyAgICAg
ICAgVGVzdCBpZiB0aGUgcHJlLWRlZmluZWQgdHlwZSBvZiBjb2x1bW4gaXMgQkxPQi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICBDaGFuZ2UgdGhlIGxvY2FsU3RvcmFnZSB2YWx1
ZSB0eXBlIGZyb20gVGV4dCB0byBCTE9CIHRvIGF2b2lkIHRoZQorICAgICAgICB2YWx1ZSBzdHJp
bmcgdHJ1bmNhdGlvbiBhdCBceDAwLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5j
OjpvcGVuRGF0YWJhc2UpOgorICAgICAgICBDaGFuZ2UgdGhlIGRhdGFiYXNlIHN0cnVjdHVyZSwg
dXNlIEJMT0IgdG8gcmVwbGFjZSB0aGUgVEVYVCB0eXBlIG9mCisgICAgICAgIHZhbHVlIHNlZ21l
bnQgaW4gSXRlbVRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjptaWdy
YXRlSXRlbVRhYmxlSWZOZWVkZWQpOgorICAgICAgICBNaWdyYXRlIHRoZSBJdGVtVGFibGUgaWYg
dGhlIHByZS1kZWZpbmVkIHR5cGUgb2YgdmFsdWUgaXMgVEVYVC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCk6CisgICAgICAgIFVzZSBnZXRDb2x1bW5C
bG9iQXNTdHJpbmcoKSB0byBpbXBvcnQgdGhlIEJMT0IgdmFsdWUuCisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVN5bmM6OnN5bmMpOgorICAgICAgICBVc2UgYmluZEJsb2IoKSB0byBiaW5k
IHZhbHVlIHN0cmluZyB0byB0aGUgU1FMaXRlU3RhdGVtZW50IGZvciB0aGUKKyAgICAgICAgZGF0
YWJhc2UgZXhlY3V0aW9uLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmg6CisK
IDIwMTEtMDctMTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBmYWN0b3IgTmV0d29ya0xvZ1ZpZXcgb3V0IG9mIE5ldHdvcmsg
cGFuZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9sb2NhbHN0b3Jh
Z2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xv
Y2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjQyMzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
bnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzxodG1sPgorPGJvZHk+CisgICAgPHA+SW4gdGhpcyB0ZXN0IHdlIG5lZWQgdG8gZmlu
ZCBvdXQgaWYgdGhlIGJyb3dzZXIgY2FuIHNhdmUgdGhlIGxvY2FsU3RvcmFnZSBpdGVtIGNvcnJl
Y3RseSB3aXRob3V0IHRydW5jYXRlZCBieSB0aGUgXHgwMCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBz
dHJpbmcuPC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBrZXkg
PSAnVHJ1bmNWYWwnOworICAgIHZhciB2YWx1ZSA9ICcxMjNceDAwNTY3JzsKKworICAgIHZhciB4
ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgbG9j
YWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8
cD5JdCBoYXNuJ3QgZ290IHRoZSAnIiArIGtleSArICInIGluIHRoZSBsb2NhbFN0b3JhZ2UgZGF0
YWJhc2UsIHdpbGwgY3JlYXRlIGl0IHVzaW5nOjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3Jp
dGUoIjxjb2RlPmxvY2FsU3RvcmFnZS5zZXRJdGVtKCciICsga2V5ICsgIicsICciICsgdmFsdWUg
KyAiJyk7PC9jb2RlPjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIk5vdyBjbG9zZSB5
b3VyIGJyb3dzZXIgYW5kIHN0YXJ0IGl0IGFnYWluIHRvIHNlZSB0aGUgcmVzdWx0cy48L3A+Iik7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+VGhlIHZhbHVl
IG9mICIgKyBrZXkgKyAiIGlzOiAnIiArIHggKyAiJywgdGhlIGxlbmd0aCBpczogIiArIHgubGVu
Z3RoICsgIjxicj4iKTsKKworICAgICAgICBpZiAoeCA9PSB2YWx1ZSkgeworICAgICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIlBBU1MuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBkb2N1bWVudC53cml0ZSgiRkFJTDogVGhlIGV4cGVjdGVkIHZhbHVlIGlzOiAnIiAr
IHZhbHVlICsgIicsIHRoZSBleHBlY3RlZCBsZW5ndGggaXM6ICIgKyB2YWx1ZS5sZW5ndGgpOwor
ICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3A+PGEgaHJlZj1cImphdmFzY3Jp
cHQ6bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJyIgKyBrZXkgKyAiJyk7XCI+cmVtb3ZlICciICsg
a2V5ICsgIicgZnJvbSBsb2NhbFN0b3JhZ2U8L2E+Iik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxw
PlRoaXMgaXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01ODc2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzYy
PC9hPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkOTE4NmRjLi4xMzgwNGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg3
LDYgKzI4NywxNyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5OdWxsKGludCBjb2wp
CiAgICAgcmV0dXJuIHNxbGl0ZTNfY29sdW1uX3R5cGUobV9zdGF0ZW1lbnQsIGNvbCkgPT0gU1FM
SVRFX05VTEw7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNC
bG9iKGludCBjb2wpCit7CisgICAgQVNTRVJUKGNvbCA+PSAwKTsKKyAgICBpZiAoIW1fc3RhdGVt
ZW50KSB7CisgICAgICAgIGlmIChwcmVwYXJlKCkgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShTdHJp
bmcoIkJMT0IiKSwgU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUz
X2NvbHVtbl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBjb2wpKSkpOworfQorCiBTdHJpbmcgU1FM
aXRlU3RhdGVtZW50OjpnZXRDb2x1bW5OYW1lKGludCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+
PSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaApp
bmRleCAzNWRjZWNmLi44YTllNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgY29s
dW1uQ291bnQoKTsKICAgICAKICAgICBib29sIGlzQ29sdW1uTnVsbChpbnQgY29sKTsKKyAgICBi
b29sIGlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVt
bk5hbWUoaW50IGNvbCk7CiAgICAgU1FMVmFsdWUgZ2V0Q29sdW1uVmFsdWUoaW50IGNvbCk7CiAg
ICAgU3RyaW5nIGdldENvbHVtblRleHQoaW50IGNvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggOTRhMDAyYS4uNDhhMjI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwu
aCIKICNpbmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKQEAgLTI1NCw3ICsyNTUsOSBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBv
cGVuaW5nU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0ZW1UYWJs
ZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIG1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgp
OworCisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYg
Tk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFn
ZSIpOwogICAgICAgICBtYXJrSW1wb3J0ZWQoKTsKICAgICAgICAgbV9kYXRhYmFzZU9wZW5GYWls
ZWQgPSB0cnVlOwpAQCAtMjY0LDYgKzI2Nyw0OSBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3Bl
bkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAgICAgU3Rv
cmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRPcmlnaW5EZXRhaWxzKG1fZGF0YWJhc2VJZGVudGlm
aWVyLCBkYXRhYmFzZUZpbGVuYW1lKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3Jh
dGVJdGVtVGFibGVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3Rz
KCJJdGVtVGFibGUiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeworICAgICAgICBTUUxpdGVT
dGF0ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSBM
SU1JVCAxIik7CisgICAgICAgIC8vIHRoaXMgcXVlcnkgaXNuJ3QgZXZlciBleGVjdXRlZC4KKyAg
ICAgICAgaWYgKHF1ZXJ5LmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoMCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gYWx0ZXIgdGFibGUgZm9yIGJhY2t3YXJkIGNvbXBsaWFu
Y2UsIGNoYW5nZSB0aGUgdmFsdWUgdHlwZSBmcm9tIFRFWFQgdG8gQkxPQi4KKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RT
IEl0ZW1UYWJsZTIiLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtleSBURVhU
IFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwpIiwKKyAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJv
bSBJdGVtVGFibGUiLAorICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiLAorICAgICAgICAi
QUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwKKyAgICAgICAgMCwK
KyAgICB9OworCisgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24obV9kYXRhYmFzZSwg
ZmFsc2UpOworICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGNvbW1hbmRzW2ldOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKGNvbW1hbmRzW2ldKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWln
cmF0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVz
IiwgY29tbWFuZHNbaV0pOworICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKKwor
ICAgICAgICAgICAgLy8gZmluYWxseSBpdCB3aWxsIHRyeSB0byBrZWVwIGEgYmFja3VwIG9mIEl0
ZW1UYWJsZSBmb3IgdGhlIGZ1dHVyZSByZXN0b3JhdGlvbi4KKyAgICAgICAgICAgIC8vIE5PVElD
RTogdGhpcyB3aWxsIGVzc2VudGlhbGx5IERFTEVURSB0aGUgY3VycmVudCBkYXRhYmFzZSwgYnV0
IHRoYXQncyBiZXR0ZXIKKyAgICAgICAgICAgIC8vIHRoYW4gY29udGludWFsbHkgaGl0dGluZyB0
aGlzIGNhc2UgYW5kIG5ldmVyIGJlaW5nIGFibGUgdG8gdXNlIHRoZSBsb2NhbCBzdG9yYWdlLgor
ICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBldmVyIGhpdCwgaXQncyBkZWZpbml0ZWx5IGEgYnVn
LgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBpZiAoIW1f
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZSBSRU5BTUUgVE8g
QmFja3VwX0l0ZW1UYWJsZSIpKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IHNhdmUgSXRlbVRhYmxlIGFmdGVyIG1pZ3JhdGlvbiBqb2IgZmFpbGVkLiIpOworCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7
Cit9CisKIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KCkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTI4Niw3ICszMzIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
U3luYzo6cGVyZm9ybUltcG9ydCgpCiAKICAgICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgpOwog
ICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIGl0ZW1NYXAuc2V0
KHF1ZXJ5LmdldENvbHVtblRleHQoMCksIHF1ZXJ5LmdldENvbHVtblRleHQoMSkpOworICAgICAg
ICBpdGVtTWFwLnNldChxdWVyeS5nZXRDb2x1bW5UZXh0KDApLCBxdWVyeS5nZXRDb2x1bW5CbG9i
QXNTdHJpbmcoMSkpOwogICAgICAgICByZXN1bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAgfQogCkBA
IC0zOTIsNyArNDM4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmMoYm9vbCBjbGVhckl0
ZW1zLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMKIAogICAgICAgICAvLyBJ
ZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5vbi1udWxsLCB3ZSdyZSBkb2luZyBhbiBpbnNlcnQs
IHNvIGJpbmQgaXQgYXMgdGhlIHZhbHVlLgogICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNOdWxs
KCkpCi0gICAgICAgICAgICBxdWVyeS5iaW5kVGV4dCgyLCBpdC0+c2Vjb25kKTsKKyAgICAgICAg
ICAgIHF1ZXJ5LmJpbmRCbG9iKDIsIGl0LT5zZWNvbmQpOwogCiAgICAgICAgIGludCByZXN1bHQg
PSBxdWVyeS5zdGVwKCk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKaW5kZXggZWJmYjA1My4uM2Ez
NGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCkBAIC0xMDIs
NiArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIFRocmVhZENv
bmRpdGlvbiBtX2ltcG9ydENvbmRpdGlvbjsKICAgICAgICAgbXV0YWJsZSBib29sIG1faW1wb3J0
Q29tcGxldGU7CiAgICAgICAgIHZvaWQgbWFya0ltcG9ydGVkKCk7CisgICAgICAgIHZvaWQgbWln
cmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>
<flag name="commit-queue"
          id="95567"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100923</attachid>
            <date>2011-07-14 20:41:15 -0700</date>
            <delta_ts>2011-07-15 01:35:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>58762-7.patch</filename>
            <type>text/plain</type>
            <size>8945</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTdiZDVmLi5iZTllMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDctMTUgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBMb2NhbFN0b3JhZ2U6IENoYW5nZWQgdGhlIHZhbHVlIHR5cGUg
b2YgSXRlbVRhYmxlIGZyb20gVEVYVCB0byBCTE9CCisgICAgICAgIHRvIGF2b2lkIHN0cmluZyB0
cnVuY2F0aW9uLgorICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWxzbyBjb252ZXJ0IHRoZSBleHNp
c3RpbmcgSXRlbVRhYmxlIGFuZCBwZXJmb3JtCisgICAgICAgIHRoZSBEQVRBIE1JR1JBVElPTiBq
b2IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBUZXN0czog
bWFudWFsLXRlc3RzL2xvY2Fsc3RvcmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKKworICAgICAg
ICAqIG1hbnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgRGVtb3N0cmF0ZSB0aGUgdGVzdGNhc2Ugc2hvd24gaW4gYnVnIDU4NzYyLgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xlYXJlZEFzQmxvYik6CisgICAgICAg
IFRlc3QgaWYgdGhlIHByZS1kZWZpbmVkIHR5cGUgb2YgY29sdW1uIGlzIEJMT0IuCisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oOgorICAgICAgICAqIHN0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgQ2hhbmdlIHRoZSBsb2NhbFN0b3JhZ2UgdmFsdWUg
dHlwZSBmcm9tIFRleHQgdG8gQkxPQiB0byBhdm9pZCB0aGUKKyAgICAgICAgdmFsdWUgc3RyaW5n
IHRydW5jYXRpb24gYXQgXHgwMC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgQ2hhbmdlIHRoZSBkYXRhYmFzZSBzdHJ1Y3R1cmUsIHVz
ZSBCTE9CIHRvIHJlcGxhY2UgdGhlIFRFWFQgdHlwZSBvZgorICAgICAgICB2YWx1ZSBzZWdtZW50
IGluIEl0ZW1UYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6bWlncmF0
ZUl0ZW1UYWJsZUlmTmVlZGVkKToKKyAgICAgICAgTWlncmF0ZSB0aGUgSXRlbVRhYmxlIGlmIHRo
ZSBwcmUtZGVmaW5lZCB0eXBlIG9mIHZhbHVlIGlzIFRFWFQuCisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQpOgorICAgICAgICBVc2UgZ2V0Q29sdW1uQmxv
YkFzU3RyaW5nKCkgdG8gaW1wb3J0IHRoZSBCTE9CIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFTeW5jOjpzeW5jKToKKyAgICAgICAgVXNlIGJpbmRCbG9iKCkgdG8gYmluZCB2
YWx1ZSBzdHJpbmcgdG8gdGhlIFNRTGl0ZVN0YXRlbWVudCBmb3IgdGhlCisgICAgICAgIGRhdGFi
YXNlIGV4ZWN1dGlvbi4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oOgorCiAy
MDExLTA3LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGhl
IGJlZm9yZWxvYWQgZXZlbnQgYWxsb3dzIHRyYWNraW5nIFVSSSBjaGFuZ2VzIGluIGEgZnJhbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9sb2NhbHN0b3JhZ2UtdmFs
dWUtdHJ1bmNhdGlvbi5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL2xvY2Fsc3Rv
cmFnZS12YWx1ZS10cnVuY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjQyMzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10
ZXN0cy9sb2NhbHN0b3JhZ2UtdmFsdWUtdHJ1bmNhdGlvbi5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzxodG1sPgorPGJvZHk+CisgICAgPHA+SW4gdGhpcyB0ZXN0IHdlIG5lZWQgdG8gZmluZCBvdXQg
aWYgdGhlIGJyb3dzZXIgY2FuIHNhdmUgdGhlIGxvY2FsU3RvcmFnZSBpdGVtIGNvcnJlY3RseSB3
aXRob3V0IHRydW5jYXRlZCBieSB0aGUgXHgwMCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHJpbmcu
PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBrZXkgPSAnVHJ1
bmNWYWwnOworICAgIHZhciB2YWx1ZSA9ICcxMjNceDAwNTY3JzsKKworICAgIHZhciB4ID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgbG9jYWxTdG9y
YWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5JdCBo
YXNuJ3QgZ290IHRoZSAnIiArIGtleSArICInIGluIHRoZSBsb2NhbFN0b3JhZ2UgZGF0YWJhc2Us
IHdpbGwgY3JlYXRlIGl0IHVzaW5nOjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxj
b2RlPmxvY2FsU3RvcmFnZS5zZXRJdGVtKCciICsga2V5ICsgIicsICciICsgdmFsdWUgKyAiJyk7
PC9jb2RlPjxicj4iKTsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIk5vdyBjbG9zZSB5b3VyIGJy
b3dzZXIgYW5kIHN0YXJ0IGl0IGFnYWluIHRvIHNlZSB0aGUgcmVzdWx0cy48L3A+Iik7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+VGhlIHZhbHVlIG9mICIg
KyBrZXkgKyAiIGlzOiAnIiArIHggKyAiJywgdGhlIGxlbmd0aCBpczogIiArIHgubGVuZ3RoICsg
Ijxicj4iKTsKKworICAgICAgICBpZiAoeCA9PSB2YWx1ZSkgeworICAgICAgICAgICAgZG9jdW1l
bnQud3JpdGUoIlBBU1MuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBkb2N1bWVudC53cml0ZSgiRkFJTDogVGhlIGV4cGVjdGVkIHZhbHVlIGlzOiAnIiArIHZhbHVl
ICsgIicsIHRoZSBleHBlY3RlZCBsZW5ndGggaXM6ICIgKyB2YWx1ZS5sZW5ndGgpOworICAgICAg
ICB9CisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3A+PGEgaHJlZj1cImphdmFzY3JpcHQ6bG9j
YWxTdG9yYWdlLnJlbW92ZUl0ZW0oJyIgKyBrZXkgKyAiJyk7XCI+cmVtb3ZlICciICsga2V5ICsg
IicgZnJvbSBsb2NhbFN0b3JhZ2U8L2E+Iik7CisgICAgfQorPC9zY3JpcHQ+CisKKzxwPlRoaXMg
aXMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
ODc2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzYyPC9hPgor
PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkOTE4NmRjLi4xMzgwNGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg3LDYgKzI4
NywxNyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5OdWxsKGludCBjb2wpCiAgICAg
cmV0dXJuIHNxbGl0ZTNfY29sdW1uX3R5cGUobV9zdGF0ZW1lbnQsIGNvbCkgPT0gU1FMSVRFX05V
TEw7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNCbG9iKGlu
dCBjb2wpCit7CisgICAgQVNTRVJUKGNvbCA+PSAwKTsKKyAgICBpZiAoIW1fc3RhdGVtZW50KSB7
CisgICAgICAgIGlmIChwcmVwYXJlKCkgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmcoIkJM
T0IiKSwgU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVt
bl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBjb2wpKSkpOworfQorCiBTdHJpbmcgU1FMaXRlU3Rh
dGVtZW50OjpnZXRDb2x1bW5OYW1lKGludCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+PSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCAz
NWRjZWNmLi44YTllNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgY29sdW1uQ291
bnQoKTsKICAgICAKICAgICBib29sIGlzQ29sdW1uTnVsbChpbnQgY29sKTsKKyAgICBib29sIGlz
Q29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVtbk5hbWUo
aW50IGNvbCk7CiAgICAgU1FMVmFsdWUgZ2V0Q29sdW1uVmFsdWUoaW50IGNvbCk7CiAgICAgU3Ry
aW5nIGdldENvbHVtblRleHQoaW50IGNvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAKaW5kZXggOTRhMDAyYS4uNDhhMjI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGwuaCIKICNp
bmNsdWRlICJTdG9yYWdlU3luY01hbmFnZXIuaCIKQEAgLTI1NCw3ICsyNTUsOSBAQCB2b2lkIFN0
b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5n
U3RyYXRlZ3kpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2Uu
ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0ZW1UYWJsZSAoa2V5
IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCkiKSkgeworICAgIG1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpOworCisg
ICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY
SVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1
ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwog
ICAgICAgICBtYXJrSW1wb3J0ZWQoKTsKICAgICAgICAgbV9kYXRhYmFzZU9wZW5GYWlsZWQgPSB0
cnVlOwpAQCAtMjY0LDYgKzI2Nyw0OSBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFi
YXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAgICAgU3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKS5zZXRPcmlnaW5EZXRhaWxzKG1fZGF0YWJhc2VJZGVudGlmaWVyLCBk
YXRhYmFzZUZpbGVuYW1lKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVt
VGFibGVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJJdGVt
VGFibGUiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeworICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSBMSU1JVCAx
Iik7CisgICAgICAgIC8vIHRoaXMgcXVlcnkgaXNuJ3QgZXZlciBleGVjdXRlZC4KKyAgICAgICAg
aWYgKHF1ZXJ5LmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoMCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gYWx0ZXIgdGFibGUgZm9yIGJhY2t3YXJkIGNvbXBsaWFuY2UsIGNo
YW5nZSB0aGUgdmFsdWUgdHlwZSBmcm9tIFRFWFQgdG8gQkxPQi4KKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1U
YWJsZTIiLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtleSBURVhUIFVOSVFV
RSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwpIiwKKyAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJdGVt
VGFibGUiLAorICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiLAorICAgICAgICAiQUxURVIg
VEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwKKyAgICAgICAgMCwKKyAgICB9
OworCisgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24obV9kYXRhYmFzZSwgZmFsc2Up
OworICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGNvbW1h
bmRzW2ldOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNv
bW1hbmRzW2ldKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0
YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29t
bWFuZHNbaV0pOworICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKKworICAgICAg
ICAgICAgLy8gZmluYWxseSBpdCB3aWxsIHRyeSB0byBrZWVwIGEgYmFja3VwIG9mIEl0ZW1UYWJs
ZSBmb3IgdGhlIGZ1dHVyZSByZXN0b3JhdGlvbi4KKyAgICAgICAgICAgIC8vIE5PVElDRTogdGhp
cyB3aWxsIGVzc2VudGlhbGx5IERFTEVURSB0aGUgY3VycmVudCBkYXRhYmFzZSwgYnV0IHRoYXQn
cyBiZXR0ZXIKKyAgICAgICAgICAgIC8vIHRoYW4gY29udGludWFsbHkgaGl0dGluZyB0aGlzIGNh
c2UgYW5kIG5ldmVyIGJlaW5nIGFibGUgdG8gdXNlIHRoZSBsb2NhbCBzdG9yYWdlLgorICAgICAg
ICAgICAgLy8gaWYgdGhpcyBpcyBldmVyIGhpdCwgaXQncyBkZWZpbml0ZWx5IGEgYnVnLgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZSBSRU5BTUUgVE8gQmFja3Vw
X0l0ZW1UYWJsZSIpKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNhdmUg
SXRlbVRhYmxlIGFmdGVyIG1pZ3JhdGlvbiBqb2IgZmFpbGVkLiIpOworCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7Cit9CisK
IHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKQEAgLTI4Niw3ICszMzIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6
cGVyZm9ybUltcG9ydCgpCiAKICAgICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgpOwogICAgIHdo
aWxlIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIGl0ZW1NYXAuc2V0KHF1ZXJ5
LmdldENvbHVtblRleHQoMCksIHF1ZXJ5LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBpdGVt
TWFwLnNldChxdWVyeS5nZXRDb2x1bW5UZXh0KDApLCBxdWVyeS5nZXRDb2x1bW5CbG9iQXNTdHJp
bmcoMSkpOwogICAgICAgICByZXN1bHQgPSBxdWVyeS5zdGVwKCk7CiAgICAgfQogCkBAIC0zOTIs
NyArNDM4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmMoYm9vbCBjbGVhckl0ZW1zLCBj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMKIAogICAgICAgICAvLyBJZiB0aGUg
c2Vjb25kIGFyZ3VtZW50IGlzIG5vbi1udWxsLCB3ZSdyZSBkb2luZyBhbiBpbnNlcnQsIHNvIGJp
bmQgaXQgYXMgdGhlIHZhbHVlLgogICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNOdWxsKCkpCi0g
ICAgICAgICAgICBxdWVyeS5iaW5kVGV4dCgyLCBpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHF1
ZXJ5LmJpbmRCbG9iKDIsIGl0LT5zZWNvbmQpOwogCiAgICAgICAgIGludCByZXN1bHQgPSBxdWVy
eS5zdGVwKCk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKaW5kZXggZWJmYjA1My4uM2EzNGVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCkBAIC0xMDIsNiArMTAy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIFRocmVhZENvbmRpdGlv
biBtX2ltcG9ydENvbmRpdGlvbjsKICAgICAgICAgbXV0YWJsZSBib29sIG1faW1wb3J0Q29tcGxl
dGU7CiAgICAgICAgIHZvaWQgbWFya0ltcG9ydGVkKCk7CisgICAgICAgIHZvaWQgbWlncmF0ZUl0
ZW1UYWJsZUlmTmVlZGVkKCk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>