Merge lp:~vlad-lesin/percona-server/i_s-innodb-changed-pages into lp:~laurynas-biveinis/percona-server/xtradb-changed-page-tracking
- i_s-innodb-changed-pages
- Merge into xtradb-changed-page-tracking
Status: | Work in progress |
---|---|
Proposed branch: | lp:~vlad-lesin/percona-server/i_s-innodb-changed-pages |
Merge into: | lp:~laurynas-biveinis/percona-server/xtradb-changed-page-tracking |
Diff against target: |
9440 lines (+1148/-3792) 68 files modified
Makefile (+1/-5) Percona-Server/mysql-test/r/information_schema.result (+13/-13) Percona-Server/mysql-test/r/information_schema_db.result (+3/-3) Percona-Server/mysql-test/r/mysqlshow.result (+6/-6) Percona-Server/mysql-test/r/percona_server_variables_debug.result (+1/-0) Percona-Server/mysql-test/r/percona_server_variables_release.result (+1/-0) Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result (+12/-0) Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result (+10/-0) Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result (+41/-0) Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result (+2/-0) Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result (+94/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test (+29/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt (+1/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test (+29/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt (+1/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test (+103/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt (+1/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test (+8/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt (+1/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test (+21/-0) Percona-Server/sql/handler.cc (+2/-0) Percona-Server/sql/log_event.cc (+42/-3) Percona-Server/sql/signal_handler.cc (+6/-4) Percona-Server/sql/sql_show.cc (+10/-4) Percona-Server/storage/innodb_plugin/Makefile.am (+0/-1) Percona-Server/storage/innodb_plugin/buf/buf0lru.c (+37/-3) Percona-Server/storage/innodb_plugin/dict/dict0dict.c (+0/-6) Percona-Server/storage/innodb_plugin/fil/fil0fil.c (+4/-1) Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc (+9/-1) Percona-Server/storage/innodb_plugin/handler/handler0alter.cc (+2/-0) Percona-Server/storage/innodb_plugin/handler/i_s.cc (+308/-159) Percona-Server/storage/innodb_plugin/handler/i_s.h (+1/-1) Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h (+0/-51) Percona-Server/storage/innodb_plugin/include/log0online.h (+60/-0) Percona-Server/storage/innodb_plugin/include/srv0srv.h (+3/-0) Percona-Server/storage/innodb_plugin/log/log0online.c (+160/-1) Percona-Server/storage/innodb_plugin/row/row0mysql.c (+1/-1) Percona-Server/storage/innodb_plugin/srv/srv0srv.c (+2/-0) build/debian/control (+1/-1) build/debian/rules (+1/-1) build/percona-server.spec (+2/-2) build/percona-shared-compat.spec (+1/-1) doc/Makefile (+13/-0) doc/source/conf.py (+3/-3) doc/source/diagnostics/innodb_stats.rst (+2/-3) doc/source/diagnostics/misc_info_schema_tables.rst (+1/-1) doc/source/diagnostics/mysql_syslog.rst (+1/-1) doc/source/diagnostics/slow_extended.rst (+2/-2) doc/source/flexibility/buff_read_ahead_area.rst (+1/-1) doc/source/flexibility/mysqlbinlog_change_db.rst (+55/-9) doc/source/installation/apt_repo.rst (+13/-2) doc/source/management/innodb_expand_import.rst (+4/-1) doc/source/management/innodb_fast_index_creation.rst (+1/-22) doc/source/management/innodb_lru_dump_restore.rst (+1/-1) doc/source/percona-theme/layout.html (+0/-503) doc/source/percona-theme/searchbox.html (+0/-22) doc/source/percona-theme/static/default.css_t (+0/-433) doc/source/percona-theme/static/jquery.min.js (+0/-154) doc/source/percona-theme/static/percona.com.css (+0/-1849) doc/source/percona-theme/static/percona.com.js (+0/-269) doc/source/percona-theme/static/sidebar.js (+0/-151) doc/source/percona-theme/theme.conf (+0/-32) doc/source/release-notes/Percona-Server-5.1.63-13.4.rst (+15/-0) doc/source/reliability/innodb_corrupt_table_action.rst (+0/-23) doc/source/reliability/innodb_recovery_update_relay_log.rst (+2/-2) doc/source/scalability/innodb_expand_undo_slots.rst (+2/-2) doc/source/scalability/innodb_extra_rseg.rst (+2/-0) lrusort.py (+0/-38) |
To merge this branch: | bzr merge lp:~vlad-lesin/percona-server/i_s-innodb-changed-pages |
Related bugs: | |
Related blueprints: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Laurynas Biveinis | Needs Fixing | ||
Review via email: mp+115502@code.launchpad.net |
Commit message
Description of the change
Trying once more. The initial branch is lp:~laurynas-biveinis/percona-server/xtradb-changed-page-tracking .
Remade the test. Now it creates redo log records twice as much as the redo log size. As the 1st half is guaranteed to be tracked it checks if the number of tracked pages is greater than or equal to the number of first half. Also it checks if innodb-
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
Vlad Lesin (vlad-lesin) wrote : | # |
> Some feature design and code questions. Maybe not all of them need to
> be resolved right now.
>
> - We need to know somehow if the current run is complete, i.e. if we
> query some LSN interval, the last block we read should have the last
> block bit set, if we silently output partial data, the user will not
> know if he should re-query the last part of LSN interval or not. I
> am not sure what would be the best way. Another column for last
> block bit flag? That would be quite clumsy for users to use.
Maybe it's better to wait until log tracking thread completely write all blocks for certain lsn interval?
About holes. We could to have another I_S for holes and bad blocks recognition. Another option you described below:
> - Likewise I am not sure what should we do about corrupted blocks in
> the middle of requested LSN intervals (and maybe missing LSN
> interval data too). Another boolean column "this block is continuous
> from the previous block"?
It's easy to recognize bad blocks just ckecksum checking. And we could read lsn interval completely before output which allows us to recognize not completely written lsn intervals checking "last block" flag at the end of interval. We could use linked list of changed pages inside of iterator instead of just one page to hold lsn range.
> - In any case I guess we should diagnose bad block checksums we
> encounter to the error log at least. That's easy, but it raises the
> issue of what would happen if the I_S query would attempt to read the
> last bitmap block while it's being written. Currently such block
> would be ignored correctly, but in this case we would get false
> errors. I think we should introduce a log online mutex for the last
> written block protection. Acquire it in the log writer around the
> block write + sync. Acquire it (and immediatelly release) in the
> log iterator right before the read when (offset == file size - 1
> block).
Yes, mutex would help us to avoid reading not completely written blocks. But what about partially written lsn intervals? Maybe that mutex should protect the whole interval writing? Not only one block?
> - What is the purpose of LOG_BITMAP_
> LOG_BITMAP_
The purpose is to hide implementation of iterator. We can change the content of iterator and some work logic not changing the code which uses the iterator.
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
> > - We need to know somehow if the current run is complete, i.e. if we
> > query some LSN interval, the last block we read should have the last
> > block bit set, if we silently output partial data, the user will not
> > know if he should re-query the last part of LSN interval or not. I
> > am not sure what would be the best way. Another column for last
> > block bit flag? That would be quite clumsy for users to use.
>
> Maybe it's better to wait until log tracking thread completely write all
> blocks for certain lsn interval?
Such wait could be very long on a busy server that starves the log following thread.
> About holes. We could to have another I_S for holes and bad blocks
> recognition.
Can you describe in more detail how you imagine this another I_S table?
> Another option you described below:
>
> > - Likewise I am not sure what should we do about corrupted blocks in
> > the middle of requested LSN intervals (and maybe missing LSN
> > interval data too). Another boolean column "this block is continuous
> > from the previous block"?
>
> It's easy to recognize bad blocks just ckecksum checking. And we could read
> lsn interval completely before output which allows us to recognize not
> completely written lsn intervals checking "last block" flag at the end of
> interval. We could use linked list of changed pages inside of iterator instead
> of just one page to hold lsn range.
But the issue is not the detection of bad or missing data, but rather what to do when this situation happens.
> > - In any case I guess we should diagnose bad block checksums we
> > encounter to the error log at least. That's easy, but it raises the
> > issue of what would happen if the I_S query would attempt to read the
> > last bitmap block while it's being written. Currently such block
> > would be ignored correctly, but in this case we would get false
> > errors. I think we should introduce a log online mutex for the last
> > written block protection. Acquire it in the log writer around the
> > block write + sync. Acquire it (and immediatelly release) in the
> > log iterator right before the read when (offset == file size - 1
> > block).
>
> Yes, mutex would help us to avoid reading not completely written blocks. But
> what about partially written lsn intervals? Maybe that mutex should protect
> the whole interval writing? Not only one block?
It probably depends on what we decide to do for the above questions.
> > - What is the purpose of LOG_BITMAP_
> > LOG_BITMAP_
>
> The purpose is to hide implementation of iterator. We can change the content
> of iterator and some work logic not changing the code which uses the iterator.
Ah, I see, thanks. I assumed this was not the case, because the struct itself was in a header file.
Vlad Lesin (vlad-lesin) wrote : | # |
> But the issue is not the detection of bad or missing data, but rather what to
> do when this situation happens.
Ok, let's back to the purpose of the table at all. As I understood, the purpose is to have some statisticts to see how it's going on, maybe to anylize something. This table is not for precise calculations, as I understood, it is for estimations. At the other hand It would be usefull to see if there is something wrong with bitmap files in information schema. So I propose to leave the table as is. The name of the table is "Changed pages". It shows changed tables. It doesn't guarantee real time information mapping by design. I don't think it is really important to show the last written blocks or lsn intervals if they are not completely written at the moment of table generation. As for holes or bad blocks we could just ignore them due to purpose of this table.
But I propose to have two addiditional tables. One for bad blocks (previous page id, previous lsn range, bitmap file name, start bad block offset, number of bad blocks). And one for holes (start lsn, end lsn, bitmap file name, number of written blocks).
Vlad Lesin (vlad-lesin) wrote : | # |
> General comments:
>
> - Please submit an MP against lp:percona-server/5.1, as the current
> target branch has been merged.
Done.
> - I guess the current code did not implement the index condition
> pushdown yet?
It does.
if (cond && !cond->val_int())
continue;
cond->val_int() traverses the condition tree and calculates condition value using fields values stored earlier.
But we discussed it would be useful to recognize
"START_LSN >some_value_1 and END_LSN < some_value_2"
expression to prevent scanning the rest of bitmap file(s)
after reaching the upper limit.
In progress.
> - There is no decision on the I_S table row count limit system
> variable in the blueprint, but the code has it, please update the
> blueprint.
Done.
> - Please add tests for LSNs too. Unfortunately, their values are not
> that predictable, so the basic test would be to check that start lsn
> < end lsn.
Done.
> - Please add tests for the index condition pushdown, i.e. where
> start_lsn > ... and end_lsn < .... The lsn values for this test can
> be taken from the 1st query on I_S, and get the e.g. MIN, MAX, and
> median values of the tracked interval.
The condition can be any, not only start_lsn >... and end_lsn <... .
And the size of the table is limited with that condition. As I understood
the main purpose of condition pushdown for this table is to limit memory size
for storing temporary table. How can we test that size? Beside that the condition
is checked twice. The first is during table generation and the second is during
query execution. So it may be situation when we get right query execution result
but pushdown doesn't work and the table were completely stored in memory before
output. So how it can be tested?
I'm afraid I don't understand your idea. Do you offer to make several queries with the
following "where" expressions?
1) start_lsn > 0 and end_lsn < ($max_lsn/2)
2) start_lsn > 0 and end_lsn < $max_lsn
3) ($max_lsn/2) >= 0 and end_lsn < ($max_lsn)
If yes, what expected results should be?
> - The new system var requires a new sys_var/
> the current branch, isn't sys_vars/all_vars test failing due to that
> test being missing?
I think my mistake is in wrong naming of the variable type. It isn't a system
variable, it's plugin variable. Jenkins build didn't show any problems with variable tests.
And I saw another innodb_* variables without tests in sys_var test suite.
> - Code formatting issues (I know, these are very pedantic): the
> /*=====*/ under function names should match the function name
> length. The function arg comments should start with /*!< in: or /*!<
> out: or /*!< in/out:
Done.
> - Indentation issue around diff lines 308--312: both args and code
> should be indented by 1 tab. Likewise in many other places in
> log0online.c etc.. Also there should be 1 tab between var type and
> name in the local var declarations.
Done.
> - (srv_changed_
> : TRUE) can be simplified to (!srv_changed_
> output_rows_num < srv_changed_
Done.
> - Maybe log_online_
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
> Ok, let's back to the purpose of the table at all. As I understood, the
> purpose is to have some statisticts to see how it's going on, maybe to anylize
> something. This table is not for precise calculations, as I understood, it is
> for estimations. At the other hand It would be usefull to see if there is
> something wrong with bitmap files in information schema. So I propose to leave
> the table as is. The name of the table is "Changed pages". It shows changed
> tables. It doesn't guarantee real time information mapping by design. I don't
> think it is really important to show the last written blocks or lsn intervals
> if they are not completely written at the moment of table generation. As for
> holes or bad blocks we could just ignore them due to purpose of this table.
Yes, this is a good idea.
> But I propose to have two addiditional tables. One for bad blocks (previous
> page id, previous lsn range, bitmap file name, start bad block offset, number
> of bad blocks). And one for holes (start lsn, end lsn, bitmap file name,
> number of written blocks).
Looks OK, but 1) I wonder if we have to distinguish between a hole and a bad block, 2) is it that important for the user to have this info queriable through I_S because the main table is "best effort" only. Please check with Vadim.
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
> > - Please add tests for the index condition pushdown, i.e. where
> > start_lsn > ... and end_lsn < .... The lsn values for this test can
> > be taken from the 1st query on I_S, and get the e.g. MIN, MAX, and
> > median values of the tracked interval.
>
> The condition can be any, not only start_lsn >... and end_lsn <... .
> And the size of the table is limited with that condition. As I understood
> the main purpose of condition pushdown for this table is to limit memory size
> for storing temporary table. How can we test that size? Beside that the
> condition
> is checked twice. The first is during table generation and the second is
> during
> query execution. So it may be situation when we get right query execution
> result
> but pushdown doesn't work and the table were completely stored in memory
> before
> output. So how it can be tested?
Yes, it is impossible to test completely. Maybe let's add a WHERE start_lsn > .. AND end_lsn < ... query to tests but don't call it an ICP test. But perhaps it's not useful at all.
> I'm afraid I don't understand your idea. Do you offer to make several queries
> with the
> following "where" expressions?
> 1) start_lsn > 0 and end_lsn < ($max_lsn/2)
> 2) start_lsn > 0 and end_lsn < $max_lsn
> 3) ($max_lsn/2) >= 0 and end_lsn < ($max_lsn)
I had 1) in mind.
> If yes, what expected results should be?
Well, about anything. That limits the usefulness, I agree.
Vlad Lesin (vlad-lesin) wrote : | # |
> > - I guess the current code did not implement the index condition
> > pushdown yet?
>
> It does.
> if (cond && !cond->val_int())
> continue;
>
> cond->val_int() traverses the condition tree and calculates condition value
> using fields values stored earlier.
>
> But we discussed it would be useful to recognize
> "START_LSN >some_value_1 and END_LSN < some_value_2"
> expression to prevent scanning the rest of bitmap file(s)
> after reaching the upper limit.
>
> In progress.
The main trouble is we need common mysql code to implement this. For example to traverse
condition tree we need to know the type of Items, but they are defined in sql/item*.h.
So we could place the function which traverses condition tree to recognize our pattern
in common mysql code somewhere near calc_lookup_
external function in handler/i_s.cc but I doubt it's a good solution.
At the other hand we could make it common enough to be placed in common code like
calc_lookup_
I mean we could parse the following patterns:
- some_expression & cmp
- cmp & some_expression
- cmp & cmp
- cmp
where cmp is:
- some_field (<|<=) uint_value
- uint_value (>|>=) some_field
- some_field (<|<=) uint_value
- uint_value (>|>=) some_field
to the following structure:
{
string field_name1;
uint field_value1;
string field_name2;
string field_value2;
}
And the purpose of the function would be to get maximum field
value after which there is not sense to scan table/file/
As the code is common enough to be used not only for our I_S table generation
it could be placed to the common mysql code.
Any opinions/ideas?
Vlad Lesin (vlad-lesin) wrote : | # |
> I wonder if we have to distinguish between a hole and a bad
> block.
I think the distinguish is in units of measuring.
Bad block is a page range while hole is lsn range.
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
> The main trouble is we need common mysql code to implement this. For example
> to traverse
> condition tree we need to know the type of Items, but they are defined in
> sql/item*.h.
I believe it's OK to include sql/*.h in the innodb handler/ source files. But then it needs checking if InnoDB built as a plugin can link to all the symbols it needs.
> So we could place the function which traverses condition tree to recognize our
> pattern
> in common mysql code somewhere near calc_lookup_
> as
> external function in handler/i_s.cc but I doubt it's a good solution.
>
> At the other hand we could make it common enough to be placed in common code
> like
> calc_lookup_
If the above works, then I think let's keep it local to i_s.cc at first for now.
> I mean we could parse the following patterns:
> - some_expression & cmp
> - cmp & some_expression
> - cmp & cmp
> - cmp
> where cmp is:
> - some_field (<|<=) uint_value
> - uint_value (>|>=) some_field
> - some_field (<|<=) uint_value
> - uint_value (>|>=) some_field
> to the following structure:
> {
> string field_name1;
> uint field_value1;
> string field_name2;
> string field_value2;
> }
>
> And the purpose of the function would be to get maximum field
> value after which there is not sense to scan table/file/
Looks good. I'd tweak the top-most recognized pattern to be
term & term & ... & term
Where
term can be a "cmp", as defined above, or anything else (ignored)
Then maintain a lower and upper bound for the range and go through each cmp looking if it enables to reduce the range.
Preview Diff
1 | === modified file 'Makefile' |
2 | --- Makefile 2012-05-09 04:14:12 +0000 |
3 | +++ Makefile 2012-08-15 14:13:58 +0000 |
4 | @@ -6,7 +6,7 @@ |
5 | KEWPIE ?=kewpie |
6 | BASEDIR = $(CURDIR) |
7 | |
8 | -all: main install-lic misc handlersocket maatkit-udf autorun |
9 | +all: main install-lic handlersocket maatkit-udf autorun |
10 | @echo "" |
11 | @echo "Percona Server source code is ready" |
12 | @echo "Now change directory to $(PERCONA_SERVER) define variables as show below" |
13 | @@ -41,10 +41,6 @@ |
14 | |
15 | main: prepare |
16 | |
17 | -misc: |
18 | - @echo "Installing other files" |
19 | - install -m 644 lrusort.py $(PERCONA_SERVER)/scripts |
20 | - |
21 | clean: |
22 | rm -rf $(PERCONA_SERVER) $(PERCONA_SERVER_SHORT_1) |
23 | |
24 | |
25 | === modified file 'Percona-Server/mysql-test/r/information_schema.result' |
26 | --- Percona-Server/mysql-test/r/information_schema.result 2011-11-24 02:00:56 +0000 |
27 | +++ Percona-Server/mysql-test/r/information_schema.result 2012-08-15 14:13:58 +0000 |
28 | @@ -81,9 +81,9 @@ |
29 | VIEWS |
30 | INNODB_BUFFER_POOL_PAGES_INDEX |
31 | INNODB_RSEG |
32 | -INNODB_LOCKS |
33 | +INNODB_CHANGED_PAGES |
34 | INNODB_BUFFER_POOL_PAGES |
35 | -XTRADB_ENHANCEMENTS |
36 | +INNODB_TABLE_STATS |
37 | INNODB_TRX |
38 | XTRADB_ADMIN_COMMAND |
39 | INNODB_LOCK_WAITS |
40 | @@ -96,7 +96,7 @@ |
41 | INNODB_SYS_INDEXES |
42 | INNODB_BUFFER_POOL_PAGES_BLOB |
43 | INNODB_CMPMEM_RESET |
44 | -INNODB_TABLE_STATS |
45 | +INNODB_LOCKS |
46 | columns_priv |
47 | db |
48 | event |
49 | @@ -901,8 +901,8 @@ |
50 | TEMPORARY_TABLES TABLE_NAME select |
51 | TABLE_STATISTICS TABLE_NAME select |
52 | VIEWS TABLE_NAME select |
53 | +INNODB_TABLE_STATS table_name select |
54 | INNODB_INDEX_STATS table_name select |
55 | -INNODB_TABLE_STATS table_name select |
56 | delete from mysql.user where user='mysqltest_4'; |
57 | delete from mysql.db where user='mysqltest_4'; |
58 | flush privileges; |
59 | @@ -1333,9 +1333,9 @@ |
60 | VIEWS TABLE_SCHEMA |
61 | INNODB_BUFFER_POOL_PAGES_INDEX index_id |
62 | INNODB_RSEG rseg_id |
63 | -INNODB_LOCKS lock_id |
64 | +INNODB_CHANGED_PAGES space_id |
65 | INNODB_BUFFER_POOL_PAGES page_type |
66 | -XTRADB_ENHANCEMENTS name |
67 | +INNODB_TABLE_STATS table_schema |
68 | INNODB_TRX trx_id |
69 | XTRADB_ADMIN_COMMAND result_message |
70 | INNODB_LOCK_WAITS requesting_trx_id |
71 | @@ -1348,7 +1348,7 @@ |
72 | INNODB_SYS_INDEXES TABLE_ID |
73 | INNODB_BUFFER_POOL_PAGES_BLOB space_id |
74 | INNODB_CMPMEM_RESET page_size |
75 | -INNODB_TABLE_STATS table_schema |
76 | +INNODB_LOCKS lock_id |
77 | SELECT t.table_name, c1.column_name |
78 | FROM information_schema.tables t |
79 | INNER JOIN |
80 | @@ -1402,9 +1402,9 @@ |
81 | VIEWS TABLE_SCHEMA |
82 | INNODB_BUFFER_POOL_PAGES_INDEX index_id |
83 | INNODB_RSEG rseg_id |
84 | -INNODB_LOCKS lock_id |
85 | +INNODB_CHANGED_PAGES space_id |
86 | INNODB_BUFFER_POOL_PAGES page_type |
87 | -XTRADB_ENHANCEMENTS name |
88 | +INNODB_TABLE_STATS table_schema |
89 | INNODB_TRX trx_id |
90 | XTRADB_ADMIN_COMMAND result_message |
91 | INNODB_LOCK_WAITS requesting_trx_id |
92 | @@ -1417,15 +1417,15 @@ |
93 | INNODB_SYS_INDEXES TABLE_ID |
94 | INNODB_BUFFER_POOL_PAGES_BLOB space_id |
95 | INNODB_CMPMEM_RESET page_size |
96 | -INNODB_TABLE_STATS table_schema |
97 | +INNODB_LOCKS lock_id |
98 | SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test'); |
99 | MAX(table_name) |
100 | -XTRADB_ENHANCEMENTS |
101 | +XTRADB_ADMIN_COMMAND |
102 | SELECT table_name from information_schema.tables |
103 | WHERE table_name=(SELECT MAX(table_name) |
104 | FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test')); |
105 | table_name |
106 | -XTRADB_ENHANCEMENTS |
107 | +XTRADB_ADMIN_COMMAND |
108 | DROP TABLE IF EXISTS bug23037; |
109 | DROP FUNCTION IF EXISTS get_value; |
110 | SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037'; |
111 | @@ -1500,6 +1500,7 @@ |
112 | INNODB_BUFFER_POOL_PAGES information_schema.INNODB_BUFFER_POOL_PAGES 1 |
113 | INNODB_BUFFER_POOL_PAGES_BLOB information_schema.INNODB_BUFFER_POOL_PAGES_BLOB 1 |
114 | INNODB_BUFFER_POOL_PAGES_INDEX information_schema.INNODB_BUFFER_POOL_PAGES_INDEX 1 |
115 | +INNODB_CHANGED_PAGES information_schema.INNODB_CHANGED_PAGES 1 |
116 | INNODB_CMP information_schema.INNODB_CMP 1 |
117 | INNODB_CMPMEM information_schema.INNODB_CMPMEM 1 |
118 | INNODB_CMPMEM_RESET information_schema.INNODB_CMPMEM_RESET 1 |
119 | @@ -1536,7 +1537,6 @@ |
120 | USER_PRIVILEGES information_schema.USER_PRIVILEGES 1 |
121 | USER_STATISTICS information_schema.USER_STATISTICS 1 |
122 | VIEWS information_schema.VIEWS 1 |
123 | -XTRADB_ENHANCEMENTS information_schema.XTRADB_ENHANCEMENTS 1 |
124 | create table t1(f1 int); |
125 | create view v1 as select f1+1 as a from t1; |
126 | create table t2 (f1 int, f2 int); |
127 | |
128 | === modified file 'Percona-Server/mysql-test/r/information_schema_db.result' |
129 | --- Percona-Server/mysql-test/r/information_schema_db.result 2011-11-24 02:00:56 +0000 |
130 | +++ Percona-Server/mysql-test/r/information_schema_db.result 2012-08-15 14:13:58 +0000 |
131 | @@ -43,9 +43,9 @@ |
132 | VIEWS |
133 | INNODB_BUFFER_POOL_PAGES_INDEX |
134 | INNODB_RSEG |
135 | -INNODB_LOCKS |
136 | +INNODB_CHANGED_PAGES |
137 | INNODB_BUFFER_POOL_PAGES |
138 | -XTRADB_ENHANCEMENTS |
139 | +INNODB_TABLE_STATS |
140 | INNODB_TRX |
141 | XTRADB_ADMIN_COMMAND |
142 | INNODB_LOCK_WAITS |
143 | @@ -58,7 +58,7 @@ |
144 | INNODB_SYS_INDEXES |
145 | INNODB_BUFFER_POOL_PAGES_BLOB |
146 | INNODB_CMPMEM_RESET |
147 | -INNODB_TABLE_STATS |
148 | +INNODB_LOCKS |
149 | show tables from INFORMATION_SCHEMA like 'T%'; |
150 | Tables_in_information_schema (T%) |
151 | TABLES |
152 | |
153 | === modified file 'Percona-Server/mysql-test/r/mysqlshow.result' |
154 | --- Percona-Server/mysql-test/r/mysqlshow.result 2011-11-24 02:00:56 +0000 |
155 | +++ Percona-Server/mysql-test/r/mysqlshow.result 2012-08-15 14:13:58 +0000 |
156 | @@ -117,9 +117,9 @@ |
157 | | VIEWS | |
158 | | INNODB_BUFFER_POOL_PAGES_INDEX | |
159 | | INNODB_RSEG | |
160 | -| INNODB_LOCKS | |
161 | +| INNODB_CHANGED_PAGES | |
162 | | INNODB_BUFFER_POOL_PAGES | |
163 | -| XTRADB_ENHANCEMENTS | |
164 | +| INNODB_TABLE_STATS | |
165 | | INNODB_TRX | |
166 | | XTRADB_ADMIN_COMMAND | |
167 | | INNODB_LOCK_WAITS | |
168 | @@ -132,7 +132,7 @@ |
169 | | INNODB_SYS_INDEXES | |
170 | | INNODB_BUFFER_POOL_PAGES_BLOB | |
171 | | INNODB_CMPMEM_RESET | |
172 | -| INNODB_TABLE_STATS | |
173 | +| INNODB_LOCKS | |
174 | +---------------------------------------+ |
175 | Database: INFORMATION_SCHEMA |
176 | +---------------------------------------+ |
177 | @@ -176,9 +176,9 @@ |
178 | | VIEWS | |
179 | | INNODB_BUFFER_POOL_PAGES_INDEX | |
180 | | INNODB_RSEG | |
181 | -| INNODB_LOCKS | |
182 | +| INNODB_CHANGED_PAGES | |
183 | | INNODB_BUFFER_POOL_PAGES | |
184 | -| XTRADB_ENHANCEMENTS | |
185 | +| INNODB_TABLE_STATS | |
186 | | INNODB_TRX | |
187 | | XTRADB_ADMIN_COMMAND | |
188 | | INNODB_LOCK_WAITS | |
189 | @@ -191,7 +191,7 @@ |
190 | | INNODB_SYS_INDEXES | |
191 | | INNODB_BUFFER_POOL_PAGES_BLOB | |
192 | | INNODB_CMPMEM_RESET | |
193 | -| INNODB_TABLE_STATS | |
194 | +| INNODB_LOCKS | |
195 | +---------------------------------------+ |
196 | Wildcard: inf_rmation_schema |
197 | +--------------------+ |
198 | |
199 | === modified file 'Percona-Server/mysql-test/r/percona_server_variables_debug.result' |
200 | --- Percona-Server/mysql-test/r/percona_server_variables_debug.result 2012-06-14 09:16:03 +0000 |
201 | +++ Percona-Server/mysql-test/r/percona_server_variables_debug.result 2012-08-15 14:13:58 +0000 |
202 | @@ -86,6 +86,7 @@ |
203 | INNODB_BUFFER_POOL_SHM_CHECKSUM |
204 | INNODB_BUFFER_POOL_SHM_KEY |
205 | INNODB_BUFFER_POOL_SIZE |
206 | +INNODB_CHANGED_PAGES_LIMIT |
207 | INNODB_CHANGE_BUFFERING |
208 | INNODB_CHECKPOINT_AGE_TARGET |
209 | INNODB_CHECKSUMS |
210 | |
211 | === modified file 'Percona-Server/mysql-test/r/percona_server_variables_release.result' |
212 | --- Percona-Server/mysql-test/r/percona_server_variables_release.result 2012-06-14 09:16:03 +0000 |
213 | +++ Percona-Server/mysql-test/r/percona_server_variables_release.result 2012-08-15 14:13:58 +0000 |
214 | @@ -84,6 +84,7 @@ |
215 | INNODB_BUFFER_POOL_SHM_CHECKSUM |
216 | INNODB_BUFFER_POOL_SHM_KEY |
217 | INNODB_BUFFER_POOL_SIZE |
218 | +INNODB_CHANGED_PAGES_LIMIT |
219 | INNODB_CHANGE_BUFFERING |
220 | INNODB_CHECKPOINT_AGE_TARGET |
221 | INNODB_CHECKSUMS |
222 | |
223 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result' |
224 | --- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result 1970-01-01 00:00:00 +0000 |
225 | +++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_951588.result 2012-08-15 14:13:58 +0000 |
226 | @@ -0,0 +1,12 @@ |
227 | +DROP TABLE IF EXISTS t1; |
228 | +CREATE TEMPORARY TABLE t1 (a INT) ENGINE=InnoDB; |
229 | +INSERT INTO t1 VALUES (1), (2), (3); |
230 | +SET DEBUG_SYNC= 'start_ha_write_row SIGNAL write_in_progress WAIT_FOR i_s_completed'; |
231 | +ALTER TABLE t1 ADD COLUMN b VARCHAR(10); |
232 | +SET DEBUG_SYNC= 'now WAIT_FOR write_in_progress'; |
233 | +SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES; |
234 | +COUNT(*) |
235 | +2 |
236 | +SET DEBUG_SYNC= 'now SIGNAL i_s_completed'; |
237 | +DROP TABLE t1; |
238 | +SET DEBUG_SYNC='reset'; |
239 | |
240 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result' |
241 | --- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result 1970-01-01 00:00:00 +0000 |
242 | +++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_bug_999147.result 2012-08-15 14:13:58 +0000 |
243 | @@ -0,0 +1,10 @@ |
244 | +DROP TABLE IF EXISTS t1; |
245 | +SET SESSION expand_fast_index_creation=ON; |
246 | +CREATE TEMPORARY TABLE t1 (a INT, b INT, INDEX(a)) ENGINE=InnoDB; |
247 | +SET debug="+d,crash_innodb_add_index_after"; |
248 | +ALTER TABLE t1 ADD INDEX (b); |
249 | +ERROR HY000: Lost connection to MySQL server during query |
250 | +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES; |
251 | +NAME |
252 | +SYS_FOREIGN |
253 | +SYS_FOREIGN_COLS |
254 | |
255 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result' |
256 | --- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result 1970-01-01 00:00:00 +0000 |
257 | +++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result 2012-08-15 14:13:58 +0000 |
258 | @@ -0,0 +1,41 @@ |
259 | +SELECT @@innodb_track_changed_pages; |
260 | +@@innodb_track_changed_pages |
261 | +1 |
262 | +SET @OLD_INNODB_CHANGED_PAGES_LIMIT = @@GLOBAL.INNODB_CHANGED_PAGES_LIMIT; |
263 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0; |
264 | +CREATE TABLE T1 (F1 CHAR(255)) ENGINE=INNODB; |
265 | +SET @t1_space_id = |
266 | +(SELECT SPACE |
267 | +FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES |
268 | +WHERE |
269 | +INFORMATION_SCHEMA.INNODB_SYS_TABLES.SCHEMA='test' AND |
270 | +INFORMATION_SCHEMA.INNODB_SYS_TABLES.NAME='T1'); |
271 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0; |
272 | +SELECT COUNT(DISTINCT PAGE_ID) >= (1024000/16384) |
273 | +FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
274 | +WHERE SPACE_ID = @t1_space_id; |
275 | +COUNT(DISTINCT PAGE_ID) >= (1024000/16384) |
276 | +1 |
277 | +SELECT MAX(PAGE_ID) < (3*1024000/16384) |
278 | +FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
279 | +WHERE SPACE_ID = @t1_space_id; |
280 | +MAX(PAGE_ID) < (3*1024000/16384) |
281 | +1 |
282 | +SELECT COUNT(*) |
283 | +FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
284 | +WHERE START_LSN >= END_LSN; |
285 | +COUNT(*) |
286 | +0 |
287 | +SELECT COUNT(*) = @cond_test_pages_count |
288 | +FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
289 | +WHERE |
290 | +END_LSN > (@cond_test_lsn - 1) AND |
291 | +END_LSN < (@cond_test_lsn + 1); |
292 | +COUNT(*) = @cond_test_pages_count |
293 | +1 |
294 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 1; |
295 | +SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES; |
296 | +COUNT(*) |
297 | +1 |
298 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = @OLD_INNODB_CHANGED_PAGES_LIMIT; |
299 | +DROP TABLE T1; |
300 | |
301 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result' |
302 | --- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result 1970-01-01 00:00:00 +0000 |
303 | +++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result 2012-08-15 14:13:58 +0000 |
304 | @@ -0,0 +1,2 @@ |
305 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES; |
306 | +space_id page_id start_lsn end_lsn |
307 | |
308 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result' |
309 | --- Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result 1970-01-01 00:00:00 +0000 |
310 | +++ Percona-Server/mysql-test/suite/innodb_plugin/r/percona_skip_innodb_i_s.result 2012-08-15 14:13:58 +0000 |
311 | @@ -0,0 +1,94 @@ |
312 | +SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'INNODB%' ORDER BY TABLE_NAME; |
313 | +TABLE_NAME |
314 | +INNODB_BUFFER_POOL_PAGES |
315 | +INNODB_BUFFER_POOL_PAGES_BLOB |
316 | +INNODB_BUFFER_POOL_PAGES_INDEX |
317 | +INNODB_CHANGED_PAGES |
318 | +INNODB_CMP |
319 | +INNODB_CMPMEM |
320 | +INNODB_CMPMEM_RESET |
321 | +INNODB_CMP_RESET |
322 | +INNODB_INDEX_STATS |
323 | +INNODB_LOCKS |
324 | +INNODB_LOCK_WAITS |
325 | +INNODB_RSEG |
326 | +INNODB_SYS_INDEXES |
327 | +INNODB_SYS_STATS |
328 | +INNODB_SYS_TABLES |
329 | +INNODB_TABLE_STATS |
330 | +INNODB_TRX |
331 | +SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'XTRADB%' ORDER BY TABLE_NAME; |
332 | +TABLE_NAME |
333 | +XTRADB_ADMIN_COMMAND |
334 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX; |
335 | +index_id space_id page_no n_recs data_size hashed access_time modified dirty old lru_position fix_count flush_type |
336 | +Warnings: |
337 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX but the InnoDB storage engine is not installed |
338 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_RSEG; |
339 | +rseg_id space_id zip_size page_no max_size curr_size |
340 | +Warnings: |
341 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_RSEG but the InnoDB storage engine is not installed |
342 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP; |
343 | +page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time |
344 | +Warnings: |
345 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP but the InnoDB storage engine is not installed |
346 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; |
347 | +trx_id trx_state trx_started trx_requested_lock_id trx_wait_started trx_weight trx_mysql_thread_id trx_query |
348 | +Warnings: |
349 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_TRX but the InnoDB storage engine is not installed |
350 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; |
351 | +requesting_trx_id requested_lock_id blocking_trx_id blocking_lock_id |
352 | +Warnings: |
353 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCK_WAITS but the InnoDB storage engine is not installed |
354 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; |
355 | +lock_id lock_trx_id lock_mode lock_type lock_table lock_index lock_space lock_page lock_rec lock_data |
356 | +Warnings: |
357 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCKS but the InnoDB storage engine is not installed |
358 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET; |
359 | +page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time |
360 | +Warnings: |
361 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_RESET but the InnoDB storage engine is not installed |
362 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES; |
363 | +page_type space_id page_no lru_position fix_count flush_type |
364 | +Warnings: |
365 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES but the InnoDB storage engine is not installed |
366 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES; |
367 | +SCHEMA NAME ID N_COLS TYPE MIX_ID MIX_LEN CLUSTER_NAME SPACE |
368 | +Warnings: |
369 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLES but the InnoDB storage engine is not installed |
370 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX; |
371 | +index_id space_id page_no n_recs data_size hashed access_time modified dirty old lru_position fix_count flush_type |
372 | +Warnings: |
373 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX but the InnoDB storage engine is not installed |
374 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM; |
375 | +page_size pages_used pages_free relocation_ops relocation_time |
376 | +Warnings: |
377 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM but the InnoDB storage engine is not installed |
378 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB; |
379 | +space_id page_no compressed part_len next_page_no lru_position fix_count flush_type |
380 | +Warnings: |
381 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB but the InnoDB storage engine is not installed |
382 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET; |
383 | +page_size pages_used pages_free relocation_ops relocation_time |
384 | +Warnings: |
385 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM_RESET but the InnoDB storage engine is not installed |
386 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS; |
387 | +table_schema table_name rows clust_size other_size modified |
388 | +Warnings: |
389 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_TABLE_STATS but the InnoDB storage engine is not installed |
390 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_STATS; |
391 | +INDEX_ID KEY_COLS DIFF_VALS NON_NULL_VALS |
392 | +Warnings: |
393 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_STATS but the InnoDB storage engine is not installed |
394 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEX_STATS; |
395 | +table_schema table_name index_name fields row_per_keys index_size leaf_pages |
396 | +Warnings: |
397 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_INDEX_STATS but the InnoDB storage engine is not installed |
398 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES; |
399 | +TABLE_ID ID NAME N_FIELDS TYPE SPACE PAGE_NO |
400 | +Warnings: |
401 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_INDEXES but the InnoDB storage engine is not installed |
402 | +SELECT * FROM INFORMATION_SCHEMA.XTRADB_ADMIN_COMMAND; |
403 | +result_message |
404 | +Warnings: |
405 | +Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.XTRADB_ADMIN_COMMAND but the InnoDB storage engine is not installed |
406 | |
407 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test' |
408 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test 1970-01-01 00:00:00 +0000 |
409 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_951588.test 2012-08-15 14:13:58 +0000 |
410 | @@ -0,0 +1,29 @@ |
411 | +# Test for bug 951588 (Querying I_S.TEMPORARY_TABLES crashes parallel threads working on temp tables) |
412 | + |
413 | +--source include/have_innodb_plugin.inc |
414 | +--source include/have_debug_sync.inc |
415 | + |
416 | +--disable_warnings |
417 | +DROP TABLE IF EXISTS t1; |
418 | +--enable_warnings |
419 | + |
420 | +CREATE TEMPORARY TABLE t1 (a INT) ENGINE=InnoDB; |
421 | +INSERT INTO t1 VALUES (1), (2), (3); |
422 | + |
423 | +SET DEBUG_SYNC= 'start_ha_write_row SIGNAL write_in_progress WAIT_FOR i_s_completed'; |
424 | +send ALTER TABLE t1 ADD COLUMN b VARCHAR(10); |
425 | + |
426 | +connect (conn2,localhost,root,,); |
427 | +connection conn2; |
428 | + |
429 | +SET DEBUG_SYNC= 'now WAIT_FOR write_in_progress'; |
430 | +SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES; |
431 | +SET DEBUG_SYNC= 'now SIGNAL i_s_completed'; |
432 | + |
433 | +disconnect conn2; |
434 | +connection default; |
435 | +reap; |
436 | + |
437 | +DROP TABLE t1; |
438 | + |
439 | +SET DEBUG_SYNC='reset'; |
440 | |
441 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt' |
442 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt 1970-01-01 00:00:00 +0000 |
443 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147-master.opt 2012-08-15 14:13:58 +0000 |
444 | @@ -0,0 +1,1 @@ |
445 | +--skip-stack-trace --skip-core-file --innodb-file-per-table=1 |
446 | |
447 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test' |
448 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test 1970-01-01 00:00:00 +0000 |
449 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_bug_999147.test 2012-08-15 14:13:58 +0000 |
450 | @@ -0,0 +1,29 @@ |
451 | +# Test for Percona Server bug 999147 (A crash that leaves behind an |
452 | +# InnoDB temporary table with indexes results in an unbootable server) |
453 | +# https://bugs.launchpad.net/percona-server/+bug/999147 |
454 | + |
455 | +-- source include/not_embedded.inc |
456 | +-- source include/not_valgrind.inc |
457 | +-- source include/not_crashrep.inc |
458 | +-- source include/have_debug.inc |
459 | +-- source include/have_innodb.inc |
460 | + |
461 | +--disable_warnings |
462 | +DROP TABLE IF EXISTS t1; |
463 | +--enable_warnings |
464 | + |
465 | +SET SESSION expand_fast_index_creation=ON; |
466 | + |
467 | +CREATE TEMPORARY TABLE t1 (a INT, b INT, INDEX(a)) ENGINE=InnoDB; |
468 | + |
469 | +--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
470 | + |
471 | +SET debug="+d,crash_innodb_add_index_after"; |
472 | +--error 2013 |
473 | +ALTER TABLE t1 ADD INDEX (b); |
474 | + |
475 | +--enable_reconnect |
476 | + |
477 | +--source include/wait_until_connected_again.inc |
478 | + |
479 | +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES; |
480 | |
481 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt' |
482 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt 1970-01-01 00:00:00 +0000 |
483 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages-master.opt 2012-08-15 14:13:58 +0000 |
484 | @@ -0,0 +1,1 @@ |
485 | +--innodb_track_changed_pages=TRUE --innodb_log_file_size=1M --innodb-file-per-table |
486 | |
487 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test' |
488 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test 1970-01-01 00:00:00 +0000 |
489 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test 2012-08-15 14:13:58 +0000 |
490 | @@ -0,0 +1,103 @@ |
491 | +########################################### |
492 | +# Test for I_S.INNODB_CHANGED_PAGES table # |
493 | +########################################### |
494 | + |
495 | +--source include/have_innodb_plugin.inc |
496 | + |
497 | +SELECT @@innodb_track_changed_pages; |
498 | + |
499 | +SET @OLD_INNODB_CHANGED_PAGES_LIMIT = @@GLOBAL.INNODB_CHANGED_PAGES_LIMIT; |
500 | + |
501 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0; |
502 | + |
503 | +CREATE TABLE T1 (F1 CHAR(255)) ENGINE=INNODB; |
504 | +SET @t1_space_id = |
505 | + (SELECT SPACE |
506 | + FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES |
507 | + WHERE |
508 | + INFORMATION_SCHEMA.INNODB_SYS_TABLES.SCHEMA='test' AND |
509 | + INFORMATION_SCHEMA.INNODB_SYS_TABLES.NAME='T1'); |
510 | + |
511 | +--disable_query_log |
512 | +--disable_result_log |
513 | + |
514 | +######################################################################### |
515 | +# The maximum log size is 1MB. Each row occupies at least 256 bytes. # |
516 | +# Each iteration inserts 100 rows. They occupies at least 25KB. To be # |
517 | +# sure that tracking log thread wrote at least 1M/16K pages we need to # |
518 | +# exceed maximum log size twice. That means we should do at least # |
519 | +# 2M/25K = 80 iterations. # |
520 | +######################################################################### |
521 | +--let $i=80 |
522 | + |
523 | +while ($i) |
524 | +{ |
525 | +--dec $i |
526 | +INSERT INTO T1 (F1) VALUES |
527 | +("1"), ("2"), ("3"), ("4"), ("5"), ("6"), ("7"), ("8"), ("9"), ("10"), |
528 | +("11"), ("12"), ("13"), ("14"), ("15"), ("16"), ("17"), ("18"), ("19"), ("20"), |
529 | +("21"), ("22"), ("23"), ("24"), ("25"), ("26"), ("27"), ("28"), ("29"), ("30"), |
530 | +("31"), ("32"), ("33"), ("34"), ("35"), ("36"), ("37"), ("38"), ("39"), ("40"), |
531 | +("41"), ("42"), ("43"), ("44"), ("45"), ("46"), ("47"), ("48"), ("49"), ("50"), |
532 | +("51"), ("52"), ("53"), ("54"), ("55"), ("56"), ("57"), ("58"), ("59"), ("60"), |
533 | +("61"), ("62"), ("63"), ("64"), ("65"), ("66"), ("67"), ("68"), ("69"), ("70"), |
534 | +("71"), ("72"), ("73"), ("74"), ("75"), ("76"), ("77"), ("78"), ("79"), ("80"), |
535 | +("81"), ("82"), ("83"), ("84"), ("85"), ("86"), ("87"), ("88"), ("89"), ("90"), |
536 | +("91"), ("92"), ("93"), ("94"), ("95"), ("96"), ("97"), ("98"), ("99"), ("100"); |
537 | +} |
538 | + |
539 | +################################################################### |
540 | +# Gather data for condition pushdown testing not using conditions # |
541 | +################################################################### |
542 | +SET @cond_test_lsn= |
543 | + (SELECT MIN(end_lsn) |
544 | + FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES); |
545 | + |
546 | +SET @cond_test_pages_count= |
547 | + (SELECT count(*) |
548 | + FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
549 | + GROUP BY end_lsn |
550 | + ORDER BY end_lsn |
551 | + LIMIT 1); |
552 | + |
553 | +--enable_query_log |
554 | +--enable_result_log |
555 | + |
556 | +############################################################### |
557 | +# Check if the number of changed pages is greater than 1M/16K # |
558 | +############################################################### |
559 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 0; |
560 | +SELECT COUNT(DISTINCT PAGE_ID) >= (1024000/16384) |
561 | + FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
562 | + WHERE SPACE_ID = @t1_space_id; |
563 | +############################################################# |
564 | +# Check if the maximum page id is less than resonable limit # |
565 | +############################################################# |
566 | +SELECT MAX(PAGE_ID) < (3*1024000/16384) |
567 | + FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
568 | + WHERE SPACE_ID = @t1_space_id; |
569 | +######################################################## |
570 | +# The records where START_LSN >= END_LSN should absent # |
571 | +######################################################## |
572 | +SELECT COUNT(*) |
573 | + FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
574 | + WHERE START_LSN >= END_LSN; |
575 | + |
576 | +###################################################### |
577 | +# Check condition if pushdown doesn't break anything # |
578 | +###################################################### |
579 | +SELECT COUNT(*) = @cond_test_pages_count |
580 | + FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES |
581 | + WHERE |
582 | + END_LSN > (@cond_test_lsn - 1) AND |
583 | + END_LSN < (@cond_test_lsn + 1); |
584 | + |
585 | +################################################ |
586 | +# Check how limit for maximum rows count works # |
587 | +################################################ |
588 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = 1; |
589 | +SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES; |
590 | + |
591 | +SET GLOBAL INNODB_CHANGED_PAGES_LIMIT = @OLD_INNODB_CHANGED_PAGES_LIMIT; |
592 | + |
593 | +DROP TABLE T1; |
594 | |
595 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt' |
596 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt 1970-01-01 00:00:00 +0000 |
597 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty-master.opt 2012-08-15 14:13:58 +0000 |
598 | @@ -0,0 +1,1 @@ |
599 | +--innodb_track_changed_pages=false |
600 | |
601 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test' |
602 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test 1970-01-01 00:00:00 +0000 |
603 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test 2012-08-15 14:13:58 +0000 |
604 | @@ -0,0 +1,8 @@ |
605 | +############################################################################### |
606 | +# Test for empty I_S.INNODB_CHANGED_PAGES table. The table should be empty if# |
607 | +# innodb_track_changed_pages is false. # |
608 | +############################################################################### |
609 | + |
610 | +--source include/have_innodb_plugin.inc |
611 | + |
612 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES; |
613 | |
614 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt' |
615 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt 1970-01-01 00:00:00 +0000 |
616 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s-master.opt 2012-08-15 14:13:58 +0000 |
617 | @@ -0,0 +1,1 @@ |
618 | +--skip-innodb |
619 | |
620 | === added file 'Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test' |
621 | --- Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test 1970-01-01 00:00:00 +0000 |
622 | +++ Percona-Server/mysql-test/suite/innodb_plugin/t/percona_skip_innodb_i_s.test 2012-08-15 14:13:58 +0000 |
623 | @@ -0,0 +1,21 @@ |
624 | +# we just test that we don't crash. The SELECT below is to ensure we update the test if we add I_S tables for INNODB or XTRADB |
625 | +SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'INNODB%' ORDER BY TABLE_NAME; |
626 | +SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'XTRADB%' ORDER BY TABLE_NAME; |
627 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX; |
628 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_RSEG; |
629 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP; |
630 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; |
631 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; |
632 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; |
633 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET; |
634 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES; |
635 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES; |
636 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX; |
637 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM; |
638 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB; |
639 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET; |
640 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS; |
641 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_STATS; |
642 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEX_STATS; |
643 | +SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES; |
644 | +SELECT * FROM INFORMATION_SCHEMA.XTRADB_ADMIN_COMMAND; |
645 | |
646 | === modified file 'Percona-Server/sql/handler.cc' |
647 | --- Percona-Server/sql/handler.cc 2012-05-09 04:14:12 +0000 |
648 | +++ Percona-Server/sql/handler.cc 2012-08-15 14:13:58 +0000 |
649 | @@ -27,6 +27,7 @@ |
650 | #include "rpl_filter.h" |
651 | #include <myisampack.h> |
652 | #include <errno.h> |
653 | +#include "debug_sync.h" // DEBUG_SYNC |
654 | |
655 | #ifdef WITH_PARTITION_STORAGE_ENGINE |
656 | #include "ha_partition.h" |
657 | @@ -4795,6 +4796,7 @@ |
658 | int error; |
659 | Log_func *log_func= Write_rows_log_event::binlog_row_logging_function; |
660 | DBUG_ENTER("handler::ha_write_row"); |
661 | + DEBUG_SYNC(ha_thd(), "start_ha_write_row"); |
662 | |
663 | mark_trx_read_write(); |
664 | |
665 | |
666 | === modified file 'Percona-Server/sql/log_event.cc' |
667 | --- Percona-Server/sql/log_event.cc 2012-05-09 04:14:12 +0000 |
668 | +++ Percona-Server/sql/log_event.cc 2012-08-15 14:13:58 +0000 |
669 | @@ -3162,11 +3162,35 @@ |
670 | const char *query_arg, uint32 q_len_arg) |
671 | { |
672 | LEX_STRING new_db; |
673 | + char* query_buf; |
674 | + int query_buf_len; |
675 | int expected_error,actual_error= 0; |
676 | HA_CREATE_INFO db_options; |
677 | bool process_log_slow_statement= false; |
678 | |
679 | /* |
680 | + We must allocate some extra memory for query cache |
681 | + The query buffer layout is: |
682 | + buffer :== |
683 | + <statement> The input statement(s) |
684 | + '\0' Terminating null char (1 byte) |
685 | + <length> Length of following current database name (size_t) |
686 | + <db_name> Name of current database |
687 | + <flags> Flags struct |
688 | + */ |
689 | + query_buf_len = q_len_arg + 1 + sizeof(size_t) + thd->db_length |
690 | + + QUERY_CACHE_FLAGS_SIZE + 1; |
691 | + if ((query_buf= (char *) thd->alloc(query_buf_len))) |
692 | + { |
693 | + memcpy(query_buf, query_arg, q_len_arg); |
694 | + query_buf[q_len_arg]= 0; |
695 | + memcpy(query_buf+q_len_arg+1, (char *) &thd->db_length, sizeof(size_t)); |
696 | + } |
697 | + else |
698 | + goto end; |
699 | + |
700 | + |
701 | + /* |
702 | Colleagues: please never free(thd->catalog) in MySQL. This would |
703 | lead to bugs as here thd->catalog is a part of an alloced block, |
704 | not an entire alloced block (see |
705 | @@ -3246,7 +3270,7 @@ |
706 | if (is_trans_keyword() || rpl_filter->db_ok(thd->db)) |
707 | { |
708 | thd->set_time((time_t)when); |
709 | - thd->set_query((char*)query_arg, q_len_arg); |
710 | + thd->set_query((char*) query_buf, q_len_arg); |
711 | VOID(pthread_mutex_lock(&LOCK_thread_count)); |
712 | thd->query_id = next_query_id(); |
713 | VOID(pthread_mutex_unlock(&LOCK_thread_count)); |
714 | @@ -4821,12 +4845,26 @@ |
715 | enum enum_duplicates handle_dup; |
716 | bool ignore= 0; |
717 | char *load_data_query; |
718 | - |
719 | + int query_buf_len; |
720 | + |
721 | + /* |
722 | + We must allocate some extra memory for query cache |
723 | + The query buffer layout is: |
724 | + buffer :== |
725 | + <statement> The input statement(s) |
726 | + '\0' Terminating null char (1 byte) |
727 | + <length> Length of following current database name (size_t) |
728 | + <db_name> Name of current database |
729 | + <flags> Flags struct |
730 | + */ |
731 | + query_buf_len = get_query_buffer_length() + 1 + sizeof(size_t) |
732 | + + thd->db_length + QUERY_CACHE_FLAGS_SIZE + 1; |
733 | + |
734 | /* |
735 | Forge LOAD DATA INFILE query which will be used in SHOW PROCESS LIST |
736 | and written to slave's binlog if binlogging is on. |
737 | */ |
738 | - if (!(load_data_query= (char *)thd->alloc(get_query_buffer_length() + 1))) |
739 | + if (!(load_data_query= (char *) thd->alloc(query_buf_len))) |
740 | { |
741 | /* |
742 | This will set thd->fatal_error in case of OOM. So we surely will notice |
743 | @@ -4837,6 +4875,7 @@ |
744 | |
745 | print_query(FALSE, NULL, load_data_query, &end, NULL, NULL); |
746 | *end= 0; |
747 | + memcpy(end+1, (char *) &thd->db_length, sizeof(size_t)); |
748 | thd->set_query(load_data_query, (uint) (end - load_data_query)); |
749 | |
750 | if (sql_ex.opt_flags & REPLACE_FLAG) |
751 | |
752 | === modified file 'Percona-Server/sql/signal_handler.cc' |
753 | --- Percona-Server/sql/signal_handler.cc 2012-03-06 12:30:30 +0000 |
754 | +++ Percona-Server/sql/signal_handler.cc 2012-08-15 14:13:58 +0000 |
755 | @@ -99,7 +99,9 @@ |
756 | my_safe_printf_stderr("%s", |
757 | "We will try our best to scrape up some info that will hopefully help\n" |
758 | "diagnose the problem, but since we have already crashed, \n" |
759 | - "something is definitely wrong and this may fail.\n\n"); |
760 | + "something is definitely wrong and this may fail.\n" |
761 | + "Please help us make Percona Server better by reporting any\n" |
762 | + "bugs at http://bugs.percona.com/\n\n"); |
763 | |
764 | my_safe_printf_stderr("key_buffer_size=%lu\n", |
765 | (ulong) dflt_key_cache->key_cache_mem_size); |
766 | @@ -192,9 +194,9 @@ |
767 | my_safe_printf_stderr("Status: %s\n\n", kreason); |
768 | } |
769 | my_safe_printf_stderr("%s", |
770 | - "The manual page at " |
771 | - "http://dev.mysql.com/doc/mysql/en/crashing.html contains\n" |
772 | - "information that should help you find out what is causing the crash.\n"); |
773 | + "You may download the Percona Server operations manual by visiting\n" |
774 | + "http://www.percona.com/software/percona-server/. You may find information\n" |
775 | + "in the manual which will help you identify the cause of the crash.\n"); |
776 | |
777 | #endif /* HAVE_STACKTRACE */ |
778 | |
779 | |
780 | === modified file 'Percona-Server/sql/sql_show.cc' |
781 | --- Percona-Server/sql/sql_show.cc 2012-05-09 04:14:12 +0000 |
782 | +++ Percona-Server/sql/sql_show.cc 2012-08-15 14:13:58 +0000 |
783 | @@ -3694,8 +3694,9 @@ |
784 | DBUG_RETURN(schema_table_store_record(thd, table)); |
785 | |
786 | //engine |
787 | - handler *handle= tmp_table->file; |
788 | - char *engineType = (char *)(handle ? handle->table_type() : "UNKNOWN"); |
789 | + handler *file= tmp_table->file; |
790 | + // Assume that invoking handler::table_type() on a shared handler is safe |
791 | + const char *engineType = (file) ? file->table_type() : "UNKNOWN"; |
792 | table->field[3]->store(engineType, strlen(engineType), cs); |
793 | |
794 | //name |
795 | @@ -3706,12 +3707,15 @@ |
796 | } |
797 | |
798 | // file stats |
799 | - handler *file= tmp_table->file; |
800 | - |
801 | if (file) { |
802 | |
803 | MYSQL_TIME time; |
804 | |
805 | + /* We have only one handler object for a temp table globally and it might |
806 | + be in use by other thread. Do not trash it by invoking handler methods on |
807 | + it but rather clone it. */ |
808 | + file = file->clone(tmp_table->s->normalized_path.str, thd->mem_root); |
809 | + |
810 | /** |
811 | TODO: InnoDB stat(file) checks file on short names within data dictionary |
812 | rather than using full path, because of that, temp files created in |
813 | @@ -3741,6 +3745,8 @@ |
814 | table->field[10]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); |
815 | table->field[10]->set_notnull(); |
816 | } |
817 | + |
818 | + file->close(); |
819 | } |
820 | |
821 | DBUG_RETURN(schema_table_store_record(thd, table)); |
822 | |
823 | === modified file 'Percona-Server/storage/innodb_plugin/Makefile.am' |
824 | --- Percona-Server/storage/innodb_plugin/Makefile.am 2012-06-14 09:16:03 +0000 |
825 | +++ Percona-Server/storage/innodb_plugin/Makefile.am 2012-08-15 14:13:58 +0000 |
826 | @@ -227,7 +227,6 @@ |
827 | include/ut0vec.h \ |
828 | include/ut0vec.ic \ |
829 | include/ut0wqueue.h \ |
830 | - handler/innodb_patch_info.h \ |
831 | mem/mem0dbg.c |
832 | |
833 | EXTRA_LIBRARIES= libinnobase.a |
834 | |
835 | === modified file 'Percona-Server/storage/innodb_plugin/buf/buf0lru.c' |
836 | --- Percona-Server/storage/innodb_plugin/buf/buf0lru.c 2011-11-24 16:33:30 +0000 |
837 | +++ Percona-Server/storage/innodb_plugin/buf/buf0lru.c 2012-08-15 14:13:58 +0000 |
838 | @@ -48,6 +48,7 @@ |
839 | #include "page0zip.h" |
840 | #include "log0recv.h" |
841 | #include "srv0srv.h" |
842 | +#include "srv0start.h" |
843 | |
844 | /** The number of blocks from the LRU_old pointer onward, including |
845 | the block pointed to, must be buf_LRU_old_ratio/BUF_LRU_OLD_RATIO_DIV |
846 | @@ -2098,6 +2099,7 @@ |
847 | /********************************************************************//** |
848 | Dump the LRU page list to the specific file. */ |
849 | #define LRU_DUMP_FILE "ib_lru_dump" |
850 | +#define LRU_DUMP_TEMP_FILE "ib_lru_dump.tmp" |
851 | |
852 | UNIV_INTERN |
853 | ibool |
854 | @@ -2132,7 +2134,7 @@ |
855 | goto end; |
856 | } |
857 | |
858 | - dump_file = os_file_create(LRU_DUMP_FILE, OS_FILE_OVERWRITE, |
859 | + dump_file = os_file_create(LRU_DUMP_TEMP_FILE, OS_FILE_OVERWRITE, |
860 | OS_FILE_NORMAL, OS_DATA_FILE, &success); |
861 | if (!success) { |
862 | os_file_get_last_error(TRUE); |
863 | @@ -2156,6 +2158,13 @@ |
864 | offset++; |
865 | |
866 | if (offset == UNIV_PAGE_SIZE/4) { |
867 | + if (srv_shutdown_state != SRV_SHUTDOWN_NONE) { |
868 | + success = 0; |
869 | + fprintf(stderr, |
870 | + " InnoDB: stopped dumping lru pages" |
871 | + " because of server shutdown.\n"); |
872 | + goto end; |
873 | + } |
874 | success = os_file_write(LRU_DUMP_FILE, dump_file, buffer, |
875 | (buffers << UNIV_PAGE_SIZE_SHIFT) & 0xFFFFFFFFUL, |
876 | (buffers >> (32 - UNIV_PAGE_SIZE_SHIFT)), |
877 | @@ -2194,8 +2203,16 @@ |
878 | |
879 | ret = TRUE; |
880 | end: |
881 | - if (dump_file != -1) |
882 | + if (dump_file != -1) { |
883 | + if (success) { |
884 | + success = os_file_flush(dump_file, TRUE); |
885 | + } |
886 | os_file_close(dump_file); |
887 | + } |
888 | + if (success) { |
889 | + success = os_file_rename(LRU_DUMP_TEMP_FILE, |
890 | + LRU_DUMP_FILE); |
891 | + } |
892 | if (buffer_base) |
893 | ut_free(buffer_base); |
894 | |
895 | @@ -2241,6 +2258,7 @@ |
896 | dump_record_t* records = NULL; |
897 | ulint size; |
898 | ulint size_high; |
899 | + ulint recsize = sizeof(dump_record_t); |
900 | ulint length; |
901 | |
902 | dump_file = os_file_create_simple_no_error_handling( |
903 | @@ -2248,7 +2266,15 @@ |
904 | if (!success || !os_file_get_size(dump_file, &size, &size_high)) { |
905 | os_file_get_last_error(TRUE); |
906 | fprintf(stderr, |
907 | - " InnoDB: cannot open %s\n", LRU_DUMP_FILE); |
908 | + " InnoDB: cannot open %s," |
909 | + " buffer pool preload not done\n", |
910 | + LRU_DUMP_FILE); |
911 | + goto end; |
912 | + } |
913 | + |
914 | + if (size == 0 || size_high > 0 || size % recsize) { |
915 | + fprintf(stderr, " InnoDB: broken LRU dump file," |
916 | + " buffer pool preload not done\n"); |
917 | goto end; |
918 | } |
919 | |
920 | @@ -2332,6 +2358,14 @@ |
921 | if (offset % 16 == 15) { |
922 | os_aio_simulated_wake_handler_threads(); |
923 | buf_flush_free_margin(FALSE); |
924 | + /* skip loading of the rest of the file if we are |
925 | + terminating anyway*/ |
926 | + if (srv_shutdown_state != SRV_SHUTDOWN_NONE) { |
927 | + fprintf(stderr, |
928 | + " InnoDB: stopped loading LRU pages" |
929 | + " because of server shutdown.\n"); |
930 | + break; |
931 | + } |
932 | } |
933 | |
934 | zip_size = fil_space_get_zip_size(space_id); |
935 | |
936 | === modified file 'Percona-Server/storage/innodb_plugin/dict/dict0dict.c' |
937 | --- Percona-Server/storage/innodb_plugin/dict/dict0dict.c 2012-05-09 04:14:12 +0000 |
938 | +++ Percona-Server/storage/innodb_plugin/dict/dict0dict.c 2012-08-15 14:13:58 +0000 |
939 | @@ -4622,12 +4622,6 @@ |
940 | } |
941 | btr_pcur_close(&pcur); |
942 | mtr_commit(&mtr); |
943 | - |
944 | - if (rests) { |
945 | - fprintf(stderr, "InnoDB: Warning: failed to store %lu stats entries" |
946 | - " of %s/%s to SYS_STATS system table.\n", |
947 | - rests, index->table_name, index->name); |
948 | - } |
949 | } |
950 | /*===========================================*/ |
951 | |
952 | |
953 | === modified file 'Percona-Server/storage/innodb_plugin/fil/fil0fil.c' |
954 | --- Percona-Server/storage/innodb_plugin/fil/fil0fil.c 2012-05-09 04:14:12 +0000 |
955 | +++ Percona-Server/storage/innodb_plugin/fil/fil0fil.c 2012-08-15 14:13:58 +0000 |
956 | @@ -3375,6 +3375,7 @@ |
957 | for (offset = 0; offset < free_limit_bytes; |
958 | offset += zip_size ? zip_size : UNIV_PAGE_SIZE) { |
959 | ibool page_is_corrupt; |
960 | + ibool is_descr_page = FALSE; |
961 | |
962 | success = os_file_read(file, page, |
963 | (ulint)(offset & 0xFFFFFFFFUL), |
964 | @@ -3413,6 +3414,7 @@ |
965 | |
966 | /* store as descr page */ |
967 | memcpy(descr_page, page, (zip_size ? zip_size : UNIV_PAGE_SIZE)); |
968 | + is_descr_page = TRUE; |
969 | |
970 | } else if (descr_is_corrupt) { |
971 | /* unknown state of the page */ |
972 | @@ -3489,7 +3491,8 @@ |
973 | } |
974 | } |
975 | |
976 | - if (fil_page_get_type(page) == FIL_PAGE_INDEX) { |
977 | + if (fil_page_get_type(page) == |
978 | + FIL_PAGE_INDEX && !is_descr_page) { |
979 | dulint tmp = mach_read_from_8(page + (PAGE_HEADER + PAGE_INDEX_ID)); |
980 | |
981 | for (i = 0; i < n_index; i++) { |
982 | |
983 | === modified file 'Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc' |
984 | --- Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc 2012-06-14 09:16:03 +0000 |
985 | +++ Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc 2012-08-15 14:13:58 +0000 |
986 | @@ -11934,6 +11934,13 @@ |
987 | "Track the redo log for changed pages and output a changed page bitmap", |
988 | NULL, NULL, FALSE); |
989 | |
990 | +static MYSQL_SYSVAR_ULONGLONG(changed_pages_limit, srv_changed_pages_limit, |
991 | + PLUGIN_VAR_RQCMDARG, |
992 | + "The maximum number of rows for " |
993 | + "INFORMATION_SCHEMA.INNODB_CHANGED_PAGES table, " |
994 | + "0 - unlimited", |
995 | + NULL, NULL, 1000000, 0, ~0ULL, 0); |
996 | + |
997 | #if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG |
998 | static MYSQL_SYSVAR_UINT(change_buffering_debug, ibuf_debug, |
999 | PLUGIN_VAR_RQCMDARG, |
1000 | @@ -12181,6 +12188,7 @@ |
1001 | MYSQL_SYSVAR(use_sys_malloc), |
1002 | MYSQL_SYSVAR(change_buffering), |
1003 | MYSQL_SYSVAR(track_changed_pages), |
1004 | + MYSQL_SYSVAR(changed_pages_limit), |
1005 | #if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG |
1006 | MYSQL_SYSVAR(change_buffering_debug), |
1007 | #endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */ |
1008 | @@ -12231,7 +12239,7 @@ |
1009 | i_s_innodb_sys_tables, |
1010 | i_s_innodb_sys_indexes, |
1011 | i_s_innodb_sys_stats, |
1012 | -i_s_innodb_patches |
1013 | +i_s_innodb_changed_pages |
1014 | mysql_declare_plugin_end; |
1015 | |
1016 | /** @brief Initialize the default value of innodb_commit_concurrency. |
1017 | |
1018 | === modified file 'Percona-Server/storage/innodb_plugin/handler/handler0alter.cc' |
1019 | --- Percona-Server/storage/innodb_plugin/handler/handler0alter.cc 2012-05-09 04:14:12 +0000 |
1020 | +++ Percona-Server/storage/innodb_plugin/handler/handler0alter.cc 2012-08-15 14:13:58 +0000 |
1021 | @@ -823,6 +823,8 @@ |
1022 | innodb_table, indexed_table, |
1023 | index, num_of_idx, table); |
1024 | |
1025 | + DBUG_EXECUTE_IF("crash_innodb_add_index_after", DBUG_SUICIDE();); |
1026 | + |
1027 | error_handling: |
1028 | /* After an error, remove all those index definitions from the |
1029 | dictionary which were defined. */ |
1030 | |
1031 | === modified file 'Percona-Server/storage/innodb_plugin/handler/i_s.cc' |
1032 | --- Percona-Server/storage/innodb_plugin/handler/i_s.cc 2011-11-24 16:33:30 +0000 |
1033 | +++ Percona-Server/storage/innodb_plugin/handler/i_s.cc 2012-08-15 14:13:58 +0000 |
1034 | @@ -22,8 +22,15 @@ |
1035 | |
1036 | Created July 18, 2007 Vasil Dimov |
1037 | *******************************************************/ |
1038 | +#ifndef MYSQL_SERVER |
1039 | +#define MYSQL_SERVER /* For Item_* classes */ |
1040 | +#include <mysql_priv.h> |
1041 | +/* Prevent influence of this definition to other headers */ |
1042 | +#undef MYSQL_SERVER |
1043 | +#else |
1044 | +#include <mysql_priv.h> |
1045 | +#endif //MYSQL_SERVER |
1046 | |
1047 | -#include <mysql_priv.h> |
1048 | #include <mysqld_error.h> |
1049 | |
1050 | #include <m_ctype.h> |
1051 | @@ -32,7 +39,6 @@ |
1052 | #include <mysys_err.h> |
1053 | #include <my_sys.h> |
1054 | #include "i_s.h" |
1055 | -#include "innodb_patch_info.h" |
1056 | #include <mysql/plugin.h> |
1057 | |
1058 | extern "C" { |
1059 | @@ -48,6 +54,7 @@ |
1060 | #include "dict0dict.h" /* for dict_sys */ |
1061 | #include "btr0pcur.h" |
1062 | #include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */ |
1063 | +#include "log0online.h" |
1064 | } |
1065 | |
1066 | static const char plugin_author[] = "Innobase Oy"; |
1067 | @@ -224,168 +231,11 @@ |
1068 | return(ret); |
1069 | } |
1070 | |
1071 | -/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_patches */ |
1072 | -static ST_FIELD_INFO innodb_patches_fields_info[] = |
1073 | -{ |
1074 | -#define IDX_PATCH_NAME 0 |
1075 | - {STRUCT_FLD(field_name, "name"), |
1076 | - STRUCT_FLD(field_length, 255), |
1077 | - STRUCT_FLD(field_type, MYSQL_TYPE_STRING), |
1078 | - STRUCT_FLD(value, 0), |
1079 | - STRUCT_FLD(field_flags, 0), |
1080 | - STRUCT_FLD(old_name, ""), |
1081 | - STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1082 | - |
1083 | -#define IDX_PATCH_DESCR 1 |
1084 | - {STRUCT_FLD(field_name, "description"), |
1085 | - STRUCT_FLD(field_length, 255), |
1086 | - STRUCT_FLD(field_type, MYSQL_TYPE_STRING), |
1087 | - STRUCT_FLD(value, 0), |
1088 | - STRUCT_FLD(field_flags, 0), |
1089 | - STRUCT_FLD(old_name, ""), |
1090 | - STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1091 | - |
1092 | -#define IDX_PATCH_COMMENT 2 |
1093 | - {STRUCT_FLD(field_name, "comment"), |
1094 | - STRUCT_FLD(field_length, 100), |
1095 | - STRUCT_FLD(field_type, MYSQL_TYPE_STRING), |
1096 | - STRUCT_FLD(value, 0), |
1097 | - STRUCT_FLD(field_flags, 0), |
1098 | - STRUCT_FLD(old_name, ""), |
1099 | - STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1100 | - |
1101 | -#define IDX_PATCH_LINK 3 |
1102 | - {STRUCT_FLD(field_name, "link"), |
1103 | - STRUCT_FLD(field_length, 255), |
1104 | - STRUCT_FLD(field_type, MYSQL_TYPE_STRING), |
1105 | - STRUCT_FLD(value, 0), |
1106 | - STRUCT_FLD(field_flags, 0), |
1107 | - STRUCT_FLD(old_name, ""), |
1108 | - STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1109 | - |
1110 | - END_OF_ST_FIELD_INFO |
1111 | -}; |
1112 | - |
1113 | static struct st_mysql_information_schema i_s_info = |
1114 | { |
1115 | MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION |
1116 | }; |
1117 | |
1118 | -/*********************************************************************** |
1119 | -Fill the dynamic table information_schema.innodb_patches */ |
1120 | -static |
1121 | -int |
1122 | -innodb_patches_fill( |
1123 | -/*=============*/ |
1124 | - /* out: 0 on success, 1 on failure */ |
1125 | - THD* thd, /* in: thread */ |
1126 | - TABLE_LIST* tables, /* in/out: tables to fill */ |
1127 | - COND* cond) /* in: condition (ignored) */ |
1128 | -{ |
1129 | - TABLE* table = (TABLE *) tables->table; |
1130 | - int status = 0; |
1131 | - int i; |
1132 | - Field** fields; |
1133 | - |
1134 | - |
1135 | - DBUG_ENTER("innodb_patches_fill"); |
1136 | - fields = table->field; |
1137 | - |
1138 | - /* deny access to non-superusers */ |
1139 | - if (check_global_access(thd, PROCESS_ACL)) { |
1140 | - |
1141 | - DBUG_RETURN(0); |
1142 | - } |
1143 | - |
1144 | - RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1145 | - |
1146 | - for (i = 0; innodb_enhancements[i].file; i++) { |
1147 | - |
1148 | - field_store_string(fields[0],innodb_enhancements[i].file); |
1149 | - field_store_string(fields[1],innodb_enhancements[i].name); |
1150 | - field_store_string(fields[2],innodb_enhancements[i].comment); |
1151 | - field_store_string(fields[3],innodb_enhancements[i].link); |
1152 | - |
1153 | - if (schema_table_store_record(thd, table)) { |
1154 | - status = 1; |
1155 | - break; |
1156 | - } |
1157 | - |
1158 | - } |
1159 | - |
1160 | - |
1161 | - DBUG_RETURN(status); |
1162 | -} |
1163 | - |
1164 | -/*********************************************************************** |
1165 | -Bind the dynamic table information_schema.innodb_patches. */ |
1166 | -static |
1167 | -int |
1168 | -innodb_patches_init( |
1169 | -/*=========*/ |
1170 | - /* out: 0 on success */ |
1171 | - void* p) /* in/out: table schema object */ |
1172 | -{ |
1173 | - DBUG_ENTER("innodb_patches_init"); |
1174 | - ST_SCHEMA_TABLE* schema = (ST_SCHEMA_TABLE*) p; |
1175 | - |
1176 | - schema->fields_info = innodb_patches_fields_info; |
1177 | - schema->fill_table = innodb_patches_fill; |
1178 | - |
1179 | - DBUG_RETURN(0); |
1180 | -} |
1181 | - |
1182 | - |
1183 | -UNIV_INTERN struct st_mysql_plugin i_s_innodb_patches = |
1184 | -{ |
1185 | - /* the plugin type (a MYSQL_XXX_PLUGIN value) */ |
1186 | - /* int */ |
1187 | - STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN), |
1188 | - |
1189 | - /* pointer to type-specific plugin descriptor */ |
1190 | - /* void* */ |
1191 | - STRUCT_FLD(info, &i_s_info), |
1192 | - |
1193 | - /* plugin name */ |
1194 | - /* const char* */ |
1195 | - STRUCT_FLD(name, "XTRADB_ENHANCEMENTS"), |
1196 | - |
1197 | - /* plugin author (for SHOW PLUGINS) */ |
1198 | - /* const char* */ |
1199 | - STRUCT_FLD(author, "Percona"), |
1200 | - |
1201 | - /* general descriptive text (for SHOW PLUGINS) */ |
1202 | - /* const char* */ |
1203 | - STRUCT_FLD(descr, "Enhancements applied to InnoDB plugin"), |
1204 | - |
1205 | - /* the plugin license (PLUGIN_LICENSE_XXX) */ |
1206 | - /* int */ |
1207 | - STRUCT_FLD(license, PLUGIN_LICENSE_GPL), |
1208 | - |
1209 | - /* the function to invoke when plugin is loaded */ |
1210 | - /* int (*)(void*); */ |
1211 | - STRUCT_FLD(init, innodb_patches_init), |
1212 | - |
1213 | - /* the function to invoke when plugin is unloaded */ |
1214 | - /* int (*)(void*); */ |
1215 | - STRUCT_FLD(deinit, i_s_common_deinit), |
1216 | - |
1217 | - /* plugin version (for SHOW PLUGINS) */ |
1218 | - /* unsigned int */ |
1219 | - STRUCT_FLD(version, INNODB_VERSION_SHORT), |
1220 | - |
1221 | - /* struct st_mysql_show_var* */ |
1222 | - STRUCT_FLD(status_vars, NULL), |
1223 | - |
1224 | - /* struct st_mysql_sys_var** */ |
1225 | - STRUCT_FLD(system_vars, NULL), |
1226 | - |
1227 | - /* reserved for dependency checking */ |
1228 | - /* void* */ |
1229 | - STRUCT_FLD(__reserved1, NULL) |
1230 | -}; |
1231 | - |
1232 | - |
1233 | static ST_FIELD_INFO i_s_innodb_buffer_pool_pages_fields_info[] = |
1234 | { |
1235 | {STRUCT_FLD(field_name, "page_type"), |
1236 | @@ -1956,6 +1806,8 @@ |
1237 | |
1238 | DBUG_ENTER("i_s_cmp_fill_low"); |
1239 | |
1240 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1241 | + |
1242 | /* deny access to non-superusers */ |
1243 | if (check_global_access(thd, PROCESS_ACL)) { |
1244 | |
1245 | @@ -2224,6 +2076,8 @@ |
1246 | |
1247 | DBUG_ENTER("i_s_cmpmem_fill_low"); |
1248 | |
1249 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1250 | + |
1251 | /* deny access to non-superusers */ |
1252 | if (check_global_access(thd, PROCESS_ACL)) { |
1253 | |
1254 | @@ -2512,6 +2366,8 @@ |
1255 | |
1256 | DBUG_ENTER("i_s_innodb_rseg_fill"); |
1257 | |
1258 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1259 | + |
1260 | /* deny access to non-superusers */ |
1261 | if (check_global_access(thd, PROCESS_ACL)) { |
1262 | |
1263 | @@ -2645,6 +2501,8 @@ |
1264 | |
1265 | DBUG_ENTER("i_s_innodb_admin_command_fill"); |
1266 | |
1267 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1268 | + |
1269 | /* deny access to non-superusers */ |
1270 | if (check_global_access(thd, PROCESS_ACL)) { |
1271 | DBUG_RETURN(0); |
1272 | @@ -2902,6 +2760,8 @@ |
1273 | |
1274 | DBUG_ENTER("i_s_innodb_table_stats_fill"); |
1275 | |
1276 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1277 | + |
1278 | /* deny access to non-superusers */ |
1279 | if (check_global_access(thd, PROCESS_ACL)) { |
1280 | DBUG_RETURN(0); |
1281 | @@ -2965,6 +2825,8 @@ |
1282 | |
1283 | DBUG_ENTER("i_s_innodb_index_stats_fill"); |
1284 | |
1285 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1286 | + |
1287 | /* deny access to non-superusers */ |
1288 | if (check_global_access(thd, PROCESS_ACL)) { |
1289 | DBUG_RETURN(0); |
1290 | @@ -3612,6 +3474,8 @@ |
1291 | |
1292 | DBUG_ENTER("i_s_innodb_schema_table_fill"); |
1293 | |
1294 | + RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name); |
1295 | + |
1296 | /* deny access to non-superusers */ |
1297 | if (check_global_access(thd, PROCESS_ACL)) { |
1298 | DBUG_RETURN(0); |
1299 | @@ -3783,3 +3647,288 @@ |
1300 | STRUCT_FLD(system_vars, NULL), |
1301 | STRUCT_FLD(__reserved1, NULL) |
1302 | }; |
1303 | + |
1304 | +static ST_FIELD_INFO i_s_innodb_changed_pages_info[] = |
1305 | +{ |
1306 | + {STRUCT_FLD(field_name, "space_id"), |
1307 | + STRUCT_FLD(field_length, MY_INT32_NUM_DECIMAL_DIGITS), |
1308 | + STRUCT_FLD(field_type, MYSQL_TYPE_LONG), |
1309 | + STRUCT_FLD(value, 0), |
1310 | + STRUCT_FLD(field_flags, MY_I_S_UNSIGNED), |
1311 | + STRUCT_FLD(old_name, ""), |
1312 | + STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1313 | + |
1314 | + {STRUCT_FLD(field_name, "page_id"), |
1315 | + STRUCT_FLD(field_length, MY_INT32_NUM_DECIMAL_DIGITS), |
1316 | + STRUCT_FLD(field_type, MYSQL_TYPE_LONG), |
1317 | + STRUCT_FLD(value, 0), |
1318 | + STRUCT_FLD(field_flags, MY_I_S_UNSIGNED), |
1319 | + STRUCT_FLD(old_name, ""), |
1320 | + STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1321 | + |
1322 | + {STRUCT_FLD(field_name, "start_lsn"), |
1323 | + STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS), |
1324 | + STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG), |
1325 | + STRUCT_FLD(value, 0), |
1326 | + STRUCT_FLD(field_flags, MY_I_S_UNSIGNED), |
1327 | + STRUCT_FLD(old_name, ""), |
1328 | + STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1329 | + |
1330 | + {STRUCT_FLD(field_name, "end_lsn"), |
1331 | + STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS), |
1332 | + STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG), |
1333 | + STRUCT_FLD(value, 0), |
1334 | + STRUCT_FLD(field_flags, MY_I_S_UNSIGNED), |
1335 | + STRUCT_FLD(old_name, ""), |
1336 | + STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, |
1337 | + |
1338 | + END_OF_ST_FIELD_INFO |
1339 | +}; |
1340 | + |
1341 | +/*********************************************************************** |
1342 | + This function parses condition and gets upper bounds for start and end LSN's |
1343 | + if condition corresponds to certain pattern. |
1344 | + |
1345 | + We can't know right position to avoid scanning bitmap files from the beginning |
1346 | + to the lower bound. But we can stop scanning bitmap files if we reach upper bound. |
1347 | + |
1348 | + It's expected the most used queries will be like the following: |
1349 | + |
1350 | + SELECT * FROM INNODB_CHANGED_PAGES WHERE START_LSN > num1 AND start_lsn < num2; |
1351 | + |
1352 | + That's why the pattern is: |
1353 | + |
1354 | + pattern: comp | and_comp; |
1355 | + comp: lsn < int_num | lsn <= int_num | int_num > lsn | int_num >= lsn; |
1356 | + lsn: start_lsn | end_lsn; |
1357 | + and_comp: some_expression AND some_expression | some_expression AND and_comp; |
1358 | + some_expression: comp | any_other_expression; |
1359 | + |
1360 | + Suppose the condition is start_lsn < 100, this means we have to read all |
1361 | + blocks with start_lsn < 100. Which is equivalent to reading all the blocks |
1362 | + with end_lsn <= 99, or just end_lsn < 100. That's why it's enough to find |
1363 | + maximum lsn value, doesn't matter if this is start or end lsn and compare |
1364 | + it with "start_lsn" field. |
1365 | + |
1366 | + Example: |
1367 | + |
1368 | + SELECT * FROM INNODB_CHANGED_PAGES |
1369 | + WHERE |
1370 | + start_lsn > 10 AND |
1371 | + end_lsn <= 1111 AND |
1372 | + 555 > end_lsn AND |
1373 | + page_id = 100; |
1374 | + |
1375 | + max_lsn will be set to 555. |
1376 | +*/ |
1377 | +static |
1378 | +void |
1379 | +limit_lsn_range_from_condition( |
1380 | +/*===========================*/ |
1381 | + TABLE* table, /*!<in: table */ |
1382 | + COND* cond, /*!<in: condition */ |
1383 | + ib_uint64_t* max_lsn) /*!<in/out: maximum LSN |
1384 | + (must be initialized with maximum |
1385 | + available value) */ |
1386 | +{ |
1387 | + if (cond->type() != Item::COND_ITEM && |
1388 | + cond->type() != Item::FUNC_ITEM) |
1389 | + return; |
1390 | + |
1391 | + switch (((Item_func*) cond)->functype()) |
1392 | + { |
1393 | + case Item_func::COND_AND_FUNC: |
1394 | + { |
1395 | + List_iterator<Item> li(*((Item_cond*) cond)-> |
1396 | + argument_list()); |
1397 | + Item *item; |
1398 | + while ((item= li++)) |
1399 | + limit_lsn_range_from_condition(table, |
1400 | + item, |
1401 | + max_lsn); |
1402 | + break; |
1403 | + } |
1404 | + case Item_func::LT_FUNC: |
1405 | + case Item_func::LE_FUNC: |
1406 | + case Item_func::GT_FUNC: |
1407 | + case Item_func::GE_FUNC: |
1408 | + { |
1409 | + Item *left; |
1410 | + Item *right; |
1411 | + Item_field *item_field; |
1412 | + ib_uint64_t tmp_result; |
1413 | + |
1414 | + /* |
1415 | + a <= b equals to b >= a that's why we just exchange |
1416 | + "left" and "right" in the case of ">" or ">=" |
1417 | + function |
1418 | + */ |
1419 | + if (((Item_func*) cond)->functype() == |
1420 | + Item_func::LT_FUNC || |
1421 | + ((Item_func*) cond)->functype() == |
1422 | + Item_func::LE_FUNC) |
1423 | + { |
1424 | + left = ((Item_func*) cond)->arguments()[0]; |
1425 | + right = ((Item_func*) cond)->arguments()[1]; |
1426 | + } else { |
1427 | + left = ((Item_func*) cond)->arguments()[1]; |
1428 | + right = ((Item_func*) cond)->arguments()[0]; |
1429 | + } |
1430 | + |
1431 | + if (!left || !right) |
1432 | + return; |
1433 | + if (left->type() != Item::FIELD_ITEM) |
1434 | + return; |
1435 | + if (right->type() != Item::INT_ITEM) |
1436 | + return; |
1437 | + |
1438 | + item_field = (Item_field*)left; |
1439 | + |
1440 | + if (/* START_LSN */ |
1441 | + table->field[2] != item_field->field && |
1442 | + /* END_LSN */ |
1443 | + table->field[3] != item_field->field) |
1444 | + { |
1445 | + return; |
1446 | + } |
1447 | + |
1448 | + /* Check if the current field belongs to our table */ |
1449 | + if (table != item_field->field->table) |
1450 | + return; |
1451 | + |
1452 | + tmp_result = right->val_int(); |
1453 | + if (tmp_result < *max_lsn) |
1454 | + *max_lsn = tmp_result; |
1455 | + |
1456 | + break; |
1457 | + } |
1458 | + default:; |
1459 | + } |
1460 | + |
1461 | +} |
1462 | + |
1463 | +/*********************************************************************** |
1464 | +Fill the dynamic table information_schema.innodb_changed_pages. |
1465 | +@return 0 on success, 1 on failure */ |
1466 | +static |
1467 | +int |
1468 | +i_s_innodb_changed_pages_fill( |
1469 | +/*==========================*/ |
1470 | + THD* thd, /*!<in: thread */ |
1471 | + TABLE_LIST* tables, /*!<in/out: tables to fill */ |
1472 | + COND* cond) /*!<in: condition */ |
1473 | +{ |
1474 | + TABLE* table = (TABLE *) tables->table; |
1475 | + log_bitmap_iterator_t i; |
1476 | + ib_uint64_t output_rows_num = 0UL; |
1477 | + ib_uint64_t max_lsn = ~0ULL; |
1478 | + |
1479 | + if (!srv_track_changed_pages) |
1480 | + return 0; |
1481 | + |
1482 | + if (!log_online_bitmap_iterator_init(&i)) |
1483 | + return 1; |
1484 | + |
1485 | + if (cond) |
1486 | + limit_lsn_range_from_condition(table, cond, &max_lsn); |
1487 | + |
1488 | + while(log_online_bitmap_iterator_next(&i) && |
1489 | + (!srv_changed_pages_limit || |
1490 | + output_rows_num < srv_changed_pages_limit) && |
1491 | + /* |
1492 | + There is no need to compare both start LSN and end LSN fields |
1493 | + with maximum value. It's enough to compare only start LSN. |
1494 | + Example: |
1495 | + |
1496 | + max_lsn = 100 |
1497 | + \\\\\\\\\\\\\\\\\\\\\\\\\|\\\\\\\\ - Query 1 |
1498 | + I------I I-------I I-------------I I----I |
1499 | + ////////////////// | - Query 2 |
1500 | + 1 2 3 4 |
1501 | + |
1502 | + Query 1: |
1503 | + SELECT * FROM INNODB_CHANGED_PAGES WHERE start_lsn < 100 |
1504 | + will select 1,2,3 bitmaps |
1505 | + Query 2: |
1506 | + SELECT * FROM INNODB_CHANGED_PAGES WHERE end_lsn < 100 |
1507 | + will select 1,2 bitmaps |
1508 | + |
1509 | + The condition start_lsn <= 100 will be false after reading |
1510 | + 1,2,3 bitmaps which suits for both cases. |
1511 | + */ |
1512 | + LOG_BITMAP_ITERATOR_START_LSN(i) <= max_lsn) |
1513 | + { |
1514 | + if (!LOG_BITMAP_ITERATOR_PAGE_CHANGED(i)) |
1515 | + continue; |
1516 | + |
1517 | + /* SPACE_ID */ |
1518 | + table->field[0]->store( |
1519 | + LOG_BITMAP_ITERATOR_SPACE_ID(i)); |
1520 | + /* PAGE_ID */ |
1521 | + table->field[1]->store( |
1522 | + LOG_BITMAP_ITERATOR_PAGE_NUM(i)); |
1523 | + /* START_LSN */ |
1524 | + table->field[2]->store( |
1525 | + LOG_BITMAP_ITERATOR_START_LSN(i)); |
1526 | + /* END_LSN */ |
1527 | + table->field[3]->store( |
1528 | + LOG_BITMAP_ITERATOR_END_LSN(i)); |
1529 | + |
1530 | + /* |
1531 | + I_S tables are in-memory tables. If bitmap file is big enough |
1532 | + a lot of memory can be used to store the table. But the size |
1533 | + of used memory can be diminished if we store only data which |
1534 | + corresponds to some conditions (in WHERE sql clause). Here |
1535 | + conditions are checked for the field values stored above. |
1536 | + |
1537 | + Conditions are checked twice. The first is here (during table |
1538 | + generation) and the second during query execution. Maybe it |
1539 | + makes sense to use some flag in THD object to avoid double |
1540 | + checking. |
1541 | + */ |
1542 | + if (cond && !cond->val_int()) |
1543 | + continue; |
1544 | + |
1545 | + if (schema_table_store_record(thd, table)) |
1546 | + { |
1547 | + log_online_bitmap_iterator_release(&i); |
1548 | + return 1; |
1549 | + } |
1550 | + |
1551 | + ++output_rows_num; |
1552 | + } |
1553 | + |
1554 | + log_online_bitmap_iterator_release(&i); |
1555 | + return 0; |
1556 | +} |
1557 | + |
1558 | +static |
1559 | +int |
1560 | +i_s_innodb_changed_pages_init( |
1561 | +/*==========================*/ |
1562 | + void* p) |
1563 | +{ |
1564 | + DBUG_ENTER("i_s_innodb_changed_pages_init"); |
1565 | + ST_SCHEMA_TABLE* schema = (ST_SCHEMA_TABLE*) p; |
1566 | + |
1567 | + schema->fields_info = i_s_innodb_changed_pages_info; |
1568 | + schema->fill_table = i_s_innodb_changed_pages_fill; |
1569 | + |
1570 | + DBUG_RETURN(0); |
1571 | +} |
1572 | + |
1573 | +UNIV_INTERN struct st_mysql_plugin i_s_innodb_changed_pages = |
1574 | +{ |
1575 | + STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN), |
1576 | + STRUCT_FLD(info, &i_s_info), |
1577 | + STRUCT_FLD(name, "INNODB_CHANGED_PAGES"), |
1578 | + STRUCT_FLD(author, "Percona"), |
1579 | + STRUCT_FLD(descr, "InnoDB CHANGED_PAGES table"), |
1580 | + STRUCT_FLD(license, PLUGIN_LICENSE_GPL), |
1581 | + STRUCT_FLD(init, i_s_innodb_changed_pages_init), |
1582 | + STRUCT_FLD(deinit, i_s_common_deinit), |
1583 | + STRUCT_FLD(version, 0x0100 /* 1.0 */), |
1584 | + STRUCT_FLD(status_vars, NULL), |
1585 | + STRUCT_FLD(system_vars, NULL), |
1586 | + STRUCT_FLD(__reserved1, NULL) |
1587 | +}; |
1588 | |
1589 | === modified file 'Percona-Server/storage/innodb_plugin/handler/i_s.h' |
1590 | --- Percona-Server/storage/innodb_plugin/handler/i_s.h 2011-11-24 02:00:45 +0000 |
1591 | +++ Percona-Server/storage/innodb_plugin/handler/i_s.h 2012-08-15 14:13:58 +0000 |
1592 | @@ -36,7 +36,6 @@ |
1593 | extern struct st_mysql_plugin i_s_innodb_cmp_reset; |
1594 | extern struct st_mysql_plugin i_s_innodb_cmpmem; |
1595 | extern struct st_mysql_plugin i_s_innodb_cmpmem_reset; |
1596 | -extern struct st_mysql_plugin i_s_innodb_patches; |
1597 | extern struct st_mysql_plugin i_s_innodb_rseg; |
1598 | extern struct st_mysql_plugin i_s_innodb_table_stats; |
1599 | extern struct st_mysql_plugin i_s_innodb_index_stats; |
1600 | @@ -44,5 +43,6 @@ |
1601 | extern struct st_mysql_plugin i_s_innodb_sys_tables; |
1602 | extern struct st_mysql_plugin i_s_innodb_sys_indexes; |
1603 | extern struct st_mysql_plugin i_s_innodb_sys_stats; |
1604 | +extern struct st_mysql_plugin i_s_innodb_changed_pages; |
1605 | |
1606 | #endif /* i_s_h */ |
1607 | |
1608 | === removed file 'Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h' |
1609 | --- Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h 2011-11-24 02:00:45 +0000 |
1610 | +++ Percona-Server/storage/innodb_plugin/handler/innodb_patch_info.h 1970-01-01 00:00:00 +0000 |
1611 | @@ -1,51 +0,0 @@ |
1612 | -/* Copyright (C) 2002-2006 MySQL AB |
1613 | - |
1614 | - This program is free software; you can redistribute it and/or modify |
1615 | - it under the terms of the GNU General Public License as published by |
1616 | - the Free Software Foundation; version 2 of the License. |
1617 | - |
1618 | - This program is distributed in the hope that it will be useful, |
1619 | - but WITHOUT ANY WARRANTY; without even the implied warranty of |
1620 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1621 | - GNU General Public License for more details. |
1622 | - |
1623 | - You should have received a copy of the GNU General Public License |
1624 | - along with this program; if not, write to the Free Software |
1625 | - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
1626 | - |
1627 | -#ifdef USE_PRAGMA_INTERFACE |
1628 | -#pragma interface /* gcc class implementation */ |
1629 | -#endif |
1630 | - |
1631 | -struct innodb_enhancement { |
1632 | - const char *file; |
1633 | - const char *name; |
1634 | - const char *comment; |
1635 | - const char *link; |
1636 | -}innodb_enhancements[] = { |
1637 | -{"xtradb_show_enhancements","I_S.XTRADB_ENHANCEMENTS","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1638 | -{"innodb_show_status","Improvements to SHOW INNODB STATUS","Memory information and lock info fixes","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1639 | -{"innodb_io","Improvements to InnoDB IO","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1640 | -{"innodb_opt_lru_count","Fix of buffer_pool mutex","Decreases contention on buffer_pool mutex on LRU operations","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1641 | -{"innodb_buffer_pool_pages","Information of buffer pool content","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1642 | -{"innodb_expand_undo_slots","expandable maximum number of undo slots","from 1024 (default) to about 4000","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1643 | -{"innodb_extra_rseg","allow to create extra rollback segments","When create new db, the new parameter allows to create more rollback segments","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1644 | -{"innodb_overwrite_relay_log_info","overwrite relay-log.info when slave recovery","Building as plugin, it is not used.","http://www.percona.com/docs/wiki/percona-xtradb:innodb_overwrite_relay_log_info"}, |
1645 | -{"innodb_thread_concurrency_timer_based","use InnoDB timer based concurrency throttling (backport from MySQL 5.4.0)","",""}, |
1646 | -{"innodb_expand_import","convert .ibd file automatically when import tablespace","the files are generated by xtrabackup export mode.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1647 | -{"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1648 | -{"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1649 | -{"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1650 | -{"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1651 | -{"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1652 | -{"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1653 | -{"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1654 | -{"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1655 | -{"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1656 | -{"innodb_separate_doublewrite","Add option 'innodb_doublewrite_file' to separate doublewrite dedicated tablespace","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1657 | -{"innodb_pass_corrupt_table","Treat tables as corrupt instead of crash, when meet corrupt blocks","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1658 | -{"innodb_fast_checksum","Using the checksum on 32bit-unit calculation","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1659 | -{"innodb_files_extend","allow >4GB transaction log files, and can vary universal page size of datafiles","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1660 | -{"innodb_sys_tables_sys_indexes","Expose InnoDB SYS_TABLES and SYS_INDEXES schema tables","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1661 | -{NULL, NULL, NULL, NULL} |
1662 | -}; |
1663 | |
1664 | === modified file 'Percona-Server/storage/innodb_plugin/include/log0online.h' |
1665 | --- Percona-Server/storage/innodb_plugin/include/log0online.h 2012-06-14 09:16:03 +0000 |
1666 | +++ Percona-Server/storage/innodb_plugin/include/log0online.h 2012-08-15 14:13:58 +0000 |
1667 | @@ -25,6 +25,7 @@ |
1668 | #define log0online_h |
1669 | |
1670 | #include "univ.i" |
1671 | +#include "os0file.h" |
1672 | |
1673 | /*********************************************************************//** |
1674 | Initializes the online log following subsytem. */ |
1675 | @@ -48,4 +49,63 @@ |
1676 | log_online_follow_redo_log(); |
1677 | /*=========================*/ |
1678 | |
1679 | +/** The iterator through all bits of changed pages bitmap blocks */ |
1680 | +struct log_bitmap_iterator_struct |
1681 | +{ |
1682 | + char in_name[FN_REFLEN]; /*!< the file name for bitmap |
1683 | + input */ |
1684 | + os_file_t in; /*!< the bitmap input file */ |
1685 | + ib_uint64_t in_offset; /*!< the next write position in the |
1686 | + bitmap output file */ |
1687 | + ib_uint32_t bit_offset; /*!< bit offset inside of bitmap |
1688 | + block*/ |
1689 | + ib_uint64_t start_lsn; /*!< Start lsn of the block */ |
1690 | + ib_uint64_t end_lsn; /*!< End lsn of the block */ |
1691 | + ib_uint32_t space_id; /*!< Block space id */ |
1692 | + ib_uint32_t first_page_id; /*!< First block page id */ |
1693 | + ibool changed; /*!< true if current page was changed */ |
1694 | + byte* page; /*!< Bitmap block */ |
1695 | +}; |
1696 | + |
1697 | +typedef struct log_bitmap_iterator_struct log_bitmap_iterator_t; |
1698 | + |
1699 | +#define LOG_BITMAP_ITERATOR_START_LSN(i) \ |
1700 | + ((i).start_lsn) |
1701 | +#define LOG_BITMAP_ITERATOR_END_LSN(i) \ |
1702 | + ((i).end_lsn) |
1703 | +#define LOG_BITMAP_ITERATOR_SPACE_ID(i) \ |
1704 | + ((i).space_id) |
1705 | +#define LOG_BITMAP_ITERATOR_PAGE_NUM(i) \ |
1706 | + ((i).first_page_id + (i).bit_offset) |
1707 | +#define LOG_BITMAP_ITERATOR_PAGE_CHANGED(i) \ |
1708 | + ((i).changed) |
1709 | + |
1710 | +/*********************************************************************//** |
1711 | +Initializes log bitmap iterator. |
1712 | +@return TRUE if the iterator is initialized OK, FALSE otherwise. */ |
1713 | +UNIV_INTERN |
1714 | +ibool |
1715 | +log_online_bitmap_iterator_init( |
1716 | +/*============================*/ |
1717 | + log_bitmap_iterator_t *i); /*!<in/out: iterator */ |
1718 | + |
1719 | +/*********************************************************************//** |
1720 | +Releases log bitmap iterator. */ |
1721 | +UNIV_INTERN |
1722 | +void |
1723 | +log_online_bitmap_iterator_release( |
1724 | +/*===============================*/ |
1725 | + log_bitmap_iterator_t *i); /*!<in/out: iterator */ |
1726 | + |
1727 | +/*********************************************************************//** |
1728 | +Iterates through bits of saved bitmap blocks. |
1729 | +Sequentially reads blocks from bitmap file(s) and interates through |
1730 | +their bits. Ignores blocks with wrong checksum. |
1731 | +@return TRUE if iteration is successful, FALSE if all bits are iterated. */ |
1732 | +UNIV_INTERN |
1733 | +ibool |
1734 | +log_online_bitmap_iterator_next( |
1735 | +/*============================*/ |
1736 | + log_bitmap_iterator_t *i); /*!<in/out: iterator */ |
1737 | + |
1738 | #endif |
1739 | |
1740 | === modified file 'Percona-Server/storage/innodb_plugin/include/srv0srv.h' |
1741 | --- Percona-Server/storage/innodb_plugin/include/srv0srv.h 2012-06-14 09:16:03 +0000 |
1742 | +++ Percona-Server/storage/innodb_plugin/include/srv0srv.h 2012-08-15 14:13:58 +0000 |
1743 | @@ -136,6 +136,9 @@ |
1744 | |
1745 | extern my_bool srv_track_changed_pages; |
1746 | |
1747 | +extern |
1748 | +ulonglong srv_changed_pages_limit; |
1749 | + |
1750 | extern ibool srv_auto_extend_last_data_file; |
1751 | extern ulint srv_last_file_size_max; |
1752 | extern char** srv_log_group_home_dirs; |
1753 | |
1754 | === modified file 'Percona-Server/storage/innodb_plugin/log/log0online.c' |
1755 | --- Percona-Server/storage/innodb_plugin/log/log0online.c 2012-06-14 09:16:03 +0000 |
1756 | +++ Percona-Server/storage/innodb_plugin/log/log0online.c 2012-08-15 14:13:58 +0000 |
1757 | @@ -29,7 +29,6 @@ |
1758 | #include "log0recv.h" |
1759 | #include "mach0data.h" |
1760 | #include "mtr0log.h" |
1761 | -#include "os0file.h" |
1762 | #include "srv0srv.h" |
1763 | #include "srv0start.h" |
1764 | #include "trx0sys.h" |
1765 | @@ -84,6 +83,10 @@ |
1766 | which case the first LSN of actual log records will be this. */ |
1767 | #define MIN_TRACKED_LSN ((LOG_START_LSN) + (LOG_BLOCK_HDR_SIZE)) |
1768 | |
1769 | +/* Tests if num bit of bitmap is set */ |
1770 | +#define IS_BIT_SET(bitmap, num) \ |
1771 | + (*((bitmap) + ((num) >> 3)) & (1UL << ((num) & 7UL))) |
1772 | + |
1773 | /** The bitmap file block size in bytes. All writes will be multiples of this. |
1774 | */ |
1775 | enum { |
1776 | @@ -117,6 +120,7 @@ |
1777 | enum { MODIFIED_PAGE_BLOCK_BITMAP_LEN |
1778 | = MODIFIED_PAGE_BLOCK_UNUSED_2 - MODIFIED_PAGE_BLOCK_BITMAP }; |
1779 | |
1780 | + |
1781 | /****************************************************************//** |
1782 | Provide a comparisson function for the RB-tree tree (space, |
1783 | block_start_page) pairs. Actual implementation does not matter as |
1784 | @@ -922,3 +926,158 @@ |
1785 | log_bmp_sys->start_lsn = log_bmp_sys->end_lsn; |
1786 | log_set_tracked_lsn(log_bmp_sys->start_lsn); |
1787 | } |
1788 | + |
1789 | +/*********************************************************************//** |
1790 | +Initializes log bitmap iterator. |
1791 | +@return TRUE if the iterator is initialized OK, FALSE otherwise. */ |
1792 | +UNIV_INTERN |
1793 | +ibool |
1794 | +log_online_bitmap_iterator_init( |
1795 | +/*============================*/ |
1796 | + log_bitmap_iterator_t *i) /*!<in/out: iterator */ |
1797 | +{ |
1798 | + ibool success; |
1799 | + |
1800 | + ut_a(i); |
1801 | + ut_snprintf(i->in_name, FN_REFLEN, "%s%s%d", srv_data_home, |
1802 | + modified_page_stem, 1); |
1803 | + i->in_offset = 0; |
1804 | + /* |
1805 | + Set up bit offset out of the reasonable limit |
1806 | + to intiate reading block from file in |
1807 | + log_online_bitmap_iterator_next() |
1808 | + */ |
1809 | + i->bit_offset = MODIFIED_PAGE_BLOCK_BITMAP_LEN; |
1810 | + i->in = |
1811 | + os_file_create_simple_no_error_handling( |
1812 | + i->in_name, |
1813 | + OS_FILE_OPEN, |
1814 | + OS_FILE_READ_ONLY, |
1815 | + &success); |
1816 | + |
1817 | + if (!success) { |
1818 | + /* The following call prints an error message */ |
1819 | + os_file_get_last_error(TRUE); |
1820 | + fprintf(stderr, |
1821 | + "InnoDB: Error: Cannot open \'%s\'\n", |
1822 | + i->in_name); |
1823 | + return FALSE; |
1824 | + } |
1825 | + |
1826 | + i->page = ut_malloc(MODIFIED_PAGE_BLOCK_SIZE); |
1827 | + |
1828 | + i->start_lsn = i->end_lsn = 0; |
1829 | + i->space_id = 0; |
1830 | + i->first_page_id = 0; |
1831 | + i->changed = FALSE; |
1832 | + |
1833 | + return TRUE; |
1834 | +} |
1835 | + |
1836 | +/*********************************************************************//** |
1837 | +Releases log bitmap iterator. */ |
1838 | +UNIV_INTERN |
1839 | +void |
1840 | +log_online_bitmap_iterator_release( |
1841 | +/*===============================*/ |
1842 | + log_bitmap_iterator_t *i) /*!<in/out: iterator */ |
1843 | +{ |
1844 | + ut_a(i); |
1845 | + os_file_close(i->in); |
1846 | + ut_free(i->page); |
1847 | +} |
1848 | + |
1849 | +/*********************************************************************//** |
1850 | +Iterates through bits of saved bitmap blocks. |
1851 | +Sequentially reads blocks from bitmap file(s) and interates through |
1852 | +their bits. Ignores blocks with wrong checksum. |
1853 | +@return TRUE if iteration is successful, FALSE if all bits are iterated. */ |
1854 | +UNIV_INTERN |
1855 | +ibool |
1856 | +log_online_bitmap_iterator_next( |
1857 | +/*============================*/ |
1858 | + log_bitmap_iterator_t *i) /*!<in/out: iterator */ |
1859 | +{ |
1860 | + ulint offset_low; |
1861 | + ulint offset_high; |
1862 | + ulint size_low; |
1863 | + ulint size_high; |
1864 | + ulint checksum = 0; |
1865 | + ulint actual_checksum = !checksum; |
1866 | + |
1867 | + ibool success; |
1868 | + |
1869 | + ut_a(i); |
1870 | + |
1871 | + if (i->bit_offset < MODIFIED_PAGE_BLOCK_BITMAP_LEN) |
1872 | + { |
1873 | + ++i->bit_offset; |
1874 | + i->changed = |
1875 | + IS_BIT_SET(i->page + MODIFIED_PAGE_BLOCK_BITMAP, |
1876 | + i->bit_offset); |
1877 | + return TRUE; |
1878 | + } |
1879 | + |
1880 | + while (checksum != actual_checksum) |
1881 | + { |
1882 | + success = os_file_get_size(i->in, |
1883 | + &size_low, |
1884 | + &size_high); |
1885 | + if (!success) { |
1886 | + os_file_get_last_error(TRUE); |
1887 | + fprintf(stderr, |
1888 | + "InnoDB: Warning: can't get size of " |
1889 | + "page bitmap file \'%s\'\n", |
1890 | + i->in_name); |
1891 | + return FALSE; |
1892 | + } |
1893 | + |
1894 | + if (i->in_offset >= |
1895 | + (ib_uint64_t)(size_low) + |
1896 | + ((ib_uint64_t)(size_high) << 32)) |
1897 | + return FALSE; |
1898 | + |
1899 | + offset_high = (ulint)(i->in_offset >> 32); |
1900 | + offset_low = (ulint)(i->in_offset & 0xFFFFFFFF); |
1901 | + |
1902 | + success = os_file_read( |
1903 | + i->in, |
1904 | + i->page, |
1905 | + offset_low, |
1906 | + offset_high, |
1907 | + MODIFIED_PAGE_BLOCK_SIZE); |
1908 | + |
1909 | + if (!success) { |
1910 | + os_file_get_last_error(TRUE); |
1911 | + fprintf(stderr, |
1912 | + "InnoDB: Warning: failed reading " |
1913 | + "changed page bitmap file \'%s\'\n", |
1914 | + i->in_name); |
1915 | + return FALSE; |
1916 | + } |
1917 | + |
1918 | + checksum = mach_read_from_4( |
1919 | + i->page + MODIFIED_PAGE_BLOCK_CHECKSUM); |
1920 | + |
1921 | + actual_checksum = log_online_calc_checksum(i->page); |
1922 | + |
1923 | + i->in_offset += MODIFIED_PAGE_BLOCK_SIZE; |
1924 | + } |
1925 | + |
1926 | + i->start_lsn = |
1927 | + mach_read_ull(i->page + MODIFIED_PAGE_START_LSN); |
1928 | + i->end_lsn = |
1929 | + mach_read_ull(i->page + MODIFIED_PAGE_END_LSN); |
1930 | + i->space_id = |
1931 | + mach_read_from_4(i->page + MODIFIED_PAGE_SPACE_ID); |
1932 | + i->first_page_id = |
1933 | + mach_read_from_4(i->page + MODIFIED_PAGE_1ST_PAGE_ID); |
1934 | + i->bit_offset = |
1935 | + 0; |
1936 | + i->changed = |
1937 | + IS_BIT_SET(i->page + MODIFIED_PAGE_BLOCK_BITMAP, |
1938 | + i->bit_offset); |
1939 | + |
1940 | + return TRUE; |
1941 | +} |
1942 | + |
1943 | |
1944 | === modified file 'Percona-Server/storage/innodb_plugin/row/row0mysql.c' |
1945 | --- Percona-Server/storage/innodb_plugin/row/row0mysql.c 2012-05-09 04:14:12 +0000 |
1946 | +++ Percona-Server/storage/innodb_plugin/row/row0mysql.c 2012-08-15 14:13:58 +0000 |
1947 | @@ -3635,7 +3635,7 @@ |
1948 | btr_pcur_store_position(&pcur, &mtr); |
1949 | btr_pcur_commit_specify_mtr(&pcur, &mtr); |
1950 | |
1951 | - table = dict_load_table(table_name); |
1952 | + table = dict_table_get_low(table_name); |
1953 | |
1954 | if (table) { |
1955 | row_drop_table_for_mysql(table_name, trx, FALSE); |
1956 | |
1957 | === modified file 'Percona-Server/storage/innodb_plugin/srv/srv0srv.c' |
1958 | --- Percona-Server/storage/innodb_plugin/srv/srv0srv.c 2012-06-14 09:16:03 +0000 |
1959 | +++ Percona-Server/storage/innodb_plugin/srv/srv0srv.c 2012-08-15 14:13:58 +0000 |
1960 | @@ -164,6 +164,8 @@ |
1961 | |
1962 | UNIV_INTERN my_bool srv_track_changed_pages = TRUE; |
1963 | |
1964 | +UNIV_INTERN ulonglong srv_changed_pages_limit = 0; |
1965 | + |
1966 | /* if TRUE, then we auto-extend the last data file */ |
1967 | UNIV_INTERN ibool srv_auto_extend_last_data_file = FALSE; |
1968 | /* if != 0, this tells the max size auto-extending may increase the |
1969 | |
1970 | === modified file 'build/debian/control' |
1971 | --- build/debian/control 2012-02-11 11:58:50 +0000 |
1972 | +++ build/debian/control 2012-08-15 14:13:58 +0000 |
1973 | @@ -3,7 +3,7 @@ |
1974 | Priority: optional |
1975 | Maintainer: Percona Server Development Team <mysql-dev@percona.com> |
1976 | Uploaders: Ignacio Nin <ignacio.nin@percona.com> |
1977 | -Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper (>= 4.1.16), file (>= 3.28-1), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), psmisc, po-debconf, chrpath, automake (>= 1.9), doxygen, gs, dpatch, gawk, bison, lsb-release, fakeroot |
1978 | +Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper (>= 4.1.16), file (>= 3.28-1), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), psmisc, po-debconf, chrpath, automake (>= 1.9), doxygen, dpatch, gawk, bison, lsb-release, fakeroot |
1979 | Standards-Version: 3.8.0 |
1980 | Homepage: http://www.percona.com/software/ |
1981 | Vcs-Bzr: lp:percona-server/5.1 |
1982 | |
1983 | === modified file 'build/debian/rules' |
1984 | --- build/debian/rules 2012-02-10 11:58:26 +0000 |
1985 | +++ build/debian/rules 2012-08-15 14:13:58 +0000 |
1986 | @@ -9,7 +9,7 @@ |
1987 | TMP=$(CURDIR)/debian/tmp/ |
1988 | |
1989 | major_version_default=13 |
1990 | -minor_version_default=2 |
1991 | +minor_version_default=4 |
1992 | |
1993 | ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH) |
1994 | ARCH_OS = $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS) |
1995 | |
1996 | === modified file 'build/percona-server.spec' |
1997 | --- build/percona-server.spec 2012-04-24 16:53:04 +0000 |
1998 | +++ build/percona-server.spec 2012-08-15 14:13:58 +0000 |
1999 | @@ -14,9 +14,9 @@ |
2000 | %define mysql_vendor Percona, Inc |
2001 | %define redhatversion %(lsb_release -rs | awk -F. '{ print $1}') |
2002 | %define community 1 |
2003 | -%define mysqlversion 5.1.62 |
2004 | +%define mysqlversion 5.1.63 |
2005 | %define majorversion 13 |
2006 | -%define minorversion 3 |
2007 | +%define minorversion 4 |
2008 | %define distribution rhel%{redhatversion} |
2009 | %define release rel%{majorversion}.%{minorversion}.%{gotrevision}.%{distribution} |
2010 | |
2011 | |
2012 | === modified file 'build/percona-shared-compat.spec' |
2013 | --- build/percona-shared-compat.spec 2012-04-24 16:53:04 +0000 |
2014 | +++ build/percona-shared-compat.spec 2012-08-15 14:13:58 +0000 |
2015 | @@ -29,7 +29,7 @@ |
2016 | # Change this to match the version of the shared libs you want to include |
2017 | # |
2018 | %define version55 5.5.8 |
2019 | -%define version51 5.1.62 |
2020 | +%define version51 5.1.63 |
2021 | %define version50 5.0.91 |
2022 | %define version41 4.1.22 |
2023 | %define version40 4.0.27 |
2024 | |
2025 | === modified file 'doc/Makefile' |
2026 | --- doc/Makefile 2011-09-20 06:59:03 +0000 |
2027 | +++ doc/Makefile 2012-08-15 14:13:58 +0000 |
2028 | @@ -37,6 +37,14 @@ |
2029 | -rm -rf $(BUILDDIR)/* |
2030 | |
2031 | html: |
2032 | + @echo "Downloading percona-theme ..." |
2033 | + @wget -O percona-theme.tar.gz http://percona.com/docs/theme/percona-server/5.1 |
2034 | + @echo "Extracting theme." |
2035 | + @tar -zxf percona-theme.tar.gz |
2036 | + @rm -rf source/percona-theme |
2037 | + @mv percona-theme source/percona-theme |
2038 | + @rm percona-theme.tar.gz |
2039 | + @echo "Building html doc" |
2040 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
2041 | @echo |
2042 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
2043 | @@ -46,6 +54,11 @@ |
2044 | @echo |
2045 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." |
2046 | |
2047 | +offhtml: |
2048 | + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
2049 | + @echo |
2050 | + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
2051 | + |
2052 | singlehtml: |
2053 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml |
2054 | @echo |
2055 | |
2056 | === modified file 'doc/source/conf.py' |
2057 | --- doc/source/conf.py 2012-04-24 12:35:07 +0000 |
2058 | +++ doc/source/conf.py 2012-08-15 14:13:58 +0000 |
2059 | @@ -52,9 +52,9 @@ |
2060 | # built documents. |
2061 | # |
2062 | # The short X.Y version. |
2063 | -version = '5.1.62' |
2064 | +version = '5.1.63' |
2065 | # The full version, including alpha/beta/rc tags. |
2066 | -release = '5.1.62-13.3' |
2067 | +release = '5.1.63-13.4' |
2068 | |
2069 | # The language for content autogenerated by Sphinx. Refer to documentation |
2070 | # for a list of supported languages. |
2071 | @@ -224,7 +224,7 @@ |
2072 | # Grouping the document tree into LaTeX files. List of tuples |
2073 | # (source start file, target name, title, author, documentclass [howto/manual]). |
2074 | latex_documents = [ |
2075 | - ('index', 'PerconaServer.tex', u'Percona Server Documentation', |
2076 | + ('index', 'PerconaServer-5.1.tex', u'Percona Server Documentation', |
2077 | u'Percona Inc', 'manual'), |
2078 | ] |
2079 | |
2080 | |
2081 | === modified file 'doc/source/diagnostics/innodb_stats.rst' |
2082 | --- doc/source/diagnostics/innodb_stats.rst 2012-01-31 13:43:08 +0000 |
2083 | +++ doc/source/diagnostics/innodb_stats.rst 2012-08-15 14:13:58 +0000 |
2084 | @@ -54,13 +54,12 @@ |
2085 | |
2086 | .. variable:: innodb_use_sys_stats_table |
2087 | |
2088 | + :version: 5.1.49-11.3 Variable introduced |
2089 | :type: BOOLEAN |
2090 | :default: 0 |
2091 | |
2092 | |
2093 | -If this option is enabled, |XtraDB| uses the ``SYS_STATS`` system table to store statistics of table indexes. Also, when |InnoDB| opens a table for the first time, it loads the statistics from ``SYS_STATS`` instead of sampling index pages. If you use a high ``stats_sample_pages`` value, the first open of a table is expensive. In such a case, this option will help. Note: This option may cause less frequent updating of statistics. So, you should intentionally use the ``ANALYZE TABLE`` command more often. |
2094 | - |
2095 | -(This variable was introduced in release 5.1.49-rel11.3) |
2096 | +If this option is enabled, |XtraDB| uses the ``SYS_STATS`` system table to store statistics of table indexes. Also, when |InnoDB| opens a table for the first time, it loads the statistics from ``SYS_STATS`` instead of sampling index pages. If you use a high ``stats_sample_pages`` value, the first open of a table is expensive. In such a case, this option will help. Intended behavior is to never update statistics unless an explicit ``ANALYZE TABLE`` is issued. |
2097 | |
2098 | |
2099 | INFORMATION_SCHEMA Tables |
2100 | |
2101 | === modified file 'doc/source/diagnostics/misc_info_schema_tables.rst' |
2102 | --- doc/source/diagnostics/misc_info_schema_tables.rst 2012-04-02 07:06:54 +0000 |
2103 | +++ doc/source/diagnostics/misc_info_schema_tables.rst 2012-08-15 14:13:58 +0000 |
2104 | @@ -98,7 +98,7 @@ |
2105 | Temporary tables |
2106 | ================ |
2107 | |
2108 | - Only temporary tables that were explicitly created with `CREATE TEMPORARY TABLE` or `ALTER TABLE` are shown, and not the ones created during query execution. |
2109 | + Only temporary tables that were explicitly created with `CREATE TEMPORARY TABLE` are shown, and not the ones created during query execution. The temporary tables that are created for `ALTER TABLE` execution are not listed in `INFORMATION_SCHEMA.TEMPORARY_TABLES` or `GLOBAL_TEMPORARY_TABLES` tables. |
2110 | |
2111 | .. table:: INFORMATION_SCHEMA.GLOBAL_TEMPORARY_TABLES |
2112 | |
2113 | |
2114 | === modified file 'doc/source/diagnostics/mysql_syslog.rst' |
2115 | --- doc/source/diagnostics/mysql_syslog.rst 2011-10-07 00:55:06 +0000 |
2116 | +++ doc/source/diagnostics/mysql_syslog.rst 2012-08-15 14:13:58 +0000 |
2117 | @@ -4,7 +4,7 @@ |
2118 | Log All Client Commands (``syslog``) |
2119 | ====================================== |
2120 | |
2121 | -When enabled, this feature causes all commands run on the client to be logged to ``syslog``. |
2122 | +When enabled, this feature causes all commands run by the command line client to be logged to ``syslog``. If you want to enable this option permanently, add it to the [mysql] group in my.cnf. |
2123 | |
2124 | |
2125 | Version Specific Information |
2126 | |
2127 | === modified file 'doc/source/diagnostics/slow_extended.rst' |
2128 | --- doc/source/diagnostics/slow_extended.rst 2011-10-07 00:55:06 +0000 |
2129 | +++ doc/source/diagnostics/slow_extended.rst 2012-08-15 14:13:58 +0000 |
2130 | @@ -179,10 +179,10 @@ |
2131 | Specifies the time threshold for filtering queries out of the slow query log. The unit of time is seconds. This option has the same meaning as in a standard |MySQL| server, with the following changes: |
2132 | |
2133 | The option accepts fractional values. If set to 0.5, for example, queries longer than 1/2 second will be logged. |
2134 | - |
2135 | -If the value is set to 0, then all queries are logged. This is different from the standard |MySQL| build, where a value of 0 disables logging. |
2136 | Before version 1.01 of this feature, the value was an integer, and the unit of time was microseconds, not seconds. |
2137 | |
2138 | +If the value is set to 0, then all queries are logged. This is different from the standard |MySQL| build, prior to version 5.1.21, where a value of 0 disables logging. After |MySQL| 5.1.21 this has been changed to minimum value and you can disable/enable slow query log with ``slow_query_log`` variable. |
2139 | + |
2140 | .. variable:: profiling_server |
2141 | |
2142 | :cli: Yes |
2143 | |
2144 | === modified file 'doc/source/flexibility/buff_read_ahead_area.rst' |
2145 | --- doc/source/flexibility/buff_read_ahead_area.rst 2011-10-07 00:55:06 +0000 |
2146 | +++ doc/source/flexibility/buff_read_ahead_area.rst 2012-08-15 14:13:58 +0000 |
2147 | @@ -33,4 +33,4 @@ |
2148 | Other Reading |
2149 | ============= |
2150 | |
2151 | - * `BUF_READ_AHEAD_AREA Bottleneck <http://www.facebook.com/notes/|MySQL|facebook/using-pmp-to-double-|MySQL|-throughput-part-2/405092575932>`_ |
2152 | + * `BUF_READ_AHEAD_AREA Bottleneck <http://www.facebook.com/notes/MySQLfacebook/using-pmp-to-double-MySQL-throughput-part-2/405092575932>`_ |
2153 | |
2154 | === modified file 'doc/source/flexibility/mysqlbinlog_change_db.rst' |
2155 | --- doc/source/flexibility/mysqlbinlog_change_db.rst 2012-04-24 12:35:07 +0000 |
2156 | +++ doc/source/flexibility/mysqlbinlog_change_db.rst 2012-08-15 14:13:58 +0000 |
2157 | @@ -7,15 +7,61 @@ |
2158 | Sometimes there is a need to take a binary log and apply it to a database with |
2159 | a different name than the original name of the database on binlog producer. |
2160 | |
2161 | -If one is using statement-based replication, he can achieve this by grepping |
2162 | -out "USE dbname" statements out of the output of mysqlbinlog(*). With |
2163 | -row-based replication this is no longer possible, as database name is encoded |
2164 | -within the the BINLOG '....' statement. |
2165 | - |
2166 | -This task is about adding an option to mysqlbinlog that would allow to change |
2167 | -the names of used databases in both RBR and SBR events. |
2168 | - |
2169 | -Varible :variable:`rewrite-db` of **mysqlbinlog** utility allows to setup rewriting rule "from->"to". |
2170 | +New variable rewrite-db has been added to the mysqlbinlog utility that allows the changing names of the used databases in both Row-Based and Statement-Based replication. This was possible before by using tools like grep, awk and sed but only for SBR, because with RBR database name is encoded within the BINLOG ‘....’ statement. |
2171 | + |
2172 | +Variable :variable:`rewrite-db` of **mysqlbinlog** utility allows to setup rewriting rule "from->"to". |
2173 | + |
2174 | +Example |
2175 | +======= |
2176 | + |
2177 | +**mysqlbinlog** output before rewrite-db :: |
2178 | + |
2179 | + $ mysqlbinlog mysql-bin.000005 |
2180 | + ... |
2181 | + # at 175 |
2182 | + #120517 13:10:00 server id 2 end_log_pos 203 Intvar |
2183 | + SET INSERT_ID=4083/*!*/; |
2184 | + # at 203 |
2185 | + #120517 13:10:00 server id 2 end_log_pos 367 Query thread_id=88 exec_time=0 error_code=0 |
2186 | + use world/*!*/; |
2187 | + SET TIMESTAMP=1337253000/*!*/; |
2188 | + insert into City (Name, CountryCode, District, Population) values ("New City", "ZMB", "TEX", 111000) |
2189 | + /*!*/; |
2190 | + # at 367 |
2191 | + #120517 13:10:00 server id 2 end_log_pos 394 Xid = 1414 |
2192 | + COMMIT/*!*/; |
2193 | + DELIMITER ; |
2194 | + |
2195 | +**mysqlbinlog** output when the new variable is used: :: |
2196 | + |
2197 | + $ mysqlbinlog --rewrite-db='world->new_world' mysql-bin.000005 |
2198 | + ... |
2199 | + # at 106 |
2200 | + use new_world/*!*/; |
2201 | + #120517 13:10:00 server id 2 end_log_pos 175 Query thread_id=88 exec_time=0 error_code=0 |
2202 | + SET TIMESTAMP=1337253000/*!*/; |
2203 | + SET @@session.pseudo_thread_id=88/*!*/; |
2204 | + SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/; |
2205 | + SET @@session.sql_mode=0/*!*/; |
2206 | + SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; |
2207 | + /*!\C latin1 *//*!*/; |
2208 | + SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/; |
2209 | + SET @@session.lc_time_names=0/*!*/; |
2210 | + SET @@session.collation_database=DEFAULT/*!*/; |
2211 | + BEGIN |
2212 | + /*!*/; |
2213 | + # at 175 |
2214 | + #120517 13:10:00 server id 2 end_log_pos 203 Intvar |
2215 | + SET INSERT_ID=4083/*!*/; |
2216 | + # at 203 |
2217 | + #120517 13:10:00 server id 2 end_log_pos 367 Query thread_id=88 exec_time=0 error_code=0 |
2218 | + SET TIMESTAMP=1337253000/*!*/; |
2219 | + insert into City (Name, CountryCode, District, Population) values ("New City", "ZMB", "TEX", 111000) |
2220 | + /*!*/; |
2221 | + # at 367 |
2222 | + #120517 13:10:00 server id 2 end_log_pos 394 Xid = 1414 |
2223 | + COMMIT/*!*/; |
2224 | + |
2225 | |
2226 | Version Specific Information |
2227 | ============================ |
2228 | |
2229 | === modified file 'doc/source/installation/apt_repo.rst' |
2230 | --- doc/source/installation/apt_repo.rst 2012-05-08 06:48:26 +0000 |
2231 | +++ doc/source/installation/apt_repo.rst 2012-08-15 14:13:58 +0000 |
2232 | @@ -33,15 +33,14 @@ |
2233 | Debian |
2234 | ------ |
2235 | |
2236 | - * 5.0 (lenny) |
2237 | * 6.0 (squeeze) |
2238 | |
2239 | Ubuntu |
2240 | ------ |
2241 | |
2242 | * 10.04LTS (lucid) |
2243 | - * 11.04 (natty) |
2244 | * 11.10 (oneiric) |
2245 | + * 12.04LTS (precise) |
2246 | |
2247 | |
2248 | Release Candidate Repository |
2249 | @@ -51,3 +50,15 @@ |
2250 | |
2251 | deb http://repo.percona.com/apt-rc VERSION main |
2252 | deb-src http://repo.percona.com/apt-rc VERSION main |
2253 | + |
2254 | + |
2255 | +Apt-Pinning the packages |
2256 | +======================== |
2257 | + |
2258 | +In some cases you might need to "pin" the selected packages to avoid the upgrades from the distribution repositories. You'll need to make a new file :file:`/etc/apt/preferences.d/00percona.pref` and add the following lines in it: :: |
2259 | + |
2260 | + Package: * |
2261 | + Pin: release o=Percona Development Team |
2262 | + Pin-Priority: 1001 |
2263 | + |
2264 | +For more information about the pinning you can check the official `debian wiki <http://wiki.debian.org/AptPreferences>`_. |
2265 | |
2266 | === modified file 'doc/source/management/innodb_expand_import.rst' |
2267 | --- doc/source/management/innodb_expand_import.rst 2011-10-07 00:55:06 +0000 |
2268 | +++ doc/source/management/innodb_expand_import.rst 2012-08-15 14:13:58 +0000 |
2269 | @@ -10,6 +10,9 @@ |
2270 | |
2271 | The normal version can import only the backed-up .ibd file at the same place. |
2272 | |
2273 | +.. note:: |
2274 | + |
2275 | + This feature is unsupported with InnoDB data files created with MySQL 5.0 and MySQL 5.1 prior to version 5.1.7 due to InnoDB file format limitation. It may work in some cases, but may result in crashes on import as well, see bug :bug:`1000221` and bug :bug:`727704` for examples and details. |
2276 | |
2277 | Example |
2278 | ======= |
2279 | @@ -128,7 +131,7 @@ |
2280 | .. lock all tables in the database ``example`` |
2281 | .. "ALTER TABLE ... DISCARD TABLESPACE" for all tables in ``exmple`` |
2282 | .. unlock all tables in the database ``example`` |
2283 | -.. (and we need to get all create table clause (e.g. "|MySQL|dump --no-data")) |
2284 | +.. (and we need to get all create table clause (e.g. "mysqldump --no-data")) |
2285 | .. obtain *.ibd *.exp as exported files |
2286 | .. Target: (innodb_expand_import should be 1) |
2287 | |
2288 | |
2289 | === modified file 'doc/source/management/innodb_fast_index_creation.rst' |
2290 | --- doc/source/management/innodb_fast_index_creation.rst 2011-10-07 00:55:06 +0000 |
2291 | +++ doc/source/management/innodb_fast_index_creation.rst 2012-08-15 14:13:58 +0000 |
2292 | @@ -4,7 +4,7 @@ |
2293 | Fast Index Creation |
2294 | ===================== |
2295 | |
2296 | -Percona has implemented several changes related to |MySQL| 's fast index creation feature. This feature extends the ``ALTER TABLE`` command by adding a new clause that provides online index renaming capability, that is renaming indexes without rebuilding the whole table. |
2297 | +Percona has implemented several changes related to |MySQL|'s fast index creation feature. Extended features, besides disabling :variable:`fast_index_creation`, can be enabled with :variable:`expand_fast_index_creation`. |
2298 | |
2299 | Disabling Fast Index Creation |
2300 | ============================= |
2301 | @@ -14,27 +14,6 @@ |
2302 | This feature implements a session variable that disables fast index creation. This causes indexes to be created in the way they were created before fast index creation was implemented. While this is slower, it avoids the problem of data dictionary inconsistency between |MySQL| and |InnoDB|. |
2303 | |
2304 | |
2305 | -:command:`mysqldump` |
2306 | --------------------- |
2307 | - |
2308 | -A new option, ``--innodb-optimize-keys``, was implemented in :command:`mysqldump`. It changes the way |InnoDB| tables are dumped, so that secondary and foreign keys are created after loading the data, thus taking advantage of fast index creation. More specifically: |
2309 | - |
2310 | - * ``KEY``, ``UNIQUE KEY``, and ``CONSTRAINT`` clauses are omitted from ``CREATE TABLE`` statements corresponding to |InnoDB| tables. |
2311 | - |
2312 | - * An additional ``ALTER TABLE`` is issued after dumping the data, in order to create the previously omitted keys. |
2313 | - |
2314 | -Delaying foreign key creation does not introduce any additional risks, as :command:`mysqldump` always prepends its output with ``SET FOREIGN_KEY_CHECKS=0`` anyway. |
2315 | - |
2316 | - |
2317 | -``ALTER TABLE`` |
2318 | ---------------- |
2319 | - |
2320 | -When ``ALTER TABLE`` requires a table copy, secondary keys are now dropped and recreated later, after copying the data. The following restrictions apply: |
2321 | - |
2322 | - * Only non-unique keys can be involved in this optimization. |
2323 | - |
2324 | - * If the table contains foreign keys, or a foreign key is being added as a part of the current ``ALTER TABLE`` statement, the optimization is disabled for all keys. |
2325 | - |
2326 | ``OPTIMIZE TABLE`` |
2327 | ------------------ |
2328 | |
2329 | |
2330 | === modified file 'doc/source/management/innodb_lru_dump_restore.rst' |
2331 | --- doc/source/management/innodb_lru_dump_restore.rst 2012-04-21 07:20:03 +0000 |
2332 | +++ doc/source/management/innodb_lru_dump_restore.rst 2012-08-15 14:13:58 +0000 |
2333 | @@ -135,4 +135,4 @@ |
2334 | Other reading |
2335 | ============= |
2336 | |
2337 | - * `Save / restore buffer pool <http://www.|MySQL|performanceblog.com/2010/01/20/|XtraDB|-feature-save-restore-buffer-pool/>`_ |
2338 | + * `Save / restore buffer pool <http://www.mysqlperformanceblog.com/2010/01/20/XtraDB-feature-save-restore-buffer-pool/>`_ |
2339 | |
2340 | === added directory 'doc/source/percona-theme' |
2341 | === removed directory 'doc/source/percona-theme' |
2342 | === added file 'doc/source/percona-theme/layout.html' |
2343 | --- doc/source/percona-theme/layout.html 1970-01-01 00:00:00 +0000 |
2344 | +++ doc/source/percona-theme/layout.html 2012-08-15 14:13:58 +0000 |
2345 | @@ -0,0 +1,407 @@ |
2346 | +{# |
2347 | + basic/layout.html |
2348 | + ~~~~~~~~~~~~~~~~~ |
2349 | + |
2350 | + Master layout template for Sphinx themes. |
2351 | + |
2352 | + :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. |
2353 | + :license: BSD, see LICENSE for details. |
2354 | +#} |
2355 | +{%- block doctype -%} |
2356 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
2357 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2358 | +{%- endblock %} |
2359 | +{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} |
2360 | +{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} |
2361 | +{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and |
2362 | + (sidebars != []) %} |
2363 | +{%- set url_root = pathto('', 1) %} |
2364 | +{# XXX necessary? #} |
2365 | +{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} |
2366 | +{%- if not embedded and docstitle %} |
2367 | + {%- set titlesuffix = " — "|safe + docstitle|e %} |
2368 | +{%- else %} |
2369 | + {%- set titlesuffix = "" %} |
2370 | +{%- endif %} |
2371 | + |
2372 | +{%- macro relbar() %} |
2373 | + <div class="related"> |
2374 | + <h3>{{ _('Navigation') }}</h3> |
2375 | + <ul> |
2376 | + {%- for rellink in rellinks %} |
2377 | + <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}> |
2378 | + <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}" |
2379 | + {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a> |
2380 | + {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li> |
2381 | + {%- endfor %} |
2382 | + {%- block rootrellink %} |
2383 | + <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li> |
2384 | + {%- endblock %} |
2385 | + {%- for parent in parents %} |
2386 | + <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li> |
2387 | + {%- endfor %} |
2388 | + {%- block relbaritems %} {% endblock %} |
2389 | + </ul> |
2390 | + </div> |
2391 | +{%- endmacro %} |
2392 | + |
2393 | +{%- macro sidebar() %} |
2394 | + {%- if render_sidebar %} |
2395 | + <div class="sphinxsidebar"> |
2396 | + <div class="sphinxsidebarwrapper"> |
2397 | + |
2398 | + <div class="side-column-block"><a href="http://www.percona.com/software/percona-server/"><img alt="Percona Server" src="http://s2.percona.com/logo_percona_server_new.png" /></a></div> |
2399 | + |
2400 | + <div class="side-column-block"> |
2401 | + <div class="header">Call Us</div> |
2402 | + <div class="content"> |
2403 | + <div class="numbers"> |
2404 | + <div style="padding-bottom: 4px"> |
2405 | + +1-888-316-9775 (USA - Sales)<br> |
2406 | + +1-208-473-2904 (USA - Sales) |
2407 | + </div> |
2408 | + <div style="padding-bottom: 4px;"> |
2409 | + +44-208-133-0309 (UK - Sales) |
2410 | + </div> |
2411 | + <div style="padding-bottom: 4px;"> |
2412 | + +1-877-862-4316 (Emergency) |
2413 | + </div> |
2414 | + <div> |
2415 | + +1-855-55TRAIN (Training)<br> |
2416 | + +1-925-271-5054 (Training) |
2417 | + </div> |
2418 | + </div> |
2419 | + </div> |
2420 | + </div> |
2421 | + |
2422 | + <div class="side-column-block"> |
2423 | + <div class="a-btn-container"> |
2424 | + <a title="Download PDF Manual for Percona Server 5.1" href="http://form.percona.com/PerconaServer51OperationsManual2.html" class="a-btn-new"> |
2425 | + <span class="a-btn-text">Download Manual</span> |
2426 | + <span class="a-btn-fixed-slide-text">PDF for version 5.1</span> |
2427 | + <span class="a-btn-icon-right"><span></span></span> |
2428 | + </a> |
2429 | + </div></div> |
2430 | + |
2431 | + <div class="percona_com_ad" style="width:220px;"><script type="text/javascript" src="http://www.percona.com/ads.php?size=220x120"></script></div> |
2432 | + |
2433 | + {%- if sidebars != None %} |
2434 | + {#- new style sidebar: explicitly include/exclude templates #} |
2435 | + {%- for sidebartemplate in sidebars %} |
2436 | + {%- include sidebartemplate %} |
2437 | + {%- endfor %} |
2438 | + {%- else %} |
2439 | + {#- old style sidebars: using blocks -- should be deprecated #} |
2440 | + {%- block serverseries %} |
2441 | + <div class="side-column-block"> |
2442 | + <h3>Percona Server Series</h3> |
2443 | + <ul><li><a href="http://www.percona.com/doc/percona-server/5.1/">Percona Server 5.1</a></li><li><a href="http://www.percona.com/doc/percona-server/5.5/">Percona Server 5.5</a></li></ul> |
2444 | + </div> |
2445 | + {%- endblock %} |
2446 | + {%- block sidebartoc %} |
2447 | + {%- include "localtoc.html" %} |
2448 | + {%- endblock %} |
2449 | + {%- block sidebarrel %} |
2450 | + {%- include "relations.html" %} |
2451 | + {%- endblock %} |
2452 | + {%- block sidebarsourcelink %} |
2453 | + {%- include "sourcelink.html" %} |
2454 | + {%- endblock %} |
2455 | + {%- if customsidebar %} |
2456 | + {%- include customsidebar %} |
2457 | + {%- endif %} |
2458 | + {%- block sidebarsearch %} |
2459 | + {%- include "searchbox.html" %} |
2460 | + {%- endblock %} |
2461 | + {%- endif %} |
2462 | +<br /><br /> |
2463 | + <div class="side-column-block"> |
2464 | + <ul class="side-contact-buttons"> |
2465 | + <li><a href="http://form.percona.com/ContactMe.html" title="Contact Me" class="contact-me"><span>Contact Me</span></a></li> |
2466 | + <li><a href="http://www.percona.com/webinars/" title="Attend a Webinar" class="webinar"><span>Attend a Webinar</span></a></li> |
2467 | + <li><a href="http://www.percona.com/downloads/" title="Download Software" class="download-software"><span>Download Software</span></a></li> |
2468 | + <li><a href="http://www.percona.com/subscribe/" title="Register For Newsletters" class="newsletters"><span>Register For Newsletters</span></a></li> |
2469 | + </ul> |
2470 | + </div> |
2471 | + |
2472 | + </div> |
2473 | + </div> |
2474 | + {%- endif %} |
2475 | +{%- endmacro %} |
2476 | + |
2477 | +{%- macro script() %} |
2478 | + <script type="text/javascript"> |
2479 | + var DOCUMENTATION_OPTIONS = { |
2480 | + URL_ROOT: '{{ url_root }}', |
2481 | + VERSION: '{{ release|e }}', |
2482 | + COLLAPSE_INDEX: false, |
2483 | + FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}', |
2484 | + HAS_SOURCE: {{ has_source|lower }} |
2485 | + }; |
2486 | + </script> |
2487 | + {%- for scriptfile in script_files %} |
2488 | + <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> |
2489 | + {%- endfor %} |
2490 | +{%- endmacro %} |
2491 | + |
2492 | +{%- macro css() %} |
2493 | + <link rel="stylesheet" href="{{ pathto('_static/percona.com.css', 1) }}" type="text/css" /> |
2494 | + <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" /> |
2495 | + <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" /> |
2496 | + {%- for cssfile in css_files %} |
2497 | + <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> |
2498 | + {%- endfor %} |
2499 | +{%- endmacro %} |
2500 | + |
2501 | +<html xmlns="http://www.w3.org/1999/xhtml"> |
2502 | + <head> |
2503 | + <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" /> |
2504 | + {{ metatags }} |
2505 | + {%- block htmltitle %} |
2506 | + <title>{{ title|striptags|e }}{{ titlesuffix }}</title> |
2507 | + {%- endblock %} |
2508 | + |
2509 | + {{ css() }} |
2510 | + {%- if not embedded %} |
2511 | + {{ script() }} |
2512 | + {%- if use_opensearch %} |
2513 | + <link rel="search" type="application/opensearchdescription+xml" |
2514 | + title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" |
2515 | + href="{{ pathto('_static/opensearch.xml', 1) }}"/> |
2516 | + {%- endif %} |
2517 | + |
2518 | +<script src="{{ pathto('_static/percona.com.js', 1)}}" type="text/javascript"></script> |
2519 | + |
2520 | + {%- if favicon %} |
2521 | + <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> |
2522 | + {%- endif %} |
2523 | + {%- endif %} |
2524 | +{%- block linktags %} |
2525 | + {%- if hasdoc('about') %} |
2526 | + <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" /> |
2527 | + {%- endif %} |
2528 | + {%- if hasdoc('genindex') %} |
2529 | + <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" /> |
2530 | + {%- endif %} |
2531 | + {%- if hasdoc('search') %} |
2532 | + <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" /> |
2533 | + {%- endif %} |
2534 | + {%- if hasdoc('copyright') %} |
2535 | + <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" /> |
2536 | + {%- endif %} |
2537 | + <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" /> |
2538 | + {%- if parents %} |
2539 | + <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" /> |
2540 | + {%- endif %} |
2541 | + {%- if next %} |
2542 | + <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" /> |
2543 | + {%- endif %} |
2544 | + {%- if prev %} |
2545 | + <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" /> |
2546 | + {%- endif %} |
2547 | +{%- endblock %} |
2548 | +{%- block extrahead %} {% endblock %} |
2549 | + </head> |
2550 | + <body> |
2551 | + |
2552 | +{%- block header %} |
2553 | + |
2554 | + <!-- <div id="stickywrapper"> --> |
2555 | + <!-- <div id="stickycontent"> --> |
2556 | + <div id="header"><div class="header"> |
2557 | + <div class="logo"><a href="http://www.percona.com/" onfocus="this.blur()"><img src="http://s3.percona.com/ui-logo.png" alt="Percona Performance Consulting Experts" width="240" height="55" /></a></div> |
2558 | + <div class="right"> |
2559 | + <div class="searchlink"><a onmouseover="SEARCH.Open()"><img id="searchlink-anchor" src="http://s2.percona.com/ui-search.png" alt="" /></a></div> |
2560 | + <span class="inv"><![CDATA[<noindex>]]></span> |
2561 | + <div class="navicontainer"><div class="navi"> |
2562 | + <span id="navilink-span-about-us" ><a id="navilink-a-about-us" href="/about-us/">About Us</a></span><span id="navilink-span-mysql-consulting" ><a id="navilink-a-mysql-consulting" href="/mysql-consulting/">Consulting</a></span><span id="navilink-span-support" ><a id="navilink-a-support" href="/mysql-support/">Support</a></span><span id="navilink-span-training" ><a id="navilink-a-training" href="/training/">Training</a></span><span id="navilink-span-development" ><a id="navilink-a-development" href="/development/">Development</a></span><span id="navilink-span-software" ><a id="navilink-a-software" href="/software/">Software</a></span><span id="navilink-span-events" ><a id="navilink-a-events" href="/live/">Events</a></span><span id="navilink-span-contact" ><a id="navilink-a-contact" href="/contact/">Contact Us</a></span> |
2563 | + </div></div> |
2564 | + |
2565 | + <span class="inv"><![CDATA[</noindex>]]></span> |
2566 | + <span class="inv"><![CDATA[</noindex>]]></span> |
2567 | + </div> |
2568 | + </div></div> |
2569 | + <div id="stripe"></div> |
2570 | + |
2571 | +{% endblock %} |
2572 | + |
2573 | + <!-- <div id="stripe"></div> --> |
2574 | + |
2575 | +{%- block content %} |
2576 | + |
2577 | + |
2578 | + |
2579 | + {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %} |
2580 | + |
2581 | + <div class="document"> |
2582 | + |
2583 | + |
2584 | + |
2585 | + {%- block document %} |
2586 | + <div class="documentwrapper"> |
2587 | + {%- if render_sidebar %} |
2588 | + <div class="bodywrapper"> |
2589 | + {%- endif %} |
2590 | + |
2591 | + {%- block relbar1 %}{{ relbar() }}{% endblock %} |
2592 | + |
2593 | + <div class="body"> |
2594 | + {% block body %} {% endblock %} |
2595 | + </div> |
2596 | + |
2597 | + {%- block relbar2 %}{{ relbar() }} |
2598 | + |
2599 | + {%- if render_sidebar %} |
2600 | + <div class="percona_com_ad" style="margin:auto;width:630px;"><script type="text/javascript" src="http://www.percona.com/ads.php?size=630x80"></script></div> |
2601 | + </div> |
2602 | + {%- endif %} |
2603 | + |
2604 | + |
2605 | + |
2606 | + </div> |
2607 | + |
2608 | + {%- endblock %} |
2609 | + |
2610 | + {%- block sidebar2 %}{{ sidebar() }}{% endblock %} |
2611 | + |
2612 | + <div class="clearer"></div> |
2613 | + |
2614 | + {%- if last_updated %} |
2615 | + {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} |
2616 | + {%- endif %} |
2617 | + |
2618 | + |
2619 | + |
2620 | + |
2621 | + <div class="license"> |
2622 | + |
2623 | + {%- if show_copyright %} |
2624 | + {%- if hasdoc('copyright') %} |
2625 | + {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} |
2626 | + {%- else %} |
2627 | + {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} |
2628 | + {%- endif %} |
2629 | + {%- endif %} |
2630 | + |
2631 | + <br /> |
2632 | + Except where otherwise noted, this documentation is licensed under the following license: |
2633 | + <br /> |
2634 | + <a class="urlextern" rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/"> |
2635 | + CC Attribution-ShareAlike 2.0 Generic</a><br /> |
2636 | + |
2637 | + {%- if show_sphinx %} |
2638 | + {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %} |
2639 | + {%- endif %} |
2640 | + |
2641 | + </div> |
2642 | + |
2643 | + </div> |
2644 | + {%- endblock %} |
2645 | + |
2646 | + {% endblock %} |
2647 | + |
2648 | +{%- block footer %} |
2649 | + |
2650 | + <div class="file-bugs"> |
2651 | + This documentation is developed in Launchpad as part of the <a href="https://code.launchpad.net/percona-server">Percona Server source code</a>.<br/> |
2652 | + If you spotted innacuracies, errors, don't understood it or you think something is missing or should be improved, please <a href="https://bugs.launchpad.net/percona-server/+filebug?field.tags=doc&field.comment=[In:Percona Server Documentation]&?field.tags=doc&field.title=[DOC] ">file a bug</a>. |
2653 | + |
2654 | + </div> |
2655 | + |
2656 | + <div id="footer"> |
2657 | + |
2658 | + <div class="footer"> |
2659 | + <div class="logo"><img width="110" height="25" alt="" src="{{ pathto('_static/ui-footer-logo.png', 1) }}"> |
2660 | + </div> |
2661 | + |
2662 | + <div class="text"> |
2663 | + <span class="inv"><!--[CDATA[<noindex-->]]></span> |
2664 | + Call us: 1-888-316-9775 • <a href="/contact">Contact Us</a><br> |
2665 | + MySQL and InnoDB are trademarks of Oracle Corp.<br> |
2666 | + Proudly running <a href="/software/percona-server/">Percona Server<span id="recentServerVersion"></span></a><br> |
2667 | + Copyright © 2006-2011 Percona Inc.<br> |
2668 | + <a href="/about-us/policies/">Copyright, Trademark, and Privacy Policy</a> • <a href="/sitemap/">Sitemap</a> |
2669 | + <span class="inv"><!--[CDATA[</noindex-->]]></span> |
2670 | + </div> |
2671 | + </div> |
2672 | + |
2673 | + </div> |
2674 | +{%- endblock %} |
2675 | +<span class="inv"><!--[CDATA[<noindex-->]]></span> |
2676 | +<div id="submenus"> |
2677 | + <div class="navi-dropdown" id="navi-dropdown-about-us"> |
2678 | + <div class="navi-dropdown-header-l"><!-- //--></div> |
2679 | + <div class="navi-dropdown-content"><div class="item"><a href="/about-us/our-mission/">Our Mission</a></div><div class="item"><a href="/about-us/why-percona/">Why Percona?</a></div><div class="item"><a href="/about-us/procedures/">Coordinating with Percona</a></div><div class="item"><a href="/about-us/customers/">Customers</a></div><div class="item"><a href="/webinars/">Webinars</a></div><div class="item"><a href="/about-us/mysql-case-studies/">MySQL Case Studies</a></div><div class="item"><a href="/about-us/our-team/">Our Team</a></div><div class="item"><a href="/about-us/books/">Our Books</a></div><div class="item"><a href="/about-us/blogs/">Our Blogs</a></div><div class="item"><a href="/about-us/mysql-white-papers/">MySQL White Papers</a></div><div class="item"><a href="/about-us/conferences/">Conferences</a></div><div class="item"><a href="/about-us/presentations/">Presentations</a></div><div class="item"><a href="/about-us/newsletters/">Newsletters</a></div><div class="item"><a href="/about-us/pressreleases/">Press Releases</a></div><div class="item"><a href="/about-us/careers/">Careers</a></div> </div> |
2680 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2681 | + </div><div class="navi-dropdown" id="navi-dropdown-mysql-consulting"> |
2682 | + <div class="navi-dropdown-header-l"><!-- //--></div> |
2683 | + <div class="navi-dropdown-content"><div class="item"><a href="/mysql-consulting/overview/">MySQL Consulting Overview</a></div><div class="item"><a href="/mysql-consulting/prices/">MySQL Consulting Prices</a></div><div class="item"><a href="/mysql-consulting/architecture/">MySQL Architecture & Design</a></div><div class="item"><a href="/mysql-consulting/mysql-backups/">MySQL Backups</a></div><div class="item"><a href="/mysql-consulting/cloud-computing/">MySQL Cloud Solutions</a></div><div class="item"><a href="/mysql-consulting/cluster/">MySQL Cluster Consulting</a></div><div class="item"><a href="/mysql-consulting/data-warehousing/">MySQL Data Warehousing</a></div><div class="item"><a href="/mysql-consulting/data-recovery/">MySQL Data Recovery</a></div><div class="item"><a href="/mysql-consulting/high-availability/">MySQL High Availability</a></div><div class="item"><a href="/mysql-consulting/mysql-monitoring-graphing/">MySQL Monitoring & Graphing</a></div><div class="item"><a href="/mysql-consulting/mysql-onsite-consulting/">MySQL Onsite Consulting</a></div><div class="item"><a href="/mysql-consulting/performance-audit/">MySQL Performance Audit</a></div><div class="item"><a href="/mysql-consulting/remote-dba/">MySQL Remote DBA</a></div><div class="item"><a href="/mysql-consulting/mysql-replication/">MySQL Replication</a></div><div class="item"><a href="/mysql-consulting/upgrade/">MySQL Version Upgrades</a></div><div class="item"><a href="/mysql-consulting/24x7-emergency/">Emergency 24×7 Consulting</a></div><div class="item"><a href="/mysql-consulting/migration/">Migration to MySQL</a></div><div class="item"><a href="/drizzle-consulting/">Drizzle Consulting</a></div><div class="item"><a href="/mysql-consulting/sphinx/">Sphinx Consulting</a></div><div class="item"><a href="/mysql-consulting/drbd/">DRBD Consulting</a></div><div class="item"><a href="/mysql-consulting/memcached/">Memcached Consulting</a></div><div class="item"><a href="/mysql-consulting/other-services/">Other Consulting Services</a></div> </div> |
2684 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2685 | + </div><div class="navi-dropdown" id="navi-dropdown-support"> |
2686 | + <div class="navi-dropdown-header-l"><!-- //--></div> |
2687 | + <div class="navi-dropdown-content"><div class="item"><a href="/mysql-support/">MySQL Support Overview</a></div><div class="item"><a href="/prices/mysql-support/">MySQL Support Prices</a></div><div class="item"><a href="/mysql-support/policies/">MySQL Support Policies</a></div><div class="item"><a href="/mysql-support/consulting-vs-support/">Consulting vs. Support</a></div><div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div> </div> |
2688 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2689 | + </div><div class="navi-dropdown" id="navi-dropdown-training"> |
2690 | + <div class="navi-dropdown-header-l"><!-- //--></div> |
2691 | + <div class="navi-dropdown-content"><div class="item"><a href="/training/">MySQL Training Overview</a></div><div class="item"><a href="/prices/training/">MySQL Training Prices</a></div><div class="item"><a href="/training/classes/dba/">MySQL DBA Training</a></div><div class="item"><a href="/training/classes/developers/">MySQL Developer Training</a></div><div class="item"><a href="/training/classes/operations/">MySQL Operations Training</a></div><div class="item"><a href="/training/classes/innodb/">InnoDB & XtraDB Training</a></div><div class="item"><a href="/training/classes/custom-onsite/">Custom Onsite Training</a></div> </div> |
2692 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2693 | + </div><div class="navi-dropdown" id="navi-dropdown-development"> |
2694 | + <div class="navi-dropdown-header-l"><!-- //--></div> |
2695 | + <div class="navi-dropdown-content"><div class="item"><a href="/development/mysql/">MySQL Development Overview</a></div><div class="item"><a href="/development/prices/">Custom Development Prices</a></div><div class="item"><a href="/development/maintenance/">MySQL Support Overview</a></div><div class="item"><a href="/development/benchmarking/">Custom Product Evaluation</a></div><div class="item"><a href="/development/maatkit/">Custom Maatkit Development</a></div><div class="item"><a href="/development/custom-tools/">Custom Tools Development</a></div> </div> |
2696 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2697 | + </div><div class="navi-dropdown" id="navi-dropdown-software"> |
2698 | + <div class="navi-dropdown-header-l"><!-- //--></div> |
2699 | + <div class="navi-dropdown-content"><div class="item"><a href="/software/">Percona Software for MySQL</a></div><div class="item"><a href="/software/percona-server/">Percona Server with XtraDB</a></div><div class="item"><a href="/software/percona-xtradb-cluster/">Percona XtraDB Cluster</a></div><div class="item"><a href="/software/percona-xtrabackup/">Percona XtraBackup</a></div><div class="item"><a href="/software/mysql-innodb-data-recovery-tools/">Data Recovery Toolkit</a></div><div class="item"><a href="/software/percona-xtradb/">Percona XtraDB</a></div><div class="item"><a href="/software/percona-toolkit/">Percona Toolkit</a></div><div class="item"><a href="/software/percona-monitoring-plugins/">Percona Monitoring Plugins</a></div><div class="item"><a href="/prices/software/">Software Prices</a></div><div class="item"><a href="/downloads/">Downloads</a></div><div class="item"><a href="/software/repositories/">Repositories</a></div><div class="item"><a href="/software/documentation/">Documentation</a></div><div class="item"><a href="http://forum.percona.com">Forum</a></div><div class="item"><a href="http://groups.google.com/group/percona-discussion">Google Discussion</a></div><div class="item"><a href="https://launchpad.net/percona-server">Launchpad</a></div> </div> |
2700 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2701 | + </div><div class="navi-dropdown" id="navi-dropdown-events"> |
2702 | + <div class="navi-dropdown-header-r"><!-- //--></div> |
2703 | + <div class="navi-dropdown-content"><div class="item"><a href="/live/nyc-2012/">New York 2012</a></div><div class="item"><a href="/live/london-2012/">London 2012</a></div><div class="item"><a href="/live/mysql-conference-2013/">MySQL Conference & Expo 2013</a></div><div class="item"><a href="/live/mysql-conference-2012/">MySQL Conference & Expo 2012</a></div><div class="item"><a href="/live/">Previous Percona Live Events</a></div> </div> |
2704 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2705 | + </div><div class="navi-dropdown" id="navi-dropdown-contact"> |
2706 | + <div class="navi-dropdown-header-r"><!-- //--></div> |
2707 | + <div class="navi-dropdown-content"><div class="item"><a href="/contact/24x7-emergency/">24×7 Emergency</a></div><div class="item"><a href="/contact/sales/">Sales & General Inquiries</a></div><div class="item"><a href="/contact/billing/">Billing Inquiries</a></div><div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div><div class="item"><a href="/contact/phone-directory/">Phone Directory</a></div><div class="item"><a href="/subscribe/">Subscribe to Newsletter</a></div> </div> |
2708 | + <div class="navi-dropdown-footer"><!-- //--></div> |
2709 | + </div> |
2710 | + <div id="search-dropdown" class="search-dropdown"> |
2711 | + <div class="search-dropdown-header"><!-- //--></div> |
2712 | + <div class="search-dropdown-content"> |
2713 | + <div class="search-info">Search Percona.com:</div> |
2714 | + <form method="get" action="http://search.percona.com/search/" id="search-form"> |
2715 | + <div class="form"><input type="text" id="search-input" name="q" maxlength="100"></div> |
2716 | + </form> |
2717 | + </div> |
2718 | + <div class="search-dropdown-footer"><!-- //--></div> |
2719 | + </div> |
2720 | +</div> |
2721 | +<div id="stats"> |
2722 | +<!-- GA //--> |
2723 | + <script src="http://www.percona.com/static/js/urchin.js" type="text/javascript"></script> |
2724 | + <script type="text/javascript"> |
2725 | + _uacct = "UA-343802-3"; |
2726 | + urchinTracker(); |
2727 | + </script> |
2728 | +<!-- /GA //--> |
2729 | +<!-- NAVI //--> |
2730 | +<script type="text/javascript">//<![CDATA[ |
2731 | +var navi = [{id:"about-us", direction: "l"},{id:"mysql-consulting", direction: "l"},{id:"support", direction: "l"},{id:"training", direction: "l"},{id:"development", direction: "l"},{id:"software", direction: "l"},{id:"events", direction: "r"},{id:"contact", direction: "r"}]; |
2732 | +for(var i = 0, c = navi.length; i < c; i++) { |
2733 | +window.jQuery('#navilink-a-' + navi[i].id).bind('mouseover',{id: navi[i].id, direction:navi[i].direction}, function(e) { NAVI.Open(e.data.id, e.data.direction); } ); |
2734 | +} |
2735 | +window.jQuery('#search-form').bind('submit', function() { window.location.href = jQuery('#search-form').attr('action') + jQuery('#search-input').val(); return false; }); |
2736 | +//]]></script> |
2737 | +<!-- /NAVI //--> |
2738 | +<script type="text/javascript"> |
2739 | +//<![CDATA[ |
2740 | +Percona.host = 'www.percona.com'; |
2741 | +Percona.getRecentServerVersion('#recentServerVersion'); |
2742 | +//]]> |
2743 | +</script> |
2744 | +</div> |
2745 | + </body> |
2746 | +</html> |
2747 | + |
2748 | + |
2749 | + |
2750 | +{% if theme_collapsiblesidebar|tobool %} |
2751 | +{% set script_files = script_files + ['_static/sidebar.js'] %} |
2752 | +{% endif %} |
2753 | |
2754 | === removed file 'doc/source/percona-theme/layout.html' |
2755 | --- doc/source/percona-theme/layout.html 2012-04-12 14:06:33 +0000 |
2756 | +++ doc/source/percona-theme/layout.html 1970-01-01 00:00:00 +0000 |
2757 | @@ -1,503 +0,0 @@ |
2758 | -{# |
2759 | - basic/layout.html |
2760 | - ~~~~~~~~~~~~~~~~~ |
2761 | - |
2762 | - Master layout template for Sphinx themes. |
2763 | - |
2764 | - :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. |
2765 | - :license: BSD, see LICENSE for details. |
2766 | -#} |
2767 | -{%- block doctype -%} |
2768 | -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
2769 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2770 | -{%- endblock %} |
2771 | -{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} |
2772 | -{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} |
2773 | -{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and |
2774 | - (sidebars != []) %} |
2775 | -{%- set url_root = pathto('', 1) %} |
2776 | -{# XXX necessary? #} |
2777 | -{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} |
2778 | -{%- if not embedded and docstitle %} |
2779 | - {%- set titlesuffix = " — "|safe + docstitle|e %} |
2780 | -{%- else %} |
2781 | - {%- set titlesuffix = "" %} |
2782 | -{%- endif %} |
2783 | - |
2784 | -{%- macro relbar() %} |
2785 | - <div class="related"> |
2786 | - <h3>{{ _('Navigation') }}</h3> |
2787 | - <ul> |
2788 | - {%- for rellink in rellinks %} |
2789 | - <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}> |
2790 | - <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}" |
2791 | - {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a> |
2792 | - {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li> |
2793 | - {%- endfor %} |
2794 | - {%- block rootrellink %} |
2795 | - <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li> |
2796 | - {%- endblock %} |
2797 | - {%- for parent in parents %} |
2798 | - <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li> |
2799 | - {%- endfor %} |
2800 | - {%- block relbaritems %} {% endblock %} |
2801 | - </ul> |
2802 | - </div> |
2803 | -{%- endmacro %} |
2804 | - |
2805 | -{%- macro sidebar() %} |
2806 | - {%- if render_sidebar %} |
2807 | - <div class="sphinxsidebar"> |
2808 | - <div class="sphinxsidebarwrapper"> |
2809 | - |
2810 | - <div class="side-column-block"><a href="http://www.percona.com/software/percona-server/"><img alt="Percona Server" src="http://s2.percona.com/logo_percona_server_new.png" /></a></div> |
2811 | - |
2812 | - <div class="side-column-block"> |
2813 | - <div class="header">Call Us</div> |
2814 | - <div class="content"> |
2815 | - <div class="numbers"> |
2816 | - <div style="padding-bottom: 4px"> |
2817 | - +1-888-316-9775 (USA - Sales)<br> |
2818 | - +1-208-473-2904 (USA - Sales) |
2819 | - </div> |
2820 | - <div style="padding-bottom: 4px;"> |
2821 | - +44-208-133-0309 (UK - Sales) |
2822 | - </div> |
2823 | - <div style="padding-bottom: 4px;"> |
2824 | - +1-877-862-4316 (Emergency) |
2825 | - </div> |
2826 | - <div> |
2827 | - +1-855-55TRAIN (Training)<br> |
2828 | - +1-925-271-5054 (Training) |
2829 | - </div> |
2830 | - </div> |
2831 | - </div> |
2832 | - </div> |
2833 | - |
2834 | - <div class="side-column-block"> |
2835 | - |
2836 | - <div class="a-btn-container"><a title="Download PDF Manual for Percona Server 5.1" href="http://form.percona.com/PerconaServer51OperationsManual2.html" class="a-btn-new"><span class="a-btn-text">Download Manual</span><span class="a-btn-fixed-slide-text">PDF for 5.1</span><span class="a-btn-icon-right"><span></span></span></a> |
2837 | - </div> |
2838 | - </div> |
2839 | - {%- if sidebars != None %} |
2840 | - {#- new style sidebar: explicitly include/exclude templates #} |
2841 | - {%- for sidebartemplate in sidebars %} |
2842 | - {%- include sidebartemplate %} |
2843 | - {%- endfor %} |
2844 | - {%- else %} |
2845 | - {#- old style sidebars: using blocks -- should be deprecated #} |
2846 | - {%- block serverseries %} |
2847 | - <div class="side-column-block"> |
2848 | - <h3>Percona Server Series</h3> |
2849 | - <ul> |
2850 | - <li><a href="http://www.percona.com/doc/percona-server/5.5/">Percona Server 5.5</a></li> |
2851 | - <li><a href="http://www.percona.com/doc/percona-server/5.1/">Percona Server 5.1</a></li> |
2852 | - </ul> |
2853 | - </div> |
2854 | - {%- endblock %} |
2855 | - {%- block sidebartoc %} |
2856 | - {%- include "localtoc.html" %} |
2857 | - {%- endblock %} |
2858 | - {%- block sidebarrel %} |
2859 | - {%- include "relations.html" %} |
2860 | - {%- endblock %} |
2861 | - {%- block sidebarsourcelink %} |
2862 | - {%- include "sourcelink.html" %} |
2863 | - {%- endblock %} |
2864 | - {%- if customsidebar %} |
2865 | - {%- include customsidebar %} |
2866 | - {%- endif %} |
2867 | - {%- block sidebarsearch %} |
2868 | - {%- include "searchbox.html" %} |
2869 | - {%- endblock %} |
2870 | - {%- endif %} |
2871 | -<br /><br /> |
2872 | - <div class="side-column-block"> |
2873 | - <ul class="side-contact-buttons"> |
2874 | - <li><a href="http://form.percona.com/ContactMe.html" title="Contact Me" class="contact-me"><span>Contact Me</span></a></li> |
2875 | - <li><a href="http://www.percona.com/webinars/" title="Attend a Webinar" class="webinar"><span>Attend a Webinar</span></a></li> |
2876 | - <li><a href="http://www.percona.com/downloads/" title="Download Software" class="download-software"><span>Download Software</span></a></li> |
2877 | - <li><a href="http://www.percona.com/subscribe/" title="Register For Newsletters" class="newsletters"><span>Register For Newsletters</span></a></li> |
2878 | - </ul> |
2879 | - </div> |
2880 | - |
2881 | - </div> |
2882 | - </div> |
2883 | - {%- endif %} |
2884 | -{%- endmacro %} |
2885 | - |
2886 | -{%- macro script() %} |
2887 | - <script type="text/javascript"> |
2888 | - var DOCUMENTATION_OPTIONS = { |
2889 | - URL_ROOT: '{{ url_root }}', |
2890 | - VERSION: '{{ release|e }}', |
2891 | - COLLAPSE_INDEX: false, |
2892 | - FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}', |
2893 | - HAS_SOURCE: {{ has_source|lower }} |
2894 | - }; |
2895 | - </script> |
2896 | - {%- for scriptfile in script_files %} |
2897 | - <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> |
2898 | - {%- endfor %} |
2899 | -{%- endmacro %} |
2900 | - |
2901 | -{%- macro css() %} |
2902 | - <link rel="stylesheet" href="{{ pathto('_static/percona.com.css', 1) }}" type="text/css" /> |
2903 | - <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" /> |
2904 | - <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" /> |
2905 | - {%- for cssfile in css_files %} |
2906 | - <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> |
2907 | - {%- endfor %} |
2908 | -{%- endmacro %} |
2909 | - |
2910 | -<html xmlns="http://www.w3.org/1999/xhtml"> |
2911 | - <head> |
2912 | - <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" /> |
2913 | - {{ metatags }} |
2914 | - {%- block htmltitle %} |
2915 | - <title>{{ title|striptags|e }}{{ titlesuffix }}</title> |
2916 | - {%- endblock %} |
2917 | - |
2918 | - {{ css() }} |
2919 | - {%- if not embedded %} |
2920 | - {{ script() }} |
2921 | - {%- if use_opensearch %} |
2922 | - <link rel="search" type="application/opensearchdescription+xml" |
2923 | - title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" |
2924 | - href="{{ pathto('_static/opensearch.xml', 1) }}"/> |
2925 | - {%- endif %} |
2926 | - |
2927 | -<script src="{{ pathto('_static/percona.com.js', 1)}}" type="text/javascript"></script> |
2928 | - |
2929 | - {%- if favicon %} |
2930 | - <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> |
2931 | - {%- endif %} |
2932 | - {%- endif %} |
2933 | -{%- block linktags %} |
2934 | - {%- if hasdoc('about') %} |
2935 | - <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" /> |
2936 | - {%- endif %} |
2937 | - {%- if hasdoc('genindex') %} |
2938 | - <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" /> |
2939 | - {%- endif %} |
2940 | - {%- if hasdoc('search') %} |
2941 | - <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" /> |
2942 | - {%- endif %} |
2943 | - {%- if hasdoc('copyright') %} |
2944 | - <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" /> |
2945 | - {%- endif %} |
2946 | - <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" /> |
2947 | - {%- if parents %} |
2948 | - <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" /> |
2949 | - {%- endif %} |
2950 | - {%- if next %} |
2951 | - <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" /> |
2952 | - {%- endif %} |
2953 | - {%- if prev %} |
2954 | - <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" /> |
2955 | - {%- endif %} |
2956 | -{%- endblock %} |
2957 | -{%- block extrahead %} {% endblock %} |
2958 | - </head> |
2959 | - <body> |
2960 | - |
2961 | -{%- block header %} |
2962 | - |
2963 | - <!-- <div id="stickywrapper"> --> |
2964 | - <!-- <div id="stickycontent"> --> |
2965 | - <div id="header"><div class="header"> |
2966 | - <div class="logo"><a href="http://www.percona.com/" onfocus="this.blur()"><img src="http://s3.percona.com/ui-logo.png" alt="Percona Performance Consulting Experts" width="240" height="55" /></a></div> |
2967 | - <div class="right"> |
2968 | - <div class="searchlink"><a onmouseover="SEARCH.Open()"><img id="searchlink-anchor" src="http://s2.percona.com/ui-search.png" alt="" /></a></div> |
2969 | - <span class="inv"><![CDATA[<noindex>]]></span> |
2970 | - <div class="navicontainer"><div class="navi"> |
2971 | - <span id="navilink-span-about-us" ><a id="navilink-a-about-us" href="http://www.percona.com/about-us/">About Us</a></span><span id="navilink-span-mysql-consulting" ><a id="navilink-a-mysql-consulting" href="http://www.percona.com/mysql-consulting/">Consulting</a></span><span id="navilink-span-support" ><a id="navilink-a-support" href="http://www.percona.com/mysql-support/">Support</a></span><span id="navilink-span-training" ><a id="navilink-a-training" href="http://www.percona.com/training/">Training</a></span><span id="navilink-span-development" ><a id="navilink-a-development" href="http://www.percona.com/development/">Development</a></span><span id="navilink-span-software" class="selected"><a class="selected" id="navilink-a-software" href="http://www.percona.com/software/">Software</a></span><span id="navilink-span-events" ><a id="navilink-a-events" href="http://www.percona.com/live/">Events</a></span><span id="navilink-span-contact" ><a id="navilink-a-contact" href="http://www.percona.com/contact/">Contact Us</a></span> </div></div> |
2972 | - |
2973 | - <span class="inv"><![CDATA[</noindex>]]></span> |
2974 | - <span class="inv"><![CDATA[</noindex>]]></span> |
2975 | - </div> |
2976 | - </div></div> |
2977 | - <div id="stripe"></div> |
2978 | - |
2979 | -{% endblock %} |
2980 | - |
2981 | - <!-- <div id="stripe"></div> --> |
2982 | - |
2983 | -{%- block content %} |
2984 | - |
2985 | - |
2986 | - |
2987 | - {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %} |
2988 | - |
2989 | - <div class="document"> |
2990 | - |
2991 | - |
2992 | - |
2993 | - {%- block document %} |
2994 | - <div class="documentwrapper"> |
2995 | - {%- if render_sidebar %} |
2996 | - <div class="bodywrapper"> |
2997 | - {%- endif %} |
2998 | - |
2999 | - {%- block relbar1 %}{{ relbar() }}{% endblock %} |
3000 | - |
3001 | - <div class="body"> |
3002 | - {% block body %} {% endblock %} |
3003 | - </div> |
3004 | - |
3005 | - {%- block relbar2 %}{{ relbar() }} |
3006 | - |
3007 | - {%- if render_sidebar %} |
3008 | - </div> |
3009 | - {%- endif %} |
3010 | - |
3011 | - |
3012 | - |
3013 | - </div> |
3014 | - |
3015 | - {%- endblock %} |
3016 | - |
3017 | - {%- block sidebar2 %}{{ sidebar() }}{% endblock %} |
3018 | - |
3019 | - <div class="clearer"></div> |
3020 | - |
3021 | - {%- if last_updated %} |
3022 | - {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} |
3023 | - {%- endif %} |
3024 | - |
3025 | - <div class="license"> |
3026 | - |
3027 | - {%- if show_copyright %} |
3028 | - {%- if hasdoc('copyright') %} |
3029 | - {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} |
3030 | - {%- else %} |
3031 | - {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} |
3032 | - {%- endif %} |
3033 | - {%- endif %} |
3034 | - |
3035 | - <br /> |
3036 | - Except where otherwise noted, this documentation is licensed under the following license: |
3037 | - <br /> |
3038 | - <a class="urlextern" rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/"> |
3039 | - CC Attribution-ShareAlike 2.0 Generic</a><br /> |
3040 | - |
3041 | - {%- if show_sphinx %} |
3042 | - {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %} |
3043 | - {%- endif %} |
3044 | - |
3045 | - </div> |
3046 | - |
3047 | - </div> |
3048 | - {%- endblock %} |
3049 | - |
3050 | - {% endblock %} |
3051 | - |
3052 | -{%- block footer %} |
3053 | - |
3054 | - <div class="file-bugs"> |
3055 | - This documentation is developed in Launchpad as part of the <a href="https://code.launchpad.net/percona-server">Percona Server source code</a>.<br/> |
3056 | - If you spotted innacuracies, errors, don't understood it or you think something is missing or should be improved, please <a href="https://bugs.launchpad.net/percona-server/+filebug?field.tags=doc&field.comment=[In:Percona Server Documentation]&?field.tags=doc&field.title=[DOC] ">file a bug</a>. |
3057 | - |
3058 | - </div> |
3059 | - |
3060 | - <div id="footer"> |
3061 | - |
3062 | - <div class="footer"> |
3063 | - <div class="logo"><img width="110" height="25" alt="" src="{{ pathto('_static/ui-footer-logo.png', 1) }}"> |
3064 | - </div> |
3065 | - |
3066 | - <div class="text"> |
3067 | - <span class="inv"><!--[CDATA[<noindex-->]]></span> |
3068 | - Call us: 1-888-316-9775 • <a href="/contact">Contact Us</a><br> |
3069 | - MySQL and InnoDB are trademarks of Oracle Corp.<br> |
3070 | - Proudly running <a href="/software/percona-server/">Percona Server<span id="recentServerVersion"></span></a><br> |
3071 | - Copyright © 2006-2011 Percona Inc.<br> |
3072 | - <a href="/about-us/policies/">Copyright, Trademark, and Privacy Policy</a> • <a href="/sitemap/">Sitemap</a> |
3073 | - <span class="inv"><!--[CDATA[</noindex-->]]></span> |
3074 | - </div> |
3075 | - </div> |
3076 | - |
3077 | - </div> |
3078 | -{%- endblock %} |
3079 | -<span class="inv"><!--[CDATA[<noindex-->]]></span> |
3080 | -<div id="submenus"> |
3081 | - <div class="navi-dropdown" id="navi-dropdown-about-us"> |
3082 | - <div class="navi-dropdown-header-l"><!-- //--></div> |
3083 | - <div class="navi-dropdown-content"> |
3084 | - <div class="item"><a href="http://www.percona.com/about-us/our-mission/">Our Mission</a></div> |
3085 | - <div class="item"><a href="http://www.percona.com/about-us/why-percona/">Why Percona?</a></div> |
3086 | - <div class="item"><a href="http://www.percona.com/about-us/procedures/">Coordinating with Percona</a></div> |
3087 | - <div class="item"><a href="http://www.percona.com/about-us/customers/">Customers</a></div> |
3088 | - <div class="item"><a href="http://www.percona.com/webinars/">Webinars</a></div> |
3089 | - <div class="item"><a href="http://www.percona.com/about-us/mysql-case-studies/">MySQL Case Studies</a></div> |
3090 | - <div class="item"><a href="http://www.percona.com/about-us/our-team/">Our Team</a></div> |
3091 | - |
3092 | - <div class="item"><a href="http://www.percona.com/about-us/books/">Our Books</a></div> |
3093 | - <div class="item"><a href="http://www.percona.com/about-us/blogs/">Our Blogs</a></div> |
3094 | - <div class="item"><a href="http://www.percona.com/about-us/mysql-white-papers/">MySQL White Papers</a></div> |
3095 | - <div class="item"><a href="http://www.percona.com/about-us/conferences/">Conferences</a></div> |
3096 | - <div class="item"><a href="http://www.percona.com/about-us/presentations/">Presentations</a></div> |
3097 | - <div class="item"><a href="http://www.percona.com/about-us/newsletters/">Newsletters</a></div> |
3098 | - <div class="item"><a href="http://www.percona.com/about-us/pressreleases/">Press Releases</a></div> |
3099 | - <div class="item"><a href="http://www.percona.com/about-us/percona-in-the-news/">In The News</a></div> |
3100 | - <div class="item"><a href="http://www.percona.com/about-us/careers/">Careers</a></div> |
3101 | - |
3102 | - </div> |
3103 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3104 | - </div> |
3105 | - <div class="navi-dropdown" id="navi-dropdown-mysql-consulting"> |
3106 | - <div class="navi-dropdown-header-l"><!-- //--></div> |
3107 | - <div class="navi-dropdown-content"> |
3108 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/overview/">MySQL Consulting Overview</a></div> |
3109 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/prices/">MySQL Consulting Prices</a></div> |
3110 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/architecture/">MySQL Architecture & Design</a></div> |
3111 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-backups/">MySQL Backups</a></div> |
3112 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/cloud-computing/">MySQL Cloud Solutions</a></div> |
3113 | - |
3114 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/cluster/">MySQL Cluster Consulting</a></div> |
3115 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/data-warehousing/">MySQL Data Warehousing</a></div> |
3116 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/data-recovery/">MySQL Data Recovery</a></div> |
3117 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/high-availability/">MySQL High Availability</a></div> |
3118 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-monitoring-graphing/">MySQL Monitoring & Graphing</a></div> |
3119 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-onsite-consulting/">MySQL Onsite Consulting</a></div> |
3120 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/performance-audit/">MySQL Performance Audit</a></div> |
3121 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/remote-dba/">MySQL Remote DBA</a></div> |
3122 | - |
3123 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/mysql-replication/">MySQL Replication</a></div> |
3124 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/upgrade/">MySQL Version Upgrades</a></div> |
3125 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/24x7-emergency/">Emergency 24×7 Consulting</a></div> |
3126 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/migration/">Migration to MySQL</a></div> |
3127 | - <div class="item"><a href="http://www.percona.com/drizzle-consulting/">Drizzle Consulting</a></div> |
3128 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/sphinx/">Sphinx Consulting</a></div> |
3129 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/drbd/">DRBD Consulting</a></div> |
3130 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/memcached/">Memcached Consulting</a></div> |
3131 | - |
3132 | - <div class="item"><a href="http://www.percona.com/mysql-consulting/other-services/">Other Consulting Services</a></div> |
3133 | - </div> |
3134 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3135 | - </div> |
3136 | - <div class="navi-dropdown" id="navi-dropdown-support"> |
3137 | - <div class="navi-dropdown-header-l"><!-- //--></div> |
3138 | - <div class="navi-dropdown-content"> |
3139 | - <div class="item"><a href="http://www.percona.com/mysql-support/">MySQL Support Overview</a></div> |
3140 | - <div class="item"><a href="http://www.percona.com/prices/mysql-support/">MySQL Support Prices</a></div> |
3141 | - <div class="item"><a href="http://www.percona.com/mysql-support/policies/">MySQL Support Policies</a></div> |
3142 | - <div class="item"><a href="http://www.percona.com/mysql-support/consulting-vs-support/">Consulting vs. Support</a></div> |
3143 | - <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div> |
3144 | - |
3145 | - </div> |
3146 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3147 | - </div> |
3148 | - <div class="navi-dropdown" id="navi-dropdown-training"> |
3149 | - <div class="navi-dropdown-header-l"><!-- //--></div> |
3150 | - <div class="navi-dropdown-content"> |
3151 | - <div class="item"><a href="http://www.percona.com/training/">MySQL Training Overview</a></div> |
3152 | - <div class="item"><a href="http://www.percona.com/prices/training/">MySQL Training Prices</a></div> |
3153 | - <div class="item"><a href="http://www.percona.com/training/classes/dba/">MySQL DBA Training</a></div> |
3154 | - <div class="item"><a href="http://www.percona.com/training/classes/developers/">MySQL Developer Training</a></div> |
3155 | - <div class="item"><a href="http://www.percona.com/training/classes/operations/">MySQL Operations Training</a></div> |
3156 | - <div class="item"><a href="http://www.percona.com/training/classes/innodb/">InnoDB & XtraDB Training</a></div> |
3157 | - |
3158 | - <div class="item"><a href="http://www.percona.com/training/classes/custom-onsite/">Custom Onsite Training</a></div> |
3159 | - </div> |
3160 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3161 | - </div> |
3162 | - <div class="navi-dropdown" id="navi-dropdown-development"> |
3163 | - <div class="navi-dropdown-header-l"><!-- //--></div> |
3164 | - <div class="navi-dropdown-content"> |
3165 | - <div class="item"><a href="http://www.percona.com/development/mysql/">MySQL Development Overview</a></div> |
3166 | - <div class="item"><a href="http://www.percona.com/development/prices/">Custom Development Prices</a></div> |
3167 | - <div class="item"><a href="http://www.percona.com/development/maintenance/">MySQL Support Overview</a></div> |
3168 | - <div class="item"><a href="http://www.percona.com/development/benchmarking/">Custom Product Evaluation</a></div> |
3169 | - <div class="item"><a href="http://www.percona.com/development/maatkit/">Custom Maatkit Development</a></div> |
3170 | - |
3171 | - <div class="item"><a href="http://www.percona.com/development/custom-tools/">Custom Tools Development</a></div> |
3172 | - </div> |
3173 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3174 | - </div> |
3175 | - <div class="navi-dropdown" id="navi-dropdown-software"> |
3176 | - <div class="navi-dropdown-header-l"><!-- //--></div> |
3177 | - <div class="navi-dropdown-content"> |
3178 | - <div class="item"><a href="http://www.percona.com/software/">Percona Software for MySQL</a></div> |
3179 | - <div class="item"><a href="http://www.percona.com/software/percona-server/">Percona Server with XtraDB</a></div> |
3180 | - <div class="item"><a href="http://www.percona.com/software/percona-xtradb-cluster/">Percona XtraDB Cluster</a></div> |
3181 | - <div class="item"><a href="http://www.percona.com/software/percona-xtrabackup/">Percona XtraBackup</a></div> |
3182 | - <div class="item"><a href="http://www.percona.com/software/mysql-innodb-data-recovery-tools/">Data Recovery Toolkit</a></div> |
3183 | - <div class="item"><a href="http://www.percona.com/software/percona-xtradb/">Percona XtraDB</a></div> |
3184 | - <div class="item"><a href="http://www.percona.com/software/percona-toolkit/">Percona Toolkit</a></div> |
3185 | - <div class="item"><a href="http://www.percona.com/software/percona-monitoring-plugins/">Percona Monitoring Plugins</a></div> |
3186 | - <div class="item"><a href="http://www.percona.com/prices/software/">Software Prices</a></div> |
3187 | - <div class="item"><a href="http://www.percona.com/downloads/">Downloads</a></div> |
3188 | - <div class="item"><a href="http://www.percona.com/software/repositories/">Repositories</a></div> |
3189 | - <div class="item"><a href="http://www.percona.com/software/documentation/">Documentation</a></div> |
3190 | - <div class="item"><a href="http://forum.percona.com">Forum</a></div> |
3191 | - <div class="item"><a href="http://groups.google.com/group/percona-discussion">Google Discussion</a></div> |
3192 | - <div class="item"><a href="https://launchpad.net/percona-server">Launchpad</a></div> |
3193 | - </div> |
3194 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3195 | - </div> |
3196 | - <div class="navi-dropdown" id="navi-dropdown-events"> |
3197 | - <div class="navi-dropdown-header-r"><!-- //--></div> |
3198 | - <div class="navi-dropdown-content"> |
3199 | - <div class="item"><a href="http://www.percona.com/live/mysql-conference-2012/">MySQL Conference & Expo 2012</a></div> |
3200 | - <div class="item"><a href="http://www.percona.com/live/">Previous Percona Live Events</a></div> |
3201 | - </div> |
3202 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3203 | - </div> |
3204 | - |
3205 | - <div class="navi-dropdown" id="navi-dropdown-contact"> |
3206 | - <div class="navi-dropdown-header-r"><!-- //--></div> |
3207 | - <div class="navi-dropdown-content"> |
3208 | - <div class="item"><a href="http://www.percona.com/contact/24x7-emergency/">24×7 Emergency</a></div> |
3209 | - <div class="item"><a href="http://www.percona.com/contact/sales/">Sales & General Inquiries</a></div> |
3210 | - <div class="item"><a href="http://www.percona.com/contact/billing/">Billing Inquiries</a></div> |
3211 | - <div class="item"><a href="https://customers.percona.com">Customer Portal Login</a></div> |
3212 | - <div class="item"><a href="http://www.percona.com/contact/phone-directory/">Phone Directory</a></div> |
3213 | - <div class="item"><a href="http://www.percona.com/subscribe/">Subscribe to Newsletter</a></div> |
3214 | - |
3215 | - </div> |
3216 | - <div class="navi-dropdown-footer"><!-- //--></div> |
3217 | - </div> |
3218 | - <div id="search-dropdown" class="search-dropdown"> |
3219 | - <div class="search-dropdown-header"><!-- //--></div> |
3220 | - <div class="search-dropdown-content"> |
3221 | - <div class="search-info">Search Percona.com:</div> |
3222 | - <form method="get" action="http://search.percona.com/search/" id="search-form"> |
3223 | - <div class="form"><input type="text" id="search-input" name="q" maxlength="100"></div> |
3224 | - </form> |
3225 | - </div> |
3226 | - <div class="search-dropdown-footer"><!-- //--></div> |
3227 | - </div> |
3228 | -</div> |
3229 | -<div id="stats"> |
3230 | -<!-- GA //--> |
3231 | - <script src="http://www.percona.com/static/js/urchin.js" type="text/javascript"></script> |
3232 | - <script type="text/javascript"> |
3233 | - _uacct = "UA-343802-3"; |
3234 | - urchinTracker(); |
3235 | - </script> |
3236 | -<!-- /GA //--> |
3237 | -<!-- NAVI //--> |
3238 | -<script type="text/javascript">//<![CDATA[ |
3239 | -var navi = [{id:"about-us", direction: "l"},{id:"mysql-consulting", direction: "l"},{id:"support", direction: "l"},{id:"training", direction: "l"},{id:"development", direction: "l"},{id:"software", direction: "l"},{id:"events", direction: "r"},{id:"contact", direction: "r"}]; |
3240 | -for(var i = 0, c = navi.length; i < c; i++) { |
3241 | -window.jQuery('#navilink-a-' + navi[i].id).bind('mouseover',{id: navi[i].id, direction:navi[i].direction}, function(e) { NAVI.Open(e.data.id, e.data.direction); } ); |
3242 | -} |
3243 | -window.jQuery('#search-form').bind('submit', function() { window.location.href = jQuery('#search-form').attr('action') + jQuery('#search-input').val(); return false; }); |
3244 | -//]]></script> |
3245 | -<!-- /NAVI //--> |
3246 | -<script type="text/javascript"> |
3247 | -//<![CDATA[ |
3248 | -Percona.host = 'www.percona.com'; |
3249 | -Percona.getRecentServerVersion('#recentServerVersion'); |
3250 | -//]]> |
3251 | -</script> |
3252 | -</div> |
3253 | - </body> |
3254 | -</html> |
3255 | - |
3256 | - |
3257 | - |
3258 | -{% if theme_collapsiblesidebar|tobool %} |
3259 | -{% set script_files = script_files + ['_static/sidebar.js'] %} |
3260 | -{% endif %} |
3261 | |
3262 | === added file 'doc/source/percona-theme/searchbox.html' |
3263 | --- doc/source/percona-theme/searchbox.html 1970-01-01 00:00:00 +0000 |
3264 | +++ doc/source/percona-theme/searchbox.html 2012-08-15 14:13:58 +0000 |
3265 | @@ -0,0 +1,22 @@ |
3266 | +{# |
3267 | + basic/searchbox.html |
3268 | + ~~~~~~~~~~~~~~~~~~~~ |
3269 | + |
3270 | + Sphinx sidebar template: quick search box. |
3271 | + |
3272 | + :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. |
3273 | + :license: BSD, see LICENSE for details. |
3274 | +#} |
3275 | +{%- if pagename != "search" %} |
3276 | +<div id="searchbox" style="display: none; padding: 3px;"> |
3277 | + <h3>{{ _('Quick search') }}</h3> |
3278 | + <form class="search" action="{{ pathto('search') }}" method="get"> |
3279 | + <input type="text" name="q" size="18" /> |
3280 | + <input type="submit" value="{{ _('Go') }}" /> |
3281 | + <input type="hidden" name="check_keywords" value="yes" /> |
3282 | + <input type="hidden" name="area" value="default" /> |
3283 | + </form> |
3284 | + |
3285 | +</div> |
3286 | +<script type="text/javascript">$('#searchbox').show(0);</script> |
3287 | +{%- endif %} |
3288 | |
3289 | === removed file 'doc/source/percona-theme/searchbox.html' |
3290 | --- doc/source/percona-theme/searchbox.html 2011-09-20 06:59:03 +0000 |
3291 | +++ doc/source/percona-theme/searchbox.html 1970-01-01 00:00:00 +0000 |
3292 | @@ -1,22 +0,0 @@ |
3293 | -{# |
3294 | - basic/searchbox.html |
3295 | - ~~~~~~~~~~~~~~~~~~~~ |
3296 | - |
3297 | - Sphinx sidebar template: quick search box. |
3298 | - |
3299 | - :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. |
3300 | - :license: BSD, see LICENSE for details. |
3301 | -#} |
3302 | -{%- if pagename != "search" %} |
3303 | -<div id="searchbox" style="display: none; padding: 3px;"> |
3304 | - <h3>{{ _('Quick search') }}</h3> |
3305 | - <form class="search" action="{{ pathto('search') }}" method="get"> |
3306 | - <input type="text" name="q" size="18" /> |
3307 | - <input type="submit" value="{{ _('Go') }}" /> |
3308 | - <input type="hidden" name="check_keywords" value="yes" /> |
3309 | - <input type="hidden" name="area" value="default" /> |
3310 | - </form> |
3311 | - |
3312 | -</div> |
3313 | -<script type="text/javascript">$('#searchbox').show(0);</script> |
3314 | -{%- endif %} |
3315 | |
3316 | === added directory 'doc/source/percona-theme/static' |
3317 | === removed directory 'doc/source/percona-theme/static' |
3318 | === added file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png' |
3319 | Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png 2012-08-15 14:13:58 +0000 differ |
3320 | === removed file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png' |
3321 | Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png 1970-01-01 00:00:00 +0000 differ |
3322 | === added file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved' |
3323 | Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 2012-08-15 14:13:58 +0000 differ |
3324 | === removed file 'doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved' |
3325 | Binary files doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/boxes_header_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 differ |
3326 | === added file 'doc/source/percona-theme/static/button-download-icon.png' |
3327 | Binary files doc/source/percona-theme/static/button-download-icon.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/button-download-icon.png 2012-08-15 14:13:58 +0000 differ |
3328 | === removed file 'doc/source/percona-theme/static/button-download-icon.png' |
3329 | Binary files doc/source/percona-theme/static/button-download-icon.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/button-download-icon.png 1970-01-01 00:00:00 +0000 differ |
3330 | === added file 'doc/source/percona-theme/static/button-download-icon.png.moved' |
3331 | Binary files doc/source/percona-theme/static/button-download-icon.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/button-download-icon.png.moved 2012-08-15 14:13:58 +0000 differ |
3332 | === removed file 'doc/source/percona-theme/static/button-download-icon.png.moved' |
3333 | Binary files doc/source/percona-theme/static/button-download-icon.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/button-download-icon.png.moved 1970-01-01 00:00:00 +0000 differ |
3334 | === added file 'doc/source/percona-theme/static/content_list_bulletpoint.png' |
3335 | Binary files doc/source/percona-theme/static/content_list_bulletpoint.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png 2012-08-15 14:13:58 +0000 differ |
3336 | === removed file 'doc/source/percona-theme/static/content_list_bulletpoint.png' |
3337 | Binary files doc/source/percona-theme/static/content_list_bulletpoint.png 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png 1970-01-01 00:00:00 +0000 differ |
3338 | === added file 'doc/source/percona-theme/static/content_list_bulletpoint.png.moved' |
3339 | Binary files doc/source/percona-theme/static/content_list_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png.moved 2012-08-15 14:13:58 +0000 differ |
3340 | === removed file 'doc/source/percona-theme/static/content_list_bulletpoint.png.moved' |
3341 | Binary files doc/source/percona-theme/static/content_list_bulletpoint.png.moved 2012-04-12 14:06:33 +0000 and doc/source/percona-theme/static/content_list_bulletpoint.png.moved 1970-01-01 00:00:00 +0000 differ |
3342 | === added file 'doc/source/percona-theme/static/default.css_t' |
3343 | --- doc/source/percona-theme/static/default.css_t 1970-01-01 00:00:00 +0000 |
3344 | +++ doc/source/percona-theme/static/default.css_t 2012-08-15 14:13:58 +0000 |
3345 | @@ -0,0 +1,433 @@ |
3346 | +/* |
3347 | + * default.css_t |
3348 | + * ~~~~~~~~~~~~~ |
3349 | + * |
3350 | + * Sphinx stylesheet -- default theme. |
3351 | + * |
3352 | + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. |
3353 | + * :license: BSD, see LICENSE for details. |
3354 | + * |
3355 | + */ |
3356 | + |
3357 | +@import url("basic.css"); |
3358 | + |
3359 | +/* -- page layout ----------------------------------------------------------- */ |
3360 | + |
3361 | +body { |
3362 | + font-size: 12px; |
3363 | + line-height: 16px; |
3364 | + font-family: Arial; |
3365 | + |
3366 | + background-color: #fff; |
3367 | + color: #333333; |
3368 | + line-height: 20px; |
3369 | + margin: 0; |
3370 | + padding: 0; |
3371 | + |
3372 | +} |
3373 | + |
3374 | +div.document { |
3375 | + background-color: #fff; |
3376 | + margin: 0 auto; |
3377 | + overflow: hidden; |
3378 | + padding: 30px 0; |
3379 | + width: 960px; |
3380 | +} |
3381 | + |
3382 | +div.documentwrapper { |
3383 | + /* float: left; */ |
3384 | + /* width: 100%; */ |
3385 | + |
3386 | +} |
3387 | + |
3388 | +div.bodywrapper { |
3389 | + margin: 10 0 0 0px; |
3390 | + width: 660px; |
3391 | + float:right; |
3392 | +} |
3393 | + |
3394 | +div.body { |
3395 | + background-color: #fff; |
3396 | + color: #333333; |
3397 | + padding: 0 0 20px; |
3398 | +} |
3399 | + |
3400 | +{%- if theme_rightsidebar|tobool %} |
3401 | +div.bodywrapper { |
3402 | + margin: 0 {{ theme_sidebarwidth }}px 0 0; |
3403 | +} |
3404 | +{%- endif %} |
3405 | + |
3406 | +div.footer { |
3407 | + /* color: {{ theme_footertextcolor }}; */ |
3408 | + /* width: 100%; */ |
3409 | + /* padding: 9px 0 9px 0; */ |
3410 | + /* text-align: center; */ |
3411 | + /* font-size: 75%; */ |
3412 | + font: 80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif; |
3413 | + background: none repeat scroll 0 0 #333333; |
3414 | + border-top: 2px solid #D95200; |
3415 | + overflow: hidden; |
3416 | +} |
3417 | + |
3418 | +div.footer a { |
3419 | + color: {{ theme_footertextcolor }}; |
3420 | + text-decoration: underline; |
3421 | +} |
3422 | + |
3423 | +div.related { |
3424 | + background-color: #ccc; |
3425 | + line-height: 30px; |
3426 | + color: #333; |
3427 | + background: none repeat scroll 0 0 #F8F8F8; |
3428 | + border: 1px solid #E0E0E0; |
3429 | + clear: both; |
3430 | + padding: 10px; |
3431 | + width: 635px; |
3432 | + margin-bottom: 5px; |
3433 | +} |
3434 | + |
3435 | +div.related a { |
3436 | + color: #999; |
3437 | +} |
3438 | + |
3439 | +div.sphinxsidebar { |
3440 | + margin-left: 0px; |
3441 | + margin-right: 30px; |
3442 | + color: #333333; |
3443 | + font-family: Arial,Helvetica,sans-serif; |
3444 | + width: 260px; |
3445 | + {%- if theme_stickysidebar|tobool %} |
3446 | + top: 30px; |
3447 | + bottom: 0; |
3448 | + margin: 0; |
3449 | + position: fixed; |
3450 | + overflow: auto; |
3451 | + height: auto; |
3452 | + {%- endif %} |
3453 | + {%- if theme_rightsidebar|tobool %} |
3454 | + float: right; |
3455 | + {%- if theme_stickysidebar|tobool %} |
3456 | + right: 0; |
3457 | + {%- endif %} |
3458 | + {%- endif %} |
3459 | +} |
3460 | + |
3461 | +{%- if theme_stickysidebar|tobool %} |
3462 | +/* this is nice, but it it leads to hidden headings when jumping |
3463 | + to an anchor */ |
3464 | +/* |
3465 | +div.related { |
3466 | + position: fixed; |
3467 | +} |
3468 | + |
3469 | +div.documentwrapper { |
3470 | + margin-top: 30px; |
3471 | +} |
3472 | +*/ |
3473 | +{%- endif %} |
3474 | + |
3475 | +div.sphinxsidebar h3 { |
3476 | + /* font-family: {{ theme_headfont }}; */ |
3477 | + color: #999; |
3478 | + font-size: 18px; |
3479 | + line-height: 15px; |
3480 | + font-weight: 400; |
3481 | + margin-left: 5px; |
3482 | + padding: 0; |
3483 | +} |
3484 | + |
3485 | +div.sphinxsidebar h3 a { |
3486 | + color: #333; |
3487 | +} |
3488 | + |
3489 | +div.sphinxsidebar a:hover { |
3490 | + /* color: #333; */ |
3491 | +} |
3492 | + |
3493 | +div.sphinxsidebar h4 { |
3494 | + /* font-family: {{ theme_headfont }}; */ |
3495 | + color: #666; |
3496 | + font-size: 18px; |
3497 | + font-weight: normal; |
3498 | + margin: 5px 0 0 5px; |
3499 | + padding: 0; |
3500 | +} |
3501 | + |
3502 | +div.sphinxsidebar p { |
3503 | + color: #333; |
3504 | + margin-bottom: 5px; |
3505 | + margin-left: 5px; |
3506 | +} |
3507 | + |
3508 | +div.sphinxsidebar p.topless { |
3509 | + margin: 5px 10px 10px 10px; |
3510 | +} |
3511 | + |
3512 | +div.sphinxsidebar ul { |
3513 | + margin: 10px; |
3514 | + padding-left: 5px; |
3515 | + color: #333; |
3516 | +} |
3517 | + |
3518 | +div.sphinxsidebar a { |
3519 | + color: #D12907; |
3520 | +} |
3521 | + |
3522 | +div.sphinxsidebar input { |
3523 | + border: 1px solid #999; |
3524 | + font-family: sans-serif; |
3525 | + font-size: 1em; |
3526 | +} |
3527 | + |
3528 | +{% if theme_collapsiblesidebar|tobool %} |
3529 | +/* for collapsible sidebar */ |
3530 | +div#sidebarbutton { |
3531 | + background-color: {{ theme_sidebarbtncolor }}; |
3532 | +} |
3533 | +{% endif %} |
3534 | + |
3535 | +/* -- hyperlink styles ------------------------------------------------------ */ |
3536 | + |
3537 | +a { |
3538 | + color: #D12907; |
3539 | + text-decoration: underline; |
3540 | + border: medium none; |
3541 | + cursor: pointer; |
3542 | +} |
3543 | + |
3544 | +a:visited { |
3545 | + color: #D12907; |
3546 | + text-decoration: underline; |
3547 | +} |
3548 | + |
3549 | +a:hover { |
3550 | + color: #D12907; |
3551 | + text-decoration: underline; |
3552 | +} |
3553 | + |
3554 | +{% if theme_externalrefs|tobool %} |
3555 | +a.external { |
3556 | + text-decoration: none; |
3557 | + border-bottom: 1px dashed {{ theme_linkcolor }}; |
3558 | +} |
3559 | + |
3560 | +a.external:hover { |
3561 | + text-decoration: none; |
3562 | + border-bottom: none; |
3563 | +} |
3564 | + |
3565 | +a.external:visited { |
3566 | + text-decoration: none; |
3567 | + border-bottom: 1px dashed {{ theme_visitedlinkcolor }}; |
3568 | +} |
3569 | +{% endif %} |
3570 | + |
3571 | +/* -- body styles ----------------------------------------------------------- */ |
3572 | + |
3573 | + |
3574 | + |
3575 | +a.headerlink { |
3576 | + color: {{ theme_headlinkcolor }}; |
3577 | + font-size: 0.8em; |
3578 | + padding: 0 4px 0 4px; |
3579 | + text-decoration: none; |
3580 | +} |
3581 | + |
3582 | +a.headerlink:hover { |
3583 | + background-color: {{ theme_headlinkcolor }}; |
3584 | + color: white; |
3585 | +} |
3586 | + |
3587 | +div.body dd, div.body li { |
3588 | + text-align: justify; |
3589 | +} |
3590 | + |
3591 | +div.body dt { |
3592 | + list-style-type: square; |
3593 | + /* margin: 8px 0 8px 30px; */ |
3594 | + padding: 0 4px 0 5px; |
3595 | + |
3596 | +} |
3597 | + |
3598 | +div.body p { |
3599 | + text-align: justify; |
3600 | +/* line-height: 130%;*/ |
3601 | + margin: 10px 0; |
3602 | +} |
3603 | + |
3604 | +/* div.body ul, */ |
3605 | +div.body li { |
3606 | + list-style-type: square; |
3607 | + margin: 8px 0 8px 30px; |
3608 | + padding: 0 4px 0 5px; |
3609 | +} |
3610 | + |
3611 | +.reference em { |
3612 | + font-style: normal; |
3613 | +} |
3614 | + |
3615 | +.std-term { |
3616 | + font-style: normal; |
3617 | + font-weight: 400; |
3618 | + color: #FF7400 |
3619 | +} |
3620 | + |
3621 | +div.admonition p.admonition-title + p { |
3622 | + display: inline; |
3623 | +} |
3624 | + |
3625 | +div.admonition p { |
3626 | + margin-bottom: 5px; |
3627 | +} |
3628 | + |
3629 | +div.admonition pre { |
3630 | + margin-bottom: 5px; |
3631 | +} |
3632 | + |
3633 | +div.admonition ul, div.admonition ol { |
3634 | + margin-bottom: 5px; |
3635 | +} |
3636 | + |
3637 | +div.note { |
3638 | + background-color: #eee; |
3639 | + border: 1px solid #ccc; |
3640 | +} |
3641 | + |
3642 | +div.seealso { |
3643 | + background-color: #ffc; |
3644 | + border: 1px solid #ff6; |
3645 | +} |
3646 | + |
3647 | +div.topic { |
3648 | + background-color: #eee; |
3649 | +} |
3650 | + |
3651 | +div.warning { |
3652 | + background-color: #ffe4e4; |
3653 | + border: 1px solid #f66; |
3654 | +} |
3655 | + |
3656 | +p.admonition-title { |
3657 | + display: inline; |
3658 | +} |
3659 | + |
3660 | +p.admonition-title:after { |
3661 | + content: ":"; |
3662 | +} |
3663 | + |
3664 | +pre { |
3665 | + padding: 10px; |
3666 | + background-color: #F0E6D9/* {{ theme_codebgcolor }} */; |
3667 | + color: {{ theme_codetextcolor }}; |
3668 | + line-height: 120%; |
3669 | + border: 1px dashed #ED9821; |
3670 | + font-size: 80%; |
3671 | + overflow: auto; |
3672 | + /* border-left: none; */ |
3673 | + /* border-right: none; */ |
3674 | +} |
3675 | + |
3676 | +tt { |
3677 | +/* background-color: #ecf0f3; |
3678 | + padding: 0 1px 0 1px; |
3679 | + font-size: 0.95em;*/ |
3680 | + font-weight: 400; |
3681 | +} |
3682 | + |
3683 | +div.body td { |
3684 | + text-align: none; |
3685 | +} |
3686 | + |
3687 | +table.docutils th { |
3688 | + background-color: #DEE7EC; |
3689 | + border: 1px solid #8CACBB; |
3690 | + padding: 3px; |
3691 | + text-align: center; |
3692 | + font-style: normal; |
3693 | + font-weight: 400; |
3694 | +} |
3695 | + |
3696 | +table.docutils td { |
3697 | + border: 1px solid #8CACBB; |
3698 | + padding: 3px; |
3699 | + line-height: 16px; |
3700 | + vertical-align: middle; |
3701 | +} |
3702 | + |
3703 | +.warning tt { |
3704 | + background: #efc2c2; |
3705 | +} |
3706 | + |
3707 | +.note tt { |
3708 | + background: #d6d6d6; |
3709 | +} |
3710 | + |
3711 | +.viewcode-back { |
3712 | + font-family: {{ theme_bodyfont }}; |
3713 | +} |
3714 | + |
3715 | +div.viewcode-block:target { |
3716 | + background-color: #f4debf; |
3717 | + border-top: 1px solid #ac9; |
3718 | + border-bottom: 1px solid #ac9; |
3719 | +} |
3720 | + |
3721 | +.file-bugs { |
3722 | + background: none repeat scroll 0 0 #E8E8E8; |
3723 | + border: 1px solid #E0E0E0; |
3724 | + clear: both; |
3725 | + color: #333333; |
3726 | + padding: 10px; |
3727 | + text-align: center; |
3728 | + font-size: 90%; |
3729 | +} |
3730 | + |
3731 | +div.footer .footer { |
3732 | + margin: 0 auto; |
3733 | + overflow: hidden; |
3734 | + padding: 10px 0; |
3735 | + width: 960px; |
3736 | + border-top: none; |
3737 | +} |
3738 | + |
3739 | +div.footer .footer .logo { |
3740 | + float: left; |
3741 | + overflow: hidden; |
3742 | + padding: 17px 0 0; |
3743 | +} |
3744 | + |
3745 | +div.footer .footer .text { |
3746 | + color: #E0E0E0; |
3747 | + float: right; |
3748 | + font-family: Arial,Helvetica,sans-serif; |
3749 | + font-size: 11px; |
3750 | + line-height: 15px; |
3751 | + overflow: hidden; |
3752 | + text-align: right; |
3753 | +} |
3754 | + |
3755 | +div.license { |
3756 | + font-size: 80%; |
3757 | + /* padding: 0.5em; */ |
3758 | + text-align: center; |
3759 | + margin: 13px 0 -15px; |
3760 | +} |
3761 | + |
3762 | +#sidenavi.noborder { |
3763 | + border-right: medium none; |
3764 | + border-top: medium none; |
3765 | + margin: 0; |
3766 | +} |
3767 | + |
3768 | +#sidenavi { |
3769 | + color: #333333; |
3770 | + /* float: left; */ |
3771 | + font-family: Arial,Helvetica,sans-serif; |
3772 | + font-size: 18px; |
3773 | + line-height: 25px; |
3774 | + overflow: hidden; |
3775 | + padding: 10px 0 8px 0px; |
3776 | + width: 255px; |
3777 | +} |
3778 | + |
3779 | |
3780 | === removed file 'doc/source/percona-theme/static/default.css_t' |
3781 | --- doc/source/percona-theme/static/default.css_t 2012-04-12 14:06:33 +0000 |
3782 | +++ doc/source/percona-theme/static/default.css_t 1970-01-01 00:00:00 +0000 |
3783 | @@ -1,433 +0,0 @@ |
3784 | -/* |
3785 | - * default.css_t |
3786 | - * ~~~~~~~~~~~~~ |
3787 | - * |
3788 | - * Sphinx stylesheet -- default theme. |
3789 | - * |
3790 | - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. |
3791 | - * :license: BSD, see LICENSE for details. |
3792 | - * |
3793 | - */ |
3794 | - |
3795 | -@import url("basic.css"); |
3796 | - |
3797 | -/* -- page layout ----------------------------------------------------------- */ |
3798 | - |
3799 | -body { |
3800 | - font-size: 12px; |
3801 | - line-height: 16px; |
3802 | - font-family: Arial; |
3803 | - |
3804 | - background-color: #fff; |
3805 | - color: #333333; |
3806 | - line-height: 20px; |
3807 | - margin: 0; |
3808 | - padding: 0; |
3809 | - |
3810 | -} |
3811 | - |
3812 | -div.document { |
3813 | - background-color: #fff; |
3814 | - margin: 0 auto; |
3815 | - overflow: hidden; |
3816 | - padding: 30px 0; |
3817 | - width: 960px; |
3818 | -} |
3819 | - |
3820 | -div.documentwrapper { |
3821 | - /* float: left; */ |
3822 | - /* width: 100%; */ |
3823 | - |
3824 | -} |
3825 | - |
3826 | -div.bodywrapper { |
3827 | - margin: 10 0 0 0px; |
3828 | - width: 660px; |
3829 | - float:right; |
3830 | -} |
3831 | - |
3832 | -div.body { |
3833 | - background-color: #fff; |
3834 | - color: #333333; |
3835 | - padding: 0 0 20px; |
3836 | -} |
3837 | - |
3838 | -{%- if theme_rightsidebar|tobool %} |
3839 | -div.bodywrapper { |
3840 | - margin: 0 {{ theme_sidebarwidth }}px 0 0; |
3841 | -} |
3842 | -{%- endif %} |
3843 | - |
3844 | -div.footer { |
3845 | - /* color: {{ theme_footertextcolor }}; */ |
3846 | - /* width: 100%; */ |
3847 | - /* padding: 9px 0 9px 0; */ |
3848 | - /* text-align: center; */ |
3849 | - /* font-size: 75%; */ |
3850 | - font: 80% "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif; |
3851 | - background: none repeat scroll 0 0 #333333; |
3852 | - border-top: 2px solid #D95200; |
3853 | - overflow: hidden; |
3854 | -} |
3855 | - |
3856 | -div.footer a { |
3857 | - color: {{ theme_footertextcolor }}; |
3858 | - text-decoration: underline; |
3859 | -} |
3860 | - |
3861 | -div.related { |
3862 | - background-color: #ccc; |
3863 | - line-height: 30px; |
3864 | - color: #333; |
3865 | - background: none repeat scroll 0 0 #F8F8F8; |
3866 | - border: 1px solid #E0E0E0; |
3867 | - clear: both; |
3868 | - padding: 10px; |
3869 | - width: 635px; |
3870 | - margin-bottom: 5px; |
3871 | -} |
3872 | - |
3873 | -div.related a { |
3874 | - color: #999; |
3875 | -} |
3876 | - |
3877 | -div.sphinxsidebar { |
3878 | - margin-left: 0px; |
3879 | - margin-right: 30px; |
3880 | - color: #333333; |
3881 | - font-family: Arial,Helvetica,sans-serif; |
3882 | - width: 260px; |
3883 | - {%- if theme_stickysidebar|tobool %} |
3884 | - top: 30px; |
3885 | - bottom: 0; |
3886 | - margin: 0; |
3887 | - position: fixed; |
3888 | - overflow: auto; |
3889 | - height: auto; |
3890 | - {%- endif %} |
3891 | - {%- if theme_rightsidebar|tobool %} |
3892 | - float: right; |
3893 | - {%- if theme_stickysidebar|tobool %} |
3894 | - right: 0; |
3895 | - {%- endif %} |
3896 | - {%- endif %} |
3897 | -} |
3898 | - |
3899 | -{%- if theme_stickysidebar|tobool %} |
3900 | -/* this is nice, but it it leads to hidden headings when jumping |
3901 | - to an anchor */ |
3902 | -/* |
3903 | -div.related { |
3904 | - position: fixed; |
3905 | -} |
3906 | - |
3907 | -div.documentwrapper { |
3908 | - margin-top: 30px; |
3909 | -} |
3910 | -*/ |
3911 | -{%- endif %} |
3912 | - |
3913 | -div.sphinxsidebar h3 { |
3914 | - /* font-family: {{ theme_headfont }}; */ |
3915 | - color: #999; |
3916 | - font-size: 18px; |
3917 | - line-height: 15px; |
3918 | - font-weight: 400; |
3919 | - margin-left: 5px; |
3920 | - padding: 0; |
3921 | -} |
3922 | - |
3923 | -div.sphinxsidebar h3 a { |
3924 | - color: #333; |
3925 | -} |
3926 | - |
3927 | -div.sphinxsidebar a:hover { |
3928 | - /* color: #333; */ |
3929 | -} |
3930 | - |
3931 | -div.sphinxsidebar h4 { |
3932 | - /* font-family: {{ theme_headfont }}; */ |
3933 | - color: #666; |
3934 | - font-size: 18px; |
3935 | - font-weight: normal; |
3936 | - margin: 5px 0 0 5px; |
3937 | - padding: 0; |
3938 | -} |
3939 | - |
3940 | -div.sphinxsidebar p { |
3941 | - color: #333; |
3942 | - margin-bottom: 5px; |
3943 | - margin-left: 5px; |
3944 | -} |
3945 | - |
3946 | -div.sphinxsidebar p.topless { |
3947 | - margin: 5px 10px 10px 10px; |
3948 | -} |
3949 | - |
3950 | -div.sphinxsidebar ul { |
3951 | - margin: 10px; |
3952 | - padding-left: 5px; |
3953 | - color: #333; |
3954 | -} |
3955 | - |
3956 | -div.sphinxsidebar a { |
3957 | - color: #D12907; |
3958 | -} |
3959 | - |
3960 | -div.sphinxsidebar input { |
3961 | - border: 1px solid #999; |
3962 | - font-family: sans-serif; |
3963 | - font-size: 1em; |
3964 | -} |
3965 | - |
3966 | -{% if theme_collapsiblesidebar|tobool %} |
3967 | -/* for collapsible sidebar */ |
3968 | -div#sidebarbutton { |
3969 | - background-color: {{ theme_sidebarbtncolor }}; |
3970 | -} |
3971 | -{% endif %} |
3972 | - |
3973 | -/* -- hyperlink styles ------------------------------------------------------ */ |
3974 | - |
3975 | -a { |
3976 | - color: #D12907; |
3977 | - text-decoration: underline; |
3978 | - border: medium none; |
3979 | - cursor: pointer; |
3980 | -} |
3981 | - |
3982 | -a:visited { |
3983 | - color: #D12907; |
3984 | - text-decoration: underline; |
3985 | -} |
3986 | - |
3987 | -a:hover { |
3988 | - color: #D12907; |
3989 | - text-decoration: underline; |
3990 | -} |
3991 | - |
3992 | -{% if theme_externalrefs|tobool %} |
3993 | -a.external { |
3994 | - text-decoration: none; |
3995 | - border-bottom: 1px dashed {{ theme_linkcolor }}; |
3996 | -} |
3997 | - |
3998 | -a.external:hover { |
3999 | - text-decoration: none; |
4000 | - border-bottom: none; |
4001 | -} |
4002 | - |
4003 | -a.external:visited { |
4004 | - text-decoration: none; |
4005 | - border-bottom: 1px dashed {{ theme_visitedlinkcolor }}; |
4006 | -} |
4007 | -{% endif %} |
4008 | - |
4009 | -/* -- body styles ----------------------------------------------------------- */ |
4010 | - |
4011 | - |
4012 | - |
4013 | -a.headerlink { |
4014 | - color: {{ theme_headlinkcolor }}; |
4015 | - font-size: 0.8em; |
4016 | - padding: 0 4px 0 4px; |
4017 | - text-decoration: none; |
4018 | -} |
4019 | - |
4020 | -a.headerlink:hover { |
4021 | - background-color: {{ theme_headlinkcolor }}; |
4022 | - color: white; |
4023 | -} |
4024 | - |
4025 | -div.body dd, div.body li { |
4026 | - text-align: justify; |
4027 | -} |
4028 | - |
4029 | -div.body dt { |
4030 | - list-style-type: square; |
4031 | - /* margin: 8px 0 8px 30px; */ |
4032 | - padding: 0 4px 0 5px; |
4033 | - |
4034 | -} |
4035 | - |
4036 | -div.body p { |
4037 | - text-align: justify; |
4038 | -/* line-height: 130%;*/ |
4039 | - margin: 10px 0; |
4040 | -} |
4041 | - |
4042 | -/* div.body ul, */ |
4043 | -div.body li { |
4044 | - list-style-type: square; |
4045 | - margin: 8px 0 8px 30px; |
4046 | - padding: 0 4px 0 5px; |
4047 | -} |
4048 | - |
4049 | -.reference em { |
4050 | - font-style: normal; |
4051 | -} |
4052 | - |
4053 | -.std-term { |
4054 | - font-style: normal; |
4055 | - font-weight: 400; |
4056 | - color: #FF7400 |
4057 | -} |
4058 | - |
4059 | -div.admonition p.admonition-title + p { |
4060 | - display: inline; |
4061 | -} |
4062 | - |
4063 | -div.admonition p { |
4064 | - margin-bottom: 5px; |
4065 | -} |
4066 | - |
4067 | -div.admonition pre { |
4068 | - margin-bottom: 5px; |
4069 | -} |
4070 | - |
4071 | -div.admonition ul, div.admonition ol { |
4072 | - margin-bottom: 5px; |
4073 | -} |
4074 | - |
4075 | -div.note { |
4076 | - background-color: #eee; |
4077 | - border: 1px solid #ccc; |
4078 | -} |
4079 | - |
4080 | -div.seealso { |
4081 | - background-color: #ffc; |
4082 | - border: 1px solid #ff6; |
4083 | -} |
4084 | - |
4085 | -div.topic { |
4086 | - background-color: #eee; |
4087 | -} |
4088 | - |
4089 | -div.warning { |
4090 | - background-color: #ffe4e4; |
4091 | - border: 1px solid #f66; |
4092 | -} |
4093 | - |
4094 | -p.admonition-title { |
4095 | - display: inline; |
4096 | -} |
4097 | - |
4098 | -p.admonition-title:after { |
4099 | - content: ":"; |
4100 | -} |
4101 | - |
4102 | -pre { |
4103 | - padding: 10px; |
4104 | - background-color: #F0E6D9/* {{ theme_codebgcolor }} */; |
4105 | - color: {{ theme_codetextcolor }}; |
4106 | - line-height: 120%; |
4107 | - border: 1px dashed #ED9821; |
4108 | - font-size: 80%; |
4109 | - overflow: auto; |
4110 | - /* border-left: none; */ |
4111 | - /* border-right: none; */ |
4112 | -} |
4113 | - |
4114 | -tt { |
4115 | -/* background-color: #ecf0f3; |
4116 | - padding: 0 1px 0 1px; |
4117 | - font-size: 0.95em;*/ |
4118 | - font-weight: 400; |
4119 | -} |
4120 | - |
4121 | -div.body td { |
4122 | - text-align: none; |
4123 | -} |
4124 | - |
4125 | -table.docutils th { |
4126 | - background-color: #DEE7EC; |
4127 | - border: 1px solid #8CACBB; |
4128 | - padding: 3px; |
4129 | - text-align: center; |
4130 | - font-style: normal; |
4131 | - font-weight: 400; |
4132 | -} |
4133 | - |
4134 | -table.docutils td { |
4135 | - border: 1px solid #8CACBB; |
4136 | - padding: 3px; |
4137 | - line-height: 16px; |
4138 | - vertical-align: middle; |
4139 | -} |
4140 | - |
4141 | -.warning tt { |
4142 | - background: #efc2c2; |
4143 | -} |
4144 | - |
4145 | -.note tt { |
4146 | - background: #d6d6d6; |
4147 | -} |
4148 | - |
4149 | -.viewcode-back { |
4150 | - font-family: {{ theme_bodyfont }}; |
4151 | -} |
4152 | - |
4153 | -div.viewcode-block:target { |
4154 | - background-color: #f4debf; |
4155 | - border-top: 1px solid #ac9; |
4156 | - border-bottom: 1px solid #ac9; |
4157 | -} |
4158 | - |
4159 | -.file-bugs { |
4160 | - background: none repeat scroll 0 0 #E8E8E8; |
4161 | - border: 1px solid #E0E0E0; |
4162 | - clear: both; |
4163 | - color: #333333; |
4164 | - padding: 10px; |
4165 | - text-align: center; |
4166 | - font-size: 90%; |
4167 | -} |
4168 | - |
4169 | -div.footer .footer { |
4170 | - margin: 0 auto; |
4171 | - overflow: hidden; |
4172 | - padding: 10px 0; |
4173 | - width: 960px; |
4174 | - border-top: none; |
4175 | -} |
4176 | - |
4177 | -div.footer .footer .logo { |
4178 | - float: left; |
4179 | - overflow: hidden; |
4180 | - padding: 17px 0 0; |
4181 | -} |
4182 | - |
4183 | -div.footer .footer .text { |
4184 | - color: #E0E0E0; |
4185 | - float: right; |
4186 | - font-family: Arial,Helvetica,sans-serif; |
4187 | - font-size: 11px; |
4188 | - line-height: 15px; |
4189 | - overflow: hidden; |
4190 | - text-align: right; |
4191 | -} |
4192 | - |
4193 | -div.license { |
4194 | - font-size: 80%; |
4195 | - /* padding: 0.5em; */ |
4196 | - text-align: center; |
4197 | - margin: 13px 0 -15px; |
4198 | -} |
4199 | - |
4200 | -#sidenavi.noborder { |
4201 | - border-right: medium none; |
4202 | - border-top: medium none; |
4203 | - margin: 0; |
4204 | -} |
4205 | - |
4206 | -#sidenavi { |
4207 | - color: #333333; |
4208 | - /* float: left; */ |
4209 | - font-family: Arial,Helvetica,sans-serif; |
4210 | - font-size: 18px; |
4211 | - line-height: 25px; |
4212 | - overflow: hidden; |
4213 | - padding: 10px 0 8px 0px; |
4214 | - width: 255px; |
4215 | -} |
4216 | - |
4217 | |
4218 | === added file 'doc/source/percona-theme/static/email-small.png' |
4219 | Binary files doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 and doc/source/percona-theme/static/email-small.png 2012-08-15 14:13:58 +0000 differ |
4220 | === removed file 'doc/source/percona-theme/static/email-small.png' |
4221 | Binary files doc/source/percona-theme/static/email-small.png 2011-09-20 06:59:03 +0000 and doc/source/percona-theme/static/email-small.png 1970-01-01 00:00:00 +0000 differ |
4222 | === added file 'doc/source/percona-theme/static/jquery.min.js' |
4223 | --- doc/source/percona-theme/static/jquery.min.js 1970-01-01 00:00:00 +0000 |
4224 | +++ doc/source/percona-theme/static/jquery.min.js 2012-08-15 14:13:58 +0000 |
4225 | @@ -0,0 +1,154 @@ |
4226 | +/*! |
4227 | + * jQuery JavaScript Library v1.4.2 |
4228 | + * http://jquery.com/ |
4229 | + * |
4230 | + * Copyright 2010, John Resig |
4231 | + * Dual licensed under the MIT or GPL Version 2 licenses. |
4232 | + * http://jquery.org/license |
4233 | + * |
4234 | + * Includes Sizzle.js |
4235 | + * http://sizzlejs.com/ |
4236 | + * Copyright 2010, The Dojo Foundation |
4237 | + * Released under the MIT, BSD, and GPL Licenses. |
4238 | + * |
4239 | + * Date: Sat Feb 13 22:33:48 2010 -0500 |
4240 | + */ |
4241 | +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? |
4242 | +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= |
4243 | +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, |
4244 | +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= |
4245 | +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, |
4246 | +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& |
4247 | +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, |
4248 | +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== |
4249 | +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, |
4250 | +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| |
4251 | +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", |
4252 | +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, |
4253 | +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ |
4254 | +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], |
4255 | +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== |
4256 | +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& |
4257 | +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= |
4258 | +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; |
4259 | +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, |
4260 | +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= |
4261 | +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= |
4262 | +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, |
4263 | +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; |
4264 | +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, |
4265 | +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== |
4266 | +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, |
4267 | +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", |
4268 | +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", |
4269 | +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= |
4270 | +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= |
4271 | +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= |
4272 | +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); |
4273 | +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, |
4274 | +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); |
4275 | +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), |
4276 | +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= |
4277 | +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= |
4278 | +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& |
4279 | +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; |
4280 | +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), |
4281 | +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| |
4282 | +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, |
4283 | +"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= |
4284 | +a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, |
4285 | +isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= |
4286 | +{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; |
4287 | +if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", |
4288 | +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, |
4289 | +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, |
4290 | +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& |
4291 | +!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, |
4292 | +toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, |
4293 | +u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), |
4294 | +function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; |
4295 | +if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, |
4296 | +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); |
4297 | +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| |
4298 | +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; |
4299 | +for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- |
4300 | +1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, |
4301 | +CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, |
4302 | +relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= |
4303 | +l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; |
4304 | +h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, |
4305 | +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, |
4306 | +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, |
4307 | +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, |
4308 | +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= |
4309 | +h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= |
4310 | +m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== |
4311 | +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, |
4312 | +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| |
4313 | +!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= |
4314 | +h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& |
4315 | +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; |
4316 | +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); |
4317 | +(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: |
4318 | +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, |
4319 | +gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; |
4320 | +c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= |
4321 | +{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== |
4322 | +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", |
4323 | +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? |
4324 | +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== |
4325 | +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? |
4326 | +a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= |
4327 | +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, |
4328 | +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, |
4329 | +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, |
4330 | +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); |
4331 | +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, |
4332 | +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& |
4333 | +this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| |
4334 | +u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== |
4335 | +1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); |
4336 | +return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", |
4337 | +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= |
4338 | +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? |
4339 | +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= |
4340 | +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= |
4341 | +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, |
4342 | +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= |
4343 | +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= |
4344 | +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== |
4345 | +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, |
4346 | +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), |
4347 | +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, |
4348 | +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& |
4349 | +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? |
4350 | +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== |
4351 | +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= |
4352 | +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", |
4353 | +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| |
4354 | +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); |
4355 | +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== |
4356 | +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== |
4357 | +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; |
4358 | +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); |
4359 | +this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], |
4360 | +"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, |
4361 | +animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= |
4362 | +j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); |
4363 | +this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== |
4364 | +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| |
4365 | +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; |
4366 | +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= |
4367 | +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, |
4368 | +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| |
4369 | +c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? |
4370 | +function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= |
4371 | +this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; |
4372 | +k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& |
4373 | +f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; |
4374 | +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); |
4375 | +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, |
4376 | +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- |
4377 | +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": |
4378 | +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in |
4379 | +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); |
4380 | |
4381 | === removed file 'doc/source/percona-theme/static/jquery.min.js' |
4382 | --- doc/source/percona-theme/static/jquery.min.js 2011-09-20 06:59:03 +0000 |
4383 | +++ doc/source/percona-theme/static/jquery.min.js 1970-01-01 00:00:00 +0000 |
4384 | @@ -1,154 +0,0 @@ |
4385 | -/*! |
4386 | - * jQuery JavaScript Library v1.4.2 |
4387 | - * http://jquery.com/ |
4388 | - * |
4389 | - * Copyright 2010, John Resig |
4390 | - * Dual licensed under the MIT or GPL Version 2 licenses. |
4391 | - * http://jquery.org/license |
4392 | - * |
4393 | - * Includes Sizzle.js |
4394 | - * http://sizzlejs.com/ |
4395 | - * Copyright 2010, The Dojo Foundation |
4396 | - * Released under the MIT, BSD, and GPL Licenses. |
4397 | - * |
4398 | - * Date: Sat Feb 13 22:33:48 2010 -0500 |
4399 | - */ |
4400 | -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? |
4401 | -e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= |
4402 | -j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, |
4403 | -"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= |
4404 | -true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, |
4405 | -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& |
4406 | -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, |
4407 | -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== |
4408 | -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, |
4409 | -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| |
4410 | -c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", |
4411 | -L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, |
4412 | -"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ |
4413 | -a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], |
4414 | -d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== |
4415 | -a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& |
4416 | -!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= |
4417 | -true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; |
4418 | -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, |
4419 | -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= |
4420 | -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= |
4421 | -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, |
4422 | -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; |
4423 | -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, |
4424 | -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== |
4425 | -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, |
4426 | -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", |
4427 | -i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", |
4428 | -" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= |
4429 | -this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= |
4430 | -e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= |
4431 | -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); |
4432 | -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, |
4433 | -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); |
4434 | -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), |
4435 | -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= |
4436 | -null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= |
4437 | -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& |
4438 | -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; |
4439 | -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), |
4440 | -fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| |
4441 | -d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, |
4442 | -"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= |
4443 | -a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, |
4444 | -isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= |
4445 | -{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; |
4446 | -if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", |
4447 | -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, |
4448 | -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, |
4449 | -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& |
4450 | -!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, |
4451 | -toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, |
4452 | -u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), |
4453 | -function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; |
4454 | -if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, |
4455 | -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); |
4456 | -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| |
4457 | -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; |
4458 | -for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- |
4459 | -1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, |
4460 | -CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, |
4461 | -relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= |
4462 | -l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; |
4463 | -h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, |
4464 | -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, |
4465 | -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, |
4466 | -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, |
4467 | -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= |
4468 | -h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= |
4469 | -m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== |
4470 | -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, |
4471 | -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| |
4472 | -!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= |
4473 | -h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& |
4474 | -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; |
4475 | -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); |
4476 | -(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: |
4477 | -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, |
4478 | -gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; |
4479 | -c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= |
4480 | -{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== |
4481 | -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", |
4482 | -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? |
4483 | -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== |
4484 | -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? |
4485 | -a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= |
4486 | -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, |
4487 | -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, |
4488 | -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, |
4489 | -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); |
4490 | -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, |
4491 | -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& |
4492 | -this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| |
4493 | -u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== |
4494 | -1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); |
4495 | -return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", |
4496 | -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= |
4497 | -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? |
4498 | -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= |
4499 | -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= |
4500 | -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, |
4501 | -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= |
4502 | -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= |
4503 | -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== |
4504 | -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, |
4505 | -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), |
4506 | -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, |
4507 | -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& |
4508 | -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? |
4509 | -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== |
4510 | -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= |
4511 | -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", |
4512 | -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| |
4513 | -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); |
4514 | -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== |
4515 | -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== |
4516 | -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; |
4517 | -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); |
4518 | -this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], |
4519 | -"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, |
4520 | -animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= |
4521 | -j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); |
4522 | -this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== |
4523 | -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| |
4524 | -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; |
4525 | -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= |
4526 | -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, |
4527 | -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| |
4528 | -c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? |
4529 | -function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= |
4530 | -this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; |
4531 | -k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& |
4532 | -f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; |
4533 | -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); |
4534 | -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, |
4535 | -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- |
4536 | -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": |
4537 | -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in |
4538 | -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); |
4539 | |
4540 | === added file 'doc/source/percona-theme/static/percona.com.css' |
4541 | --- doc/source/percona-theme/static/percona.com.css 1970-01-01 00:00:00 +0000 |
4542 | +++ doc/source/percona-theme/static/percona.com.css 2012-08-15 14:13:58 +0000 |
4543 | @@ -0,0 +1,1850 @@ |
4544 | +body, html{ |
4545 | + height:100%; |
4546 | + margin:0; |
4547 | + padding:0; |
4548 | + font-size: 12px; |
4549 | + line-height: 16px; |
4550 | + font-family: Arial; |
4551 | + color: #333333; |
4552 | +} |
4553 | + |
4554 | +form{ |
4555 | + display:inline |
4556 | +} |
4557 | + |
4558 | +a, a:visited{ |
4559 | + border:none; |
4560 | + cursor:pointer; |
4561 | + color: #d5390b; |
4562 | + text-decoration: underline; |
4563 | +} |
4564 | +a:hover |
4565 | +{ |
4566 | + color: #712000; |
4567 | + text-decoration: underline; |
4568 | +} |
4569 | + |
4570 | +img{ |
4571 | + border:none |
4572 | +} |
4573 | + |
4574 | +div,img{ |
4575 | + behavior:url(/static/css/iepngfix.htc) |
4576 | +} |
4577 | + |
4578 | +em |
4579 | +{ |
4580 | + font-style: italic; |
4581 | +} |
4582 | + |
4583 | +del |
4584 | +{ |
4585 | + text-decoration: line-through; |
4586 | +} |
4587 | + |
4588 | +.hidden{ |
4589 | + display:none |
4590 | +} |
4591 | + |
4592 | +strong { |
4593 | + font-weight: bold; |
4594 | +} |
4595 | + |
4596 | +html, body { |
4597 | + height: 100%; |
4598 | +} |
4599 | + |
4600 | +#stickywrapper { |
4601 | + position: relative; |
4602 | + min-height: 100%; |
4603 | +} |
4604 | + |
4605 | +* html #stickywrapper { |
4606 | + height: 100%; |
4607 | +} |
4608 | + |
4609 | +#stickycontent { |
4610 | + padding-bottom: 102px; |
4611 | +} |
4612 | + |
4613 | +#stickyfooter { |
4614 | + position: relative; |
4615 | + margin: -97px auto 0 auto; |
4616 | +} |
4617 | +a.links |
4618 | +{ |
4619 | + font-style: oblique; |
4620 | + text-decoration: underline; |
4621 | +} |
4622 | +span.subpart |
4623 | +{ |
4624 | + font-weight: bold; |
4625 | +} |
4626 | + |
4627 | +/** |
4628 | + * LAYOUT |
4629 | + */ |
4630 | + |
4631 | +#header{ |
4632 | + background:#333; |
4633 | + height:95px; |
4634 | + overflow:hidden; |
4635 | + zoom:1 |
4636 | +} |
4637 | + |
4638 | +#header .header{ |
4639 | + height:95px; |
4640 | + margin:0 auto; |
4641 | + overflow:hidden; |
4642 | + width:960px; |
4643 | + zoom:1 |
4644 | +} |
4645 | +#header .header .logo{ |
4646 | + float:left; |
4647 | + overflow:hidden; |
4648 | + padding:20px 0; |
4649 | + width:240px; |
4650 | + zoom:1 |
4651 | +} |
4652 | + |
4653 | +#header .header .logo |
4654 | +{ |
4655 | + overflow: hidden; |
4656 | + zoom: 1; |
4657 | + float: left; |
4658 | + width: 240px; |
4659 | + padding: 20px 0px; |
4660 | +} |
4661 | + |
4662 | +#header .header .right |
4663 | +{ |
4664 | + overflow: hidden; |
4665 | + zoom: 1; |
4666 | + float: left; |
4667 | + width: 720px; |
4668 | + height: 35px; |
4669 | + padding: 30px 0px; |
4670 | +} |
4671 | + |
4672 | + |
4673 | +#header .header .right .searchlink |
4674 | +{ |
4675 | + overflow: hidden; |
4676 | + zoom: 1; |
4677 | + width: 35px; |
4678 | + height: 35px; |
4679 | + float: right; |
4680 | + padding: 0px 0px 0px 10px; |
4681 | +} |
4682 | + |
4683 | + |
4684 | +#header .header .right .navicontainer |
4685 | +{ |
4686 | + overflow: hidden; |
4687 | + zoom: 1; |
4688 | + float: right; |
4689 | + height: 35px; |
4690 | + background: #ffffff url(ui-navi-l.png) top left no-repeat; |
4691 | +} |
4692 | + |
4693 | +#header .header .right .navi |
4694 | +{ |
4695 | + overflow: hidden; |
4696 | + zoom: 1; |
4697 | + height: 27px; |
4698 | + padding: 4px 10px; |
4699 | + background: url(ui-navi-r.png) top right no-repeat; |
4700 | +} |
4701 | + |
4702 | +#header .header .right .navicontainer .navi span |
4703 | +{ |
4704 | + overflow: hidden; |
4705 | + zoom: 1; |
4706 | + height: 27px; |
4707 | + float: left; |
4708 | + margin: 0px; |
4709 | +} |
4710 | +#header .header .right .navicontainer .navi span:hover |
4711 | +{ |
4712 | + background: #f0f0f0 url(ui-navi-hover-l.png) top left no-repeat; |
4713 | +} |
4714 | +#header .header .right .navicontainer .navi span.selected, #header .header .right .navicontainer .navi span.selected:hover |
4715 | +{ |
4716 | + background: #d5390b url(ui-navi-sel-l.png) top left no-repeat; |
4717 | +} |
4718 | + |
4719 | +#header .header .right .navicontainer .navi span a, #header .header .right .navicontainer .navi span a:visited |
4720 | +{ |
4721 | + display: block; |
4722 | + padding: 6px 10px 4px 10px; |
4723 | + height: 17px; |
4724 | + font-family: Arial, Helvetica, sans-serif; |
4725 | + font-size: 14px; |
4726 | + line-height: 14px; |
4727 | + color: #000000; |
4728 | + text-decoration: none; |
4729 | +} |
4730 | +#header .header .right .navicontainer .navi span a:hover |
4731 | +{ |
4732 | + background: url(ui-navi-hover-r.png) top right no-repeat; |
4733 | +} |
4734 | +#header .header .right .navicontainer .navi span.selected a.selected, #header .header .right .navicontainer .navi span.selected a.selected:visited, #header .header .right .navicontainer .navi span.selected a.selected:hover |
4735 | +{ |
4736 | + background: url(ui-navi-sel-r.png) top right no-repeat; |
4737 | + color: #ffffff; |
4738 | +} |
4739 | + |
4740 | + |
4741 | + |
4742 | +/* |
4743 | + * Banners |
4744 | + */ |
4745 | + |
4746 | +#slogan |
4747 | +{ |
4748 | + overflow: hidden; |
4749 | + zoom: 1; |
4750 | + height: 125px; |
4751 | + background: #d24300 url(ui-orange-front.png) bottom center no-repeat; |
4752 | + text-align: center; |
4753 | +} |
4754 | + |
4755 | +#stripe |
4756 | +{ |
4757 | + overflow: hidden; |
4758 | + zoom: 1; |
4759 | + height: 20px; |
4760 | + background: #d24300 url(ui-orange-content.png) top center no-repeat; |
4761 | +} |
4762 | + |
4763 | + |
4764 | + |
4765 | +/* |
4766 | + * Footer |
4767 | + */ |
4768 | + |
4769 | +#footer |
4770 | +{ |
4771 | + overflow: hidden; |
4772 | + zoom: 1; |
4773 | + background: #333333; |
4774 | + border-top: 2px #d95200 solid; |
4775 | +} |
4776 | + |
4777 | +#footer .footer |
4778 | +{ |
4779 | + overflow: hidden; |
4780 | + zoom: 1; |
4781 | + width: 960px; |
4782 | + margin: 0px auto; |
4783 | + padding: 10px 0px; |
4784 | +} |
4785 | + |
4786 | +#footer .footer .logo |
4787 | +{ |
4788 | + overflow: hidden; |
4789 | + zoom: 1; |
4790 | + float: left; |
4791 | + padding: 17px 0px 0px 0px; |
4792 | +} |
4793 | + |
4794 | +#footer .footer .text |
4795 | +{ |
4796 | + overflow: hidden; |
4797 | + zoom: 1; |
4798 | + float: right; |
4799 | + text-align: right; |
4800 | + font-family: Arial, Helvetica, sans-serif; |
4801 | + font-size: 11px; |
4802 | + line-height: 15px; |
4803 | + color: #e0e0e0; |
4804 | +} |
4805 | + |
4806 | +#footer .footer .text a, #footer .footer .text a:visited |
4807 | +{ |
4808 | + color: #e0e0e0; |
4809 | + text-decoration: none; |
4810 | +} |
4811 | +#footer .footer .text a:hover |
4812 | +{ |
4813 | + color: #ffffff; |
4814 | + text-decoration: underline; |
4815 | +} |
4816 | + |
4817 | + |
4818 | +/* |
4819 | + * Menu Dropdowns |
4820 | + */ |
4821 | + |
4822 | +div.navi-dropdown |
4823 | +{ |
4824 | + display: none; |
4825 | + position: absolute; |
4826 | + overflow: hidden; |
4827 | + zoom: 1; |
4828 | + width: 255px; |
4829 | + z-index: 900; |
4830 | +} |
4831 | + |
4832 | +div.navi-dropdown .navi-dropdown-header-l |
4833 | +{ |
4834 | + overflow: hidden; |
4835 | + zoom: 1; |
4836 | + width: 255px; |
4837 | + height: 20px; |
4838 | + background: url(ui-dropdown-header-l.png) top left no-repeat; |
4839 | +} |
4840 | + |
4841 | +div.navi-dropdown .navi-dropdown-header-r |
4842 | +{ |
4843 | + overflow: hidden; |
4844 | + zoom: 1; |
4845 | + width: 255px; |
4846 | + height: 20px; |
4847 | + background: url(ui-dropdown-header-r.png) top left no-repeat; |
4848 | +} |
4849 | + |
4850 | +div.navi-dropdown .navi-dropdown-content |
4851 | +{ |
4852 | + overflow: hidden; |
4853 | + zoom: 1; |
4854 | + width: 225px; |
4855 | + padding: 0px 15px 5px 15px; |
4856 | + background: #ffffff url(ui-dropdown-bg.png) repeat-y; |
4857 | + font-family: Arial, Helvetica, sans-serif; |
4858 | + font-size: 14px; |
4859 | + line-height: 20px; |
4860 | + color: #333333; |
4861 | +} |
4862 | + |
4863 | +div.navi-dropdown .navi-dropdown-content .item |
4864 | +{ |
4865 | + padding: 3px 0px 1px 0px; |
4866 | +} |
4867 | + |
4868 | +div.navi-dropdown .navi-dropdown-content a, div.navi-dropdown .navi-dropdown-content a:visited |
4869 | +{ |
4870 | + display: block; |
4871 | + color: #333333; |
4872 | + text-decoration: none; |
4873 | +} |
4874 | +div.navi-dropdown .navi-dropdown-content a:hover |
4875 | +{ |
4876 | + color: #d12907; |
4877 | + text-decoration: underline; |
4878 | +} |
4879 | + |
4880 | +div.navi-dropdown .navi-dropdown-footer |
4881 | +{ |
4882 | + overflow: hidden; |
4883 | + zoom: 1; |
4884 | + width: 255px; |
4885 | + height: 10px; |
4886 | + background: url(ui-dropdown-footer.png) top left no-repeat; |
4887 | +} |
4888 | + |
4889 | + |
4890 | +div.search-dropdown |
4891 | +{ |
4892 | + display: none; |
4893 | + position: absolute; |
4894 | + overflow: hidden; |
4895 | + zoom: 1; |
4896 | + width: 255px; |
4897 | +} |
4898 | + |
4899 | +div.search-dropdown .search-dropdown-header |
4900 | +{ |
4901 | + overflow: hidden; |
4902 | + zoom: 1; |
4903 | + width: 255px; |
4904 | + height: 20px; |
4905 | + background: url(ui-dropdown-header-search.png) top left no-repeat; |
4906 | +} |
4907 | + |
4908 | +div.search-dropdown .search-dropdown-content |
4909 | +{ |
4910 | + overflow: hidden; |
4911 | + zoom: 1; |
4912 | + width: 225px; |
4913 | + padding: 0px 15px 5px 15px; |
4914 | + background: #ffffff url(ui-dropdown-bg.png) repeat-y; |
4915 | + font-family: Arial, Helvetica, sans-serif; |
4916 | + font-size: 14px; |
4917 | + line-height: 20px; |
4918 | + color: #333333; |
4919 | +} |
4920 | + |
4921 | +div.search-dropdown .search-dropdown-content .form |
4922 | +{ |
4923 | + padding-top: 2px; |
4924 | +} |
4925 | + |
4926 | +div.search-dropdown .search-dropdown-content .form input |
4927 | +{ |
4928 | + border: 1px #c0c0c0 solid; |
4929 | + padding: 4px; |
4930 | + width: 210px; |
4931 | + outline: none; |
4932 | +} |
4933 | +div.search-dropdown .search-dropdown-content .form input:focus |
4934 | +{ |
4935 | + border: 1px #707070 solid; |
4936 | + outline: none; |
4937 | +} |
4938 | + |
4939 | +div.search-dropdown .search-dropdown-footer |
4940 | +{ |
4941 | + overflow: hidden; |
4942 | + zoom: 1; |
4943 | + width: 255px; |
4944 | + height: 10px; |
4945 | + background: url(ui-dropdown-footer.png) top left no-repeat; |
4946 | +} |
4947 | + |
4948 | + |
4949 | + |
4950 | +#left-column .navi-title { |
4951 | + font-size: 15px; |
4952 | + color: #d5390b; |
4953 | + margin-bottom: 20px; |
4954 | +} |
4955 | + |
4956 | +#left-column .navi-title span { |
4957 | + background: url("left_menu_title_bullet.png") right top no-repeat; |
4958 | + padding-right: 20px; |
4959 | + padding-left: 10px; |
4960 | +} |
4961 | + |
4962 | +#left-column .item, #left-column .subitem { |
4963 | + |
4964 | + border-top: 1px solid #f3f1ee; |
4965 | +} |
4966 | + |
4967 | +#left-column .subitem { |
4968 | + padding-left: 15px; |
4969 | +} |
4970 | + |
4971 | +#left-column .item a, #left-column .subitem a { |
4972 | + min-height: 18px; |
4973 | + /* line-height: 23px; */ |
4974 | + |
4975 | + color: #a3a3a3; |
4976 | + font-size: 11px; |
4977 | + text-decoration: none; |
4978 | + display: block; |
4979 | + padding: 5px 0 2px 10px; |
4980 | + background: url('left_column_item_bulletpoint.png') left no-repeat; |
4981 | +} |
4982 | +#left-column .item a:hover { |
4983 | + text-decoration: underline; |
4984 | +} |
4985 | + |
4986 | +#left-column .selected > a { |
4987 | + color: #b82c02; |
4988 | + background: url('left_menu_item_selected_bulletpoint.png') left no-repeat; |
4989 | +} |
4990 | + |
4991 | +/* |
4992 | + * Front page |
4993 | + */ |
4994 | +.frontpage-text { |
4995 | + font-size: 13px; |
4996 | +} |
4997 | +div.frontpage-banners |
4998 | +{ |
4999 | + overflow: hidden; |
5000 | + zoom: 1; |
Some feature design and code questions. Maybe not all of them need to
be resolved right now.
- We need to know somehow if the current run is complete, i.e. if we
query some LSN interval, the last block we read should have the last
block bit set, if we silently output partial data, the user will not
know if he should re-query the last part of LSN interval or not. I
am not sure what would be the best way. Another column for last
block bit flag? That would be quite clumsy for users to use.
- Likewise I am not sure what should we do about corrupted blocks in
the middle of requested LSN intervals (and maybe missing LSN
interval data too). Another boolean column "this block is continuous
from the previous block"?
- In any case I guess we should diagnose bad block checksums we
encounter to the error log at least. That's easy, but it raises the
issue of what would happen if the I_S query would attempt to read the
last bitmap block while it's being written. Currently such block
would be ignored correctly, but in this case we would get false
errors. I think we should introduce a log online mutex for the last
written block protection. Acquire it in the log writer around the
block write + sync. Acquire it (and immediatelly release) in the
log iterator right before the read when (offset == file size - 1
block).
General comments:
- Please submit an MP against lp:percona-server/5.1, as the current
target branch has been merged.
- I guess the current code did not implement the index condition
pushdown yet?
- There is no decision on the I_S table row count limit system
variable in the blueprint, but the code has it, please update the
blueprint.
- Please add tests for LSNs too. Unfortunately, their values are not
that predictable, so the basic test would be to check that start lsn
< end lsn.
- Please add tests for the index condition pushdown, i.e. where
start_lsn > ... and end_lsn < .... The lsn values for this test can
be taken from the 1st query on I_S, and get the e.g. MIN, MAX, and
median values of the tracked interval.
- The new system var requires a new sys_var/ var_name- basic.test. In
the current branch, isn't sys_vars/all_vars test failing due to that
test being missing?
- Code formatting issues (I know, these are very pedantic): the
/*=====*/ under function names should match the function name
length. The function arg comments should start with /*!< in: or /*!<
out: or /*!< in/out:
- Indentation issue around diff lines 308--312: both args and code
should be indented by 1 tab. Likewise in many other places in
log0online.c etc.. Also there should be 1 tab between var type and
name in the local var declarations.
- (srv_changed_ pages_limit ? output_rows_num < srv_changed_ pages_limit pages_limit || pages_limit)
: TRUE) can be simplified to (!srv_changed_
output_rows_num < srv_changed_
- Maybe log_online_ bitmap_ iterator_ init should set the rest of the
fields it does not touch now to some safe values?
- No need for the comment in diff lines 618--620, 646--648, it should
be enough to mention it once in log0online.c next to the first file
name printing place.
-...