one_password 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +21 -0
- data/lib/one_password.rb +19 -0
- data/lib/one_password/encryption.rb +74 -0
- data/lib/one_password/encryption_key.rb +34 -0
- data/lib/one_password/errors.rb +13 -0
- data/lib/one_password/item.rb +156 -0
- data/lib/one_password/keychain.rb +47 -0
- data/lib/one_password/profile.rb +94 -0
- data/lib/one_password/version.rb +3 -0
- data/one_password.gemspec +27 -0
- data/spec/fixtures/1Password.agilekeychain/1Password.html +3870 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/0EDE2B13D7AC4E2C9105842682ACB187 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/0EDE2B13D7AC4E2C9105842682ACB187.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/13C8E12AC8E54B1F873BAB0824E521BC +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/13C8E12AC8E54B1F873BAB0824E521BC.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/2A632FDD32F5445E91EB5636C7580447 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/2A632FDD32F5445E91EB5636C7580447.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/358B7411EB8B45CD9CE592ED16F3E9DE +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/358B7411EB8B45CD9CE592ED16F3E9DE.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/468B1E24F93B413DAD57ABE6F1C01DF6 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/468B1E24F93B413DAD57ABE6F1C01DF6.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/5ADFF73C09004C448D45565BC4750DE2 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/5ADFF73C09004C448D45565BC4750DE2.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/72366D161D9E43D98E58EB801DAD1EF8 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/72366D161D9E43D98E58EB801DAD1EF8.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/D8F79F17D6384808848B213EB4946ECA +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/D8F79F17D6384808848B213EB4946ECA.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/EC0A40400ABB4B16926B7417E95C9669 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/EC0A40400ABB4B16926B7417E95C9669.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/F3707FA58EA7480884BC6A662658E039 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/F3707FA58EA7480884BC6A662658E039.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/F5F099B210F248348E22934DDC3338B2 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/F5F099B210F248348E22934DDC3338B2.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/F78CEC04078743B6975511A6FDDBED7E +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/l/F78CEC04078743B6975511A6FDDBED7E.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/0EDE2B13D7AC4E2C9105842682ACB187 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/0EDE2B13D7AC4E2C9105842682ACB187.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/13C8E12AC8E54B1F873BAB0824E521BC +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/13C8E12AC8E54B1F873BAB0824E521BC.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/2A632FDD32F5445E91EB5636C7580447 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/2A632FDD32F5445E91EB5636C7580447.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/358B7411EB8B45CD9CE592ED16F3E9DE +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/358B7411EB8B45CD9CE592ED16F3E9DE.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/468B1E24F93B413DAD57ABE6F1C01DF6 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/468B1E24F93B413DAD57ABE6F1C01DF6.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/5ADFF73C09004C448D45565BC4750DE2 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/5ADFF73C09004C448D45565BC4750DE2.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/72366D161D9E43D98E58EB801DAD1EF8 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/72366D161D9E43D98E58EB801DAD1EF8.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/D8F79F17D6384808848B213EB4946ECA +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/D8F79F17D6384808848B213EB4946ECA.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/EC0A40400ABB4B16926B7417E95C9669 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/EC0A40400ABB4B16926B7417E95C9669.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/F3707FA58EA7480884BC6A662658E039 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/F3707FA58EA7480884BC6A662658E039.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/F5F099B210F248348E22934DDC3338B2 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/F5F099B210F248348E22934DDC3338B2.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/F78CEC04078743B6975511A6FDDBED7E +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/m/F78CEC04078743B6975511A6FDDBED7E.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/0EDE2B13D7AC4E2C9105842682ACB187 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/0EDE2B13D7AC4E2C9105842682ACB187.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/13C8E12AC8E54B1F873BAB0824E521BC +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/13C8E12AC8E54B1F873BAB0824E521BC.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/2A632FDD32F5445E91EB5636C7580447 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/2A632FDD32F5445E91EB5636C7580447.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/358B7411EB8B45CD9CE592ED16F3E9DE +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/358B7411EB8B45CD9CE592ED16F3E9DE.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/468B1E24F93B413DAD57ABE6F1C01DF6 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/468B1E24F93B413DAD57ABE6F1C01DF6.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/5ADFF73C09004C448D45565BC4750DE2 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/5ADFF73C09004C448D45565BC4750DE2.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/72366D161D9E43D98E58EB801DAD1EF8 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/72366D161D9E43D98E58EB801DAD1EF8.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/D8F79F17D6384808848B213EB4946ECA +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/D8F79F17D6384808848B213EB4946ECA.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/EC0A40400ABB4B16926B7417E95C9669 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/EC0A40400ABB4B16926B7417E95C9669.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/F3707FA58EA7480884BC6A662658E039 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/F3707FA58EA7480884BC6A662658E039.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/F5F099B210F248348E22934DDC3338B2 +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/F5F099B210F248348E22934DDC3338B2.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/F78CEC04078743B6975511A6FDDBED7E +0 -0
- data/spec/fixtures/1Password.agilekeychain/a/default/thumb/s/F78CEC04078743B6975511A6FDDBED7E.def +1 -0
- data/spec/fixtures/1Password.agilekeychain/config/buildnum +1 -0
- data/spec/fixtures/1Password.agilekeychain/config/use-thumbnails +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/.1password.keys +0 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/.password.hint +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/0EDE2B13D7AC4E2C9105842682ACB187.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/13C8E12AC8E54B1F873BAB0824E521BC.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/1password.keys +0 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/27DCFA2810B24083A3ECC7CEABC7C0A9.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/2A632FDD32F5445E91EB5636C7580447.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/358B7411EB8B45CD9CE592ED16F3E9DE.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/3A47A0E3FEE948ADA9028FF0DA053CDB.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/468B1E24F93B413DAD57ABE6F1C01DF6.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/4E36C011EE8348B1B24418218B04018C.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/5ADFF73C09004C448D45565BC4750DE2.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/72366D161D9E43D98E58EB801DAD1EF8.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/D06307ADA44C4031BA2FF4B174DE79CB.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/D1820AA8CB534AC6A4B5A2C0263FD3B2.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/D8F79F17D6384808848B213EB4946ECA.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/E482B70C038D4DD78A0940728FA737BF.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/EC0A40400ABB4B16926B7417E95C9669.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/F3707FA58EA7480884BC6A662658E039.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/F5F099B210F248348E22934DDC3338B2.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/F7883ADDE5944B349ABB5CBEC20F39BE.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/F78CEC04078743B6975511A6FDDBED7E.1password +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/contents.js +1 -0
- data/spec/fixtures/1Password.agilekeychain/data/default/encryptionKeys.js +1 -0
- data/spec/fixtures/1Password.tsv +20 -0
- data/spec/fixtures/config.ru +1 -0
- data/spec/one_password/keychain_spec.rb +78 -0
- data/spec/spec_helper.rb +15 -0
- metadata +370 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'one_password/encryption_key'
|
2
|
+
require 'one_password/item'
|
3
|
+
|
4
|
+
module OnePassword
|
5
|
+
class Profile
|
6
|
+
# @param [OnePassword::Keychain] keychain
|
7
|
+
# @param [String, Pathname] directory
|
8
|
+
def initialize(keychain, directory)
|
9
|
+
@keychain = keychain
|
10
|
+
@name = File.basename(directory)
|
11
|
+
@directory = Pathname(directory)
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_reader :name, :encryption_keys, :directory
|
15
|
+
|
16
|
+
def contents
|
17
|
+
load_contents unless @contents
|
18
|
+
@contents
|
19
|
+
end
|
20
|
+
|
21
|
+
def all
|
22
|
+
load_contents unless @all
|
23
|
+
@all
|
24
|
+
end
|
25
|
+
|
26
|
+
def encryption_keys
|
27
|
+
load_encryption_keys unless @encryption_keys
|
28
|
+
@encryption_keys
|
29
|
+
end
|
30
|
+
|
31
|
+
def all_encryption_keys
|
32
|
+
load_encryption_keys unless @all_encryption_keys
|
33
|
+
@all_encryption_keys
|
34
|
+
end
|
35
|
+
|
36
|
+
def encryption_keys_loaded?
|
37
|
+
!!@encryption_keys
|
38
|
+
end
|
39
|
+
|
40
|
+
def password
|
41
|
+
raise NoPassword unless @password
|
42
|
+
@password
|
43
|
+
end
|
44
|
+
|
45
|
+
def password=(password)
|
46
|
+
@password = password
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
|
51
|
+
def contents_file
|
52
|
+
@directory.join('contents.js')
|
53
|
+
end
|
54
|
+
|
55
|
+
def encryption_keys_file
|
56
|
+
@directory.join('encryptionKeys.js')
|
57
|
+
end
|
58
|
+
|
59
|
+
def load_encryption_keys
|
60
|
+
self.encryption_keys = JSON.parse(File.read(encryption_keys_file))
|
61
|
+
end
|
62
|
+
|
63
|
+
def load_contents
|
64
|
+
self.contents = JSON.parse(File.read(contents_file)) unless @contents
|
65
|
+
end
|
66
|
+
|
67
|
+
# @param [Array] new_contents
|
68
|
+
def contents=(new_contents)
|
69
|
+
@all = {}
|
70
|
+
@contents = CATEGORIES.inject({}) do |result, type|
|
71
|
+
result[type] = []
|
72
|
+
result
|
73
|
+
end
|
74
|
+
|
75
|
+
new_contents.each do |item_array|
|
76
|
+
item = Item.new(self, item_array)
|
77
|
+
next if item.system?
|
78
|
+
|
79
|
+
@all[item.uuid] = item
|
80
|
+
@contents[item.category] << item
|
81
|
+
end
|
82
|
+
|
83
|
+
@contents
|
84
|
+
end
|
85
|
+
|
86
|
+
def encryption_keys=(keys)
|
87
|
+
@all_encryption_keys = keys.delete('list').map { |data| EncryptionKey.new(self, data) }
|
88
|
+
@encryption_keys = keys.inject({}) do |result, (type, identifier)|
|
89
|
+
result[type] = @all_encryption_keys.find { |key| key.identifier == identifier }
|
90
|
+
result
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'one_password/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'one_password'
|
8
|
+
spec.version = OnePassword::VERSION
|
9
|
+
spec.authors = ['Alexander Semyonov']
|
10
|
+
spec.email = %w(al@semyonov.us)
|
11
|
+
spec.description = %q{File to operate with 1Password's Agile Keychain}
|
12
|
+
spec.summary = %q{1Password Agile Keychain support for Ruby}
|
13
|
+
spec.homepage = ''
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = %w(lib)
|
20
|
+
|
21
|
+
spec.add_runtime_dependency 'activesupport'
|
22
|
+
spec.add_runtime_dependency 'pbkdf2'
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
24
|
+
spec.add_development_dependency 'rake'
|
25
|
+
spec.add_development_dependency 'rspec'
|
26
|
+
spec.add_development_dependency 'yard'
|
27
|
+
end
|
@@ -0,0 +1,3870 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
<head>
|
5
|
+
<title>1Password</title>
|
6
|
+
<meta name="com.agilewebsolutions.1Password.autosave" value="no">
|
7
|
+
|
8
|
+
<!-- Embedded base64 images - thanks to http://www.greywyvern.com/code/php/binary2base64 -->
|
9
|
+
<style>
|
10
|
+
/* @group Reset */
|
11
|
+
|
12
|
+
/* http://meyerweb.com/eric/tools/css/reset/ */
|
13
|
+
/* v1.0 | 20080212 */
|
14
|
+
|
15
|
+
html, body, div, span, applet, object, iframe,
|
16
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
17
|
+
a, abbr, acronym, address, big, cite, code,
|
18
|
+
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
19
|
+
small, strike, strong, sub, sup, tt, var,
|
20
|
+
b, u, i, center,
|
21
|
+
dl, dt, dd, ol, ul, li,
|
22
|
+
fieldset, form, label, legend,
|
23
|
+
table, caption, tbody, tfoot, thead, tr, th, td {
|
24
|
+
margin: 0;
|
25
|
+
padding: 0;
|
26
|
+
border: 0;
|
27
|
+
outline: 0;
|
28
|
+
font-size: 100%;
|
29
|
+
vertical-align: baseline;
|
30
|
+
background: transparent;
|
31
|
+
}
|
32
|
+
body {
|
33
|
+
line-height: 1;
|
34
|
+
}
|
35
|
+
ol, ul {
|
36
|
+
list-style: none;
|
37
|
+
}
|
38
|
+
blockquote, q {
|
39
|
+
quotes: none;
|
40
|
+
}
|
41
|
+
blockquote:before, blockquote:after,
|
42
|
+
q:before, q:after {
|
43
|
+
content: '';
|
44
|
+
content: none;
|
45
|
+
}
|
46
|
+
|
47
|
+
/* remember to define focus styles! */
|
48
|
+
:focus {
|
49
|
+
outline: 0;
|
50
|
+
}
|
51
|
+
|
52
|
+
/* remember to highlight inserts somehow! */
|
53
|
+
ins {
|
54
|
+
text-decoration: none;
|
55
|
+
}
|
56
|
+
del {
|
57
|
+
text-decoration: line-through;
|
58
|
+
}
|
59
|
+
|
60
|
+
/* tables still need 'cellspacing="0"' in the markup */
|
61
|
+
table {
|
62
|
+
border-collapse: collapse;
|
63
|
+
border-spacing: 0;
|
64
|
+
}
|
65
|
+
|
66
|
+
/* @end */
|
67
|
+
|
68
|
+
/* @group Login */
|
69
|
+
|
70
|
+
a, a:active, a:focus {
|
71
|
+
border-style: none;
|
72
|
+
outline: 0;
|
73
|
+
}
|
74
|
+
|
75
|
+
img {
|
76
|
+
border-style: none;
|
77
|
+
outline: 0;
|
78
|
+
}
|
79
|
+
|
80
|
+
img#background {
|
81
|
+
position: absolute;
|
82
|
+
width: 100%;
|
83
|
+
height: 100%;
|
84
|
+
}
|
85
|
+
|
86
|
+
img#left {
|
87
|
+
width: 20px;
|
88
|
+
position: absolute;
|
89
|
+
height: 100%;
|
90
|
+
}
|
91
|
+
|
92
|
+
img#top {
|
93
|
+
height: 20px;
|
94
|
+
position: absolute;
|
95
|
+
top: 0;
|
96
|
+
width: 100%;
|
97
|
+
border-bottom: 1px solid #4c4c4c;
|
98
|
+
}
|
99
|
+
|
100
|
+
img#right {
|
101
|
+
width: 20px;
|
102
|
+
position: absolute;
|
103
|
+
height: 100%;
|
104
|
+
right: 0;
|
105
|
+
}
|
106
|
+
|
107
|
+
img#bottom {
|
108
|
+
height: 20px;
|
109
|
+
position: absolute;
|
110
|
+
bottom: 0;
|
111
|
+
border-top: 1px solid rgba(255,255,255,0.3);
|
112
|
+
width: 100%;
|
113
|
+
}
|
114
|
+
|
115
|
+
img#doors {
|
116
|
+
width: 40px;
|
117
|
+
position: absolute;
|
118
|
+
left: 50%;
|
119
|
+
margin-left: -187px;
|
120
|
+
height: 100%;
|
121
|
+
}
|
122
|
+
|
123
|
+
img#branding {
|
124
|
+
position: absolute;
|
125
|
+
right: 0;
|
126
|
+
bottom: 0;
|
127
|
+
}
|
128
|
+
|
129
|
+
form#login {
|
130
|
+
position: absolute;
|
131
|
+
left: 50%;
|
132
|
+
top: 50%;
|
133
|
+
margin: -145px 0 0 -282px;
|
134
|
+
padding: 0;
|
135
|
+
width: 471px;
|
136
|
+
height: 267px;
|
137
|
+
}
|
138
|
+
|
139
|
+
button, button:active, button:focus {
|
140
|
+
margin: 0;
|
141
|
+
padding: 0;
|
142
|
+
background-color: transparent;
|
143
|
+
border-style: none;
|
144
|
+
display: block;
|
145
|
+
}
|
146
|
+
|
147
|
+
#keyhole {
|
148
|
+
width: 195px;
|
149
|
+
height: 267px;
|
150
|
+
background-image: url(data:image/png;base64,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%3D);
|
151
|
+
position: absolute;
|
152
|
+
}
|
153
|
+
|
154
|
+
#passwordLabel {
|
155
|
+
background-image: url(data:image/png;base64,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%3D);
|
156
|
+
width: 180px;
|
157
|
+
height: 16px;
|
158
|
+
position: absolute;
|
159
|
+
margin: 84px 0 0 208px;
|
160
|
+
padding: 0;
|
161
|
+
}
|
162
|
+
|
163
|
+
#passwordLabel.error {
|
164
|
+
background-position: 0 -16px !important;
|
165
|
+
}
|
166
|
+
|
167
|
+
#masterPassword {
|
168
|
+
border-style: none;
|
169
|
+
font-size: 26px;
|
170
|
+
color: white;
|
171
|
+
background-color: transparent;
|
172
|
+
padding: 6px 16px 9px 28px;
|
173
|
+
vertical-align: top;
|
174
|
+
margin: 111px 0 0 179px;
|
175
|
+
position: absolute;
|
176
|
+
width: 248px;
|
177
|
+
height: 31px;
|
178
|
+
text-shadow: #000 0 2px 5px;
|
179
|
+
background-image: url(data:image/png;base64,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%3D);
|
180
|
+
}
|
181
|
+
|
182
|
+
#masterPassword:focus {
|
183
|
+
background-position: 0 -46px;
|
184
|
+
}
|
185
|
+
|
186
|
+
#masterPassword.error:focus {
|
187
|
+
background-position: 0 -92px;
|
188
|
+
}
|
189
|
+
|
190
|
+
#unlock {
|
191
|
+
width: 87px;
|
192
|
+
height: 48px;
|
193
|
+
background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAADACAYAAABxq/+XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAHz5JREFUeNrsXQl0FMeZ/mc00uhCBwhJiENcNiAuCwuJGyMuY4PtEAdMwGZJYJ/j3X2bjTe7680meyRONvt2WSe73mA7tp9tAnZswBvwAcQ2p5AMCMRlgcAcOpFGErqPme7Z+v7pHvUcEqNhhGFd/3v1erqmurr767//qr+q/q9N5F9MIoWLFCmSVaQwkcwkxSiqSIpIHSK1i2QXyekNorcAyNixY8dm5OTkfD8mJiYnMjIyXWLpK+3t7VdbWloKhLxQXFx8TmQ1a4D7BdciUuKyZcs2jBo16u/NZnOMhDAAFVbVlkuXLv18586dr4jdepEc3uAC2AErVqz4yZAhQ55BhtjSmDFjKD4+XiLoRxoaGuj8+fNUVlbG+9euXdv43nvv/VL8rAPAYQYNjsvIyMjNzMz8V5MQsaUJEyaQMAkSxW4E2AwePJi3VVVVFBcXN7Wmpqagvr6+ArbYopVD4zVg8uTJ6wSu5uHDh1N6ejrUXSIYgACr2tpaaK4lOzt7gzARp0R2qw4u1HOAkGnYGTFiBDmdTolaL0S0UQCXEhIS7gOWItUYwU0MDw9n4xobGyvB7aWIXpVuKgaKTT90YS2GxiwBJkEAzBkS3N6JwE7fWnTfwKI1ZmZjz0FRFInWrQnjafHnSEitDY0yW7rpFEtoQiAWf1orwe0jcKVZ6GNwpeZKzb07wb2TumL79+/nLcY5hAcZkjrhqp45c4Z/z5079+4wC3t276bKykrKGD+epk6d6s4/evQonT17lsZ75QcieYcOU5g5jIYNG0aJiYkhuenGxkYqyMsnRVVo9uzZt9ksqMGZhabmZqqrqyOzyexRB/ahLd75gUhcfByFhYWRRfg7wV6Xz02LuuIS4vgNDVWdgZsFNTizEGm1so9tDjN71IH96Kgon3yjXLx4kfr378/JKAAWSXWqHse2tbVReXk5/x49enS314SHjRQlzo/hQX4zRV2o81buNXjNVYJ7mk6YEzSGQhs86oB2eOX/87/8E7uGy7/5OOXnHyFbTQ2pQpMWLn6QpmZ1mQ7kmbS6cWxbexsdOnSQCgoKiMdBRL1moYnTcqZ5vOLlFeW0bdt71NLSQmazmRtpbP/mh3/LdaFeJP16Ll26SJs3v0WZU6bQI8sevfM0VxHgKaqqJcWQr5JD3IgxPyEugSwRFjpw4ABNmZIpwLXRtdJSOnLkiNif0nWsQ2EPXeW6FTp86BAVFZ2i7KxsenLtU6zBm37zG35A8QnxbNfr6+rp3XfeoTCLhebMnkPZOTnU1tpKly9f5jq4LkXlurGPOnbu/INoKybQEytXCvPWErIBBq/WzNUVCyahIVTFBTvFa+f5HzRF9cgPt0YIUxFNDz64mJY89BDNz51P1ogIl5YajnXggSgO/t0qACo8cYJNTO6C+dx4NjU3MXjRMdFUWFjI5YpOnWRgR4wcQY899g02VckpKTRH9Az0elEn6sbvrVu3UnR0LK1evZqaW1qDvv+baq6AIeiumCq0wCEuWnV41uHa98xXxb69s0PcVAxVVVZRjc1GdnsnDyN5HCvKKRTG26qqSoqKxGiek01Ce3u7OMbO488m7mLZ+FjY2DBh3+8ZfQ+VlZf5XKfD4XCdQwCye/fH1HCjnmYKk6LXd0c6EYq4aH79NQ115ztdoBrzcYNOrWFKSEjg19OOm3Y4PI7Vyykiz2IJ598oh+OMjRtMDsZUXbY1jPcbhVb7uxd+I2DLRfmhQ4dyYwpzY42wUkZGRkjHHX01UFGDSgkJidxIlAttMeZjH+BahdbpeQqbEIfLlCBP21dUzzr1ck7xOzU1levHAzCeg3+LPPQGsD94cBrvH/38c//Xqp9b1DU1O5smTpxIFtHY7d27hxvAYO8/IHChRcGkMePGMhjnvviCDh0+SCUXL/AW+5HCTo4dM9ZdFjcIm6d3sbDlfa3R8y7HWi8aojlzHxBlncJzOyDsYzPV1tno5MmTXGbmzFl8zOTJkykiMpKampro3W3v8nVcEOmjjz/yOFenMAFoSBeLHopV2H/I9u3bgr7/PvXQkgcm0+o1a+iDXbu41ccrbRENCzTqqaeeog5hY/W6eYvXWHU1hLzVG0XD+Y3l7A47TZs2TfxWBFAf0wu/ekF4b2YakJQkGsYHKS0tjQHFbX33u+u5a4VJw4slJdz9irBG0oIFC7rOpbgeXl19Ha1atYp++9tXqLKqig4ePCge1MxbHy3XtDdNpFk/+MEPtqIv2FOn/GbSr18/Sk5O5nl8tO7R0dH8OqPDjwZDl3HjxvEWN49XES06XFzIF0LTuyvHD1HUD6cAeZB7772XPUCbaBTdDo22psB4HVjkgkUc/s5lzKsRfW5jXYHKhQsXeLtx48ZlYlPoF9yRI0be8lODfYWbid5DR3tHyL0feFj6ghUd9K/iOjy8TOGIGMENqRNhFGhLXwqusRNdt6/4Om7bwI2Um4Ar59DkTMTdC67U3L4E1ynB7TtwFQmuNAt3Abh669XudLI9MMsGLXgR2Dn0nzq4ANVht9sbIyIiEjAmgBlXKb1warQx6La2NpuGp1M3C0C74/r160VDhw6di3mqaG2USEpgAswgNpsNgxXwsxVdPbGNu3HjhjJ+/Phc8RRMmAbXZ0il9CwY7WvvaGeT8P77778otBeDDNd19GAawjFcFx8fb01OTs7A8B4atjBTmHvVtBRPwWAQRvo6OlwDQqdPn37v7Nmz+8RPDNfV6ahhi3gIjDWOmDNnztLMzMyVQnOtEsKA7G1bfn7+5oKCgr1i97JI0NwGnyA/kYaLNFQ0bMOXLVu2VGjxuKioqGQJoR8729ZWLdqps7t27fqws7Pziqax2HKQn9/wVIArEpanxFFXYLW0DV69LnLF+WIGoFEkBPaVUjfhqUaAY0XCuqIkA8ASXF9wYWwbRKrVUo+B1cZ8IyWARYLrF1wH9UAJYO5FRVJ6iUm3fAuiv5sxY8aM78fGxkq+hW4EfAvNzc0FeXl5L4guWGB8C8uXL99wzz33SL6FAAV8CyUlJT/fvn17z3wLq1ev/smwYcOYbwFTzZjaxnIjKb4iPFqemten+K9cubJx69at/vkWJk6cmJuVlcV8C2JLkyZNknwLPQiwwVozrKGoqKiAdztV9HsL6urqfPkWpkyZwnwLI0eOZFoAOa4bmAArLCIRmmsR7dQGYSJ8+RaSkpKYbwHcAXJMt3ci2iiAi6CYnvkWsCRJgts7wRphzVRIvoVQi+RbuH0i+Rb6Wpnl7G8fit+1YtIs9BG40iz0MbjSLEjNvTvBvZNs7ieffMJbROgIDzIkdcJVLSoq4t/z58+/O8zCh7t2UXlFBU2cNImjbnTJz8+nU6dO8UCQMT8QObBvP1nMFgK/pHdEe7AC9tC8A4fJoTpo3rx5t9ksBLlsv7G52S+vAvahLcHwLSBY2tIHfAvxiXEcRXlX8S3EBsm3gBAmvPbeVCsAFkHS3nwLCCQpLS3l3+D47U70ECqESmF4kN9M8C1YLLd0r8FrriMEfAuObvgWtPznfvR37BqufGIV8yfUVFdz0N2Sh5fS9JzpHvbfzbcgjm1tb6V9+z6jvLw8D76FWTNn0bwHul7x0vJSevvtrdQs3iYj38JP/uEfXXwLWnC1fj0XSs7T66+/RllTp9I3v/F434ELWxSMgG/BofEtGOsw8i3o+YlxiWSxWujTTz+lqVOzBLg1dOXqVQH0IQ8eHCPfAo7dv28fFRae4Afw3Q3rWYN//atf8QNKSEzgON662jra8tZbFCbAz52XS9NnzGC+hUuXLnEdXJfGt4B9BGbv2L6NJkycRE+uWUONTc0hG2Dwas1uE99CZATFREXT0qUP0yOPPkqLFy0OiG/h6LFjFCNe8UUPLuaoTPAtALyY2BgmKkK5whPHGdhRo0fRt761gocDU1JTKTd3vl++hTfeeIOiY/rRunXrmMjijuZbUOyKRx2ufc988Cd0dnZQTEwsVZRXUHVNzU35FioqyoXtxtCzkyLEg4DGgR8B4894KDU11Xws7Cz4FsbcO4aulV7zfTMNfAsffLCLbtTX0VzRa9DruyOdCEVcWLd8C7ghI9+CKMt8C61t5Ex0jWcw3wLyjXwLWjnwLYRbItx8C8bISNThj2+hoanRP9+C2sW3AEpsxOzC3IBvAWYllOOOvhoYJN9AYmJ/bijKyko98rGPm4kUWqfncfi/AI5D9BWNFgAPx4tvQS8HczMobRDXD8BLhUbqZUrLrnEZ9AawP3ToEN7PP3LE73Xq50IDOm36dHZQwkVj99FHH3IDeEfyLYybMJ7BOH3mDO3b/xmdv1DMW+xHCTuZMS7Dg0fB7sW3YO+Gb8Fu4FuYN38Bh/N/8smnbG9ttTV0/PhxLjN37gN8DAiIIkTXD+RsW97ewtdRLNIfdv7B41wdnZ3ckC5duoys0a4lGu+88/adybeQkpxC677zHXp/xw5u9WG/0F1CKP769etDwrcwa9Ys5lvYKbzBX/7bL5lvYWByMi1btowpAHS+he997xl67bVXedLwfHExd7+skVG0ZMkSH76F2rpaWrt2Lb344n9TRWUlffbZZyGhIfSgBHjuueeYEqCnTvnNBI0L+BUwj6/zHIBkAh1+I98CKKoguHmdbwEuLgTUhN2V44eYksJrBa6Krhtk7Nix7CiAJ8Ht0GhrCozXgUUuWMTh71zGvGrR5zbWFajo3A2/+MUvfPkWdHBHjxp9y08N9lXnOWhvaw+99yM8LH3BCuzkV3UdRrlQcsED3D7jW+iJYCIUonQqbGa+6uu4bQM3Um4CruRbkDMRdy+4UnP7ElzJt9CH4Eq+hT6ciZCLQkIGruRbCKFIvoW+cGpuxrdQWVlZlJ6eLvkWghCdb6G6utrNt6CbAI5fPXDgwMcwDXqYe7DTHV+3BK4FnW9hz549OwWWGJrr0MdzAa6trKzs7OnTp3ewT97aQq0trUyFzYZDJp8E8wmM9FmRkydPbq+trQUdAOKA201A3uRac+7mW8jNzV2alZUl+RYCt7dthw4d2pyXl+fJt6D3DLS1/B58C8uXL1+ampoq+Ra6s7NtbdWinTq7Y8cOH74FmAgjuHrXTPItBNjrom74FvTumLcTgUzErmJ++QZJvoWbgdsz34KX5rrzSfItBAKuX74FN6bSG7vNYwuQuXPnZjQ1Nf2n6PNmCmM9UELlK6LRr4mMjDzRr1+/v9q/f/857//9au706dN/XF9f/yOz2WzF1DgmLf2Yjq/z+IFr9BBrKuzMv9aRmJj4/JEjR37aI7g5OTmvCY1dh6lrTJFjOjo+Pl6y4/kZS8AKdXAt4HMJWGcWFxf3P/n5+X/mF1xhCubW1dV9Fh0dbcJ6AYS6Y/oa09hSa321Fx4ahgrwKTCsfxC/FaHBM/bt2/e5j80VB/woJibGBEoALLTQgZVmoXuzYLVaGStorgA5TOT9TPy1yAdcoerZWMuKL5zALHhrrOxZeAqUDm0SMMJXVrBSRzT+k316C8IihIvCcdBWfKVUt7ES0JsLsAIPEBRSNHDukCP3KkfRaPUXmmqCmutPQ0pgAqywGBtvugDa4qO5aWlpFnx0DQXk1HrvBZjBTBh7VRZvG6JrrAS4940csDO+8XLFze10f+VasT4eW5CaK8GV4Epw/XQr7hRBpA4EXiMGkEIhGHBBtxNy//333x2ai2DnWpuNRowcSRMmTHDnnzlzhr788ksa6ZUfiJw8cYK7iIjUiYuLC8lNYxzgVFERK5Hxu+63B9wgl+3jA5r19fU0NsLqUQciE/FxeetYa6/rjomOcfnw+Fp1iMIJUBfq1UO0biu4iHwJ6qIjwskaGclgGOvAfoQ1wiffKGWlZRQXH+ernWbRMTe7eBqMx2JFEAL0IEOGDun2mhDo19jQyF9RHTjQNaGCukw80ucM+l6DBjdohnJtJQqbFaeXmVGdHvmbNm1C7B4tXLiIvzh9Q2g2oiTxMWPj987xGXDVsMoFoJ4QpuL06VMcAsX4h5lp4sRJHq844sj+uHcvtba2iYdqEoc6mankT9at43pUZglR3ddTVlZGu3btpHFjx9HcBx648xo0lcNJXZQAxjqc/Pltz/yYmGj2w48d/ZwmTppMtbU2DgQ8cfIEj4/qwnQAiFrXIitPiv/Pny/meN01a57kweqXX36JiopOcoAhxqKhrR/v/phd0WnTcyg7O4eXHF29esVdjyvm2BVBiQcGggwMG37z8cd56DAUYvanfcEuSGOyCu3j9D48DNqN6HkAFiNw8xcupIULFtID8+bxoJHT61gEZDMXjfgNEM6eO8ejdggfRbQ5IiTBUo26vvjiHJdDPjz84enp9NBDD3NebL9YBtlfvR9+9CGbsxUrV3IkZp/xLeD1CVZznYqLT0HRgOzSPt98VfuQfER4BF2+cpluNNzgUH+n15vjLi+03marEY2RRZtiUXhyEMlqjeTj6urquHxjYwNr7ahRo91dLggYRNxvmAYsYpQbRdds+vTpzNMQSr4Fc3ddsWCSTsGiejOIaFqtemkkbgTdIs5TnW6Sie40VwcRDwGRkXoZ1MHHadeOIVWcr1HjW/BNxHXietKHpwubHUZ5R47QubPnbmkpaUDgQkuCSYmikw+NwKtqzOd9kY9X152vmQo9RN9oAz3q1cuJlDQwyd0QXa++7i5TWVXJ+YPT0ng/dVAq758oLPR7ne5ziZSZmcl9b5iRvMOHqLWtNej7D0xzVWdQadToe5gRBCH4hccL6eqVq7zFPoCFl6WXZeYQ7meqWp5L65FvrLOrnNBiu4NtLUA5dvQYM4Q01DfQmdOnuRy4blAOvQ3MDMAT27N7N18HEkyA8VwgxQAFDGw+prfw5qGHEez9B9RbCDaaJyE+gZ58ai3t+mAXFZ4o5HrQcA0aNEi07GvYkXBz3HD3TGWmJJct1ho+L4rZrnIqJv9Ed+t+fq3RG3jjzTfYtiYmJNIS0XAlDUhy2c1OO63fsIE2b95MZeXlwqZf4boA+LScaV3nUl18PnizVn372/TKK6+IN6KaXe777rvvlm2ue93C008/PVi4qGWYaIObGqyAdA3kFejO6DwKycnJ3LAYI8hzcnJ4C44CdJ3gPOCDH5CCgoJuy0HAo4Dr1PkWwHRfWVnJILk9O3FevCn6dYBvAS40gPN3LmMeuoTGugKVkpISvsa9e/eaugV3ePrwW35quLkwSxhzd/VFWD7qxjnYC2to/MquwyiXvrzkAW6fhaeCf6YvRbWr/PmWr/o6bp/7K+UmToScQ5MzERJcCW7fNGhSJN+CNAt3q7jHFh5++OE6s9mseo/FytS7UTHh7jt8wF22bFm78L1v6GMLwQ5efF2Ti6GaaQ5r/JkFZ2pqaqHNZluA8Hb57cneiUYJgEnQM36HHLOzszeDbwGjTxjek2H/gSUM+mvUh/b58+e/6hfc9evX/++kSZO2wiyA+QKJew4SQL9JxwmTpGirJk+evOWJJ5740GfI0SAZGzdu/PPjx4+vFf9JLpZAxm1NpuaZM2e++swzz2wSu8U9gQsZffbs2XlvvvnmIzU1NfeJJzNEQugrol0qS0lJKVyzZs3O8ePHg8jiqgfoPfRpo0QCM3Aqub4GKsXPiKZIlSIh7rfNR6Olw3AbnAgpfWCLe8g3klmEyQfhOwRDLlYQHzKLnsAFkLFLnvz+ksGZi/5DiU5OsYfHy5B1PxJub1DCWquvl5/Y8+xHb73wEXnTsPgZyEl88sevvEVDZyxWzeESwUBsqyqUtjRv91s/3fAkuTiCHN7gMvXV2p9t/cSeMoW/H5DoqKBBHZcoWm2UCPqRVnMcVVpHUb0ljfetVccKX//x6iXiJxalOSwGDY5d8tSzf6qkCmCF5RjWcYaGW2oofUw6xcWNk0j6EUyjX716nq501NE16wTqTJ0yJXfF02s//f2mV8TfDTq4eP8HDBg38y/wTbOB9ms0ItxGGRmuD2DICUv/AvoEkH6Yzp2jls5SsoUPobTMRT+k32/aDsXWwUWvYIAaNyyJR3Y6LlP6qHQ5aB6gYAVQdfElqrEMJjVmEFgFkWqM4CY5LdHsVFiVJh5ylOAGJlgqZVWaXcsSIvqZNY/WqoNrGTj03iFYqBfmtJMlzNWlleD2xmFwmU6nyx1g30BnujMrqmqCbTXpa2Klne2dR+GJGRA2edAI3myltJTuxQ9mJo/ZX6xXMKtOuaQpSHC913t4gqt0LZWXnzPonfACbqUHcL2fhJRbE4u3UeYvnXqFOknpdYPmBW4AoT9SetWg+dANekQ93gly4MAB3iKcqX///iGpE8GAoCmAzJkz5/aA6+rnKkH3c/fu2cOBHxnC30bIqC7Hjh1jIsnxXvmBSH7eEY5214NMQiEIofo8v4DvEV9j7XuzYETfGRznQlNzM/MtIDrceDz2oS3e+YFIv7h+HG4Var4F0A/oy7ZCo7rUvea6Yn4V9tC8uQ0ClUirlaNnEKLvwbcg9qOjonzyjQImEXBIIhkFwCKhi2g8Fgsx9HCmnkK78LCRMFaCT+Tq/XmduS5UfAuKFrHfvVnAd8rV4DXXpfUat4LxeNU3//nnf8au4WPfWE4FBflkq6nh12rBwkUevDOIljSRzo/gZFAPHz5ER48e5Sh31GsWXjzi1cDVoAuA37FjO4dHway4vsFupmef/Wt3aKpq0NzL4uFu+d1mmpyZyV+wDkZz1W5trtPTiQjG5nI0pB5cbYxaRygox/l25cfHxZMl3EIHDx6kzMz7qLbGRtfKyig/P5/jcd3H8upBkzvqMe/wYTp96gxl3Z9Fq9es4aDql196iQrEcSAYQmgqNHXbe++xds6eNZumZmdTW2srf5hZdUdtqlw39vE9YER9jhs/gVasWEHNzb2PV/PnRJiNZsH4O5j1qfxwHC7SCs//XB96N+aHR0Twl6sWL15EDy5ZQvNyc8kq8kxevRaOhAehhfgNQooTJ09SVFQklwedNeLMsoXWRsdEM4MIyp06VcTAjhgxnB559FFXFGdKCs2ePaeLG0LU6dDWIr/9ztviWmJo1apVQtNbg1ufSzeJ/WWXV/QW8ESDcX8V1cE2TPU63rXvma+KfXtnB99UVWUV1dhsZLd38jCSx7GinMJMIQpdr6qkqEgrP36YBJBbYEI7NiaWH0pdXS0fC80NE/YdfAvl5eV+tcx1r07au3cPNd6op+mi1wCTEyzfApTHGzMPs9BTny3QV4Nff6/jFY1vwZjv0PgRsEow3hnvYq438C3oopeDPbOER7j5FozfbUcdqB9B1i7bGsb7TS3Nfu9D53FAecQpIy75iDA31nArjcsYF2RnoQe+BfFSa/aoq5/b24SodWzLy8s88nlfAAKGJI9jFKXnfUM+iITwAXt9v6Ki3LN+kYfeAPbT0gZptAFHu79erUHLmjqVHRSYkT9+spcbwGDu3WmIhPcB16ixqja+0Nt079gxXPkXxcXcol+8WMJb7FtFV2zMvWM8j9GIK7gxcGp8C/7q1sY8cG2zZ83hcxw4cJCBAPFQUVERl5k+fQaXnzRpEkWIbmFTUxNt276Nr6NEpN27d3ucCybAJhrSRYsWiwcfxRi8//6OoO5dNbQn/nsL2kyE/hR6K8kDk5m34MMPPuBQe1w8yH6gUeBbwOprI8cNuK+4EVRdDZ6i+vZUjOVQX860HHEjCu0R3uCv/+vXwjEx0YCkJAHQIj4PAMVtrVv3Hdqy5Xcc3n+xpMRN45IrGkL3ubQ3pa6+jlauXEmvv/YqVV2/LhTiMHPe9Mos+MHMpGlvWlzKsIcnrH95U5jTQfe3/tGD26tXHlW/fsyvgJYcrTsm7/AxDzQsRjup01vh5nVeBri4kOLi4m7L8UMU9cMpQB4EfAvwAMGs5HZoxP/gVzBeB/bB3OTvXMY81GOsKxDBWMWxfg/x77znH0RHudCrt2DQ3CAD/RpuNHCKFN2lSKEp0LaSCyU+5UDW4+E6Nzb55PkrB0HvAjZSD4op/qLYpww+X4jzGq9DL+fvXN2dP2DNVVx955uOLXRHiNMb0b/L2Gfjpw5hJprtX/l1dPWIlB7GFgw0VZgl7ksCyf+fA7oUyJCja+BGzqGFeMjR2/2VcmtOhJ+umBJ0V+xrDa4fzCz+BmtC0aB97cyC5kT02UyEbNB6AFfRZiLkWrHgGjTFz0wEw91cU2YjTKWYLGRXVdmg9XIGRtGW3JnJrZROHVzkdIQ52p0OS5Spg2KYhBKejZSbCwdXC8yYXtberGp4OnWzwB8HjmitrO+MGd6/0jKM4qsu8sc9pdxcqq5XUYXlHh4yCG+rRjQPYtMUPb4M27jICEukJW3S/S1hCWTubCC1sdL9ETUpfjS2rY3KysuoVE2hyojRvADalr/lpcbqa4Xi7+s6ahiusn159OOdWSOnLGjuP3HEl9bJ1OCopPqyixSlXpNI+gOXQ6UyqDZ8EE8ZRdecKDl35tBn5Prueru+8BlbfJtltEgjMh/7yx+3p2RNVE0ycDIQsYjmzFJ26POiXS/9u9i9LBKI0huM6MHuYpjJVFVccFK5fu5qyqAh45xhEVbFFC4/SOlHIpQWNbrlWt21vS++eOXY7ndFFl5xcC40oFHzG54qEkaNB8MOU1dgtQTYx23gOF+YVISYYvkPRu/9hqcaAY4VCUsKkwwAS3B9we3QtLRWSz0GVhvzjZQAFgmuX3Ad1AMlwP8JMAAp3FIwzHFljgAAAABJRU5ErkJggg%3D%3D) no-repeat;
|
194
|
+
visibility: visible;
|
195
|
+
position: absolute;
|
196
|
+
margin: 109px 0 0 479px;
|
197
|
+
}
|
198
|
+
|
199
|
+
#unlock:hover {
|
200
|
+
background-position: 0 -48px;
|
201
|
+
}
|
202
|
+
|
203
|
+
#unlock:active {
|
204
|
+
background-position: 0 -96px;
|
205
|
+
}
|
206
|
+
|
207
|
+
#unlock:focus {
|
208
|
+
background-position: 0 -144px;
|
209
|
+
}
|
210
|
+
|
211
|
+
div#wrapper {
|
212
|
+
min-height: 400px;
|
213
|
+
min-width: 650px;
|
214
|
+
position: absolute;
|
215
|
+
width: 100%;
|
216
|
+
height: 100%;
|
217
|
+
}
|
218
|
+
|
219
|
+
img#rivetTL {
|
220
|
+
position: absolute;
|
221
|
+
top: 0;
|
222
|
+
left: 0;
|
223
|
+
}
|
224
|
+
|
225
|
+
img#rivetTR {
|
226
|
+
position: absolute;
|
227
|
+
top: 0;
|
228
|
+
right: 0;
|
229
|
+
}
|
230
|
+
|
231
|
+
img#rivetBL {
|
232
|
+
position: absolute;
|
233
|
+
left: 0;
|
234
|
+
bottom: 0;
|
235
|
+
}
|
236
|
+
|
237
|
+
img#rivetsDoorsTop {
|
238
|
+
position: absolute;
|
239
|
+
top: 0;
|
240
|
+
left: 50%;
|
241
|
+
margin-left: -189px;
|
242
|
+
}
|
243
|
+
|
244
|
+
img#rivetsDoorsBottom {
|
245
|
+
position: absolute;
|
246
|
+
left: 50%;
|
247
|
+
margin-left: -189px;
|
248
|
+
bottom: 0;
|
249
|
+
}
|
250
|
+
|
251
|
+
a#help {
|
252
|
+
position: absolute;
|
253
|
+
left: 35px;
|
254
|
+
bottom: 35px;
|
255
|
+
background-image: url(data:image/png;base64,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);
|
256
|
+
width: 34px;
|
257
|
+
height: 34px;
|
258
|
+
}
|
259
|
+
|
260
|
+
a#help:hover {
|
261
|
+
background-position: 0 -34px;
|
262
|
+
}
|
263
|
+
|
264
|
+
a#help:active {
|
265
|
+
background-position: 0 -68px;
|
266
|
+
}
|
267
|
+
|
268
|
+
#passwordError {
|
269
|
+
position: absolute;
|
270
|
+
left: 50%;
|
271
|
+
top: 50%;
|
272
|
+
margin-left: -74px;
|
273
|
+
margin-top: 45px;
|
274
|
+
width: 50%;
|
275
|
+
text-shadow: #000 0 -1px 0;
|
276
|
+
color: #d8d8d8;
|
277
|
+
font-size: 14px;
|
278
|
+
}
|
279
|
+
|
280
|
+
#passwordError h3 {
|
281
|
+
margin-bottom: 10px;
|
282
|
+
color: #191919;
|
283
|
+
text-shadow: #7f7f7f 0 1px 0;
|
284
|
+
}
|
285
|
+
|
286
|
+
/* @end */
|
287
|
+
|
288
|
+
body {
|
289
|
+
font: 14px "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
|
290
|
+
}
|
291
|
+
|
292
|
+
#headerBar {
|
293
|
+
position: fixed;
|
294
|
+
top: 0;
|
295
|
+
right: 0;
|
296
|
+
left: 0;
|
297
|
+
height: 26px;
|
298
|
+
border-bottom: 1px solid #222;
|
299
|
+
padding: 8px 10px 10px;
|
300
|
+
text-shadow: #cbcbcb 0 1px 0;
|
301
|
+
text-align: right;
|
302
|
+
background-color: #999;
|
303
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#aaa), to(#555));
|
304
|
+
}
|
305
|
+
|
306
|
+
#headerBar img {
|
307
|
+
float: left;
|
308
|
+
margin-right: 5px;
|
309
|
+
margin-top: -3px;
|
310
|
+
margin-left: -1px;
|
311
|
+
}
|
312
|
+
|
313
|
+
#headerBar h1 {
|
314
|
+
font-size: 20px;
|
315
|
+
float: left;
|
316
|
+
}
|
317
|
+
|
318
|
+
#headerBar a {
|
319
|
+
text-decoration: none;
|
320
|
+
}
|
321
|
+
|
322
|
+
input[type="search"] {
|
323
|
+
margin-right: 40px;
|
324
|
+
width: 200px;
|
325
|
+
}
|
326
|
+
|
327
|
+
#headerBar button#lock {
|
328
|
+
height: 21px;
|
329
|
+
width: 21px;
|
330
|
+
background-image: url(data:image/png;base64,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);
|
331
|
+
position: absolute;
|
332
|
+
right: 12px;
|
333
|
+
top: 9px;
|
334
|
+
}
|
335
|
+
|
336
|
+
#headerBar button#lock:hover {
|
337
|
+
background-position: 0 -21px;
|
338
|
+
}
|
339
|
+
|
340
|
+
#headerBar button#lock:active {
|
341
|
+
background-position: 0 -42px;
|
342
|
+
}
|
343
|
+
|
344
|
+
/* @group Sources Pane */
|
345
|
+
|
346
|
+
#sourcesPane {
|
347
|
+
background-color: #dadee5;
|
348
|
+
width: 175px;
|
349
|
+
position: fixed;
|
350
|
+
top: 45px;
|
351
|
+
bottom: 0;
|
352
|
+
color: #333;
|
353
|
+
text-shadow: #e5eeff 0 1px 0;
|
354
|
+
font-size: 12px;
|
355
|
+
border-right: 1px solid #7f7f7f;
|
356
|
+
font-weight: bold;
|
357
|
+
}
|
358
|
+
|
359
|
+
#sourcesPane li {
|
360
|
+
border-style: solid;
|
361
|
+
border-top-width: 1px;
|
362
|
+
border-top-color: #e8ecf4;
|
363
|
+
border-bottom-width: 1px;
|
364
|
+
border-bottom-color: #b7bfcb;
|
365
|
+
padding: 10px 10px 10px 15px;
|
366
|
+
}
|
367
|
+
|
368
|
+
#sourcesPane li.selected {
|
369
|
+
border-bottom-color: #4c5d7f;
|
370
|
+
background: #8594b2;
|
371
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#acbfe5), to(#4c6698));
|
372
|
+
color: #fff;
|
373
|
+
text-shadow: #000 0 1px 2px;
|
374
|
+
border-top-color: #c3cee5;
|
375
|
+
}
|
376
|
+
|
377
|
+
#sourcesPane li img {
|
378
|
+
float: left;
|
379
|
+
margin-right: 7px;
|
380
|
+
margin-top: -3px;
|
381
|
+
}
|
382
|
+
|
383
|
+
#sourcesPane li.subFolder {
|
384
|
+
padding: 0;
|
385
|
+
border-style: none;
|
386
|
+
}
|
387
|
+
|
388
|
+
#sourcesPane ul li {
|
389
|
+
padding-left: 35px;
|
390
|
+
}
|
391
|
+
|
392
|
+
/* @end */
|
393
|
+
|
394
|
+
/* @group List Pane */
|
395
|
+
|
396
|
+
#listPane {
|
397
|
+
width: 280px;
|
398
|
+
position: fixed;
|
399
|
+
left: 176px;
|
400
|
+
border-right: 1px solid #7f7f7f;
|
401
|
+
background-color: #f2f2f2;
|
402
|
+
top: 45px;
|
403
|
+
bottom: 0;
|
404
|
+
overflow-x: hidden;
|
405
|
+
overflow-y: auto;
|
406
|
+
}
|
407
|
+
|
408
|
+
#listPane li {
|
409
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#ddd));
|
410
|
+
padding: 10px;
|
411
|
+
border-top: 1px solid #fff;
|
412
|
+
border-bottom: 1px solid #b2b2b2;
|
413
|
+
text-shadow: #fff 0 1px 0;
|
414
|
+
text-overflow: ellipsis;
|
415
|
+
overflow: hidden;
|
416
|
+
white-space: nowrap;
|
417
|
+
font-size: 12px;
|
418
|
+
color: #656565;
|
419
|
+
line-height: 16px;
|
420
|
+
}
|
421
|
+
|
422
|
+
#listPane li strong {
|
423
|
+
color: #000;
|
424
|
+
font-size: 16px;
|
425
|
+
}
|
426
|
+
|
427
|
+
#listPane li.selected {
|
428
|
+
border-bottom-color: #4c5d7f;
|
429
|
+
color: #dae1f2;
|
430
|
+
text-shadow: #000 0 1px 1px;
|
431
|
+
border-top-color: #c3cee5;
|
432
|
+
box-shadow: -10px 10px 0px #888;
|
433
|
+
font-weight: bold;
|
434
|
+
background-color: #7485a6;
|
435
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#acbfe5), to(#334e80));
|
436
|
+
}
|
437
|
+
|
438
|
+
#listPane li.selected strong {
|
439
|
+
color: #fff;
|
440
|
+
text-shadow: #000000 0 1px 2px;
|
441
|
+
}
|
442
|
+
|
443
|
+
/* @end */
|
444
|
+
|
445
|
+
/* @group Details Pane */
|
446
|
+
|
447
|
+
#detailsPane {
|
448
|
+
position: fixed;
|
449
|
+
right: 0;
|
450
|
+
top: 45px;
|
451
|
+
left: 457px;
|
452
|
+
padding: 25px 25px 25px 10px;
|
453
|
+
overflow-x: hidden;
|
454
|
+
overflow-y: auto;
|
455
|
+
bottom: 0;
|
456
|
+
}
|
457
|
+
|
458
|
+
#detailsPane td {
|
459
|
+
padding-left: 10px;
|
460
|
+
padding-bottom: 5px;
|
461
|
+
}
|
462
|
+
|
463
|
+
#detailsPane .label {
|
464
|
+
color: #989898;
|
465
|
+
font-size: 12px;
|
466
|
+
font-weight: bold;
|
467
|
+
text-align: right;
|
468
|
+
width: 130px;
|
469
|
+
text-overflow: ellipsis;
|
470
|
+
overflow: hidden;
|
471
|
+
white-space: nowrap;
|
472
|
+
display: block;
|
473
|
+
}
|
474
|
+
|
475
|
+
th {
|
476
|
+
vertical-align: middle;
|
477
|
+
text-align: left;
|
478
|
+
padding-right: 5px;
|
479
|
+
padding-left: 5px;
|
480
|
+
font-size: 14px;
|
481
|
+
padding-bottom: 25px;
|
482
|
+
font-weight: normal;
|
483
|
+
font-style: normal;
|
484
|
+
color: #7f7f7f;
|
485
|
+
}
|
486
|
+
|
487
|
+
th h1 {
|
488
|
+
font-size: 20px;
|
489
|
+
margin-bottom: 3px;
|
490
|
+
color: #000;
|
491
|
+
}
|
492
|
+
|
493
|
+
th img {
|
494
|
+
width: 50px;
|
495
|
+
height: 50px;
|
496
|
+
float: right;
|
497
|
+
}
|
498
|
+
|
499
|
+
td.spacer {
|
500
|
+
height: 10px;
|
501
|
+
}
|
502
|
+
|
503
|
+
|
504
|
+
/* crap of Dave's that Dan will want to clean up */
|
505
|
+
|
506
|
+
#emptyDetailsPane {
|
507
|
+
position: fixed;
|
508
|
+
right: 0;
|
509
|
+
top: 45px;
|
510
|
+
left: 457px;
|
511
|
+
padding: 25px 25px 25px 10px;
|
512
|
+
overflow-x: hidden;
|
513
|
+
overflow-y: yes;
|
514
|
+
}
|
515
|
+
|
516
|
+
.selected .sectionCount {
|
517
|
+
color:white;
|
518
|
+
}
|
519
|
+
.sectionCount {
|
520
|
+
font-size: 80%;
|
521
|
+
color: #777;
|
522
|
+
float:right;
|
523
|
+
}
|
524
|
+
|
525
|
+
/* @group Copy and Show Fields */
|
526
|
+
|
527
|
+
a.copy {
|
528
|
+
color: black;
|
529
|
+
text-decoration: none;
|
530
|
+
font-weight: bold;
|
531
|
+
}
|
532
|
+
|
533
|
+
span.copyButton {
|
534
|
+
-webkit-border-radius: 4px;
|
535
|
+
-moz-border-radius: 4px;
|
536
|
+
border-radius: 4px;
|
537
|
+
border: 1px solid #c8c8c8;
|
538
|
+
color: #c8c8c8;
|
539
|
+
margin-left: 5px;
|
540
|
+
visibility: hidden;
|
541
|
+
font-size: 9px;
|
542
|
+
padding-left: 3px;
|
543
|
+
padding-right: 2px;
|
544
|
+
padding-bottom: 1px;
|
545
|
+
}
|
546
|
+
|
547
|
+
a.copy:hover span.copyButton {
|
548
|
+
visibility: visible;
|
549
|
+
color: #1464ff;
|
550
|
+
border-color: #78aaff;
|
551
|
+
}
|
552
|
+
|
553
|
+
a.copy:active span.copyButton {
|
554
|
+
color: #000;
|
555
|
+
border-color: #000;
|
556
|
+
}
|
557
|
+
|
558
|
+
.hideRevealButton {
|
559
|
+
color: #1464ff;
|
560
|
+
text-decoration: none;
|
561
|
+
font-weight: bold;
|
562
|
+
text-align: left;
|
563
|
+
}
|
564
|
+
#detailsPane table.hideRevealButton td {
|
565
|
+
padding-left:0px !important;
|
566
|
+
padding-bottom:0px !important;
|
567
|
+
}
|
568
|
+
|
569
|
+
a.revealButton {
|
570
|
+
-webkit-border-radius: 4px;
|
571
|
+
-moz-border-radius: 4px;
|
572
|
+
border-radius: 4px;
|
573
|
+
border: 1px solid #c8c8c8;
|
574
|
+
color: #c8c8c8;
|
575
|
+
margin-left: 5px;
|
576
|
+
visibility: hidden;
|
577
|
+
font-size: 9px;
|
578
|
+
padding: 0 2px 1px 3px;
|
579
|
+
}
|
580
|
+
|
581
|
+
.hideRevealButton:hover a.revealButton, span.hideRevealButton:hover span.copyButton {
|
582
|
+
visibility: visible;
|
583
|
+
}
|
584
|
+
|
585
|
+
a.revealButton:hover {
|
586
|
+
color: #1464ff;
|
587
|
+
border-color: #78aaff;
|
588
|
+
}
|
589
|
+
|
590
|
+
a.revealButton:active {
|
591
|
+
color: #000;
|
592
|
+
border-color: #000;
|
593
|
+
}
|
594
|
+
|
595
|
+
/* @end */
|
596
|
+
/* @end */
|
597
|
+
|
598
|
+
/* @group Message Box styles */
|
599
|
+
#messageBox_wrapper {
|
600
|
+
position:absolute;
|
601
|
+
top:0;
|
602
|
+
left:0;
|
603
|
+
width:100%;
|
604
|
+
height:100%;
|
605
|
+
background:rgba(0,0,0,.5);
|
606
|
+
}
|
607
|
+
#messageBox {
|
608
|
+
position:relative;
|
609
|
+
top: 50%;
|
610
|
+
margin-right:auto;
|
611
|
+
margin-left:auto;
|
612
|
+
background-color:#aaa;
|
613
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#aaa), to(#555));
|
614
|
+
-webkit-border-radius:6px;
|
615
|
+
-moz-border-radius:6px;
|
616
|
+
border-radius:6px;
|
617
|
+
-webkit-box-shadow:0px 5px 20px rgba(0,0,0,.6);
|
618
|
+
box-shadow:0px 3px 10px #000000;
|
619
|
+
width: 460px;
|
620
|
+
padding: 20px 25px 16px;
|
621
|
+
font-size: 16px;
|
622
|
+
line-height: 25px;
|
623
|
+
text-align: center;
|
624
|
+
margin-top: -105px;
|
625
|
+
}
|
626
|
+
|
627
|
+
#messageBox h1{
|
628
|
+
font-size: 22px;
|
629
|
+
text-shadow: #ccc 0 1px 0;
|
630
|
+
line-height: 22px;
|
631
|
+
color: #7e0000;
|
632
|
+
margin-bottom: 15px;
|
633
|
+
}
|
634
|
+
|
635
|
+
#messageBox p {
|
636
|
+
margin-bottom: 10px;
|
637
|
+
}
|
638
|
+
|
639
|
+
#messageBox a {
|
640
|
+
color: #650000;
|
641
|
+
font-weight: bold;
|
642
|
+
text-shadow: #848484 0 1px 0;
|
643
|
+
}
|
644
|
+
|
645
|
+
#messageBox a:hover {
|
646
|
+
text-shadow: #999 0 1px 0;
|
647
|
+
}
|
648
|
+
|
649
|
+
a#messageBox_help {
|
650
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAABmCAYAAACujkO4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAEaVJREFUeNrMW2tsVWW6/val9xZKS+kFeqNQKAWpF5jWCoqYA3iAVsZUGS+ZcAzBxMR4jPpjfhAmmcww5vhnfshJlDCOUWGiCIOCKIzgBSoUKFABBSkVKFB2u9vdy7507z3P8+1vrdn3tVpOzsxHvnTttdb3vu96v/f6rIVFYLzyyivCzHj99det+GPHTMNMUcdWdTmAOYrpw/TwGHQDJulKQmZu5H3pmNmPPvroI4WFhUuzs7N/QUHS0tKqeI/H47lE5oODg603b9488Omnn36BdYM454ZAo0Y8LMk0AkI2/MnMysoqbmpq2lBUVLTOZrNNNCO83+/vv3HjxtZdu3ZtGRoa6sapYfDxJ9JIXEFwwaLUnrty5cpfzZgx4zcpKSkFvJafny8mT54soBVhtVrFxIkhufr7+0UgEBDQhrh9+7ZwOBzyvM/n67l48eLv9uzZ8x5+OtWWBaMF4ROLxsbGaDvgNkx+9tlnN1dUVLwGLWQVFBSI2tpaMWfOHClIenq6wLbo63jMc7xWVlYmJkyYQCGE2+3m2uV4mML29vajlO3bb78NgKcuDH5HCqI0QSGmrF+/fhuevpnna2pqxLx58wTsQgSDQVOT906bNk3gIaSG8Hv+3Llz69ra2r6gSYG5X+NLQaxR28XtmPT000//Fip/ODU1VTQ0NIjKykqp9vFMriUN0iJN0iYPxUsf1ijDzF2xYsUzxcXFz/JcXV2dtIHxCqFN0iAtDtImD/JSPHUNaCMTs2LWrFmv8kd1dbXIzc2VhOKN4eFh8cMPP4g+aZRWGUamlpbKdfEGafEa15DH3r17D9K1MV26+yqBSh577LGNMKp1eXl54u67707oml9++aX4+4GD0kBpA8JikXYxOuoTGRkZoqm5WYBO3LUnT54Uvb29Ap60defOnZtw6jo9SVNNFmYlVPYHuGTajKoZ0gOCgWDc2Xq0VaTh+j333CvqG+rFnNo5wj3ils8VgEBnz5yVT5+eFkvDbreLW7du0auqjh49ulu5tMem9Jq/aNGiFrjdcu4nXDapR9AbHn/8cfnUjCtTpkwR9953rxTAZrXJ7UTcEVOnTo1ZS40x5nh93jRoswujA/yHuCWpmBNKS0sbqJpJkyYJf8CfNGrmT84XV7quRJxjcONaRFPpIdy2RHRyJ+UKZ79TKJ5/xXToglBVvIn+j/CcVBCE7JhzyDHiSmenSIHq0yHE7JrZCemQhwgxJc8cyqAJkgmVFfFiij1F+Ef9YqzjyLdHhMftEZYMi1iydKmkw8gab/Aah+KZqQlCO+F+ZWhp0GhroseJEyfEqfZTYkLOBPEfy5aJ8opyMTAwYJBqhVA8mSdsdnVaDyzUhsViMS3EuXPnxCG4c05OjvjPR1dw30Vfb1/SNTTasEHeFntY2h6Ba+XAmnXVGY2RkREZU7Iys0QVXL60rFz09fUZrvON+nSe4ZGV4vkRKW/BeHLkPqeb08j58+elPq12mygqLtJTv9EgDxWdb5E3ZbCrAw98u4tWTOtnDDAzMtIzRPWMamG1WWXsMPK2cA9TNUyXKiv9FMRL4S5dutSG/V1C19SKHaMxv26+WLR4kTymcTqdTlPrNPcnT/KmDJogrmPHjrU98MADruGR4RyXyyUyMzMNCaK2ED23e+RxweQCGZGNBpMleCAvjUqeKul5rUoQ+poTmXG/VNlAP280nDTM1tZWOXlsZg1pcyheTsXba1VtAKW6/cknn+z2er1OlHdS1UZ1BkM5Cms5eWx0P2mSNnmA1x7yVLwDWvzwq+SXDR/3QMUL0B5I4swhiZLf7NmzRXNTs3hk6SMyz9AIE90L5qLPGXLtr7/+euu1a9dO4fAyZq8uCBshFrSMvrhhANk0C1m1mtIzplgt8YUhYyY5TiMhep29UgjUIXsPHDiwE4fMmtfB2x1ds9J6r2Fe/fjjj/8C4sdIhAQGhweFP+gf1+Ra0iAt0kQx9GfyULyGw8OrrOJZ3kMyn2obU06fPt2B3iUL1dpMJq9R36gMfTaLLWRVBtPr8UoPoVY1TWzfvn2LqsioDYfWAVIj0S0nL3AjGWgEpa+vr+9cuHDhE/iZJ8O/LUXYUmyy0rLgnywVQ+EacgalZ/h9fuHzh8I4DRNuuh3M/q6E6FJ2MRqdcPS+hn+VrXhUYRu8evWqA+7ZiiDnhnZKwTuNzLjvnG6PW07tN68FggEZJ77//vs977777ls///zzWdD6WWmCnuIJ7/aoEcOWE3MqC2tMhtsMNFtzUIXXYttmI0tbkHXLuQZB8ArsIIiW8/yFCxc6kJW/Z15kWFKauJas5YyLBqgbfbihV2mGf9n75oOBE/OEgiVsYSWEX02fWsOEwizYo7Y7YRMe3dfEE4gLXRBoRBFjtT9BzcwwnESE4SLDKlpyMqmMmIYlxjDGBNSoc6aG1MjGjRtN3bxp06YxST0WunaTN+qIUXNz8yPoX5fCSCVihEZMVv+IFxIxgtG2dnd3H0BQ/ALrJGIEgcxtTSLJQUgiRij/i1taWjaUlJSMCTG6fv361h07dmxB+JeIEfj4E2kkriC4oLvvmjVrfoXkpiNGBGw4oRW9qeJgGcAMC22Inp4eOTXECCXl7z766CMdMQK/YLQg0vUeeuih8JM6YrR+/frNVVVVEjEiVHXXXXfJyRaTrSP7Y23wmOd4jQUSqzymBhTYXLscsacQhZREjA4dOhQAT10Y/I4URGlCIkYvvvjiNjy5RIzmzp0r0QG2DGYRI95LCIspgE03fs+vw0CQlogRmPs1vhQkLmL03HPP/TY3N1ciRosXL5bN9nhBGq4lDdIiTdJOihgpw8xtamp6Bl28RIwWLFiggzV3MkmDtDhImzzIS/GMjxjV1ta+qgF4NMREiBErcXZ5DmmUoYqzDLbBdfEGafEa15DHrl27EiNGTz755EYY1TpiHkj9CV1z//79Yv++zyT0YJeIkVVlXJ+s/lueeILwVNy13333nWzEkBi3fvDBBzpipGmEzXARPORx/igrLQsVQgnGtavX0F6Wido5taKsvEw+ztEjRyWMyZLg/ffeF88//7wEcaIHaVMQxestrZLXEaOHH364pbKycjn3s2p6VVKPKC8vF0899ZR8agK8RYVFEsI6dfKURIxYJLFbpNfEQ4ycfU7WLhIxunz5ciRiBN9v0CBuI1iiYEqB+OnyTzGIEUFARFMdhU5EJy8/T1b0imckYoQAJHMG/d+oh9V61/DB7vDyTz/piFHt3NqEdMiDQ/GMRIwwdMQomX0kGocPHZbIoiUzQyxbsUKkpqTK0jEZYqR4/t8hRvSE423HxcQJE8XKVatE5fRKiRz+vyJGZ86cEV98/rl8G7GmuUkacq+j984RI4/XI9VqZrBv+RxCZGdmierqWaK8crpElY0G25KEiBEi5S0YTwgxMllBdnR0hBCjFLsomVqip36ziBF5xiBGqCe6aMW0/rEgRjWzasaMGJGHqmFiEaMff/yxDX69hK7JoGZmEPZeunSpPCaSbAbIC3d/8oxBjNBttS1ZssQ1NDyUQxyDmIfRIEBz89ZNeVw4pZBh2xRsBR6yEyTPuIgRWsT92tOxujKaNMxvvvlGTh6bWUPaHIpXfMQITfduj8fjJH6qvbU0QoyIq3OaQYxIk7TJA7yMEaPp06cvYBZlzkiGGPGtJ6p7sQKRlHmGRpgMrHH0OrQXT1vRmMciRqiqAyxoGX1xw0BRUVEWsmo1pZeIUQJhyJhJjjOZEITBNCFQh+zF0BEj8HZH16w6YrR9+/a/gLhEjBx9DuEaco0bMeJa0iAt0kQxlBgxYjXN8h6S6YjRiRMnOtC7UDMzqVaf1xdCjIQ5xIhaoJuOuEd0TbzzzjsRiJHWAVIjSREjSr9o0aLO+++/PwIxsiNXJkOMRr2jOmJEwzxy5Mh2MDNGjLT+gn+VreiIUVdXlwPu2Yog54Z2IhAj5iViZJw8jkaMTp8+veftt99+68qVKzGIUXi3R40YtpzRiBGarTnwllpsm0SMkHXLFRYvESO0nOeRgzrOnj2bEDGK13LaE8AJEjHCDTGIERg4MceFGCVqwg0RI7XQBYHuCDEyDUv8OyBGlqhq6V829K0xWx4++OCDv4ZL/hJR9z7lnoXqQ5ab6hXqcRx/CE/YZoaepghdI8kEQfOVCxd9A0lrLe5PZ+xg2OcMH1pyY0wBPTcKrffR3/z3wYMHnXcsyOLFi192Op0bcV8Ogxh7EhbKLJ74m52b9saTMYSv01jPMPfwN+i6cO+mw4cP/8+4BUFE3Q2iq5iFiQAhGcoWkymf5SQ1oq0jHWqDNQcDG/tgvj5h6me4h/B/QyG0esyCLFy4sA0E7mHryK8j+GKZxxSCk9vDNdr2UAjS4rboOD0iLrK5uHr1qjzGA51AD3SvaUEaGxs/QqvwGMtFIj4aZkbNUBMUQhMkXCOaIJzUDDXBLSN0dfHiRVkmorvbiZSxxlAQ5JtXoM4/kjFflVEIYh7UhiaEtiXRWtSE0QxWff4l+x8KwxfWFAzb/CqKo9cTCrJs2bJM1J432GgRGeSkVjRNyIyrmPNpkcyES7aWoYqzoLBQQhEaAxqrphlqo7OzU04mRFR0RZ999tmwxj8ixGPBn/C0OSz7aBeaTWgC8En5l+97j393TH/5qH1j5PeflEI/iCzO9byXa7Ut4zl6FAw5h7zA8r9iIuvy5ctT4Hr9IJTB74OKi4rllmjMwreCbSbVXVFeIbESJgpiY/3OfvkBAouoVatXyc84tK2i8XJN941u+eUVBBmBW0/et2/fcIRGIPEGMMygm+bn5f/zacP2UftbX18vUGCHvEP1sRT+ww8/DL3Lwz9uwby58/Q1pEWapE0e0EoGBKRG/hQhCGxgNe2AgSolNUW2kZxBEYzp4CfmTpRPFpG0oC1qwOF1yIKbjTwLJLkW/zR6pE0ejC/YttUxgsCAZlIQRs7w2BAv0NHyYxprGGR393Vht9lFGp68orIiohcO1wx5kBd5xiQ9qLlAYl9p6SE0AOsC/oDpZHjm9Bnh8/iEJc0i7luwQApEr4kQJCgkbfJgGIDwBTGC4MY0GajsNhGSQ/0zUSYwPlz44YJ09fqGBlFcUhz3y6xgSBLJg7zIM0YQLZtKK4cmAtaA/JLOaFzuvCzajh+XQjzQ2Cg/uB3oH0iYaUmbf6Ozty4ILJobn63tqxlNsC1tO94mcZJp00qRFIt17CNZptV4KJ6RgiBm9CAKZjMGjKYjfVuNbYMuqn1jxK/1tE4/2Rj1j4aaNcUzRhD4did8u5Jfu1DN3BqjkZ6aLspLy6XQsijyG6/hPeSh8YwRBOH3EBLTEmKlhDetAauhx8ysninq7gl9MDs0OCRcgy7DspC0yYOCk2eMIGvXrn2nvb39ZX5jRKLh8SThx3Dnz+kfODFIlRSXJNcGmJM2NQKvcZFnzIsjNG9Xampq9tGQBlwDMmvKLx9UfRFvugZcAs2WnDxOdq+WiUmbv8mLPGMEwTYEXnjhhd9D0j7WELR+LkiGADE6MkNrtUqye6XgoEna5LFu3bo/kmfcTg+1RDuK5W0oWl6i5MwLMtImsBV+ov7QklAD77jtSIgqamCNpmkUX9tQdJ1M2HJSQix6A410FUq71QTo8nLzZNaMJwyZcxoZqPaNEYWYOXPmnpdeeukN0PPH7fTCGeHcXRs2bPhfuHM9VU53Zm0yFoxeE4I1CMM9hUAHcHTLli0bQKfddBWP842vvfbaq5cuXVrNKksmRMQNpncjgaQWUKe4vW65JTTUqqqq3Zs3b6ZdfDPmvgbX5r/55pvrvvrqq7UwtgImqlR7auQ3Rnab/lYj/Bsj76hXGihCgANdwXtwhLfDNTHmTg/XS3t6ehqg0tUdHR0r8Xui1s/Eq+K1/gbX+uGee7DFfysoKDiC31133PviHj42/wtAzY4dO+pOnTo1D11cLc5bBgcH5Zf42dnZF0EjiG6wo66u7kxLSwtx1HP8LDHaMMctSNTCKfhTTPhd4St56lKveuVCVKAb9G6NCw34Vw+r+DcZ/xBgAJCTz4Q7OhY2AAAAAElFTkSuQmCC);
|
651
|
+
width: 34px;
|
652
|
+
height: 34px;
|
653
|
+
display: inline-block;
|
654
|
+
}
|
655
|
+
|
656
|
+
a#messageBox_help:hover {
|
657
|
+
background-position: 0 -34px;
|
658
|
+
}
|
659
|
+
|
660
|
+
a#messageBox_help:active {
|
661
|
+
background-position: 0 -68px;
|
662
|
+
}
|
663
|
+
|
664
|
+
a#messageBox_dismiss {
|
665
|
+
background-image: url(data:image/png;base64,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);
|
666
|
+
width: 97px;
|
667
|
+
height: 34px;
|
668
|
+
cursor:pointer;
|
669
|
+
text-indent: -9999px;
|
670
|
+
display: inline-block;
|
671
|
+
margin-left: 30px;
|
672
|
+
}
|
673
|
+
|
674
|
+
a#messageBox_dismiss:hover {
|
675
|
+
background-position: 0 -34px;
|
676
|
+
}
|
677
|
+
|
678
|
+
a#messageBox_dismiss:active {
|
679
|
+
background-position: 0 -68px;
|
680
|
+
}
|
681
|
+
|
682
|
+
table.hideRevealButton tr td a.revealButton {
|
683
|
+
visibility: visible;
|
684
|
+
}
|
685
|
+
|
686
|
+
#listPane {
|
687
|
+
margin-left: 176px;
|
688
|
+
position: relative;
|
689
|
+
left: auto;
|
690
|
+
}
|
691
|
+
|
692
|
+
</style>
|
693
|
+
|
694
|
+
<script type="text/javascript">
|
695
|
+
/*!
|
696
|
+
* jQuery JavaScript Library v1.4.2
|
697
|
+
* http://jquery.com/
|
698
|
+
*
|
699
|
+
* Copyright 2010, John Resig
|
700
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
701
|
+
* http://jquery.org/license
|
702
|
+
*
|
703
|
+
* Includes Sizzle.js
|
704
|
+
* http://sizzlejs.com/
|
705
|
+
* Copyright 2010, The Dojo Foundation
|
706
|
+
* Released under the MIT, BSD, and GPL Licenses.
|
707
|
+
*
|
708
|
+
* Date: Sat Feb 13 22:33:48 2010 -0500
|
709
|
+
*/
|
710
|
+
(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?
|
711
|
+
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=
|
712
|
+
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,
|
713
|
+
"&")}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=
|
714
|
+
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/,
|
715
|
+
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))&&
|
716
|
+
(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,
|
717
|
+
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===
|
718
|
+
"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,
|
719
|
+
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)||
|
720
|
+
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",
|
721
|
+
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,
|
722
|
+
"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 "+
|
723
|
+
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],
|
724
|
+
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]===
|
725
|
+
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&&
|
726
|
+
!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=
|
727
|
+
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'/>";
|
728
|
+
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,
|
729
|
+
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=
|
730
|
+
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=
|
731
|
+
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,
|
732
|
+
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];
|
733
|
+
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,
|
734
|
+
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===
|
735
|
+
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,
|
736
|
+
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+" ",
|
737
|
+
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]+" ",
|
738
|
+
" ");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=
|
739
|
+
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=
|
740
|
+
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=
|
741
|
+
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");
|
742
|
+
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,
|
743
|
+
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(".");
|
744
|
+
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),
|
745
|
+
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!=
|
746
|
+
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=
|
747
|
+
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()&&
|
748
|
+
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;
|
749
|
+
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(" "),
|
750
|
+
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||
|
751
|
+
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,
|
752
|
+
"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=
|
753
|
+
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,
|
754
|
+
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=
|
755
|
+
{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")}};
|
756
|
+
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",
|
757
|
+
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,
|
758
|
+
"_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,
|
759
|
+
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"&&
|
760
|
+
!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}},
|
761
|
+
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,
|
762
|
+
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(" "),
|
763
|
+
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];
|
764
|
+
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,
|
765
|
+
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();
|
766
|
+
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||
|
767
|
+
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[];
|
768
|
+
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-
|
769
|
+
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-]|\\.)+)/,
|
770
|
+
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")}},
|
771
|
+
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]=
|
772
|
+
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=[];
|
773
|
+
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()},
|
774
|
+
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,
|
775
|
+
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)},
|
776
|
+
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)}},
|
777
|
+
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=
|
778
|
+
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=
|
779
|
+
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===
|
780
|
+
"="?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,
|
781
|
+
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||
|
782
|
+
!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=
|
783
|
+
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"&&
|
784
|
+
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>";
|
785
|
+
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}}();
|
786
|
+
(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)}:
|
787
|
+
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)/,
|
788
|
+
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;
|
789
|
+
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=
|
790
|
+
{},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===
|
791
|
+
"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",
|
792
|
+
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")?
|
793
|
+
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===
|
794
|
+
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)?
|
795
|
+
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=
|
796
|
+
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},
|
797
|
+
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)})},
|
798
|
+
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,
|
799
|
+
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);
|
800
|
+
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,
|
801
|
+
""):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]&&
|
802
|
+
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]||
|
803
|
+
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===
|
804
|
+
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]);
|
805
|
+
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)||["",
|
806
|
+
""])[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=
|
807
|
+
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]?
|
808
|
+
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=
|
809
|
+
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=
|
810
|
+
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,
|
811
|
+
"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=
|
812
|
+
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=
|
813
|
+
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!==
|
814
|
+
"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},
|
815
|
+
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(" "),
|
816
|
+
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,
|
817
|
+
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&&
|
818
|
+
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)?
|
819
|
+
"&":"?")+(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===
|
820
|
+
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=
|
821
|
+
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",
|
822
|
+
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||
|
823
|
+
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);
|
824
|
+
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===
|
825
|
+
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===
|
826
|
+
"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;
|
827
|
+
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");
|
828
|
+
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],
|
829
|
+
"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)},
|
830
|
+
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=
|
831
|
+
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([]);
|
832
|
+
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===
|
833
|
+
"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]||
|
834
|
+
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;
|
835
|
+
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=
|
836
|
+
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,
|
837
|
+
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||
|
838
|
+
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?
|
839
|
+
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=
|
840
|
+
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;
|
841
|
+
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&&
|
842
|
+
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>";
|
843
|
+
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);
|
844
|
+
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,
|
845
|
+
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-
|
846
|
+
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":
|
847
|
+
"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
|
848
|
+
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);
|
849
|
+
</script>
|
850
|
+
|
851
|
+
|
852
|
+
<script type="text/javascript"> <!-- sha256.js -->
|
853
|
+
// A JavaScript implementation of the Secure Hash Standard
|
854
|
+
// Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/
|
855
|
+
// Distributed under the BSD License
|
856
|
+
// Some bits taken from Paul Johnston's SHA-1 implementation
|
857
|
+
//
|
858
|
+
|
859
|
+
// bits per input character. 8 - ASCII; 16 - Unicode
|
860
|
+
var chrsz = 8;
|
861
|
+
|
862
|
+
// hex output format. 0 - lowercase; 1 - uppercase
|
863
|
+
var hexcase = 0;
|
864
|
+
|
865
|
+
function safe_add (x, y) {
|
866
|
+
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
|
867
|
+
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
868
|
+
return (msw << 16) | (lsw & 0xFFFF);
|
869
|
+
}
|
870
|
+
|
871
|
+
function S (X, n) {return ( X >>> n ) | (X << (32 - n));}
|
872
|
+
|
873
|
+
function R (X, n) {return ( X >>> n );}
|
874
|
+
|
875
|
+
function Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
|
876
|
+
|
877
|
+
function Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
|
878
|
+
|
879
|
+
function Sigma0256(x) {return (S(x, 2) ^ S(x, 13) ^ S(x, 22));}
|
880
|
+
|
881
|
+
function Sigma1256(x) {return (S(x, 6) ^ S(x, 11) ^ S(x, 25));}
|
882
|
+
|
883
|
+
function Gamma0256(x) {return (S(x, 7) ^ S(x, 18) ^ R(x, 3));}
|
884
|
+
|
885
|
+
function Gamma1256(x) {return (S(x, 17) ^ S(x, 19) ^ R(x, 10));}
|
886
|
+
|
887
|
+
function Sigma0512(x) {return (S(x, 28) ^ S(x, 34) ^ S(x, 39));}
|
888
|
+
|
889
|
+
function Sigma1512(x) {return (S(x, 14) ^ S(x, 18) ^ S(x, 41));}
|
890
|
+
|
891
|
+
function Gamma0512(x) {return (S(x, 1) ^ S(x, 8) ^ R(x, 7));}
|
892
|
+
|
893
|
+
function Gamma1512(x) {return (S(x, 19) ^ S(x, 61) ^ R(x, 6));}
|
894
|
+
|
895
|
+
function core_sha256 (m, l) {
|
896
|
+
var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2);
|
897
|
+
var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
|
898
|
+
var W = new Array(64);
|
899
|
+
var a, b, c, d, e, f, g, h, i, j;
|
900
|
+
var T1, T2;
|
901
|
+
|
902
|
+
// append padding
|
903
|
+
m[l >> 5] |= 0x80 << (24 - l % 32);
|
904
|
+
m[((l + 64 >> 9) << 4) + 15] = l;
|
905
|
+
|
906
|
+
for ( var i = 0; i<m.length; i+=16 ) {
|
907
|
+
a = HASH[0];
|
908
|
+
b = HASH[1];
|
909
|
+
c = HASH[2];
|
910
|
+
d = HASH[3];
|
911
|
+
e = HASH[4];
|
912
|
+
f = HASH[5];
|
913
|
+
g = HASH[6];
|
914
|
+
h = HASH[7];
|
915
|
+
|
916
|
+
for ( var j = 0; j<64; j++) {
|
917
|
+
if (j < 16) W[j] = m[j + i];
|
918
|
+
else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
|
919
|
+
|
920
|
+
T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
|
921
|
+
T2 = safe_add(Sigma0256(a), Maj(a, b, c));
|
922
|
+
|
923
|
+
h = g;
|
924
|
+
g = f;
|
925
|
+
f = e;
|
926
|
+
e = safe_add(d, T1);
|
927
|
+
d = c;
|
928
|
+
c = b;
|
929
|
+
b = a;
|
930
|
+
a = safe_add(T1, T2);
|
931
|
+
}
|
932
|
+
|
933
|
+
HASH[0] = safe_add(a, HASH[0]);
|
934
|
+
HASH[1] = safe_add(b, HASH[1]);
|
935
|
+
HASH[2] = safe_add(c, HASH[2]);
|
936
|
+
HASH[3] = safe_add(d, HASH[3]);
|
937
|
+
HASH[4] = safe_add(e, HASH[4]);
|
938
|
+
HASH[5] = safe_add(f, HASH[5]);
|
939
|
+
HASH[6] = safe_add(g, HASH[6]);
|
940
|
+
HASH[7] = safe_add(h, HASH[7]);
|
941
|
+
}
|
942
|
+
return HASH;
|
943
|
+
}
|
944
|
+
|
945
|
+
function core_sha512 (m, l) {
|
946
|
+
var K = new Array(0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817);
|
947
|
+
var HASH = new Array(0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179);
|
948
|
+
var W = new Array(80);
|
949
|
+
var a, b, c, d, e, f, g, h, i, j;
|
950
|
+
var T1, T2;
|
951
|
+
|
952
|
+
}
|
953
|
+
|
954
|
+
function str2binb (str) {
|
955
|
+
var bin = Array();
|
956
|
+
var mask = (1 << chrsz) - 1;
|
957
|
+
for(var i = 0; i < str.length * chrsz; i += chrsz)
|
958
|
+
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
|
959
|
+
return bin;
|
960
|
+
}
|
961
|
+
|
962
|
+
function binb2str (bin) {
|
963
|
+
var str = "";
|
964
|
+
var mask = (1 << chrsz) - 1;
|
965
|
+
for(var i = 0; i < bin.length * 32; i += chrsz)
|
966
|
+
str += String.fromCharCode((bin[i>>5] >>> (24 - i%32)) & mask);
|
967
|
+
return str;
|
968
|
+
}
|
969
|
+
|
970
|
+
function binb2hex (binarray) {
|
971
|
+
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
|
972
|
+
var str = "";
|
973
|
+
for(var i = 0; i < binarray.length * 4; i++)
|
974
|
+
{
|
975
|
+
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
|
976
|
+
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
|
977
|
+
}
|
978
|
+
return str;
|
979
|
+
}
|
980
|
+
|
981
|
+
function binb2b64 (binarray) {
|
982
|
+
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
983
|
+
var str = "";
|
984
|
+
for(var i = 0; i < binarray.length * 4; i += 3)
|
985
|
+
{
|
986
|
+
var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
|
987
|
+
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
|
988
|
+
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
|
989
|
+
for(var j = 0; j < 4; j++)
|
990
|
+
{
|
991
|
+
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
|
992
|
+
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
|
993
|
+
}
|
994
|
+
}
|
995
|
+
return str;
|
996
|
+
}
|
997
|
+
|
998
|
+
function hex_sha256(s){return binb2hex(core_sha256(str2binb(s),s.length * chrsz));}
|
999
|
+
function b64_sha256(s){return binb2b64(core_sha256(str2binb(s),s.length * chrsz));}
|
1000
|
+
function str_sha256(s){return binb2str(core_sha256(str2binb(s),s.length * chrsz));}
|
1001
|
+
</script>
|
1002
|
+
|
1003
|
+
<script type="text/javascript"> <!-- sha1.js -->
|
1004
|
+
//
|
1005
|
+
// A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
|
1006
|
+
// in FIPS PUB 180-1
|
1007
|
+
// Version 2.1a Copyright Paul Johnston 2000 - 2002.
|
1008
|
+
// Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
|
1009
|
+
// Distributed under the BSD License
|
1010
|
+
// See http://pajhome.org.uk/crypt/md5 for details.
|
1011
|
+
//
|
1012
|
+
|
1013
|
+
//
|
1014
|
+
// Configurable variables. You may need to tweak these to be compatible with
|
1015
|
+
// the server-side, but the defaults work in most cases.
|
1016
|
+
//
|
1017
|
+
|
1018
|
+
// hex output format. 0 - lowercase; 1 - uppercase
|
1019
|
+
var hexcase = 0;
|
1020
|
+
|
1021
|
+
// base-64 pad character. "=" for strict RFC compliance
|
1022
|
+
var b64pad = "";
|
1023
|
+
|
1024
|
+
// bits per input character. 8 - ASCII; 16 - Unicode
|
1025
|
+
var chrsz = 8;
|
1026
|
+
|
1027
|
+
// These are the functions you'll usually want to call
|
1028
|
+
// They take string arguments and return either hex or base-64 encoded strings
|
1029
|
+
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
|
1030
|
+
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
|
1031
|
+
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
|
1032
|
+
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
|
1033
|
+
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
|
1034
|
+
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
|
1035
|
+
|
1036
|
+
//Perform a simple self-test to see if the VM is working
|
1037
|
+
function sha1_vm_test()
|
1038
|
+
{
|
1039
|
+
return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
|
1040
|
+
}
|
1041
|
+
|
1042
|
+
// Calculate the SHA-1 of an array of big-endian words, and a bit length
|
1043
|
+
function core_sha1(x, len)
|
1044
|
+
{
|
1045
|
+
// append padding
|
1046
|
+
x[len >> 5] |= 0x80 << (24 - len % 32);
|
1047
|
+
x[((len + 64 >> 9) << 4) + 15] = len;
|
1048
|
+
|
1049
|
+
var w = Array(80);
|
1050
|
+
var a = 1732584193;
|
1051
|
+
var b = -271733879;
|
1052
|
+
var c = -1732584194;
|
1053
|
+
var d = 271733878;
|
1054
|
+
var e = -1009589776;
|
1055
|
+
|
1056
|
+
for(var i = 0; i < x.length; i += 16)
|
1057
|
+
{
|
1058
|
+
var olda = a;
|
1059
|
+
var oldb = b;
|
1060
|
+
var oldc = c;
|
1061
|
+
var oldd = d;
|
1062
|
+
var olde = e;
|
1063
|
+
|
1064
|
+
for(var j = 0; j < 80; j++)
|
1065
|
+
{
|
1066
|
+
if(j < 16) w[j] = x[i + j];
|
1067
|
+
else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
|
1068
|
+
var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
|
1069
|
+
safe_add(safe_add(e, w[j]), sha1_kt(j)));
|
1070
|
+
e = d;
|
1071
|
+
d = c;
|
1072
|
+
c = rol(b, 30);
|
1073
|
+
b = a;
|
1074
|
+
a = t;
|
1075
|
+
}
|
1076
|
+
|
1077
|
+
a = safe_add(a, olda);
|
1078
|
+
b = safe_add(b, oldb);
|
1079
|
+
c = safe_add(c, oldc);
|
1080
|
+
d = safe_add(d, oldd);
|
1081
|
+
e = safe_add(e, olde);
|
1082
|
+
}
|
1083
|
+
return Array(a, b, c, d, e);
|
1084
|
+
|
1085
|
+
}
|
1086
|
+
|
1087
|
+
// Perform the appropriate triplet combination function for the current
|
1088
|
+
// iteration
|
1089
|
+
function sha1_ft(t, b, c, d)
|
1090
|
+
{
|
1091
|
+
if(t < 20) return (b & c) | ((~b) & d);
|
1092
|
+
if(t < 40) return b ^ c ^ d;
|
1093
|
+
if(t < 60) return (b & c) | (b & d) | (c & d);
|
1094
|
+
return b ^ c ^ d;
|
1095
|
+
}
|
1096
|
+
|
1097
|
+
// Determine the appropriate additive constant for the current iteration
|
1098
|
+
function sha1_kt(t)
|
1099
|
+
{
|
1100
|
+
return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
|
1101
|
+
(t < 60) ? -1894007588 : -899497514;
|
1102
|
+
}
|
1103
|
+
|
1104
|
+
// Calculate the HMAC-SHA1 of a key and some data
|
1105
|
+
function core_hmac_sha1(key, data)
|
1106
|
+
{
|
1107
|
+
var bkey = str2binb(key);
|
1108
|
+
if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
|
1109
|
+
|
1110
|
+
var ipad = Array(16), opad = Array(16);
|
1111
|
+
for(var i = 0; i < 16; i++)
|
1112
|
+
{
|
1113
|
+
ipad[i] = bkey[i] ^ 0x36363636;
|
1114
|
+
opad[i] = bkey[i] ^ 0x5C5C5C5C;
|
1115
|
+
}
|
1116
|
+
|
1117
|
+
var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
|
1118
|
+
return core_sha1(opad.concat(hash), 512 + 160);
|
1119
|
+
}
|
1120
|
+
|
1121
|
+
// Add integers, wrapping at 2^32. This uses 16-bit operations internally
|
1122
|
+
// to work around bugs in some JS interpreters.
|
1123
|
+
function safe_add(x, y)
|
1124
|
+
{
|
1125
|
+
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
|
1126
|
+
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
1127
|
+
return (msw << 16) | (lsw & 0xFFFF);
|
1128
|
+
}
|
1129
|
+
|
1130
|
+
// Bitwise rotate a 32-bit number to the left.
|
1131
|
+
function rol(num, cnt)
|
1132
|
+
{
|
1133
|
+
return (num << cnt) | (num >>> (32 - cnt));
|
1134
|
+
}
|
1135
|
+
|
1136
|
+
// Convert an 8-bit or 16-bit string to an array of big-endian words
|
1137
|
+
// In 8-bit function, characters >255 have their hi-byte silently ignored.
|
1138
|
+
function str2binb(str)
|
1139
|
+
{
|
1140
|
+
var bin = Array();
|
1141
|
+
var mask = (1 << chrsz) - 1;
|
1142
|
+
for(var i = 0; i < str.length * chrsz; i += chrsz)
|
1143
|
+
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
|
1144
|
+
return bin;
|
1145
|
+
}
|
1146
|
+
|
1147
|
+
// Convert an array of big-endian words to a string
|
1148
|
+
function binb2str(bin)
|
1149
|
+
{
|
1150
|
+
var str = "";
|
1151
|
+
var mask = (1 << chrsz) - 1;
|
1152
|
+
for(var i = 0; i < bin.length * 32; i += chrsz)
|
1153
|
+
str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
|
1154
|
+
return str;
|
1155
|
+
}
|
1156
|
+
|
1157
|
+
// Convert an array of big-endian words to a hex string.
|
1158
|
+
function binb2hex(binarray)
|
1159
|
+
{
|
1160
|
+
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
|
1161
|
+
var str = "";
|
1162
|
+
for(var i = 0; i < binarray.length * 4; i++)
|
1163
|
+
{
|
1164
|
+
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
|
1165
|
+
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
|
1166
|
+
}
|
1167
|
+
return str;
|
1168
|
+
}
|
1169
|
+
|
1170
|
+
function hex2bin(hex_str)
|
1171
|
+
{
|
1172
|
+
var char_str = "";
|
1173
|
+
var num_str = "";
|
1174
|
+
var i;
|
1175
|
+
for(i=0; i < hex_str.length; i+=2) {
|
1176
|
+
char_str += String.fromCharCode(parseInt(hex_str.substring(i, i+2), 16));
|
1177
|
+
}
|
1178
|
+
return char_str;
|
1179
|
+
}
|
1180
|
+
|
1181
|
+
|
1182
|
+
// Convert an array of big-endian words to a base-64 string
|
1183
|
+
function binb2b64(binarray)
|
1184
|
+
{
|
1185
|
+
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
1186
|
+
var str = "";
|
1187
|
+
for(var i = 0; i < binarray.length * 4; i += 3)
|
1188
|
+
{
|
1189
|
+
var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
|
1190
|
+
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
|
1191
|
+
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
|
1192
|
+
for(var j = 0; j < 4; j++)
|
1193
|
+
{
|
1194
|
+
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
|
1195
|
+
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
|
1196
|
+
}
|
1197
|
+
}
|
1198
|
+
return str;
|
1199
|
+
}
|
1200
|
+
</script>
|
1201
|
+
|
1202
|
+
<script type="text/javascript"> <!-- gibberish-aes.js -->
|
1203
|
+
// Gibberish-AES
|
1204
|
+
// A lightweight Javascript Libray for OpenSSL compatible AES CBC encryption.
|
1205
|
+
//
|
1206
|
+
// Author: Mark Percival
|
1207
|
+
// Email: mark@mpercival.com
|
1208
|
+
// Copyright: Mark Percival - http://mpercival.com 2008
|
1209
|
+
// Josh Davis - http://www.josh-davis.org/ecmaScrypt 2007
|
1210
|
+
// Chris Veness - http://www.movable-type.co.uk/scripts/aes.html 2007
|
1211
|
+
// Michel I. Gallant - http://www.jensign.com/
|
1212
|
+
//
|
1213
|
+
// License: MIT
|
1214
|
+
// Usage: Gibberish.encrypt("secret", "password", 256)
|
1215
|
+
// Outputs: AES Encrypted text encoded in Base64
|
1216
|
+
|
1217
|
+
var GibberishAES = {
|
1218
|
+
// Spells out 'Salted__'
|
1219
|
+
SALTED_PREFIX: [83, 97, 108, 116, 101, 100, 95, 95],
|
1220
|
+
ZERO_IV: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
1221
|
+
|
1222
|
+
Nr: 14,
|
1223
|
+
// Default to 256 Bit Encryption
|
1224
|
+
Nb: 4,
|
1225
|
+
Nk: 8,
|
1226
|
+
Decrypt: false,
|
1227
|
+
|
1228
|
+
enc_utf8: function(s)
|
1229
|
+
{
|
1230
|
+
try {
|
1231
|
+
return unescape(encodeURIComponent(s));
|
1232
|
+
}
|
1233
|
+
catch(e) {
|
1234
|
+
throw 'Error on UTF-8 encode';
|
1235
|
+
}
|
1236
|
+
},
|
1237
|
+
|
1238
|
+
dec_utf8: function(s)
|
1239
|
+
{
|
1240
|
+
try {
|
1241
|
+
return decodeURIComponent(escape(s));
|
1242
|
+
}
|
1243
|
+
catch(e) {
|
1244
|
+
throw ('Bad Key');
|
1245
|
+
}
|
1246
|
+
},
|
1247
|
+
|
1248
|
+
padBlock: function(byteArr)
|
1249
|
+
{
|
1250
|
+
var array = [];
|
1251
|
+
if (byteArr.length < 16) {
|
1252
|
+
var cpad = 16 - byteArr.length;
|
1253
|
+
var array = [cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad, cpad];
|
1254
|
+
}
|
1255
|
+
for (var i = 0; i < byteArr.length; i++)
|
1256
|
+
{
|
1257
|
+
array[i] = byteArr[i]
|
1258
|
+
}
|
1259
|
+
return array;
|
1260
|
+
},
|
1261
|
+
|
1262
|
+
block2s: function(block, lastBlock)
|
1263
|
+
{
|
1264
|
+
var string = '';
|
1265
|
+
if (lastBlock) {
|
1266
|
+
var padding = block[15];
|
1267
|
+
if (padding > 16) {
|
1268
|
+
throw ('Decryption error: Maybe bad key');
|
1269
|
+
}
|
1270
|
+
if (padding == 16) {
|
1271
|
+
return '';
|
1272
|
+
}
|
1273
|
+
for (var i = 0; i < 16 - padding; i++) {
|
1274
|
+
string += String.fromCharCode(block[i]);
|
1275
|
+
}
|
1276
|
+
} else {
|
1277
|
+
for (i = 0; i < 16; i++) {
|
1278
|
+
string += String.fromCharCode(block[i]);
|
1279
|
+
}
|
1280
|
+
}
|
1281
|
+
return string;
|
1282
|
+
},
|
1283
|
+
|
1284
|
+
a2h: function(numArr)
|
1285
|
+
{
|
1286
|
+
var string = '';
|
1287
|
+
for (var i = 0; i < numArr.length; i++) {
|
1288
|
+
string += (numArr[i] < 16 ? '0': '') + numArr[i].toString(16);
|
1289
|
+
}
|
1290
|
+
return string;
|
1291
|
+
},
|
1292
|
+
|
1293
|
+
h2a: function(s)
|
1294
|
+
{
|
1295
|
+
var ret = [];
|
1296
|
+
s.replace(/(..)/g,
|
1297
|
+
function(s) {
|
1298
|
+
ret.push(parseInt(s, 16));
|
1299
|
+
});
|
1300
|
+
return ret;
|
1301
|
+
},
|
1302
|
+
|
1303
|
+
s2a: function(string) {
|
1304
|
+
var array = [];
|
1305
|
+
|
1306
|
+
for (var i = 0; i < string.length; i++)
|
1307
|
+
{
|
1308
|
+
array[i] = string.charCodeAt(i);
|
1309
|
+
}
|
1310
|
+
return array;
|
1311
|
+
},
|
1312
|
+
|
1313
|
+
a2s: function(inArray) {
|
1314
|
+
var result = "";
|
1315
|
+
|
1316
|
+
for (var i = 0; i < inArray.length; i++)
|
1317
|
+
{
|
1318
|
+
result += String.fromCharCode(inArray[i]);
|
1319
|
+
}
|
1320
|
+
return result;
|
1321
|
+
},
|
1322
|
+
|
1323
|
+
size: function(newsize)
|
1324
|
+
{
|
1325
|
+
switch (newsize)
|
1326
|
+
{
|
1327
|
+
case 128:
|
1328
|
+
this.Nr = 10;
|
1329
|
+
this.Nk = 4;
|
1330
|
+
break;
|
1331
|
+
case 192:
|
1332
|
+
this.Nr = 12;
|
1333
|
+
this.Nk = 6;
|
1334
|
+
break;
|
1335
|
+
case 256:
|
1336
|
+
this.Nr = 14;
|
1337
|
+
this.Nk = 8;
|
1338
|
+
break;
|
1339
|
+
default:
|
1340
|
+
throw ('Invalid Key Size Specified:' + newsize);
|
1341
|
+
}
|
1342
|
+
},
|
1343
|
+
|
1344
|
+
randArr: function(num) {
|
1345
|
+
var result = []
|
1346
|
+
for (var i = 0; i < num; i++) {
|
1347
|
+
result = result.concat(Math.floor(Math.random() * 256));
|
1348
|
+
}
|
1349
|
+
return result;
|
1350
|
+
},
|
1351
|
+
|
1352
|
+
openSSLKey: function(passwordArr, saltArr) {
|
1353
|
+
// Number of rounds depends on the size of the AES in use
|
1354
|
+
// 3 rounds for 256
|
1355
|
+
// 2 rounds for the key, 1 for the IV
|
1356
|
+
// 2 rounds for 128
|
1357
|
+
// 1 round for the key, 1 round for the IV
|
1358
|
+
// 3 rounds for 192 since it's not evenly divided by 128 bits
|
1359
|
+
var rounds = this.Nr >= 12 ? 3: 2;
|
1360
|
+
var key = [];
|
1361
|
+
var iv = [];
|
1362
|
+
var md5_hash = [];
|
1363
|
+
var result = [];
|
1364
|
+
data00 = passwordArr.concat(saltArr);
|
1365
|
+
md5_hash[0] = GibberishAES.Hash.MD5(data00);
|
1366
|
+
result = md5_hash[0];
|
1367
|
+
for (var i = 1; i < rounds; i++) {
|
1368
|
+
md5_hash[i] = GibberishAES.Hash.MD5(md5_hash[i - 1].concat(data00));
|
1369
|
+
result = result.concat(md5_hash[i]);
|
1370
|
+
}
|
1371
|
+
key = result.slice(0, 4 * this.Nk);
|
1372
|
+
iv = result.slice(4 * this.Nk, 4 * this.Nk + 16);
|
1373
|
+
return {
|
1374
|
+
key: key,
|
1375
|
+
iv: iv
|
1376
|
+
};
|
1377
|
+
},
|
1378
|
+
|
1379
|
+
rawEncrypt: function(plaintext, key, iv) {
|
1380
|
+
// plaintext, key and iv as byte arrays
|
1381
|
+
key = this.expandKey(key);
|
1382
|
+
var numBlocks = Math.ceil(plaintext.length / 16);
|
1383
|
+
var blocks = [];
|
1384
|
+
for (var i = 0; i < numBlocks; i++) {
|
1385
|
+
blocks[i] = this.padBlock(plaintext.slice(i * 16, i * 16 + 16));
|
1386
|
+
}
|
1387
|
+
if (plaintext.length % 16 === 0) {
|
1388
|
+
blocks.push([16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]);
|
1389
|
+
// CBC OpenSSL padding scheme
|
1390
|
+
numBlocks++;
|
1391
|
+
}
|
1392
|
+
var cipherBlocks = [];
|
1393
|
+
for (var i = 0; i < blocks.length; i++) {
|
1394
|
+
blocks[i] = (i === 0) ? this.xorBlocks(blocks[i], iv) : this.xorBlocks(blocks[i], cipherBlocks[i - 1]);
|
1395
|
+
cipherBlocks[i] = this.encryptBlock(blocks[i], key);
|
1396
|
+
}
|
1397
|
+
return cipherBlocks;
|
1398
|
+
},
|
1399
|
+
|
1400
|
+
decryptBinaryUsingKeyAndIvec: function(cryptArr, key, iv) {
|
1401
|
+
|
1402
|
+
// cryptArr, key and iv as byte arrays
|
1403
|
+
key = this.expandKey(key);
|
1404
|
+
var numBlocks = cryptArr.length / 16;
|
1405
|
+
var cipherBlocks = [];
|
1406
|
+
for (var i = 0; i < numBlocks; i++) {
|
1407
|
+
cipherBlocks.push(cryptArr.slice(i * 16, (i + 1) * 16));
|
1408
|
+
}
|
1409
|
+
var plainBlocks = [];
|
1410
|
+
|
1411
|
+
for (var i = cipherBlocks.length - 1; i >= 0; i--) {
|
1412
|
+
plainBlocks[i] = this.decryptBlock(cipherBlocks[i], key);
|
1413
|
+
plainBlocks[i] = (i === 0) ? this.xorBlocks(plainBlocks[i], iv) : this.xorBlocks(plainBlocks[i], cipherBlocks[i - 1]);
|
1414
|
+
}
|
1415
|
+
var string = '';
|
1416
|
+
for (var i = 0; i < numBlocks - 1; i++) {
|
1417
|
+
string += this.block2s(plainBlocks[i]);
|
1418
|
+
}
|
1419
|
+
string += this.block2s(plainBlocks[i], true);
|
1420
|
+
return string;
|
1421
|
+
},
|
1422
|
+
|
1423
|
+
encryptBlock: function(block, words) {
|
1424
|
+
this.Decrypt = false;
|
1425
|
+
var state = this.addRoundKey(block, words, 0);
|
1426
|
+
for (var round = 1; round < (this.Nr + 1); round++) {
|
1427
|
+
state = this.subBytes(state);
|
1428
|
+
state = this.shiftRows(state);
|
1429
|
+
if (round < this.Nr) {
|
1430
|
+
state = this.mixColumns(state);
|
1431
|
+
}
|
1432
|
+
//last round? don't mixColumns
|
1433
|
+
state = this.addRoundKey(state, words, round);
|
1434
|
+
}
|
1435
|
+
|
1436
|
+
return state;
|
1437
|
+
},
|
1438
|
+
|
1439
|
+
decryptBlock: function(block, words) {
|
1440
|
+
this.Decrypt = true;
|
1441
|
+
var state = this.addRoundKey(block, words, this.Nr);
|
1442
|
+
for (var round = this.Nr - 1; round > -1; round--) {
|
1443
|
+
state = this.shiftRows(state);
|
1444
|
+
state = this.subBytes(state);
|
1445
|
+
state = this.addRoundKey(state, words, round);
|
1446
|
+
if (round > 0) {
|
1447
|
+
state = this.mixColumns(state);
|
1448
|
+
}
|
1449
|
+
//last round? don't mixColumns
|
1450
|
+
}
|
1451
|
+
|
1452
|
+
return state;
|
1453
|
+
},
|
1454
|
+
|
1455
|
+
subBytes: function(state) {
|
1456
|
+
var S = this.Decrypt ? this.SBoxInv: this.SBox;
|
1457
|
+
var temp = [];
|
1458
|
+
for (var i = 0; i < 16; i++) {
|
1459
|
+
temp[i] = S[state[i]];
|
1460
|
+
}
|
1461
|
+
return temp;
|
1462
|
+
},
|
1463
|
+
|
1464
|
+
shiftRows: function(state) {
|
1465
|
+
var temp = [];
|
1466
|
+
var shiftBy = this.Decrypt ? [0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3] : [0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11];
|
1467
|
+
for (var i = 0; i < 16; i++) {
|
1468
|
+
temp[i] = state[shiftBy[i]];
|
1469
|
+
}
|
1470
|
+
return temp;
|
1471
|
+
},
|
1472
|
+
|
1473
|
+
mixColumns: function(state) {
|
1474
|
+
var t = [];
|
1475
|
+
if (!this.Decrypt) {
|
1476
|
+
for (var c = 0; c < 4; c++) {
|
1477
|
+
t[c * 4] = this.G2X[state[c * 4]] ^ this.G3X[state[1 + c * 4]] ^ state[2 + c * 4] ^ state[3 + c * 4];
|
1478
|
+
t[1 + c * 4] = state[c * 4] ^ this.G2X[state[1 + c * 4]] ^ this.G3X[state[2 + c * 4]] ^ state[3 + c * 4];
|
1479
|
+
t[2 + c * 4] = state[c * 4] ^ state[1 + c * 4] ^ this.G2X[state[2 + c * 4]] ^ this.G3X[state[3 + c * 4]];
|
1480
|
+
t[3 + c * 4] = this.G3X[state[c * 4]] ^ state[1 + c * 4] ^ state[2 + c * 4] ^ this.G2X[state[3 + c * 4]];
|
1481
|
+
}
|
1482
|
+
}else {
|
1483
|
+
for (var c = 0; c < 4; c++) {
|
1484
|
+
t[c*4] = this.GEX[state[c*4]] ^ this.GBX[state[1+c*4]] ^ this.GDX[state[2+c*4]] ^ this.G9X[state[3+c*4]];
|
1485
|
+
t[1+c*4] = this.G9X[state[c*4]] ^ this.GEX[state[1+c*4]] ^ this.GBX[state[2+c*4]] ^ this.GDX[state[3+c*4]];
|
1486
|
+
t[2+c*4] = this.GDX[state[c*4]] ^ this.G9X[state[1+c*4]] ^ this.GEX[state[2+c*4]] ^ this.GBX[state[3+c*4]];
|
1487
|
+
t[3+c*4] = this.GBX[state[c*4]] ^ this.GDX[state[1+c*4]] ^ this.G9X[state[2+c*4]] ^ this.GEX[state[3+c*4]];
|
1488
|
+
}
|
1489
|
+
}
|
1490
|
+
|
1491
|
+
return t;
|
1492
|
+
},
|
1493
|
+
|
1494
|
+
addRoundKey: function(state, words, round) {
|
1495
|
+
var temp = [];
|
1496
|
+
for (var i = 0; i < 16; i++) {
|
1497
|
+
temp[i] = state[i] ^ words[round][i];
|
1498
|
+
}
|
1499
|
+
return temp;
|
1500
|
+
},
|
1501
|
+
|
1502
|
+
xorBlocks: function(block1, block2) {
|
1503
|
+
var temp = [];
|
1504
|
+
for (var i = 0; i < 16; i++) {
|
1505
|
+
temp[i] = block1[i] ^ block2[i];
|
1506
|
+
}
|
1507
|
+
return temp;
|
1508
|
+
},
|
1509
|
+
|
1510
|
+
expandKey: function(key) {
|
1511
|
+
// Expects a 1d number array
|
1512
|
+
var Nb = this.Nb;
|
1513
|
+
var Nr = this.Nr;
|
1514
|
+
var Nk = this.Nk;
|
1515
|
+
|
1516
|
+
var w = [];
|
1517
|
+
var temp = [];
|
1518
|
+
|
1519
|
+
for (var i = 0; i < Nk; i++) {
|
1520
|
+
var r = [key[4 * i], key[4 * i + 1], key[4 * i + 2], key[4 * i + 3]];
|
1521
|
+
w[i] = r;
|
1522
|
+
}
|
1523
|
+
|
1524
|
+
for (var i = Nk; i < (4 * (Nr + 1)); i++) {
|
1525
|
+
w[i] = [];
|
1526
|
+
for (var t = 0; t < 4; t++) {
|
1527
|
+
temp[t] = w[i - 1][t];
|
1528
|
+
}
|
1529
|
+
if (i % Nk === 0) {
|
1530
|
+
temp = this.subWord(this.rotWord(temp));
|
1531
|
+
temp[0] ^= this.Rcon[i / Nk - 1];
|
1532
|
+
} else if (Nk > 6 && i % Nk == 4) {
|
1533
|
+
temp = this.subWord(temp);
|
1534
|
+
}
|
1535
|
+
for (var t = 0; t < 4; t++) {
|
1536
|
+
w[i][t] = w[i - Nk][t] ^ temp[t];
|
1537
|
+
}
|
1538
|
+
}
|
1539
|
+
var flat = [];
|
1540
|
+
for (var i = 0; i < (Nr + 1); i++) {
|
1541
|
+
flat[i] = [];
|
1542
|
+
for (var j = 0; j < 4; j++) {
|
1543
|
+
flat[i].push(w[i * 4 + j][0], w[i * 4 + j][1], w[i * 4 + j][2], w[i * 4 + j][3]);
|
1544
|
+
}
|
1545
|
+
}
|
1546
|
+
return flat;
|
1547
|
+
},
|
1548
|
+
|
1549
|
+
subWord: function(w) {
|
1550
|
+
// apply SBox to 4-byte word w
|
1551
|
+
for (var i = 0; i < 4; i++) {
|
1552
|
+
w[i] = this.SBox[w[i]];
|
1553
|
+
}
|
1554
|
+
return w;
|
1555
|
+
},
|
1556
|
+
|
1557
|
+
rotWord: function(w) {
|
1558
|
+
// rotate 4-byte word w left by one byte
|
1559
|
+
var tmp = w[0];
|
1560
|
+
for (var i = 0; i < 4; i++) {
|
1561
|
+
w[i] = w[i + 1];
|
1562
|
+
}
|
1563
|
+
w[3] = tmp;
|
1564
|
+
return w;
|
1565
|
+
},
|
1566
|
+
|
1567
|
+
|
1568
|
+
// S-box
|
1569
|
+
SBox: [
|
1570
|
+
99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171,
|
1571
|
+
118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164,
|
1572
|
+
114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113,
|
1573
|
+
216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226,
|
1574
|
+
235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214,
|
1575
|
+
179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203,
|
1576
|
+
190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69,
|
1577
|
+
249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245,
|
1578
|
+
188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68,
|
1579
|
+
23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42,
|
1580
|
+
144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73,
|
1581
|
+
6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109,
|
1582
|
+
141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37,
|
1583
|
+
46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62,
|
1584
|
+
181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225,
|
1585
|
+
248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,
|
1586
|
+
140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187,
|
1587
|
+
22],
|
1588
|
+
|
1589
|
+
// Precomputed lookup table for the inverse SBox
|
1590
|
+
SBoxInv: [
|
1591
|
+
82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215,
|
1592
|
+
251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222,
|
1593
|
+
233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66,
|
1594
|
+
250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73,
|
1595
|
+
109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92,
|
1596
|
+
204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21,
|
1597
|
+
70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247,
|
1598
|
+
228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2,
|
1599
|
+
193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220,
|
1600
|
+
234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173,
|
1601
|
+
53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29,
|
1602
|
+
41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75,
|
1603
|
+
198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168,
|
1604
|
+
51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81,
|
1605
|
+
127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160,
|
1606
|
+
224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97,
|
1607
|
+
23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12,
|
1608
|
+
125],
|
1609
|
+
// Rijndael Rcon
|
1610
|
+
Rcon: [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94,
|
1611
|
+
188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145],
|
1612
|
+
|
1613
|
+
G2X: [
|
1614
|
+
0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 0x16,
|
1615
|
+
0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e,
|
1616
|
+
0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46,
|
1617
|
+
0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e,
|
1618
|
+
0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76,
|
1619
|
+
0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e,
|
1620
|
+
0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6,
|
1621
|
+
0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe,
|
1622
|
+
0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6,
|
1623
|
+
0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee,
|
1624
|
+
0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1b, 0x19, 0x1f, 0x1d,
|
1625
|
+
0x13, 0x11, 0x17, 0x15, 0x0b, 0x09, 0x0f, 0x0d, 0x03, 0x01, 0x07, 0x05,
|
1626
|
+
0x3b, 0x39, 0x3f, 0x3d, 0x33, 0x31, 0x37, 0x35, 0x2b, 0x29, 0x2f, 0x2d,
|
1627
|
+
0x23, 0x21, 0x27, 0x25, 0x5b, 0x59, 0x5f, 0x5d, 0x53, 0x51, 0x57, 0x55,
|
1628
|
+
0x4b, 0x49, 0x4f, 0x4d, 0x43, 0x41, 0x47, 0x45, 0x7b, 0x79, 0x7f, 0x7d,
|
1629
|
+
0x73, 0x71, 0x77, 0x75, 0x6b, 0x69, 0x6f, 0x6d, 0x63, 0x61, 0x67, 0x65,
|
1630
|
+
0x9b, 0x99, 0x9f, 0x9d, 0x93, 0x91, 0x97, 0x95, 0x8b, 0x89, 0x8f, 0x8d,
|
1631
|
+
0x83, 0x81, 0x87, 0x85, 0xbb, 0xb9, 0xbf, 0xbd, 0xb3, 0xb1, 0xb7, 0xb5,
|
1632
|
+
0xab, 0xa9, 0xaf, 0xad, 0xa3, 0xa1, 0xa7, 0xa5, 0xdb, 0xd9, 0xdf, 0xdd,
|
1633
|
+
0xd3, 0xd1, 0xd7, 0xd5, 0xcb, 0xc9, 0xcf, 0xcd, 0xc3, 0xc1, 0xc7, 0xc5,
|
1634
|
+
0xfb, 0xf9, 0xff, 0xfd, 0xf3, 0xf1, 0xf7, 0xf5, 0xeb, 0xe9, 0xef, 0xed,
|
1635
|
+
0xe3, 0xe1, 0xe7, 0xe5
|
1636
|
+
],
|
1637
|
+
|
1638
|
+
G3X: [
|
1639
|
+
0x00, 0x03, 0x06, 0x05, 0x0c, 0x0f, 0x0a, 0x09, 0x18, 0x1b, 0x1e, 0x1d,
|
1640
|
+
0x14, 0x17, 0x12, 0x11, 0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39,
|
1641
|
+
0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, 0x63, 0x66, 0x65,
|
1642
|
+
0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71,
|
1643
|
+
0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d,
|
1644
|
+
0x44, 0x47, 0x42, 0x41, 0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9,
|
1645
|
+
0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, 0xf3, 0xf6, 0xf5,
|
1646
|
+
0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1,
|
1647
|
+
0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd,
|
1648
|
+
0xb4, 0xb7, 0xb2, 0xb1, 0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99,
|
1649
|
+
0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9b, 0x98, 0x9d, 0x9e,
|
1650
|
+
0x97, 0x94, 0x91, 0x92, 0x83, 0x80, 0x85, 0x86, 0x8f, 0x8c, 0x89, 0x8a,
|
1651
|
+
0xab, 0xa8, 0xad, 0xae, 0xa7, 0xa4, 0xa1, 0xa2, 0xb3, 0xb0, 0xb5, 0xb6,
|
1652
|
+
0xbf, 0xbc, 0xb9, 0xba, 0xfb, 0xf8, 0xfd, 0xfe, 0xf7, 0xf4, 0xf1, 0xf2,
|
1653
|
+
0xe3, 0xe0, 0xe5, 0xe6, 0xef, 0xec, 0xe9, 0xea, 0xcb, 0xc8, 0xcd, 0xce,
|
1654
|
+
0xc7, 0xc4, 0xc1, 0xc2, 0xd3, 0xd0, 0xd5, 0xd6, 0xdf, 0xdc, 0xd9, 0xda,
|
1655
|
+
0x5b, 0x58, 0x5d, 0x5e, 0x57, 0x54, 0x51, 0x52, 0x43, 0x40, 0x45, 0x46,
|
1656
|
+
0x4f, 0x4c, 0x49, 0x4a, 0x6b, 0x68, 0x6d, 0x6e, 0x67, 0x64, 0x61, 0x62,
|
1657
|
+
0x73, 0x70, 0x75, 0x76, 0x7f, 0x7c, 0x79, 0x7a, 0x3b, 0x38, 0x3d, 0x3e,
|
1658
|
+
0x37, 0x34, 0x31, 0x32, 0x23, 0x20, 0x25, 0x26, 0x2f, 0x2c, 0x29, 0x2a,
|
1659
|
+
0x0b, 0x08, 0x0d, 0x0e, 0x07, 0x04, 0x01, 0x02, 0x13, 0x10, 0x15, 0x16,
|
1660
|
+
0x1f, 0x1c, 0x19, 0x1a
|
1661
|
+
],
|
1662
|
+
|
1663
|
+
G9X: [
|
1664
|
+
0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53,
|
1665
|
+
0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf,
|
1666
|
+
0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3b, 0x32, 0x29, 0x20,
|
1667
|
+
0x1f, 0x16, 0x0d, 0x04, 0x73, 0x7a, 0x61, 0x68, 0x57, 0x5e, 0x45, 0x4c,
|
1668
|
+
0xab, 0xa2, 0xb9, 0xb0, 0x8f, 0x86, 0x9d, 0x94, 0xe3, 0xea, 0xf1, 0xf8,
|
1669
|
+
0xc7, 0xce, 0xd5, 0xdc, 0x76, 0x7f, 0x64, 0x6d, 0x52, 0x5b, 0x40, 0x49,
|
1670
|
+
0x3e, 0x37, 0x2c, 0x25, 0x1a, 0x13, 0x08, 0x01, 0xe6, 0xef, 0xf4, 0xfd,
|
1671
|
+
0xc2, 0xcb, 0xd0, 0xd9, 0xae, 0xa7, 0xbc, 0xb5, 0x8a, 0x83, 0x98, 0x91,
|
1672
|
+
0x4d, 0x44, 0x5f, 0x56, 0x69, 0x60, 0x7b, 0x72, 0x05, 0x0c, 0x17, 0x1e,
|
1673
|
+
0x21, 0x28, 0x33, 0x3a, 0xdd, 0xd4, 0xcf, 0xc6, 0xf9, 0xf0, 0xeb, 0xe2,
|
1674
|
+
0x95, 0x9c, 0x87, 0x8e, 0xb1, 0xb8, 0xa3, 0xaa, 0xec, 0xe5, 0xfe, 0xf7,
|
1675
|
+
0xc8, 0xc1, 0xda, 0xd3, 0xa4, 0xad, 0xb6, 0xbf, 0x80, 0x89, 0x92, 0x9b,
|
1676
|
+
0x7c, 0x75, 0x6e, 0x67, 0x58, 0x51, 0x4a, 0x43, 0x34, 0x3d, 0x26, 0x2f,
|
1677
|
+
0x10, 0x19, 0x02, 0x0b, 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8,
|
1678
|
+
0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0x47, 0x4e, 0x55, 0x5c,
|
1679
|
+
0x63, 0x6a, 0x71, 0x78, 0x0f, 0x06, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30,
|
1680
|
+
0x9a, 0x93, 0x88, 0x81, 0xbe, 0xb7, 0xac, 0xa5, 0xd2, 0xdb, 0xc0, 0xc9,
|
1681
|
+
0xf6, 0xff, 0xe4, 0xed, 0x0a, 0x03, 0x18, 0x11, 0x2e, 0x27, 0x3c, 0x35,
|
1682
|
+
0x42, 0x4b, 0x50, 0x59, 0x66, 0x6f, 0x74, 0x7d, 0xa1, 0xa8, 0xb3, 0xba,
|
1683
|
+
0x85, 0x8c, 0x97, 0x9e, 0xe9, 0xe0, 0xfb, 0xf2, 0xcd, 0xc4, 0xdf, 0xd6,
|
1684
|
+
0x31, 0x38, 0x23, 0x2a, 0x15, 0x1c, 0x07, 0x0e, 0x79, 0x70, 0x6b, 0x62,
|
1685
|
+
0x5d, 0x54, 0x4f, 0x46
|
1686
|
+
],
|
1687
|
+
|
1688
|
+
GBX: [
|
1689
|
+
0x00, 0x0b, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45,
|
1690
|
+
0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81,
|
1691
|
+
0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7b, 0x70, 0x6d, 0x66,
|
1692
|
+
0x57, 0x5c, 0x41, 0x4a, 0x23, 0x28, 0x35, 0x3e, 0x0f, 0x04, 0x19, 0x12,
|
1693
|
+
0xcb, 0xc0, 0xdd, 0xd6, 0xe7, 0xec, 0xf1, 0xfa, 0x93, 0x98, 0x85, 0x8e,
|
1694
|
+
0xbf, 0xb4, 0xa9, 0xa2, 0xf6, 0xfd, 0xe0, 0xeb, 0xda, 0xd1, 0xcc, 0xc7,
|
1695
|
+
0xae, 0xa5, 0xb8, 0xb3, 0x82, 0x89, 0x94, 0x9f, 0x46, 0x4d, 0x50, 0x5b,
|
1696
|
+
0x6a, 0x61, 0x7c, 0x77, 0x1e, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2f,
|
1697
|
+
0x8d, 0x86, 0x9b, 0x90, 0xa1, 0xaa, 0xb7, 0xbc, 0xd5, 0xde, 0xc3, 0xc8,
|
1698
|
+
0xf9, 0xf2, 0xef, 0xe4, 0x3d, 0x36, 0x2b, 0x20, 0x11, 0x1a, 0x07, 0x0c,
|
1699
|
+
0x65, 0x6e, 0x73, 0x78, 0x49, 0x42, 0x5f, 0x54, 0xf7, 0xfc, 0xe1, 0xea,
|
1700
|
+
0xdb, 0xd0, 0xcd, 0xc6, 0xaf, 0xa4, 0xb9, 0xb2, 0x83, 0x88, 0x95, 0x9e,
|
1701
|
+
0x47, 0x4c, 0x51, 0x5a, 0x6b, 0x60, 0x7d, 0x76, 0x1f, 0x14, 0x09, 0x02,
|
1702
|
+
0x33, 0x38, 0x25, 0x2e, 0x8c, 0x87, 0x9a, 0x91, 0xa0, 0xab, 0xb6, 0xbd,
|
1703
|
+
0xd4, 0xdf, 0xc2, 0xc9, 0xf8, 0xf3, 0xee, 0xe5, 0x3c, 0x37, 0x2a, 0x21,
|
1704
|
+
0x10, 0x1b, 0x06, 0x0d, 0x64, 0x6f, 0x72, 0x79, 0x48, 0x43, 0x5e, 0x55,
|
1705
|
+
0x01, 0x0a, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x59, 0x52, 0x4f, 0x44,
|
1706
|
+
0x75, 0x7e, 0x63, 0x68, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80,
|
1707
|
+
0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0x7a, 0x71, 0x6c, 0x67,
|
1708
|
+
0x56, 0x5d, 0x40, 0x4b, 0x22, 0x29, 0x34, 0x3f, 0x0e, 0x05, 0x18, 0x13,
|
1709
|
+
0xca, 0xc1, 0xdc, 0xd7, 0xe6, 0xed, 0xf0, 0xfb, 0x92, 0x99, 0x84, 0x8f,
|
1710
|
+
0xbe, 0xb5, 0xa8, 0xa3
|
1711
|
+
],
|
1712
|
+
|
1713
|
+
GDX: [
|
1714
|
+
0x00, 0x0d, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f,
|
1715
|
+
0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3,
|
1716
|
+
0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbb, 0xb6, 0xa1, 0xac,
|
1717
|
+
0x8f, 0x82, 0x95, 0x98, 0xd3, 0xde, 0xc9, 0xc4, 0xe7, 0xea, 0xfd, 0xf0,
|
1718
|
+
0x6b, 0x66, 0x71, 0x7c, 0x5f, 0x52, 0x45, 0x48, 0x03, 0x0e, 0x19, 0x14,
|
1719
|
+
0x37, 0x3a, 0x2d, 0x20, 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e,
|
1720
|
+
0x05, 0x08, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0xbd, 0xb0, 0xa7, 0xaa,
|
1721
|
+
0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6,
|
1722
|
+
0xd6, 0xdb, 0xcc, 0xc1, 0xe2, 0xef, 0xf8, 0xf5, 0xbe, 0xb3, 0xa4, 0xa9,
|
1723
|
+
0x8a, 0x87, 0x90, 0x9d, 0x06, 0x0b, 0x1c, 0x11, 0x32, 0x3f, 0x28, 0x25,
|
1724
|
+
0x6e, 0x63, 0x74, 0x79, 0x5a, 0x57, 0x40, 0x4d, 0xda, 0xd7, 0xc0, 0xcd,
|
1725
|
+
0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91,
|
1726
|
+
0x0a, 0x07, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75,
|
1727
|
+
0x56, 0x5b, 0x4c, 0x41, 0x61, 0x6c, 0x7b, 0x76, 0x55, 0x58, 0x4f, 0x42,
|
1728
|
+
0x09, 0x04, 0x13, 0x1e, 0x3d, 0x30, 0x27, 0x2a, 0xb1, 0xbc, 0xab, 0xa6,
|
1729
|
+
0x85, 0x88, 0x9f, 0x92, 0xd9, 0xd4, 0xc3, 0xce, 0xed, 0xe0, 0xf7, 0xfa,
|
1730
|
+
0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8,
|
1731
|
+
0xeb, 0xe6, 0xf1, 0xfc, 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44,
|
1732
|
+
0x0f, 0x02, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0x0c, 0x01, 0x16, 0x1b,
|
1733
|
+
0x38, 0x35, 0x22, 0x2f, 0x64, 0x69, 0x7e, 0x73, 0x50, 0x5d, 0x4a, 0x47,
|
1734
|
+
0xdc, 0xd1, 0xc6, 0xcb, 0xe8, 0xe5, 0xf2, 0xff, 0xb4, 0xb9, 0xae, 0xa3,
|
1735
|
+
0x80, 0x8d, 0x9a, 0x97
|
1736
|
+
],
|
1737
|
+
|
1738
|
+
GEX: [
|
1739
|
+
0x00, 0x0e, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62,
|
1740
|
+
0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca,
|
1741
|
+
0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdb, 0xd5, 0xc7, 0xc9,
|
1742
|
+
0xe3, 0xed, 0xff, 0xf1, 0xab, 0xa5, 0xb7, 0xb9, 0x93, 0x9d, 0x8f, 0x81,
|
1743
|
+
0x3b, 0x35, 0x27, 0x29, 0x03, 0x0d, 0x1f, 0x11, 0x4b, 0x45, 0x57, 0x59,
|
1744
|
+
0x73, 0x7d, 0x6f, 0x61, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87,
|
1745
|
+
0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0x4d, 0x43, 0x51, 0x5f,
|
1746
|
+
0x75, 0x7b, 0x69, 0x67, 0x3d, 0x33, 0x21, 0x2f, 0x05, 0x0b, 0x19, 0x17,
|
1747
|
+
0x76, 0x78, 0x6a, 0x64, 0x4e, 0x40, 0x52, 0x5c, 0x06, 0x08, 0x1a, 0x14,
|
1748
|
+
0x3e, 0x30, 0x22, 0x2c, 0x96, 0x98, 0x8a, 0x84, 0xae, 0xa0, 0xb2, 0xbc,
|
1749
|
+
0xe6, 0xe8, 0xfa, 0xf4, 0xde, 0xd0, 0xc2, 0xcc, 0x41, 0x4f, 0x5d, 0x53,
|
1750
|
+
0x79, 0x77, 0x65, 0x6b, 0x31, 0x3f, 0x2d, 0x23, 0x09, 0x07, 0x15, 0x1b,
|
1751
|
+
0xa1, 0xaf, 0xbd, 0xb3, 0x99, 0x97, 0x85, 0x8b, 0xd1, 0xdf, 0xcd, 0xc3,
|
1752
|
+
0xe9, 0xe7, 0xf5, 0xfb, 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0,
|
1753
|
+
0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x7a, 0x74, 0x66, 0x68,
|
1754
|
+
0x42, 0x4c, 0x5e, 0x50, 0x0a, 0x04, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20,
|
1755
|
+
0xec, 0xe2, 0xf0, 0xfe, 0xd4, 0xda, 0xc8, 0xc6, 0x9c, 0x92, 0x80, 0x8e,
|
1756
|
+
0xa4, 0xaa, 0xb8, 0xb6, 0x0c, 0x02, 0x10, 0x1e, 0x34, 0x3a, 0x28, 0x26,
|
1757
|
+
0x7c, 0x72, 0x60, 0x6e, 0x44, 0x4a, 0x58, 0x56, 0x37, 0x39, 0x2b, 0x25,
|
1758
|
+
0x0f, 0x01, 0x13, 0x1d, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d,
|
1759
|
+
0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0xa7, 0xa9, 0xbb, 0xb5,
|
1760
|
+
0x9f, 0x91, 0x83, 0x8d
|
1761
|
+
],
|
1762
|
+
|
1763
|
+
enc: function(string, pass) {
|
1764
|
+
// string, password in plaintext
|
1765
|
+
return this.encryptUsingPassword(string, pass, true);
|
1766
|
+
},
|
1767
|
+
|
1768
|
+
encryptUsingPassword: function(string, password, salted) {
|
1769
|
+
var key = GibberishAES.Hash.MD5(this.s2a(password));
|
1770
|
+
return this.encryptUsingKey(string, key, salted);
|
1771
|
+
},
|
1772
|
+
|
1773
|
+
encryptUsingKey: function(string, inKeyArray, salted) {
|
1774
|
+
var key, iv;
|
1775
|
+
|
1776
|
+
if (salted) {
|
1777
|
+
var salt = this.randArr(8);
|
1778
|
+
var pbe = this.openSSLKey(inKeyArray, salt);
|
1779
|
+
key = pbe.key;
|
1780
|
+
iv = pbe.iv;
|
1781
|
+
}
|
1782
|
+
else {
|
1783
|
+
key = inKeyArray;
|
1784
|
+
iv = this.ZERO_IV;
|
1785
|
+
}
|
1786
|
+
|
1787
|
+
string = this.s2a(string);
|
1788
|
+
var cipherBlocks = this.rawEncrypt(string, key, iv);
|
1789
|
+
|
1790
|
+
if (salted) {
|
1791
|
+
var saltBlock = [this.SALTED_PREFIX.concat(salt)];
|
1792
|
+
cipherBlocks = saltBlock.concat(cipherBlocks);
|
1793
|
+
}
|
1794
|
+
|
1795
|
+
return this.Base64.encode(cipherBlocks);
|
1796
|
+
},
|
1797
|
+
|
1798
|
+
dec: function(string, pass) {
|
1799
|
+
// string, password in plaintext
|
1800
|
+
return this.decryptBase64UsingKey(string, this.s2a(pass));
|
1801
|
+
},
|
1802
|
+
|
1803
|
+
decryptUsingPBKDF2: function(data, password, iterations) {
|
1804
|
+
var binaryArr = GibberishAES.Base64.decode(data);
|
1805
|
+
|
1806
|
+
var saltArr = this.ZERO_IV;
|
1807
|
+
if (this.isSalted(binaryArr)) {
|
1808
|
+
saltArr = binaryArr.slice(8, 16);
|
1809
|
+
binaryArr = binaryArr.slice(16);
|
1810
|
+
}
|
1811
|
+
|
1812
|
+
var t0 = new Date();
|
1813
|
+
var mypbkdf2 = new PBKDF2(password, this.a2s(saltArr), iterations, 32); // key is 16bytes; ivec is 16bytes
|
1814
|
+
var derivedKey = mypbkdf2.deriveKey();
|
1815
|
+
|
1816
|
+
var t1 = new Date();
|
1817
|
+
// alert ("Key generation time: " + (t1.getTime() - t0.getTime()));
|
1818
|
+
|
1819
|
+
var key = derivedKey.slice(0, 16);
|
1820
|
+
var iv = derivedKey.slice(16);
|
1821
|
+
try {
|
1822
|
+
return this.decryptBinaryUsingKeyAndIvec(binaryArr, key, iv);
|
1823
|
+
}catch(e) {
|
1824
|
+
return null;
|
1825
|
+
}
|
1826
|
+
},
|
1827
|
+
|
1828
|
+
decryptBase64UsingKey: function(string, inKeyArray) {
|
1829
|
+
var binaryArr = this.Base64.decode(string);
|
1830
|
+
return this.decryptBinaryUsingKey(binaryArr, inKeyArray);
|
1831
|
+
},
|
1832
|
+
|
1833
|
+
decryptBinaryUsingKey: function(binaryArr, inKeyArray) {
|
1834
|
+
var salted = this.isSalted(binaryArr);
|
1835
|
+
var key, iv;
|
1836
|
+
|
1837
|
+
if (salted) {
|
1838
|
+
var salt = binaryArr.slice(8, 16);
|
1839
|
+
|
1840
|
+
var pbe = this.openSSLKey(inKeyArray, salt);
|
1841
|
+
key = pbe.key;
|
1842
|
+
iv = pbe.iv;
|
1843
|
+
binaryArr = binaryArr.slice(16, binaryArr.length);
|
1844
|
+
}
|
1845
|
+
else {
|
1846
|
+
key = GibberishAES.Hash.MD5(inKeyArray);
|
1847
|
+
iv = this.ZERO_IV;
|
1848
|
+
}
|
1849
|
+
|
1850
|
+
try {
|
1851
|
+
return this.decryptBinaryUsingKeyAndIvec(binaryArr, key, iv);
|
1852
|
+
}
|
1853
|
+
catch (e) {
|
1854
|
+
// alert('Caught error ' + e);
|
1855
|
+
return null;
|
1856
|
+
}
|
1857
|
+
},
|
1858
|
+
|
1859
|
+
isSalted: function(cryptArr) {
|
1860
|
+
for (var i=0; i < 8; i++) {
|
1861
|
+
if (this.SALTED_PREFIX[i] != cryptArr[i]) {
|
1862
|
+
return false;
|
1863
|
+
}
|
1864
|
+
}
|
1865
|
+
return true;
|
1866
|
+
}
|
1867
|
+
};
|
1868
|
+
|
1869
|
+
GibberishAES.Hash = {
|
1870
|
+
|
1871
|
+
MD5: function(numArr) {
|
1872
|
+
|
1873
|
+
function RotateLeft(lValue, iShiftBits) {
|
1874
|
+
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
|
1875
|
+
}
|
1876
|
+
|
1877
|
+
function AddUnsigned(lX, lY) {
|
1878
|
+
var lX4,
|
1879
|
+
lY4,
|
1880
|
+
lX8,
|
1881
|
+
lY8,
|
1882
|
+
lResult;
|
1883
|
+
lX8 = (lX & 0x80000000);
|
1884
|
+
lY8 = (lY & 0x80000000);
|
1885
|
+
lX4 = (lX & 0x40000000);
|
1886
|
+
lY4 = (lY & 0x40000000);
|
1887
|
+
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
|
1888
|
+
if (lX4 & lY4) {
|
1889
|
+
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
|
1890
|
+
}
|
1891
|
+
if (lX4 | lY4) {
|
1892
|
+
if (lResult & 0x40000000) {
|
1893
|
+
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
|
1894
|
+
} else {
|
1895
|
+
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
|
1896
|
+
}
|
1897
|
+
} else {
|
1898
|
+
return (lResult ^ lX8 ^ lY8);
|
1899
|
+
}
|
1900
|
+
}
|
1901
|
+
|
1902
|
+
function F(x, y, z) {
|
1903
|
+
return (x & y) | ((~x) & z);
|
1904
|
+
}
|
1905
|
+
function G(x, y, z) {
|
1906
|
+
return (x & z) | (y & (~z));
|
1907
|
+
}
|
1908
|
+
function H(x, y, z) {
|
1909
|
+
return (x ^ y ^ z);
|
1910
|
+
}
|
1911
|
+
function I(x, y, z) {
|
1912
|
+
return (y ^ (x | (~z)));
|
1913
|
+
}
|
1914
|
+
|
1915
|
+
function FF(a, b, c, d, x, s, ac) {
|
1916
|
+
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
|
1917
|
+
return AddUnsigned(RotateLeft(a, s), b);
|
1918
|
+
};
|
1919
|
+
|
1920
|
+
function GG(a, b, c, d, x, s, ac) {
|
1921
|
+
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
|
1922
|
+
return AddUnsigned(RotateLeft(a, s), b);
|
1923
|
+
};
|
1924
|
+
|
1925
|
+
function HH(a, b, c, d, x, s, ac) {
|
1926
|
+
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
|
1927
|
+
return AddUnsigned(RotateLeft(a, s), b);
|
1928
|
+
};
|
1929
|
+
|
1930
|
+
function II(a, b, c, d, x, s, ac) {
|
1931
|
+
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
|
1932
|
+
return AddUnsigned(RotateLeft(a, s), b);
|
1933
|
+
};
|
1934
|
+
|
1935
|
+
function ConvertToWordArray(numArr) {
|
1936
|
+
var lWordCount;
|
1937
|
+
var lMessageLength = numArr.length;
|
1938
|
+
var lNumberOfWords_temp1 = lMessageLength + 8;
|
1939
|
+
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
|
1940
|
+
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
|
1941
|
+
var lWordArray = Array(lNumberOfWords - 1);
|
1942
|
+
var lBytePosition = 0;
|
1943
|
+
var lByteCount = 0;
|
1944
|
+
while (lByteCount < lMessageLength) {
|
1945
|
+
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
|
1946
|
+
lBytePosition = (lByteCount % 4) * 8;
|
1947
|
+
lWordArray[lWordCount] = (lWordArray[lWordCount] | (numArr[lByteCount] << lBytePosition));
|
1948
|
+
lByteCount++;
|
1949
|
+
}
|
1950
|
+
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
|
1951
|
+
lBytePosition = (lByteCount % 4) * 8;
|
1952
|
+
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
|
1953
|
+
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
|
1954
|
+
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
|
1955
|
+
return lWordArray;
|
1956
|
+
};
|
1957
|
+
|
1958
|
+
function WordToHex(lValue) {
|
1959
|
+
var WordToHexValue = "",
|
1960
|
+
WordToHexValue_temp = "",
|
1961
|
+
lByte,
|
1962
|
+
lCount;
|
1963
|
+
var WordToHexArr = []
|
1964
|
+
for (lCount = 0; lCount <= 3; lCount++) {
|
1965
|
+
lByte = (lValue >>> (lCount * 8)) & 255;
|
1966
|
+
WordToHexArr = WordToHexArr.concat(lByte)
|
1967
|
+
}
|
1968
|
+
return WordToHexArr;
|
1969
|
+
};
|
1970
|
+
|
1971
|
+
function Utf8Encode(string) {
|
1972
|
+
string = string.replace(/\r\n/g, "\n");
|
1973
|
+
var utftext = "";
|
1974
|
+
|
1975
|
+
for (var n = 0; n < string.length; n++) {
|
1976
|
+
|
1977
|
+
var c = string.charCodeAt(n);
|
1978
|
+
|
1979
|
+
if (c < 128) {
|
1980
|
+
utftext += String.fromCharCode(c);
|
1981
|
+
}
|
1982
|
+
else if ((c > 127) && (c < 2048)) {
|
1983
|
+
utftext += String.fromCharCode((c >> 6) | 192);
|
1984
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
1985
|
+
}
|
1986
|
+
else {
|
1987
|
+
utftext += String.fromCharCode((c >> 12) | 224);
|
1988
|
+
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
1989
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
1990
|
+
}
|
1991
|
+
|
1992
|
+
}
|
1993
|
+
|
1994
|
+
return utftext;
|
1995
|
+
};
|
1996
|
+
|
1997
|
+
var x = Array();
|
1998
|
+
var k,
|
1999
|
+
AA,
|
2000
|
+
BB,
|
2001
|
+
CC,
|
2002
|
+
DD,
|
2003
|
+
a,
|
2004
|
+
b,
|
2005
|
+
c,
|
2006
|
+
d;
|
2007
|
+
var S11 = 7,
|
2008
|
+
S12 = 12,
|
2009
|
+
S13 = 17,
|
2010
|
+
S14 = 22;
|
2011
|
+
var S21 = 5,
|
2012
|
+
S22 = 9,
|
2013
|
+
S23 = 14,
|
2014
|
+
S24 = 20;
|
2015
|
+
var S31 = 4,
|
2016
|
+
S32 = 11,
|
2017
|
+
S33 = 16,
|
2018
|
+
S34 = 23;
|
2019
|
+
var S41 = 6,
|
2020
|
+
S42 = 10,
|
2021
|
+
S43 = 15,
|
2022
|
+
S44 = 21;
|
2023
|
+
|
2024
|
+
x = ConvertToWordArray(numArr);
|
2025
|
+
|
2026
|
+
a = 0x67452301;
|
2027
|
+
b = 0xEFCDAB89;
|
2028
|
+
c = 0x98BADCFE;
|
2029
|
+
d = 0x10325476;
|
2030
|
+
|
2031
|
+
for (k = 0; k < x.length; k += 16) {
|
2032
|
+
AA = a;
|
2033
|
+
BB = b;
|
2034
|
+
CC = c;
|
2035
|
+
DD = d;
|
2036
|
+
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
|
2037
|
+
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
|
2038
|
+
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
|
2039
|
+
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
|
2040
|
+
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
|
2041
|
+
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
|
2042
|
+
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
|
2043
|
+
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
|
2044
|
+
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
|
2045
|
+
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
|
2046
|
+
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
|
2047
|
+
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
|
2048
|
+
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
|
2049
|
+
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
|
2050
|
+
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
|
2051
|
+
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
|
2052
|
+
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
|
2053
|
+
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
|
2054
|
+
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
|
2055
|
+
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
|
2056
|
+
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
|
2057
|
+
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
|
2058
|
+
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
|
2059
|
+
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
|
2060
|
+
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
|
2061
|
+
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
|
2062
|
+
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
|
2063
|
+
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
|
2064
|
+
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
|
2065
|
+
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
|
2066
|
+
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
|
2067
|
+
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
|
2068
|
+
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
|
2069
|
+
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
|
2070
|
+
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
|
2071
|
+
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
|
2072
|
+
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
|
2073
|
+
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
|
2074
|
+
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
|
2075
|
+
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
|
2076
|
+
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
|
2077
|
+
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
|
2078
|
+
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
|
2079
|
+
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
|
2080
|
+
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
|
2081
|
+
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
|
2082
|
+
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
|
2083
|
+
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
|
2084
|
+
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
|
2085
|
+
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
|
2086
|
+
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
|
2087
|
+
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
|
2088
|
+
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
|
2089
|
+
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
|
2090
|
+
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
|
2091
|
+
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
|
2092
|
+
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
|
2093
|
+
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
|
2094
|
+
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
|
2095
|
+
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
|
2096
|
+
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
|
2097
|
+
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
|
2098
|
+
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
|
2099
|
+
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
|
2100
|
+
a = AddUnsigned(a, AA);
|
2101
|
+
b = AddUnsigned(b, BB);
|
2102
|
+
c = AddUnsigned(c, CC);
|
2103
|
+
d = AddUnsigned(d, DD);
|
2104
|
+
}
|
2105
|
+
|
2106
|
+
var temp = WordToHex(a).concat(WordToHex(b), WordToHex(c), WordToHex(d));
|
2107
|
+
return temp;
|
2108
|
+
}
|
2109
|
+
};
|
2110
|
+
|
2111
|
+
GibberishAES.Base64 = {
|
2112
|
+
// Takes a Nx16x1 byte array and converts it to Base64
|
2113
|
+
chars: [
|
2114
|
+
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
|
2115
|
+
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
|
2116
|
+
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
|
2117
|
+
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
|
2118
|
+
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
|
2119
|
+
'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
|
2120
|
+
'w', 'x', 'y', 'z', '0', '1', '2', '3',
|
2121
|
+
'4', '5', '6', '7', '8', '9', '+', '/'],
|
2122
|
+
|
2123
|
+
encode: function(b, withBreaks) {
|
2124
|
+
var flatArr = [];
|
2125
|
+
var b64 = '';
|
2126
|
+
totalChunks = Math.floor(b.length * 16 / 3)
|
2127
|
+
for (var i = 0; i < b.length * 16; i++) {
|
2128
|
+
flatArr.push(b[Math.floor(i / 16)][i % 16]);
|
2129
|
+
}
|
2130
|
+
for (var i = 0; i < flatArr.length; i = i + 3) {
|
2131
|
+
b64 += this.chars[flatArr[i] >> 2];
|
2132
|
+
b64 += this.chars[((flatArr[i] & 3) << 4) | (flatArr[i + 1] >> 4)];
|
2133
|
+
if (! (flatArr[i + 1] == null)) {
|
2134
|
+
b64 += this.chars[((flatArr[i + 1] & 15) << 2) | (flatArr[i + 2] >> 6)];
|
2135
|
+
} else {
|
2136
|
+
b64 += '='
|
2137
|
+
}
|
2138
|
+
if (! (flatArr[i + 2] == null)) {
|
2139
|
+
b64 += this.chars[flatArr[i + 2] & 63];
|
2140
|
+
} else {
|
2141
|
+
b64 += '='
|
2142
|
+
}
|
2143
|
+
}
|
2144
|
+
// OpenSSL is super particular about line breaks
|
2145
|
+
var broken_b64 = b64.slice(0, 64) + '\n';
|
2146
|
+
for (var i = 1; i < (Math.ceil(b64.length / 64)); i++) {
|
2147
|
+
broken_b64 += b64.slice(i * 64, i * 64 + 64) + (Math.ceil(b64.length / 64) == i + 1 ? '': '\n');
|
2148
|
+
}
|
2149
|
+
return broken_b64
|
2150
|
+
},
|
2151
|
+
|
2152
|
+
decode: function(string) {
|
2153
|
+
string = string.replace(/\n/g, '');
|
2154
|
+
var flatArr = [];
|
2155
|
+
var c = [];
|
2156
|
+
var b = [];
|
2157
|
+
for (var i = 0; i < string.length; i = i + 4) {
|
2158
|
+
c[0] = this.chars.indexOf(string.charAt(i));
|
2159
|
+
c[1] = this.chars.indexOf(string.charAt(i + 1));
|
2160
|
+
c[2] = this.chars.indexOf(string.charAt(i + 2));
|
2161
|
+
c[3] = this.chars.indexOf(string.charAt(i + 3));
|
2162
|
+
|
2163
|
+
b[0] = (c[0] << 2) | (c[1] >> 4);
|
2164
|
+
b[1] = ((c[1] & 15) << 4) | (c[2] >> 2);
|
2165
|
+
b[2] = ((c[2] & 3) << 6) | c[3];
|
2166
|
+
flatArr.push(b[0], b[1], b[2]);
|
2167
|
+
}
|
2168
|
+
flatArr = flatArr.slice(0, flatArr.length - (flatArr.length % 16));
|
2169
|
+
return flatArr;
|
2170
|
+
},
|
2171
|
+
|
2172
|
+
};
|
2173
|
+
|
2174
|
+
|
2175
|
+
|
2176
|
+
|
2177
|
+
//
|
2178
|
+
// JavaScript implementation of Password-Based Key Derivation Function 2
|
2179
|
+
// (PBKDF2) as defined in RFC 2898.
|
2180
|
+
// Version 1.1
|
2181
|
+
// Copyright (c) 2007, Parvez Anandam
|
2182
|
+
// parvez.anandam@cern.ch
|
2183
|
+
// http://anandam.name/pbkdf2
|
2184
|
+
//
|
2185
|
+
// Distributed under the BSD license
|
2186
|
+
//
|
2187
|
+
// (Uses Paul Johnston's excellent SHA-1 JavaScript library sha1.js)
|
2188
|
+
// Thanks to Felix Gartsman for pointing out a bug in version 1.0
|
2189
|
+
//
|
2190
|
+
|
2191
|
+
// The four arguments to the constructor of the PBKDF2 object are
|
2192
|
+
// the password, salt, number of iterations and number of bytes in
|
2193
|
+
// generated key. This follows the RFC 2898 definition: PBKDF2 (P, S, c, dkLen)
|
2194
|
+
//
|
2195
|
+
// The method deriveKey takes two parameters, both callback functions:
|
2196
|
+
// the first is used to provide status on the computation, the second
|
2197
|
+
// is called with the result of the computation (the generated key in hex).
|
2198
|
+
//
|
2199
|
+
function PBKDF2(password, salt, num_iterations, num_bytes)
|
2200
|
+
{
|
2201
|
+
// Remember the password and salt
|
2202
|
+
var m_bpassword = str2binb(password);
|
2203
|
+
var m_salt = salt;
|
2204
|
+
|
2205
|
+
// Total number of iterations
|
2206
|
+
var m_total_iterations = num_iterations;
|
2207
|
+
|
2208
|
+
// Run iterations in chunks instead of all at once, so as to not block.
|
2209
|
+
// Define size of chunk here; adjust for slower or faster machines if necessary.
|
2210
|
+
var m_iterations_in_chunk = 100;
|
2211
|
+
|
2212
|
+
// Iteration counter
|
2213
|
+
var m_iterations_done = 0;
|
2214
|
+
|
2215
|
+
// Key length, as number of bytes
|
2216
|
+
var m_key_length = num_bytes;
|
2217
|
+
|
2218
|
+
// The length (number of bytes) of the output of the pseudo-random function.
|
2219
|
+
// Since HMAC-SHA1 is the standard, and what is used here, it's 20 bytes.
|
2220
|
+
var m_hash_length = 20;
|
2221
|
+
|
2222
|
+
// Number of hash-sized blocks in the derived key (called 'l' in RFC2898)
|
2223
|
+
var m_total_blocks = Math.ceil(m_key_length/m_hash_length);
|
2224
|
+
|
2225
|
+
// Start computation with the first block
|
2226
|
+
var m_current_block = 1;
|
2227
|
+
|
2228
|
+
// Used in the HMAC-SHA1 computations
|
2229
|
+
var m_ipad = new Array(16);
|
2230
|
+
var m_opad = new Array(16);
|
2231
|
+
|
2232
|
+
// This is where the result of the iterations gets sotred
|
2233
|
+
var m_buffer = new Array(0x0,0x0,0x0,0x0,0x0);
|
2234
|
+
|
2235
|
+
// The result
|
2236
|
+
var m_key = "";
|
2237
|
+
|
2238
|
+
// The function to call with the result
|
2239
|
+
var m_result_func;
|
2240
|
+
|
2241
|
+
// The function to call with status after computing every chunk
|
2242
|
+
var m_status_func;
|
2243
|
+
|
2244
|
+
// Set up the HMAC-SHA1 computations
|
2245
|
+
if (m_bpassword.length > 16) m_bpassword = core_sha1(m_bpassword, password.length * chrsz);
|
2246
|
+
for(var i = 0; i < 16; ++i)
|
2247
|
+
{
|
2248
|
+
m_ipad[i] = m_bpassword[i] ^ 0x36363636;
|
2249
|
+
m_opad[i] = m_bpassword[i] ^ 0x5C5C5C5C;
|
2250
|
+
}
|
2251
|
+
|
2252
|
+
// Starts the computation
|
2253
|
+
this.deriveKey = function()
|
2254
|
+
{
|
2255
|
+
return this.do_PBKDF2_iterations();
|
2256
|
+
}
|
2257
|
+
|
2258
|
+
|
2259
|
+
// The workhorse
|
2260
|
+
this.do_PBKDF2_iterations = function()
|
2261
|
+
{
|
2262
|
+
while(1) {
|
2263
|
+
var iterations = m_total_iterations;
|
2264
|
+
|
2265
|
+
for(var i=0; i<iterations; ++i) {
|
2266
|
+
if (m_iterations_done == 0) {
|
2267
|
+
var salt_block = m_salt +
|
2268
|
+
String.fromCharCode(m_current_block >> 24 & 0xF) +
|
2269
|
+
String.fromCharCode(m_current_block >> 16 & 0xF) +
|
2270
|
+
String.fromCharCode(m_current_block >> 8 & 0xF) +
|
2271
|
+
String.fromCharCode(m_current_block & 0xF);
|
2272
|
+
|
2273
|
+
m_hash = core_sha1(m_ipad.concat(str2binb(salt_block)), 512 + salt_block.length * 8);
|
2274
|
+
m_hash = core_sha1(m_opad.concat(m_hash), 512 + 160);
|
2275
|
+
}
|
2276
|
+
else {
|
2277
|
+
m_hash = core_sha1(m_ipad.concat(m_hash), 512 + m_hash.length * 32);
|
2278
|
+
m_hash = core_sha1(m_opad.concat(m_hash), 512 + 160);
|
2279
|
+
}
|
2280
|
+
|
2281
|
+
for(var j=0; j<m_hash.length; ++j)
|
2282
|
+
m_buffer[j] ^= m_hash[j];
|
2283
|
+
|
2284
|
+
m_iterations_done++;
|
2285
|
+
}
|
2286
|
+
|
2287
|
+
if (m_current_block < m_total_blocks) {
|
2288
|
+
m_key += binb2hex(m_buffer);
|
2289
|
+
|
2290
|
+
m_current_block++;
|
2291
|
+
m_buffer = new Array(0x0,0x0,0x0,0x0,0x0);
|
2292
|
+
m_iterations_done = 0;
|
2293
|
+
}
|
2294
|
+
else {
|
2295
|
+
var tmp = binb2hex(m_buffer);
|
2296
|
+
m_key += tmp.substr(0, (m_key_length - (m_total_blocks - 1) * m_hash_length) * 2 );
|
2297
|
+
|
2298
|
+
// Original PBKDF2 code returned a string of hex characters (i.e. string of nibbles).
|
2299
|
+
// Gibberish likes to use a Byte Array, so we convert accordingly.
|
2300
|
+
return GibberishAES.s2a(hex2bin(m_key));
|
2301
|
+
}
|
2302
|
+
}
|
2303
|
+
}
|
2304
|
+
}
|
2305
|
+
</script>
|
2306
|
+
|
2307
|
+
<script type="text/javascript"> <!-- date_format.js -->
|
2308
|
+
// Date Format 1.2.2
|
2309
|
+
// (c) 2007-2008 Steven Levithan <stevenlevithan.com>
|
2310
|
+
// MIT license
|
2311
|
+
// Includes enhancements by Scott Trenda <scott.trenda.net> and Kris Kowal <cixar.com/~kris.kowal/>
|
2312
|
+
//
|
2313
|
+
// Accepts a date, a mask, or a date and a mask.
|
2314
|
+
// Returns a formatted version of the given date.
|
2315
|
+
// The date defaults to the current date/time.
|
2316
|
+
// The mask defaults to dateFormat.masks.default.
|
2317
|
+
//
|
2318
|
+
var dateFormat = function () {
|
2319
|
+
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
|
2320
|
+
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
|
2321
|
+
timezoneClip = /[^-+\dA-Z]/g,
|
2322
|
+
pad = function (val, len) {
|
2323
|
+
val = String(val);
|
2324
|
+
len = len || 2;
|
2325
|
+
while (val.length < len) val = "0" + val;
|
2326
|
+
return val;
|
2327
|
+
};
|
2328
|
+
|
2329
|
+
// Regexes and supporting functions are cached through closure
|
2330
|
+
return function (date, mask, utc) {
|
2331
|
+
var dF = dateFormat;
|
2332
|
+
|
2333
|
+
// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
|
2334
|
+
if (arguments.length == 1 && (typeof date == "string" || date instanceof String) && !/\d/.test(date)) {
|
2335
|
+
mask = date;
|
2336
|
+
date = undefined;
|
2337
|
+
}
|
2338
|
+
|
2339
|
+
// Passing date through Date applies Date.parse, if necessary
|
2340
|
+
date = date ? new Date(date) : new Date();
|
2341
|
+
if (isNaN(date)) throw new SyntaxError("invalid date");
|
2342
|
+
|
2343
|
+
mask = String(dF.masks[mask] || mask || dF.masks["default"]);
|
2344
|
+
|
2345
|
+
// Allow setting the utc argument via the mask
|
2346
|
+
if (mask.slice(0, 4) == "UTC:") {
|
2347
|
+
mask = mask.slice(4);
|
2348
|
+
utc = true;
|
2349
|
+
}
|
2350
|
+
|
2351
|
+
var _ = utc ? "getUTC" : "get",
|
2352
|
+
d = date[_ + "Date"](),
|
2353
|
+
D = date[_ + "Day"](),
|
2354
|
+
m = date[_ + "Month"](),
|
2355
|
+
y = date[_ + "FullYear"](),
|
2356
|
+
H = date[_ + "Hours"](),
|
2357
|
+
M = date[_ + "Minutes"](),
|
2358
|
+
s = date[_ + "Seconds"](),
|
2359
|
+
L = date[_ + "Milliseconds"](),
|
2360
|
+
o = utc ? 0 : date.getTimezoneOffset(),
|
2361
|
+
flags = {
|
2362
|
+
d: d,
|
2363
|
+
dd: pad(d),
|
2364
|
+
ddd: dF.i18n.dayNames[D],
|
2365
|
+
dddd: dF.i18n.dayNames[D + 7],
|
2366
|
+
m: m + 1,
|
2367
|
+
mm: pad(m + 1),
|
2368
|
+
mmm: dF.i18n.monthNames[m],
|
2369
|
+
mmmm: dF.i18n.monthNames[m + 12],
|
2370
|
+
yy: String(y).slice(2),
|
2371
|
+
yyyy: y,
|
2372
|
+
h: H % 12 || 12,
|
2373
|
+
hh: pad(H % 12 || 12),
|
2374
|
+
H: H,
|
2375
|
+
HH: pad(H),
|
2376
|
+
M: M,
|
2377
|
+
MM: pad(M),
|
2378
|
+
s: s,
|
2379
|
+
ss: pad(s),
|
2380
|
+
l: pad(L, 3),
|
2381
|
+
L: pad(L > 99 ? Math.round(L / 10) : L),
|
2382
|
+
t: H < 12 ? "a" : "p",
|
2383
|
+
tt: H < 12 ? "am" : "pm",
|
2384
|
+
T: H < 12 ? "A" : "P",
|
2385
|
+
TT: H < 12 ? "AM" : "PM",
|
2386
|
+
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
|
2387
|
+
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
|
2388
|
+
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
|
2389
|
+
};
|
2390
|
+
|
2391
|
+
return mask.replace(token, function ($0) {
|
2392
|
+
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
|
2393
|
+
});
|
2394
|
+
};
|
2395
|
+
}();
|
2396
|
+
|
2397
|
+
// Some common format strings
|
2398
|
+
dateFormat.masks = {
|
2399
|
+
"default": "ddd mmm dd yyyy HH:MM:ss",
|
2400
|
+
shortDate: "m/d/yy",
|
2401
|
+
mediumDate: "mmm d, yyyy",
|
2402
|
+
longDate: "mmmm d, yyyy",
|
2403
|
+
fullDate: "dddd, mmmm d, yyyy",
|
2404
|
+
shortTime: "h:MM TT",
|
2405
|
+
mediumTime: "h:MM:ss TT",
|
2406
|
+
longTime: "h:MM:ss TT Z",
|
2407
|
+
isoDate: "yyyy-mm-dd",
|
2408
|
+
isoTime: "HH:MM:ss",
|
2409
|
+
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
|
2410
|
+
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
|
2411
|
+
};
|
2412
|
+
|
2413
|
+
// Internationalization strings
|
2414
|
+
dateFormat.i18n = {
|
2415
|
+
dayNames: [
|
2416
|
+
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
|
2417
|
+
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
|
2418
|
+
],
|
2419
|
+
monthNames: [
|
2420
|
+
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
|
2421
|
+
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
|
2422
|
+
]
|
2423
|
+
};
|
2424
|
+
|
2425
|
+
// For convenience...
|
2426
|
+
Date.prototype.format = function (mask, utc) {
|
2427
|
+
return dateFormat(this, mask, utc);
|
2428
|
+
};
|
2429
|
+
</script>
|
2430
|
+
|
2431
|
+
<script type="text/javascript"> <!-- ZeroClipboard.js -->
|
2432
|
+
// Simple Set Clipboard System
|
2433
|
+
// Author: Joseph Huckaby
|
2434
|
+
|
2435
|
+
var ZeroClipboard = {
|
2436
|
+
|
2437
|
+
version: "1.0.7",
|
2438
|
+
clients: {}, // registered upload clients on page, indexed by id
|
2439
|
+
moviePath: 'http://aws.cachefly.net/anywhere/001/images/ZeroClipboard.swf', // URL to movie
|
2440
|
+
nextId: 1, // ID of next movie
|
2441
|
+
|
2442
|
+
$: function(thingy) {
|
2443
|
+
// simple DOM lookup utility function
|
2444
|
+
if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
|
2445
|
+
if (!thingy.addClass) {
|
2446
|
+
// extend element with a few useful methods
|
2447
|
+
thingy.hide = function() { this.style.display = 'none'; };
|
2448
|
+
thingy.show = function() { this.style.display = ''; };
|
2449
|
+
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
|
2450
|
+
thingy.removeClass = function(name) {
|
2451
|
+
var classes = this.className.split(/\s+/);
|
2452
|
+
var idx = -1;
|
2453
|
+
for (var k = 0; k < classes.length; k++) {
|
2454
|
+
if (classes[k] == name) { idx = k; k = classes.length; }
|
2455
|
+
}
|
2456
|
+
if (idx > -1) {
|
2457
|
+
classes.splice( idx, 1 );
|
2458
|
+
this.className = classes.join(' ');
|
2459
|
+
}
|
2460
|
+
return this;
|
2461
|
+
};
|
2462
|
+
thingy.hasClass = function(name) {
|
2463
|
+
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
|
2464
|
+
};
|
2465
|
+
}
|
2466
|
+
return thingy;
|
2467
|
+
},
|
2468
|
+
|
2469
|
+
setMoviePath: function(path) {
|
2470
|
+
// set path to ZeroClipboard.swf
|
2471
|
+
this.moviePath = path;
|
2472
|
+
},
|
2473
|
+
|
2474
|
+
dispatch: function(id, eventName, args) {
|
2475
|
+
// receive event from flash movie, send to client
|
2476
|
+
var client = this.clients[id];
|
2477
|
+
if (client) {
|
2478
|
+
client.receiveEvent(eventName, args);
|
2479
|
+
}
|
2480
|
+
},
|
2481
|
+
|
2482
|
+
register: function(id, client) {
|
2483
|
+
// register new client to receive events
|
2484
|
+
this.clients[id] = client;
|
2485
|
+
},
|
2486
|
+
|
2487
|
+
getDOMObjectPosition: function(obj, stopObj) {
|
2488
|
+
// get absolute coordinates for dom element
|
2489
|
+
var info = {
|
2490
|
+
left: 0,
|
2491
|
+
top: 0,
|
2492
|
+
width: obj.width ? obj.width : obj.offsetWidth,
|
2493
|
+
height: obj.height ? obj.height : obj.offsetHeight
|
2494
|
+
};
|
2495
|
+
|
2496
|
+
while (obj && (obj != stopObj)) {
|
2497
|
+
info.left += obj.offsetLeft;
|
2498
|
+
info.top += obj.offsetTop;
|
2499
|
+
obj = obj.offsetParent;
|
2500
|
+
}
|
2501
|
+
|
2502
|
+
return info;
|
2503
|
+
},
|
2504
|
+
|
2505
|
+
Client: function(elem) {
|
2506
|
+
// constructor for new simple upload client
|
2507
|
+
this.handlers = {};
|
2508
|
+
|
2509
|
+
// unique ID
|
2510
|
+
this.id = ZeroClipboard.nextId++;
|
2511
|
+
this.movieId = 'ZeroClipboardMovie_' + this.id;
|
2512
|
+
|
2513
|
+
// register client with singleton to receive flash events
|
2514
|
+
ZeroClipboard.register(this.id, this);
|
2515
|
+
|
2516
|
+
// create movie
|
2517
|
+
if (elem) this.glue(elem);
|
2518
|
+
}
|
2519
|
+
};
|
2520
|
+
|
2521
|
+
ZeroClipboard.Client.prototype = {
|
2522
|
+
|
2523
|
+
id: 0, // unique ID for us
|
2524
|
+
ready: false, // whether movie is ready to receive events or not
|
2525
|
+
movie: null, // reference to movie object
|
2526
|
+
clipText: '', // text to copy to clipboard
|
2527
|
+
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
|
2528
|
+
cssEffects: true, // enable CSS mouse effects on dom container
|
2529
|
+
handlers: null, // user event handlers
|
2530
|
+
|
2531
|
+
glue: function(elem, appendElem, stylesToAdd) {
|
2532
|
+
// glue to DOM element
|
2533
|
+
// elem can be ID or actual DOM element object
|
2534
|
+
this.domElement = ZeroClipboard.$(elem);
|
2535
|
+
|
2536
|
+
// float just above object, or zIndex 99 if dom element isn't set
|
2537
|
+
var zIndex = 99;
|
2538
|
+
if (this.domElement.style.zIndex) {
|
2539
|
+
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
|
2540
|
+
}
|
2541
|
+
|
2542
|
+
if (typeof(appendElem) == 'string') {
|
2543
|
+
appendElem = ZeroClipboard.$(appendElem);
|
2544
|
+
}
|
2545
|
+
else if (typeof(appendElem) == 'undefined') {
|
2546
|
+
appendElem = document.getElementsByTagName('body')[0];
|
2547
|
+
}
|
2548
|
+
|
2549
|
+
// find X/Y position of domElement
|
2550
|
+
var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
|
2551
|
+
|
2552
|
+
// create floating DIV above element
|
2553
|
+
this.div = document.createElement('div');
|
2554
|
+
var style = this.div.style;
|
2555
|
+
style.position = 'absolute';
|
2556
|
+
style.left = '' + box.left + 'px';
|
2557
|
+
style.top = '' + box.top + 'px';
|
2558
|
+
style.width = '' + box.width + 'px';
|
2559
|
+
style.height = '' + box.height + 'px';
|
2560
|
+
style.zIndex = zIndex;
|
2561
|
+
|
2562
|
+
if (typeof(stylesToAdd) == 'object') {
|
2563
|
+
for (addedStyle in stylesToAdd) {
|
2564
|
+
style[addedStyle] = stylesToAdd[addedStyle];
|
2565
|
+
}
|
2566
|
+
}
|
2567
|
+
|
2568
|
+
// style.backgroundColor = '#f00'; // debug
|
2569
|
+
|
2570
|
+
appendElem.appendChild(this.div);
|
2571
|
+
|
2572
|
+
this.div.innerHTML = this.getHTML( box.width, box.height );
|
2573
|
+
},
|
2574
|
+
|
2575
|
+
getHTML: function(width, height) {
|
2576
|
+
// return HTML for movie
|
2577
|
+
var html = '';
|
2578
|
+
var flashvars = 'id=' + this.id +
|
2579
|
+
'&width=' + width +
|
2580
|
+
'&height=' + height;
|
2581
|
+
|
2582
|
+
if (navigator.userAgent.match(/MSIE/)) {
|
2583
|
+
// IE gets an OBJECT tag
|
2584
|
+
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
|
2585
|
+
html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
|
2586
|
+
}
|
2587
|
+
else {
|
2588
|
+
// all other browsers get an EMBED tag
|
2589
|
+
html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
|
2590
|
+
}
|
2591
|
+
return html;
|
2592
|
+
},
|
2593
|
+
|
2594
|
+
hide: function() {
|
2595
|
+
// temporarily hide floater offscreen
|
2596
|
+
if (this.div) {
|
2597
|
+
this.div.style.left = '-2000px';
|
2598
|
+
}
|
2599
|
+
},
|
2600
|
+
|
2601
|
+
show: function() {
|
2602
|
+
// show ourselves after a call to hide()
|
2603
|
+
this.reposition();
|
2604
|
+
},
|
2605
|
+
|
2606
|
+
destroy: function() {
|
2607
|
+
// destroy control and floater
|
2608
|
+
if (this.domElement && this.div) {
|
2609
|
+
this.hide();
|
2610
|
+
this.div.innerHTML = '';
|
2611
|
+
|
2612
|
+
var body = document.getElementsByTagName('body')[0];
|
2613
|
+
try { body.removeChild( this.div ); } catch(e) {;}
|
2614
|
+
|
2615
|
+
this.domElement = null;
|
2616
|
+
this.div = null;
|
2617
|
+
}
|
2618
|
+
},
|
2619
|
+
|
2620
|
+
reposition: function(elem) {
|
2621
|
+
// reposition our floating div, optionally to new container
|
2622
|
+
// warning: container CANNOT change size, only position
|
2623
|
+
if (elem) {
|
2624
|
+
this.domElement = ZeroClipboard.$(elem);
|
2625
|
+
if (!this.domElement) this.hide();
|
2626
|
+
}
|
2627
|
+
|
2628
|
+
if (this.domElement && this.div) {
|
2629
|
+
var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
|
2630
|
+
var style = this.div.style;
|
2631
|
+
style.left = '' + box.left + 'px';
|
2632
|
+
style.top = '' + box.top + 'px';
|
2633
|
+
}
|
2634
|
+
},
|
2635
|
+
|
2636
|
+
setText: function(newText) {
|
2637
|
+
// set text to be copied to clipboard
|
2638
|
+
this.clipText = newText;
|
2639
|
+
if (this.ready) this.movie.setText(newText);
|
2640
|
+
},
|
2641
|
+
|
2642
|
+
addEventListener: function(eventName, func) {
|
2643
|
+
// add user event listener for event
|
2644
|
+
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
|
2645
|
+
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
|
2646
|
+
if (!this.handlers[eventName]) this.handlers[eventName] = [];
|
2647
|
+
this.handlers[eventName].push(func);
|
2648
|
+
},
|
2649
|
+
|
2650
|
+
setHandCursor: function(enabled) {
|
2651
|
+
// enable hand cursor (true), or default arrow cursor (false)
|
2652
|
+
this.handCursorEnabled = enabled;
|
2653
|
+
if (this.ready) this.movie.setHandCursor(enabled);
|
2654
|
+
},
|
2655
|
+
|
2656
|
+
setCSSEffects: function(enabled) {
|
2657
|
+
// enable or disable CSS effects on DOM container
|
2658
|
+
this.cssEffects = !!enabled;
|
2659
|
+
},
|
2660
|
+
|
2661
|
+
receiveEvent: function(eventName, args) {
|
2662
|
+
// receive event from flash
|
2663
|
+
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
|
2664
|
+
|
2665
|
+
// special behavior for certain events
|
2666
|
+
switch (eventName) {
|
2667
|
+
case 'load':
|
2668
|
+
// movie claims it is ready, but in IE this isn't always the case...
|
2669
|
+
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
|
2670
|
+
this.movie = document.getElementById(this.movieId);
|
2671
|
+
if (!this.movie) {
|
2672
|
+
var self = this;
|
2673
|
+
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
|
2674
|
+
return;
|
2675
|
+
}
|
2676
|
+
|
2677
|
+
// firefox on pc needs a "kick" in order to set these in certain cases
|
2678
|
+
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
|
2679
|
+
var self = this;
|
2680
|
+
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
|
2681
|
+
this.ready = true;
|
2682
|
+
return;
|
2683
|
+
}
|
2684
|
+
|
2685
|
+
this.ready = true;
|
2686
|
+
this.movie.setText( this.clipText );
|
2687
|
+
this.movie.setHandCursor( this.handCursorEnabled );
|
2688
|
+
break;
|
2689
|
+
|
2690
|
+
case 'mouseover':
|
2691
|
+
if (this.domElement && this.cssEffects) {
|
2692
|
+
this.domElement.addClass('hover');
|
2693
|
+
if (this.recoverActive) this.domElement.addClass('active');
|
2694
|
+
}
|
2695
|
+
break;
|
2696
|
+
|
2697
|
+
case 'mouseout':
|
2698
|
+
if (this.domElement && this.cssEffects) {
|
2699
|
+
this.recoverActive = false;
|
2700
|
+
if (this.domElement.hasClass('active')) {
|
2701
|
+
this.domElement.removeClass('active');
|
2702
|
+
this.recoverActive = true;
|
2703
|
+
}
|
2704
|
+
this.domElement.removeClass('hover');
|
2705
|
+
}
|
2706
|
+
break;
|
2707
|
+
|
2708
|
+
case 'mousedown':
|
2709
|
+
if (this.domElement && this.cssEffects) {
|
2710
|
+
this.domElement.addClass('active');
|
2711
|
+
}
|
2712
|
+
break;
|
2713
|
+
|
2714
|
+
case 'mouseup':
|
2715
|
+
if (this.domElement && this.cssEffects) {
|
2716
|
+
this.domElement.removeClass('active');
|
2717
|
+
this.recoverActive = false;
|
2718
|
+
}
|
2719
|
+
break;
|
2720
|
+
} // switch eventName
|
2721
|
+
|
2722
|
+
if (this.handlers[eventName]) {
|
2723
|
+
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
|
2724
|
+
var func = this.handlers[eventName][idx];
|
2725
|
+
|
2726
|
+
if (typeof(func) == 'function') {
|
2727
|
+
// actual function reference
|
2728
|
+
func(this, args);
|
2729
|
+
}
|
2730
|
+
else if ((typeof(func) == 'object') && (func.length == 2)) {
|
2731
|
+
// PHP style object + method, i.e. [myObject, 'myMethod']
|
2732
|
+
func[0][ func[1] ](this, args);
|
2733
|
+
}
|
2734
|
+
else if (typeof(func) == 'string') {
|
2735
|
+
// name of function
|
2736
|
+
window[func](this, args);
|
2737
|
+
}
|
2738
|
+
} // foreach event handler defined
|
2739
|
+
} // user defined handler for event
|
2740
|
+
}
|
2741
|
+
|
2742
|
+
};
|
2743
|
+
</script>
|
2744
|
+
|
2745
|
+
<script type="text/javascript">
|
2746
|
+
|
2747
|
+
var keychain;
|
2748
|
+
var baseUrl;
|
2749
|
+
var keychainFolder, dataFolder, styleFolder;
|
2750
|
+
var current_profile = null;
|
2751
|
+
var devmode;
|
2752
|
+
|
2753
|
+
var OPANYWHERE_VERSION = "001";
|
2754
|
+
|
2755
|
+
function mainPageDidFinishLoading() {
|
2756
|
+
try {
|
2757
|
+
setup();
|
2758
|
+
keychain = new Keychain();
|
2759
|
+
showLockedScreen();
|
2760
|
+
} catch(e) {
|
2761
|
+
showFatalException(e);
|
2762
|
+
}
|
2763
|
+
}
|
2764
|
+
|
2765
|
+
function showLockedScreen() {
|
2766
|
+
try {
|
2767
|
+
$("#mainBody").html($("#login-html").html());
|
2768
|
+
|
2769
|
+
// Todo: allProfiles should be dynamically loaded
|
2770
|
+
var allProfiles = ["default"];
|
2771
|
+
selectProfile(allProfiles[0]);
|
2772
|
+
$("#masterPassword").focus();
|
2773
|
+
}
|
2774
|
+
catch(e) {
|
2775
|
+
showFatalException(e);
|
2776
|
+
}
|
2777
|
+
}
|
2778
|
+
|
2779
|
+
function verifyPassword(password) {
|
2780
|
+
try {
|
2781
|
+
if (!keychain.encryptionKeysLoaded) {
|
2782
|
+
encryptionKeysCouldNotLoad();
|
2783
|
+
return;
|
2784
|
+
}
|
2785
|
+
|
2786
|
+
if (keychain.verifyPassword(password)) {
|
2787
|
+
$("#mainBody").html($("#main-html").html());
|
2788
|
+
loadFile(fullKeychainFilePath('contents.js'), profileContentsDidFinishLoading);
|
2789
|
+
}
|
2790
|
+
else {
|
2791
|
+
login_failed();
|
2792
|
+
}
|
2793
|
+
} catch(e) {
|
2794
|
+
showFatalException(e);
|
2795
|
+
}
|
2796
|
+
}
|
2797
|
+
|
2798
|
+
|
2799
|
+
function encryptionKeysCouldNotLoad() {
|
2800
|
+
if (document.location.href.match(/file:.*var\/mobile.*\/Dropbox/i)) {
|
2801
|
+
showFatalMessage("1PasswordAnywhere cannot run in the Dropbox app", "<p>To access your data on iOS, please use Mobile Safari or <a href='itms-apps://itunes.apple.com/us/app/1password-pro/id319898689'>1Password app from the App Store</a>.</p>");
|
2802
|
+
}
|
2803
|
+
else if (document.location.href.match(/file:.*mnt.*\/dropbox/i)) {
|
2804
|
+
showFatalMessage("1PasswordAnywhere cannot run in the Dropbox app", "<p>To access your data in Android OS, please visit dropbox.com in your web browser or use <a href='https://market.android.com/details?id=com.onepassword.passwordmanager'>1Password for Android</a>.</p>");
|
2805
|
+
}
|
2806
|
+
else {
|
2807
|
+
var keysFilePath = fullKeychainFilePath('encryptionKeys.js');
|
2808
|
+
showFatalMessage("Problem loading 1Password data file", "<p>A <a target='_blank' href='" + keysFilePath + "'>key data file</a> could not be loaded and 1PasswordAnywhere cannot continue without it.</p><p>Please see <a target='_blank' href='http://help.agilebits.com/1Password3/1passwordanywhere_troubleshooting.html'>this help guide</a> for troubleshooting tips.</p>");
|
2809
|
+
}
|
2810
|
+
}
|
2811
|
+
|
2812
|
+
function encryptionKeysDidFinishLoading(json) {
|
2813
|
+
if (!json || json == "") {
|
2814
|
+
encryptionKeysCouldNotLoad();
|
2815
|
+
return;
|
2816
|
+
}
|
2817
|
+
|
2818
|
+
try {
|
2819
|
+
var keys;
|
2820
|
+
try {
|
2821
|
+
json = "(" + json + ")";
|
2822
|
+
keys = eval(json);
|
2823
|
+
}
|
2824
|
+
catch(e) {
|
2825
|
+
showFatalMessage("Problem parsing 1Password data file", "<p>There was a problem parsing the data contained in encryptionKeys.js.</p><p>Please <a href='mailto:1PAnywhere@agilebits.com?subject=1PasswordAnywhere%20problem%20parsing%20encryptionKeys.js&body=Please let us know what you were doing when this problem occurred.'>report this problem</a> to the Agile team.</p>")
|
2826
|
+
}
|
2827
|
+
|
2828
|
+
keychain.setEncryptionKeys(keys);
|
2829
|
+
} catch(e) {
|
2830
|
+
showFatalException(e);
|
2831
|
+
}
|
2832
|
+
}
|
2833
|
+
|
2834
|
+
function selectProfile(profile_name) {
|
2835
|
+
try {
|
2836
|
+
top.current_profile = profile_name;
|
2837
|
+
loadFile(fullKeychainFilePath('encryptionKeys.js'), encryptionKeysDidFinishLoading);
|
2838
|
+
} catch(e) {
|
2839
|
+
showFatalException(e);
|
2840
|
+
}
|
2841
|
+
}
|
2842
|
+
|
2843
|
+
function setup() {
|
2844
|
+
try {
|
2845
|
+
_setup();
|
2846
|
+
} catch(e) {
|
2847
|
+
showFatalException(e);
|
2848
|
+
}
|
2849
|
+
}
|
2850
|
+
|
2851
|
+
function _setup() {
|
2852
|
+
baseUrl = window.location.href.substring(0, window.location.href.indexOf("1Password.html"));
|
2853
|
+
keychainFolder = baseUrl;
|
2854
|
+
|
2855
|
+
var parameters = window.location.search.substring(1).split("&");
|
2856
|
+
|
2857
|
+
for (var i=0; i < parameters.length; i++) {
|
2858
|
+
var nvp = parameters[i].split("=");
|
2859
|
+
var name = nvp[0], value = nvp[1];
|
2860
|
+
|
2861
|
+
if (name == "keychainFolder") {
|
2862
|
+
keychainFolder = value;
|
2863
|
+
if (keychainFolder[keychainFolder.length-1] != "/") keychainFolder += "/";
|
2864
|
+
}
|
2865
|
+
if (name == "keychainFolder" && navigator && navigator.userAgent.match("Firefox") ) {
|
2866
|
+
alert("FATAL: The keychainFolder parameter is NOT supported in Firefox. Accessing files from outside the folder that opens you is against the mozilla security model unless you set security.fileuri.strict_origin_policy to false.");
|
2867
|
+
}
|
2868
|
+
if (name == "devmode") {
|
2869
|
+
devmode = true;
|
2870
|
+
}
|
2871
|
+
}
|
2872
|
+
|
2873
|
+
if (devmode) {
|
2874
|
+
styleFolder = "./style";
|
2875
|
+
}
|
2876
|
+
else {
|
2877
|
+
styleFolder = keychainFolder + "/style";
|
2878
|
+
}
|
2879
|
+
dataFolder = keychainFolder + "/data";
|
2880
|
+
}
|
2881
|
+
|
2882
|
+
function logout(autologout) {
|
2883
|
+
try {
|
2884
|
+
// Not really needed but want to be 100% sure decrypted data is cleared
|
2885
|
+
clearEntryDetails();
|
2886
|
+
keychain.lock();
|
2887
|
+
|
2888
|
+
// TODO -- would be nice to show autologout message to user
|
2889
|
+
showLockedScreen();
|
2890
|
+
} catch(e) {
|
2891
|
+
showFatalException(e);
|
2892
|
+
}
|
2893
|
+
}
|
2894
|
+
|
2895
|
+
function setFocus()
|
2896
|
+
{
|
2897
|
+
$('#password').focus();
|
2898
|
+
}
|
2899
|
+
|
2900
|
+
function fullKeychainFilePath(filename) {
|
2901
|
+
return top.keychainFolder + "data/" + top.current_profile + "/" + filename;
|
2902
|
+
}
|
2903
|
+
|
2904
|
+
function loadFile(file, onSuccess) {
|
2905
|
+
enableFirefoxPrivileges();
|
2906
|
+
|
2907
|
+
$.ajax({
|
2908
|
+
url: file,
|
2909
|
+
success: function(data, textStatus, request){ onSuccess(request.responseText);},
|
2910
|
+
error: function() { alert('A problem occurred when loading the "' + file + '" file.'); },
|
2911
|
+
});
|
2912
|
+
}
|
2913
|
+
|
2914
|
+
function enableFirefoxPrivileges() {
|
2915
|
+
// request local file read permission in Firefox
|
2916
|
+
try {
|
2917
|
+
try {
|
2918
|
+
// Make Safari bomb out
|
2919
|
+
netscape;
|
2920
|
+
netscape.security.PrivilegeManager.enablePrivilege("UniversalFileRead");
|
2921
|
+
}
|
2922
|
+
catch(e) {}
|
2923
|
+
} catch (e) {
|
2924
|
+
alert("Permission to read file was denied. If in Firefox you must allow this script to load local files.");
|
2925
|
+
}
|
2926
|
+
}
|
2927
|
+
|
2928
|
+
function showFatalException(exc) {
|
2929
|
+
try {
|
2930
|
+
window.console && console.log && console.log("Exception: " + exc ? exc : "N/A");
|
2931
|
+
|
2932
|
+
var error_desc = "EXCEPTION WAS NIL."
|
2933
|
+
if (exc) {
|
2934
|
+
var file = exc.sourceURL;
|
2935
|
+
if (!file) file = exc.fileName;
|
2936
|
+
if (file && file.match(/^.*\/(.*)\?ts=.*$/)) {
|
2937
|
+
file = RegExp.$1;
|
2938
|
+
}
|
2939
|
+
error_desc = exc.name + " occurred in " + file + " on line #" + exc.line + ":\n" + exc.message;
|
2940
|
+
}
|
2941
|
+
|
2942
|
+
if (OPANYWHERE_VERSION) error_desc += "\nYou are running 1PasswordAnywhere version #" + OPANYWHERE_VERSION;
|
2943
|
+
|
2944
|
+
var html_msg = "<p>" + error_desc.replace(/\n/g, "<br/>") + "</p><p>Please <a href='mailto:1PAnywhere@agilebits.com?subject=1PasswordAnywhere%20Problem&body=Please let us know what you were doing when this problem occurred.%0A%0AError details:%0A" + escape(error_desc) + "'>report this error</a> so Agile can investigate.</p>";
|
2945
|
+
_showMessageBox("1PasswordAnywhere experienced an error", html_msg, 'messageBox_error', {'fatal':true});
|
2946
|
+
}
|
2947
|
+
catch(e) {
|
2948
|
+
window.console && console.log && console.log("Exception during error processing: " + e ? e : "N/A");
|
2949
|
+
|
2950
|
+
var msg = 'An exception occurred during error processing! Please report this issue to Agile at 1PAnywhere@agilebits.com along with a description of what you were doing when this error happened.';
|
2951
|
+
if (OPANYWHERE_VERSION) msg += ' You are running version #' + OPANYWHERE_VERSION;
|
2952
|
+
alert(msg);
|
2953
|
+
}
|
2954
|
+
}
|
2955
|
+
|
2956
|
+
function showMessage(title, message) {
|
2957
|
+
_showMessageBox(title, message, 'messageBox_error', {});
|
2958
|
+
}
|
2959
|
+
|
2960
|
+
function showFatalMessage(title, message) {
|
2961
|
+
_showMessageBox(title, message, 'messageBox_error', { 'fatal' : true });
|
2962
|
+
}
|
2963
|
+
|
2964
|
+
function showFatalMessageWithEmailSupportLink(title, message) {
|
2965
|
+
if (OPANYWHERE_VERSION) message += "\nYou are running 1PasswordAnywhere version #" + OPANYWHERE_VERSION;
|
2966
|
+
|
2967
|
+
var html_msg = "<p>" + message.gsub(/\n/, "<br/>") + "</p><p>Please <a href='mailto:1PAnywhere@agilebits.com?subject=1PasswordAnywhere%20Problem&body=Please let us know what you were doing when this problem occurred.%0A%0AError details:%0A" + escape(message) + "'>report this error</a> so Agile can investigate.</p>";
|
2968
|
+
|
2969
|
+
_showMessageBox("1PasswordAnywhere experienced an error", html_msg, 'messageBox_error', {'fatal':true});
|
2970
|
+
}
|
2971
|
+
|
2972
|
+
function _showMessageBox (title, message, cssClass, options) {
|
2973
|
+
var help_url = options['help_url'];
|
2974
|
+
if (help_url) {
|
2975
|
+
$("#messageBox_help").attr('href', help_url);
|
2976
|
+
}
|
2977
|
+
else {
|
2978
|
+
$("#messageBox_help").hide();
|
2979
|
+
}
|
2980
|
+
|
2981
|
+
$('#messageBox').addClass(cssClass);
|
2982
|
+
$('#messageBox_title').html(title);
|
2983
|
+
$('#messageBox_message').html(message);
|
2984
|
+
|
2985
|
+
// Effect.Appear
|
2986
|
+
$('#messageBox_wrapper').show();
|
2987
|
+
$('#messageBox').fadeIn();
|
2988
|
+
|
2989
|
+
var fatal = options['fatal'];
|
2990
|
+
if (fatal) {
|
2991
|
+
$("#messageBox_dismiss").hide();
|
2992
|
+
}
|
2993
|
+
else {
|
2994
|
+
$('#messageBox_dismiss').click(function(){
|
2995
|
+
//Dismiss message box.
|
2996
|
+
$('#messageBox_wrapper').fadeOut();
|
2997
|
+
$('#messageBox').fadeOut();
|
2998
|
+
|
2999
|
+
$('messageBox_dismiss').unbind('click');
|
3000
|
+
});
|
3001
|
+
|
3002
|
+
$('#messageBox_wrapper').click(function(){
|
3003
|
+
//Dismiss message box.
|
3004
|
+
$('#messageBox_wrapper').fadeOut();
|
3005
|
+
$('#messageBox').fadeOut();
|
3006
|
+
|
3007
|
+
$('#messageBox_dismiss').unbind('click');
|
3008
|
+
});
|
3009
|
+
}
|
3010
|
+
}
|
3011
|
+
|
3012
|
+
function login_failed()
|
3013
|
+
{
|
3014
|
+
try {
|
3015
|
+
$('#passwordLabel').addClass('error');
|
3016
|
+
$('#masterPassword').addClass('error');
|
3017
|
+
$('#masterPassword').val("");
|
3018
|
+
|
3019
|
+
var hint = fullKeychainFilePath(".password.hint");
|
3020
|
+
$.ajax({
|
3021
|
+
url: hint,
|
3022
|
+
success: function(data, textStatus, request) {showPasswordHintIfAvailable(data)}
|
3023
|
+
});
|
3024
|
+
|
3025
|
+
// TODO
|
3026
|
+
// Effect.Shake('passwordLabel');
|
3027
|
+
}
|
3028
|
+
catch(e) {
|
3029
|
+
showFatalException(e);
|
3030
|
+
}
|
3031
|
+
}
|
3032
|
+
|
3033
|
+
function showPasswordHintIfAvailable(hint) {
|
3034
|
+
$('#passwordError').css('display', '');
|
3035
|
+
// if (transport.status != 404 && transport.responseText.length != 0) {
|
3036
|
+
if (hint) {
|
3037
|
+
$('#masterPasswordHint').html(hint);
|
3038
|
+
}
|
3039
|
+
}
|
3040
|
+
</script>
|
3041
|
+
|
3042
|
+
<script type="text/javascript"> <!-- keychain.js -->
|
3043
|
+
var INDEX_UUID=0, INDEX_TYPE=1, INDEX_NAME=2, INDEX_URL=3, INDEX_DATE=4, INDEX_FOLDER=5, INDEX_PASSWORD_STRENGTH=6, INDEX_TRASHED=7;
|
3044
|
+
var TYPE_WEBFORMS='webforms.WebForm', TYPE_FOLDERS='system.folder.Regular', TYPE_NOTES='securenotes.SecureNote', TYPE_IDENTITIES='identities.Identity', TYPE_PASSWORDS='passwords.Password', TYPE_WALLET='wallet', TYPE_SOFTWARE_LICENSES='wallet.computer.License', TYPE_TRASHED='trashed', TYPE_ACCOUNT='account', TYPE_ACCOUNT_ONLINESERVICE='wallet.onlineservices.', TYPE_ACCOUNT_COMPUTER='wallet.computer.';
|
3045
|
+
var ERROR_BAD_DECRYPT = "Decryption failed", ERROR_INVALID_JSON = "Decryption passed but JSON was invalid", ERROR_OK = "OK";
|
3046
|
+
|
3047
|
+
String.prototype.startsWith = function(str) {
|
3048
|
+
return (this.match("^"+str) == str);
|
3049
|
+
}
|
3050
|
+
|
3051
|
+
String.prototype.escapeHTML = function() {
|
3052
|
+
return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
|
3053
|
+
}
|
3054
|
+
|
3055
|
+
function Keychain() {
|
3056
|
+
this.AUTOLOCK_LENGTH = 1 * 60 * 1000;
|
3057
|
+
this.autoLogoutTime = null;
|
3058
|
+
this.contents = { webforms:[], wallet:[], notes:[], identities:[], passwords:[], folders:[] };
|
3059
|
+
this.encryptionKeys = null;
|
3060
|
+
this._all = null;
|
3061
|
+
this.masterPassword = null;
|
3062
|
+
this.encryptionKeysLoaded = false;
|
3063
|
+
}
|
3064
|
+
|
3065
|
+
Keychain.prototype.setEncryptionKeys = function(keys) {
|
3066
|
+
this.encryptionKeys = keys;
|
3067
|
+
this.encryptionKeysLoaded = true;
|
3068
|
+
}
|
3069
|
+
|
3070
|
+
Keychain.prototype.verifyPassword = function(password) {
|
3071
|
+
GibberishAES.size(128);
|
3072
|
+
this.encryptionKeys.decryptedKeys = {};
|
3073
|
+
|
3074
|
+
var key = this.decryptEncryptionKey("SL5", password);
|
3075
|
+
if (!key) return false;
|
3076
|
+
|
3077
|
+
this.masterPassword = password;
|
3078
|
+
return true;
|
3079
|
+
}
|
3080
|
+
|
3081
|
+
Keychain.prototype.decryptEncryptionKey = function(sl, password) {
|
3082
|
+
for (var i=0; i < this.encryptionKeys["list"].length; i++) {
|
3083
|
+
var item = this.encryptionKeys["list"][i];
|
3084
|
+
|
3085
|
+
if (item['identifier'] == this.encryptionKeys[sl]) {
|
3086
|
+
var iterations = parseInt(item['iterations'] || "0", 10);
|
3087
|
+
if (iterations < 1000) iterations = 1000;
|
3088
|
+
|
3089
|
+
var decryptedKey = GibberishAES.decryptUsingPBKDF2(item["data"], password, iterations);
|
3090
|
+
if (!decryptedKey) return null;
|
3091
|
+
|
3092
|
+
var verification = GibberishAES.decryptBase64UsingKey(item["validation"],GibberishAES.s2a(decryptedKey));
|
3093
|
+
if (verification != decryptedKey) return null;
|
3094
|
+
|
3095
|
+
this.encryptionKeys.decryptedKeys[sl] = decryptedKey;
|
3096
|
+
return decryptedKey;
|
3097
|
+
}
|
3098
|
+
}
|
3099
|
+
|
3100
|
+
return null;
|
3101
|
+
}
|
3102
|
+
|
3103
|
+
Keychain.prototype.keyForItem = function(item) {
|
3104
|
+
if (item.securityLevel == null) {
|
3105
|
+
return this.encryptionKeys.decryptedKeys["SL5"]
|
3106
|
+
}
|
3107
|
+
|
3108
|
+
var key = this.encryptionKeys.decryptedKeys[item.securityLevel];
|
3109
|
+
if (!key) {
|
3110
|
+
key = this.decryptEncryptionKey(item.securityLevel, this.masterPassword);
|
3111
|
+
}
|
3112
|
+
return key;
|
3113
|
+
}
|
3114
|
+
|
3115
|
+
Keychain.prototype.rescheduleAutoLogout = function () {
|
3116
|
+
this.autoLogoutTime = new Date().getTime() + this.AUTOLOCK_LENGTH;
|
3117
|
+
}
|
3118
|
+
|
3119
|
+
Keychain.prototype.setContents = function(itemArray) {
|
3120
|
+
this._all = [];
|
3121
|
+
|
3122
|
+
this.contents[TYPE_WEBFORMS] = [];
|
3123
|
+
this.contents[TYPE_NOTES] = [];
|
3124
|
+
this.contents[TYPE_WALLET] = [];
|
3125
|
+
this.contents[TYPE_PASSWORDS] = [];
|
3126
|
+
this.contents[TYPE_IDENTITIES] = [];
|
3127
|
+
this.contents[TYPE_SOFTWARE_LICENSES] = [];
|
3128
|
+
this.contents['folders'] = [];
|
3129
|
+
this.contents[TYPE_ACCOUNT] = [];
|
3130
|
+
this.contents[TYPE_TRASHED] = [];
|
3131
|
+
|
3132
|
+
for (itemIndex in itemArray) {
|
3133
|
+
var item = new KeychainItemOverview(itemArray[itemIndex]);
|
3134
|
+
if (item.type.startsWith("system.")) continue;
|
3135
|
+
|
3136
|
+
this._all[item.uuid] = item;
|
3137
|
+
|
3138
|
+
var category = null;
|
3139
|
+
if (item.trashed == "Y") {
|
3140
|
+
category = TYPE_TRASHED;
|
3141
|
+
}
|
3142
|
+
else {
|
3143
|
+
if (item.type == TYPE_SOFTWARE_LICENSES) category = TYPE_SOFTWARE_LICENSES;
|
3144
|
+
else if (item.type == TYPE_WEBFORMS) category = TYPE_WEBFORMS;
|
3145
|
+
else if (item.type == TYPE_NOTES) category = TYPE_NOTES;
|
3146
|
+
else if (item.type == TYPE_IDENTITIES) category = TYPE_IDENTITIES;
|
3147
|
+
else if (item.type == TYPE_IDENTITIES) category = TYPE_IDENTITIES;
|
3148
|
+
else if (item.type == TYPE_PASSWORDS) category = TYPE_PASSWORDS;
|
3149
|
+
else if (item.type.startsWith(TYPE_FOLDERS)) category = 'folders';
|
3150
|
+
else if (item.type.startsWith("wallet.membership")) category = TYPE_WALLET;
|
3151
|
+
else if (item.type.startsWith("wallet.financial")) category = TYPE_WALLET;
|
3152
|
+
else if (item.type.startsWith("wallet.government")) category = TYPE_WALLET;
|
3153
|
+
}
|
3154
|
+
|
3155
|
+
if (category == null) category = TYPE_ACCOUNT;
|
3156
|
+
|
3157
|
+
var itemsByType = this.contents[category];
|
3158
|
+
if (!itemsByType) {
|
3159
|
+
alert(category);
|
3160
|
+
}
|
3161
|
+
|
3162
|
+
itemsByType.push(item);
|
3163
|
+
}
|
3164
|
+
|
3165
|
+
this.rescheduleAutoLogout();
|
3166
|
+
|
3167
|
+
window.setTimeout(this._autoLogout, 1000);
|
3168
|
+
}
|
3169
|
+
|
3170
|
+
Keychain.prototype.itemsOfType = function(name) {
|
3171
|
+
return this.contents[name];
|
3172
|
+
}
|
3173
|
+
|
3174
|
+
Keychain.prototype.itemWithUuid = function(uuid) {
|
3175
|
+
return this._all[uuid];
|
3176
|
+
}
|
3177
|
+
|
3178
|
+
Keychain.prototype._autoLogout = function() {
|
3179
|
+
var now = new Date();
|
3180
|
+
|
3181
|
+
if (now.getTime() < keychain.autoLogoutTime) {
|
3182
|
+
window.setTimeout(keychain._autoLogout, 1000);
|
3183
|
+
return;
|
3184
|
+
}
|
3185
|
+
logout(true);
|
3186
|
+
}
|
3187
|
+
|
3188
|
+
Keychain.prototype.lock = function() {
|
3189
|
+
if (this.encryptionKeys) {
|
3190
|
+
this.encryptionKeys.decryptedKeys = null;
|
3191
|
+
}
|
3192
|
+
this.masterPassword = null;
|
3193
|
+
this.encryptionKeysLoaded = false;
|
3194
|
+
}
|
3195
|
+
|
3196
|
+
|
3197
|
+
|
3198
|
+
function KeychainItemOverview(data) {
|
3199
|
+
this.uuid = data[INDEX_UUID];
|
3200
|
+
this.type = data[INDEX_TYPE];
|
3201
|
+
this.title = data[INDEX_NAME];
|
3202
|
+
this.domain = data[INDEX_URL];
|
3203
|
+
this.updatedAtMs = data[INDEX_DATE] * 1000;
|
3204
|
+
this.trashed = data[INDEX_TRASHED];
|
3205
|
+
|
3206
|
+
var date = new Date();
|
3207
|
+
date.setTime(this.updatedAtMs);
|
3208
|
+
this.updatedAt = date.format("mmm d, yyyy, h:MM:ss TT");
|
3209
|
+
}
|
3210
|
+
|
3211
|
+
KeychainItemOverview.prototype.matches = function(s) {
|
3212
|
+
if (this.title.toLowerCase().indexOf(s) >= 0) return true;
|
3213
|
+
if (this.domain.toLowerCase().indexOf(s) >= 0) return true;
|
3214
|
+
return false;
|
3215
|
+
}
|
3216
|
+
|
3217
|
+
|
3218
|
+
function KeychainItem(data) {
|
3219
|
+
this.updatedAt = null; // TODO -- confirm that it can be deleted
|
3220
|
+
|
3221
|
+
this.data = data;
|
3222
|
+
this.folderUuid = data.folderUuid;
|
3223
|
+
this.encrypted_contents = data.encrypted;
|
3224
|
+
this.decrypted = false;
|
3225
|
+
this.decrypted_secure_contents = null;
|
3226
|
+
|
3227
|
+
this.uuid = data.uuid;
|
3228
|
+
this.type = data.typeName;
|
3229
|
+
this.title = data.title;
|
3230
|
+
this.domain = data.location;
|
3231
|
+
|
3232
|
+
this.securityLevel = data.securityLevel;
|
3233
|
+
if (!data.securityLevel && data.openContents) {
|
3234
|
+
this.securityLevel = data.openContents.securityLevel;
|
3235
|
+
}
|
3236
|
+
|
3237
|
+
if (!this.securityLevel) {
|
3238
|
+
this.securityLevel = "SL5";
|
3239
|
+
}
|
3240
|
+
|
3241
|
+
this.updatedAtMs = data.updatedAt * 1000;
|
3242
|
+
|
3243
|
+
folderName = keychain.itemWithUuid(this.folderUuid);
|
3244
|
+
if (!folderName) folderName = "None";
|
3245
|
+
}
|
3246
|
+
|
3247
|
+
KeychainItem.prototype.decrypt = function() {
|
3248
|
+
GibberishAES.size(128);
|
3249
|
+
var plainText = null;
|
3250
|
+
var key = keychain.keyForItem(this);
|
3251
|
+
plainText = GibberishAES.decryptBase64UsingKey(this.encrypted_contents, GibberishAES.s2a(key));
|
3252
|
+
|
3253
|
+
if (!plainText) {
|
3254
|
+
return ERROR_BAD_DECRYPT;
|
3255
|
+
}
|
3256
|
+
|
3257
|
+
// Decode UTF encoding that OpenSSL uses.
|
3258
|
+
plainText = decodeURIComponent(escape(plainText));
|
3259
|
+
|
3260
|
+
var pt = '(' + plainText + ');';
|
3261
|
+
try { this.decrypted_secure_contents = eval(pt); }
|
3262
|
+
catch (e) { return ERROR_INVALID_JSON; }
|
3263
|
+
|
3264
|
+
return ERROR_OK;
|
3265
|
+
},
|
3266
|
+
|
3267
|
+
KeychainItem.prototype.isWebForm = function() {
|
3268
|
+
return this.data.typeName.indexOf(TYPE_WEBFORMS) == 0;
|
3269
|
+
}
|
3270
|
+
|
3271
|
+
KeychainItem.prototype.asHTML = function() {
|
3272
|
+
switch(this.type) {
|
3273
|
+
case TYPE_WEBFORMS: return this.webformHTML(); break;
|
3274
|
+
case TYPE_NOTES: return this.secureNoteHTML(); break;
|
3275
|
+
case TYPE_SOFTWARE_LICENSES: return this.walletHTML(); break;
|
3276
|
+
case TYPE_IDENTITIES: return this.identityHTML(); break;
|
3277
|
+
case TYPE_PASSWORDS: return this.passwordHTML();
|
3278
|
+
}
|
3279
|
+
|
3280
|
+
if (this.type.startsWith(TYPE_WALLET)) {
|
3281
|
+
return this.walletHTML();
|
3282
|
+
}
|
3283
|
+
|
3284
|
+
return "No asHTML defined for " + this.type+ " uuid:" + this.uuid;
|
3285
|
+
}
|
3286
|
+
|
3287
|
+
KeychainItem.prototype.passwordHTML = function() {
|
3288
|
+
var r = "<table><tr><th></th>";
|
3289
|
+
r += "<th><h1>" + this.title + "</h1></th></tr>";
|
3290
|
+
r += this.spacerTR();
|
3291
|
+
r += this.notesTR();
|
3292
|
+
r += this.spacerTR();
|
3293
|
+
r += "<tr><td class='label'>password</td><td>" + showAndHideConcealedField(this.uuid, this.decrypted_secure_contents.password, true) + "</td></tr></table>";
|
3294
|
+
return r;
|
3295
|
+
}
|
3296
|
+
|
3297
|
+
KeychainItem.prototype.identityHTML = function() {
|
3298
|
+
var r = "<table><tr><th></th>";
|
3299
|
+
r += "<th><h1>" + this.title + "</h1></th></tr>";
|
3300
|
+
r += this.spacerTR();
|
3301
|
+
r += this.notesTR();
|
3302
|
+
r += this.spacerTR();
|
3303
|
+
r += this.walletFields();
|
3304
|
+
r += "</table>";
|
3305
|
+
return r;
|
3306
|
+
}
|
3307
|
+
|
3308
|
+
KeychainItem.prototype.walletHTML = function() {
|
3309
|
+
var r = "<table><tr><th></th>";
|
3310
|
+
r += "<th><h1>" + this.title + "</h1></th></tr>";
|
3311
|
+
r += this.spacerTR();
|
3312
|
+
r += this.notesTR();
|
3313
|
+
r += this.spacerTR();
|
3314
|
+
r += this.walletFields();
|
3315
|
+
r += "</table>";
|
3316
|
+
return r;
|
3317
|
+
}
|
3318
|
+
|
3319
|
+
KeychainItem.prototype.walletFields = function() {
|
3320
|
+
var entryValues = "";
|
3321
|
+
for (var key in this.decrypted_secure_contents)
|
3322
|
+
{
|
3323
|
+
if (key == 'notesPlain') continue;
|
3324
|
+
var v = this.decrypted_secure_contents[key];
|
3325
|
+
entryValues += "<tr><td class='label'>" + key.escapeHTML() + "</td><td>";
|
3326
|
+
|
3327
|
+
try {entryValues += v.escapeHTML();}
|
3328
|
+
catch(e) {entryValues += v;}
|
3329
|
+
entryValues += "</td></tr>";
|
3330
|
+
}
|
3331
|
+
return entryValues;
|
3332
|
+
}
|
3333
|
+
|
3334
|
+
KeychainItem.prototype.secureNoteHTML = function() {
|
3335
|
+
var r = "<table><tr colspan='2'>";
|
3336
|
+
r += "<th><h1>" + this.title + "</h1></th></tr>";
|
3337
|
+
|
3338
|
+
var secure = this.decrypted_secure_contents;
|
3339
|
+
if (!secure.notesPlain || secure.notesPlain.length == 0) return "";
|
3340
|
+
|
3341
|
+
return r + "<tr><td colspan='2'>" + convertNewLines(secure.notesPlain.escapeHTML()) + "</td></tr></table>";
|
3342
|
+
}
|
3343
|
+
|
3344
|
+
KeychainItem.prototype.webformHTML = function() {
|
3345
|
+
var r = "<table><tr><th></th>";
|
3346
|
+
r += "<th><h1>" + this.title + "</h1>" + this.domain + "</th></tr>";
|
3347
|
+
|
3348
|
+
r += "<tr><td class='label'>Username</td><td>" + this.loginUsername() + "</td></tr>";
|
3349
|
+
r += "<tr><td class='label'>Password</td><td>" + showAndHideConcealedField(this.uuid+'-password', this.loginPassword(), true) + "</td></tr>";
|
3350
|
+
|
3351
|
+
r += this.spacerTR();
|
3352
|
+
if (devmode) {
|
3353
|
+
r += "<tr><td class='label'>UUID</td><td>" + this.uuid + "</td></tr>";
|
3354
|
+
}
|
3355
|
+
r += this.notesTR();
|
3356
|
+
r += this.spacerTR();
|
3357
|
+
r += this.loginFields();
|
3358
|
+
r += "</table>";
|
3359
|
+
return r;
|
3360
|
+
}
|
3361
|
+
|
3362
|
+
KeychainItem.prototype.findFieldWithDesignation = function(designation) {
|
3363
|
+
var count = this.decrypted_secure_contents.fields.length;
|
3364
|
+
for (var i = 0; i < count; ++i) {
|
3365
|
+
v = this.decrypted_secure_contents.fields[i];
|
3366
|
+
if (v.designation == designation) {
|
3367
|
+
return v.value;
|
3368
|
+
}
|
3369
|
+
}
|
3370
|
+
return null;
|
3371
|
+
}
|
3372
|
+
|
3373
|
+
KeychainItem.prototype.loginUsername = function() {
|
3374
|
+
var r = this.findFieldWithDesignation('username');
|
3375
|
+
return r ? r : "no field was designated as username";
|
3376
|
+
}
|
3377
|
+
|
3378
|
+
KeychainItem.prototype.loginPassword = function() {
|
3379
|
+
var r = this.findFieldWithDesignation('password');
|
3380
|
+
return r ? r : "no field was designated as password";
|
3381
|
+
}
|
3382
|
+
|
3383
|
+
KeychainItem.prototype.loginFields = function() {
|
3384
|
+
var entryValues = "";
|
3385
|
+
var count = this.decrypted_secure_contents.fields.length;
|
3386
|
+
for (var i = 0; i < count; ++i)
|
3387
|
+
{
|
3388
|
+
v = this.decrypted_secure_contents.fields[i];
|
3389
|
+
if (v.name == undefined || v.value == undefined) continue;
|
3390
|
+
entryValues += "<tr><td class='label'>" + v.name.escapeHTML() + "</td><td>";
|
3391
|
+
|
3392
|
+
if (v.type == 'P' || v.designation == 'password') {
|
3393
|
+
var id = "concealedField-" + this.uuid + "-" + i;
|
3394
|
+
entryValues += showAndHideConcealedField(id, v.value, true);
|
3395
|
+
}
|
3396
|
+
else {
|
3397
|
+
entryValues += v.value.escapeHTML();
|
3398
|
+
}
|
3399
|
+
entryValues += "</td></tr>";
|
3400
|
+
}
|
3401
|
+
return entryValues;
|
3402
|
+
}
|
3403
|
+
|
3404
|
+
KeychainItem.prototype.spacerTR = function() {
|
3405
|
+
return "<tr><td class='spacer'></td></tr>";
|
3406
|
+
}
|
3407
|
+
|
3408
|
+
KeychainItem.prototype.notesTR = function() {
|
3409
|
+
var secure = this.decrypted_secure_contents;
|
3410
|
+
if (!secure.notesPlain || secure.notesPlain.length == 0) return "";
|
3411
|
+
|
3412
|
+
return "<tr><td class='label'>Notes</td><td>" + convertNewLines(secure.notesPlain.escapeHTML()) + "</td></tr>";
|
3413
|
+
}
|
3414
|
+
|
3415
|
+
function encodeToHex(str){
|
3416
|
+
var r="";
|
3417
|
+
var e=str.length;
|
3418
|
+
var c=0;
|
3419
|
+
var h;
|
3420
|
+
while(c<e){
|
3421
|
+
h=str.charCodeAt(c++).toString(16);
|
3422
|
+
while(h.length<2) h="0"+h;
|
3423
|
+
r+=h;
|
3424
|
+
}
|
3425
|
+
return r.toUpperCase();
|
3426
|
+
}
|
3427
|
+
</script>
|
3428
|
+
|
3429
|
+
<script type="text/javascript">
|
3430
|
+
var selectedSection = "webforms";
|
3431
|
+
var selectedEntry = null;
|
3432
|
+
var selectedFolder = "";
|
3433
|
+
var total_items = 0;
|
3434
|
+
var current_sort_criteria = "Name";
|
3435
|
+
var current_sort_ascending = true;
|
3436
|
+
var entries = [];
|
3437
|
+
var currentEntry = null;
|
3438
|
+
var concealedFieldCount = 0;
|
3439
|
+
var copyableEntries = {};
|
3440
|
+
var lastSearchString = null;
|
3441
|
+
|
3442
|
+
function profileContentsDidFinishLoading(json) {
|
3443
|
+
if (!json || json == "") {
|
3444
|
+
var file = dataFolder + "/contents.js";
|
3445
|
+
showFatalMessage("Problem loading 1Password data file", "<p>A <a href='" + file + "'>key data file</a> could not be loaded and 1PasswordAnywhere cannot continue without it.</p><p>Please see <a href='http://help.agilebits.com/1Password3/1passwordanywhere_troubleshooting.html'>this help guide</a> for troubleshooting tips.</p>");
|
3446
|
+
}
|
3447
|
+
var allItems = null;
|
3448
|
+
|
3449
|
+
try {
|
3450
|
+
allItems = eval(json);
|
3451
|
+
}
|
3452
|
+
catch(exc) {
|
3453
|
+
var error_desc = exc.name + " occurred when parsing contents.js on line #" + exc.line + ":" + exc.message;
|
3454
|
+
showFatalMessageWithEmailSupportLink("1PasswordAnywhere experienced an error", error_desc);
|
3455
|
+
}
|
3456
|
+
|
3457
|
+
keychain.setContents(allItems);
|
3458
|
+
|
3459
|
+
renderSectionList();
|
3460
|
+
selectSection(TYPE_WEBFORMS);
|
3461
|
+
|
3462
|
+
$("#search").val(""); // Sometimes reload does not clear the search criteria
|
3463
|
+
lastSearchString = "";
|
3464
|
+
keychain.rescheduleAutoLogout();
|
3465
|
+
}
|
3466
|
+
|
3467
|
+
|
3468
|
+
var logins_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY0RUI5RTU3RDU0MTFERkFEOTdDRUMzQ0I1QThDM0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY0RUI5RTY3RDU0MTFERkFEOTdDRUMzQ0I1QThDM0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjRFQjlFMzdENTQxMURGQUQ5N0NFQzNDQjVBOEMzRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjRFQjlFNDdENTQxMURGQUQ5N0NFQzNDQjVBOEMzRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhYo1MgAAAQ1SURBVHjajJRLbFRlFMd/d+bO3E7n3Q6dtkAJpdUCQUARebnQiBtITIg2XbjwEY0L1+pCXcCClY+dS3aSYAxKgoayICpvgSLaDW0ptEM70+k87rx7H3M9d1qEaIjc5CQ39/u+3znn+//PhSd7vCvxv4/y2JWXv9nGuq6Dr6yP7+3vbFuDA39lqvMX7xUvkKmc5szb154MuO1oD0N9Rw482zfy5r6B4Nb1MeIhX2sppy9xbbrIsV8n67+Mz3+HXv6M0+/NPB44dHjThoM7Try+c3DznoEoXTENRVHQVAWPV8E0HWqGTVrAx6/c5+Slidv4fCMcOzT2X+D7p1dv742OfnBgy6ZVfgsMg+cG4vg9Ckt2k1TRpLpko9ctilWDjN7g1K00qqJO3syWXq1/uX/axXge8AZ7Ykde2j20KRHxkewIUjIcbqfKdEf8BH0e0mWLdMUSqMVCyeDeYoU9/R28sL1/oDccPOrhsId/lHv3x20b+5Nfb+yLqoVcCce0mJcKIgFfq8XfZ2rMlg3ifi87+qMEND+qT6WnO07VdsiW6kOza0NnufFtSm0Bo6HXwtFIW7lhk9A0/JF28nNlTo4vEhRoSMLvOOxaE6bR9OALaCSTKindwD0TisVUgtlDQrqkrrhsX9PjoSJ3pHm9jI7NMZOvkrWadAUd7FyD4c0Jah6VQtkmV7PICShbM9HlCgxJhl/d7WqitnB373ePysvO7kgLlK7UIdROuF3jjogQl7XpwhKmWqFuywG/Rl6+FwSsC7TUEBFt4grDHjHEME4+r9AZ52qlKkclW3sAmra0Y7QaeDrSRiAY4Pj5ac7PFRl+Zi2JZJzFiimVWmSMpux3T2YV1eGEjbMrTUHfTCwkmWSlJhXafvBJOZbN6v4Elt/H81vWsbq3g6biZa7YICuwyzMLUpzbaFOHc/aybZr2eRqNVnGRDevAFFBVoG7r8gRjUe5k68yL0obXR0Es5QpyYWIO+/qfch8pScxlt71lUQzlFOXKJ3R3aaVAEHqSMCU+9cnIGSa37mblSjXMpoIlSYuSMCONkM2BKoiFtKiU/f6hD2dH0/Ttf4ola6srBh0ig9iHQrEFzMxmmJ1KMSfVZdsC5AVmliownxGgJNVLP3Dmw6/cCh9MiiNtfkqtOkFKNsm4kVwlvbYvV+mKFJTKE3FsMbRHk28VAUZicjXVu+RKH+Pq/OjocfGjGRrGGyxkJlwhxJCuP8Q+YQEKOBwmJNWvCrXRbCXshrI+TTo1wh+fTz7643z4zJ7NUO38mXBsLeHIALbIGXaBUl00QrI3gS6jZo5PWVy/8RNjV99h/Iubj/t9uXDpgYREkq1v7SXe9yLxnkGCYSE6okijSmpqkskrv5E+d0H2Lbi/SYm8hPlvoPsuPSKX1xoObSXEnKgre2QkcN3fcL0hobtaS9SXJwL+FmAAySfOymJyzIkAAAAASUVORK5CYII%3D";
|
3469
|
+
|
3470
|
+
var accounts_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArJJREFUeNqsVN9rUnEUP07daps/mJCaWntZQSiFIsZS7Ic4Ah+2YLn3oH+gh94i6CF66GFQT71UD+EKgspBM3oqAnNCaTlmG67uhjlUUmfkr2vnfMmbd9eFDx34XM8538/38z3n+r1H1m634X+ajARlMhkEg0ETxrcRboSpz/1biLeIKwsLC1tMix4odhST7wKBwJjL5QKNRtOXWqlUgmg0CuFwuIihB0VTA7RQr9dvTk9Pj9ntdshkMpDP54Hn+X+COMSlPTMzM2OkQVoKemCVPofDAfF4nJ1cLBbB7XYz/+s3DkJPnjJ/bvYCHD5kYX4ikRC4TqcTQqGQj2JWIZ6oUiqVYDAYIJvNst9mswn3Hz4Cj/sU3J2fZyCfcrTWzZXL5aQxLFTYarUYyWw2M5AVCkW4dv0GGCZcoFAOsVyzUWO581M+EZf2koZQYUewG89eLIJ+/BgMDg3DiErLQD7laG03vyOo6JzQaDRE/yC1otIeAIPlCAwoGA145H3n0mxtN580JC132+RJJ3zMVGB1IyfkSNjrPQ1ezyTdDBFf1HKnwm7QhkuzZ2Bi3ChsIv/y3DmoVqsSvqjCXi2zRUUbqj+2hZh8vlmTdNOz5V6Cq+l1WNvIwjC+SzLyv6ytg9l0UMKVtNwLS69ew8Dg/r/vEP3niy/35EsqrFQqeP8KoNPpQKVSwaeVVRgxHhcEeeR9Xkn35IquDRJ20EZTqRRL5nI5oE/xwb07oFarRa2Vy2X2hXRzrVYrVfizW/D98vLyWaPRCMlkEmw2Gztxc3Nzz0mj1WoFbiwWg1qtFhXmIVYxpdfrH/v9fjVVRi30Y9Q2DZRIJFLGSi9i9UudAbuP5pnFYrmKQ+IExrp+BHFvAbv7wHHcLQzfYPxLmNhoSgTNptE/fj9Gd20HwZFPWr8FGAB4nuKFfCoviQAAAABJRU5ErkJggg%3D%3D";
|
3471
|
+
|
3472
|
+
var identities_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoFJREFUeNqslFlu01AUhk/stBk8xGpMa1CFAlJ5i5oqFY8UifAM7CCFFbCCqCuougKygqqsoX0AXkib2RCpAlo1btMYZ/Bsc68VTJvBEIlfurKS3PvlP+ee3yHXdQErFArBuAgynHmeyxVWBOGlqmogtdsHR0eHO7Ztlcb3+pwAYGr79ZvP2WyWa4pfQZIksEwTWq0WnJyUNpwx6G9OGGZodfV+gSRIbn//ACzL+uOaICCZXCpcStKraedmAh3XTX34+AmmlRYCgpt1jpj1A2pABh8eX1jRWDyDWzKPwwxFsxzuKy6RJEnfnW3bwDAMNwKe/qvDktztnEajUaAZBhiWBRYtBIJYnALTNORpsMCSNU3boygKaJr2QBhI0QzQVByUnlKcG6goclHTVJlGUIZhkVPkkKa8si/Oz/bmvhQkWRSbO7FYHARhBe7dFQA7LpeP385yFzg2WN3rDlerVcAu297g9/t9uLqUuKAz40nBm/FIZCKR+PqzXC6v67qXEsdxvH2macEXsVF0XfsYX95oyRPRW0ry+a0nW+/WHq15o0KgP1B6PahUatCVZbBHaQmHw/DwQQoSiQQMh0MoV6tQr5a3Ead4q4fpdHo3s7EOLEN7N7mwEIZO5xpMBLqZchzDb99/QH8wAJ7n4fHmJiwvC7sTPcS5JUYvCMMw4Oz8wgM6tuMn5MZIQb3egGZT9FqlGwY3AVQ1HQZDFXT0bEtXXpkYbFmm37+JvE/53gf2ego0GqLXdAzBMA3B8XPcYZB8oCS1Szx/x3shWCivJgLhG8bZ/Zt+ynJp2tjgPuRpJvFicTHy1HHsQGeoXFlT1ZJp6u/RRzRGrnwL+L/0S4ABAO24Wb68BmVxAAAAAElFTkSuQmCC";
|
3473
|
+
|
3474
|
+
var secure_notes_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjhJREFUeNqslN1qE0EUx/8zu5tEa2uNFzWJSbQppQgqpdeCb+IL+AL6BN74ToIXXhWkglBoaI1ISorNJptkN7vz4ZndjdkmzULEgWG+zvlx/jPnDNNa4382ezZhjL36VwgF9XkJSI1r/fPTujDG6q9vjTCZ+zR8WwP3fJFxY2EBY0BNcHx8jkplGzs793F62oXvh0uoo6OnpGmc+t0OdAAPkCO0ntzDxgYnywkatRKmUxtKadg2N3edWJMduJf6rZQ8JEPqyoc30JAygWxvFmFZHKNRACFlCowINcyV7GjtgokRzs8u4w2VZlS9toXygzvoXPyGH4h47/DFI7CimxshHQyAyMXLg2KaDhSIVHCcEEyH2G9atMeTs7APZuzzgFqTkRji4kd8Nyg4Fh5X72LoRrjs+SSbYXaFu81Nypl8YEEpFzwaQoXjVDJ5RwJcUldTiChTVfE8llxYGaFSfYAi3K3OHaNggBIlRqs2jy5uwjxIP1+yiRDCw8n3ybys0rFYYGg1Suj2IrieiA/KKOVLlpKAkYdKWcDijO4sU5cUnq0EztoSX74G4HT+LPoVV9/KPNSaZIgJqEAo34CJrzI1S11yBD7Hu49tys+ZK0OOZJPYyYP0rhS6V3OgkbxX59DC/gujqnljbnNlhFKa0gviRbWc9MX2cEvPYG9TWDdHMj3GobMEub7WcS2bqjtoKgN7nz6xgXVufGezH5uMPqzxb51kYO3sr58FtmhorAHtkG97cfOPAAMAWjLzjVHmAXoAAAAASUVORK5CYII%3D";
|
3475
|
+
|
3476
|
+
var software_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAotJREFUeNpi/P//PwM1ARMhBYyMjAxPGxtdgXgCiI0NowCQC/FhEOBnY9M5b27++UlDQyw2S1HU4zIE3SedbGynrwUEfAQaKorPQCaYt7B54UwQAw8QxwIx+3xW1invdu7k/P7p01Syw/DPP4ZeILXo33+GqTe+fl2z7ffv09937w4FutKGZAOBrmJ+/YPBHMRecJPhLZD6uoyNrefl5ctfP92/PwtoKDNyxMF9hyvZAIUPHDrEcNhPjWEbkKsNFWZPY2fffFZC4v/D2tosrKniza2DGCYysR1gEJSvZ7h0mJnh3es2Bl1dC7jcuUvXGb5mVDGo2doxiDXnMDCysaLoZXl7+yCacX8ZpK0nMPz6zsCwcaUYg4vVOwZkNfKcDAxrHXUYpLbuYmC112T4r8qJPwz55I4ycPN/ZDi2jYVBWNCaQViAG8NbVt6mDGcl+Bmun73E8I+RBbeBjMyfGITVDjC8e8HAsGeHHIONsSbW8JUU5Wf4HW7HcF/HlOEVoxJqGALxTBhn3z4GF0dHBqVZbQw/smoZ9vz9x/AMX7Ly9fX1cHR0lJ4xY8aqW7dufYanchDYOofB8sMrhv/3LjH8tzNimE1MPufl5fXR01LdumNB3Wx4pMAYe/Zxqdy+/u39m88Mbw+dY+gECv1Dz17I6Q4EPn/+vMPBwFiQ8e2lRZe3T7iu61nQxwhS2JjqKASkH5y5/vTg6Rt3dr56xzAFW35FNxAKFHriZI4bWTiJiCoa6YC99fHrT9Mfv/4wfPjyax3QsLmEvIpWiDw4fPvf5pe3j7G8e/OiGiwR5KAZIsDL0Q+UlCZkCI5SSdPTkG8nDydrAkxCAYi5iS0jcRRzhqA4YaR2FQAQYACebWDqB8uk6gAAAABJRU5ErkJggg%3D%3D";
|
3477
|
+
|
3478
|
+
var wallet_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoFJREFUeNqclM9rE0EUx7+7m6Uhpmnrr9YkrWBCU63aSi3RBnr3ooIoEvTQFo/toYjQW8GTV2/iSSo9+EeIB1EJSsBgaDVBYk2ztrtJmmy62eyP+DYmkQZtmzz4MjNv5n32zZuZZarVKvYzhmFYasKkMdIzWp/YN8AC/k9kFmxu/Ob426n5qW/Uf0ry7xfDHpDZTPB2cCZ4Kxhyn3P7A7OBa+RboDk/aZDU3xrHHgSbvjMdsnxKUbH8fnaYvUvDVwjgObVL5OP3xLbWsAGbuDExN3Jl5KrwXcBGYgM6r8M16oJjzAEjYFQlu8QkFhNv8BoLxIg14m0tsB5qHrs8ruuyLJ9OZVIYCA5g+MEwnP1OFPQCJF2CoAkMNFoZwhABz1IvtifDcDgMXdcnbTZbBJ3ZZdKn1dXVPxmqqjrJ83zEc6SEi+cv4IR7CA5nDzgbh6phwjANaKqCXbkAXdOgaRUYuoa89AtFtYpoMv+xAa0BOY6LHOdEOHk7smIGuqGhy+6wLhVMnWA6ASxQpYxKRSW41ZZprNIHVJzkGQhqrwWtHYC1XThYFZ2ag6vUGM1DMQyjLcCPzS3E1lMolUowqRymaWJb6bIOdbltYL4gQ8gqePhoCW6PF/JOFjt5EdvCBmYXn7SfoZQrwjvohaEWsf75A+RCDnIxjxKp+VI0TTs08GivE+l0GqKY/ed8LUNBEIBTfYcC9vV041i3hBcrL6EoSrOGXzd3/wItRzt2ZnAA3v7e5rWxdliObCEejy+zjRoK+c6vTSZXbp4DW89w/v1aDj9FuW3YpqjgXVyqMZpv2efzXaL+KGmlwyTvk74kk8lo428TrWd7r0PgWp2B3wIMABWfXvvkzOF0AAAAAElFTkSuQmCC";
|
3479
|
+
|
3480
|
+
var passwords_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApFJREFUeNqslc1OGlEUx/9DxrAgoBFFSNwQWFSUokhotRaTwgOQsDF0DwsegE2XdGGfoETdNixswgO0aUxsTF0ImNDEFWyIgUr4ijLD1/SeixAoLNR6kpM7M/ee/z2/c8/MCIqi4DlNCIVCBjb6mO8+MvaE+bd4PF4afSi22+13fr8/urGx8fIxaqlU6nUymeyxy8SYoCzLu/Pz8/br62sw8QeJzczMgGIodkKw2WyqAEVotWRcXKRwdHQEs9mM1VUbtre3MTs7OyFIa6lc3W53NxwOB0fRVUwQnU6H+9XVFXw+H2q1Go6PvyIW+zicm+ZOp3MlEAhEqWzDDO/u7iC3WvxGpVLBbrejWCyiUCigXC4jFApPZLi1tYXg+yAajQaWl5fH0MXb21vIcl+w2+uhzha12e491k60gdVqRb1eR6lUgsFgQKVSgcfj4TGS1ASVaxT9XlDuC3a7+Hl6inw+D4WJLxmN+LS/D6V/qnA4HLwsc3NzvCySJPMYQl9fX48mEokeR27dC7o2N3FwcACLxYK9vT243W5kMhkIgoAFvR6/s1lotVr8KfVbL51Oc5pRdDrlHrtQWJCgZ0GHh4egrKvVKnK53LCVqK5kkiTxkd6whcVFNt8ZolPHkOBJKpXeYYexdnNTBvlDjDZ7w9qKNhygU8dQY/+Ixz+r1Gr1B6/Xu0KLaSLL8HQ6HT8II6slZUbooijylnG5XLw0HSY4QKfy0atHLF9Yod9GIpEXhK7RaGAymbgI4dMpUwbTrMVaboBOa8XBBKGfnZ3tuN2v1mq1OsgfYpeXl0P0MUFCj8ViT0K32WwcnSMPBP8XncUr1DHivxNPRT8//5WlWGHKp2mJDd4nfnC/C8/9C/grwACwjsxQZSZRuQAAAABJRU5ErkJggg%3D%3D";
|
3481
|
+
|
3482
|
+
var trash_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABElJREFUeNqsVGtMm2UUfr7eaPmAUigbC1AQBg0sETJ1jAwhEwxzY5jgJQs6/OGMZMjgx/zHn8WM32SQGf95C+xiok7n9kMyopTKLgVqyGZm7y3dei+9tx/9PO1glrj98/1y8uWc7/2e9znnPO9heJ4HwzDYXmNjo7sikUhdMpluAvgKnufOgRGDdizT3ocMk34TEH4okQiNLMsaJicnXdv/ZrG2AcfHx9udj5wfxONcN7k1YrEYGRNJJKjcUwGegrFYBK7Hj5FMJpEgQxpmlpX+KpNJv5qamlrIYIkyyLOXLvN1dbVYXl6B0WiE2+NFPBpFIpGCKC8FfzCQPTQWiyFKcW5zE/lSKYqKCmtqa2tPHTjwyim1ujEDxWQZHn2jzzfw3glFe0c7SosVSHFppHkO4VAYPNEQCARgZSwixFCSZZ4HgVCAQrYQoUgY13/+CdPTF71LS1pllmE8EdHrV/WdQpEQhzs7Ub6nPFsTZWkporE48mXSJz49/kAQimL505qb9CY8ePAXHcr/maW4VcPjjY3q6YIihWp3WRmampoQ3NhAa2srOl5tp9QT2ZjZbIZOp0MwuIEIMTMaDVi6fRfBgN+8trY2Rlg/MjldPtnV/frXL9TUwGy14tOzZ8HmS3H9lxtwu93QLi6isEiO473HoFAo8NvvC/Q9P1vT2dmZgUwrMlgC/Lu+ETBMwmazYZdSiXg8jkOH2qFS1WDqwgV89PFplJQo0dPTg4aGBiqDDByXQiAQ4DJg2yC5gPD6fd5EIo6DbW2Qy+U4PXwG7w+cwIJGi5LiIux/aT8ufv4FtH8soZeYplIcXC6in7N2AKZSqfv19WoY/jbAYjZBra6Hz+/HjZs3qfObKCXmBawMxfJiaBY1aGs7SJlEjM8FFAmEtxxORyYNPCTQ0TMjqKysxPnPzpFkopibm8Pg4CBEpAaPx4c71BBVlWphB0auU15eUS8mzTU3N1O9FLh85Sql5CLzYt++RnR3deHK1e9IVrtxpOcIVlZ1MFgssucytFiMnEgswbpzHbfm53Gs9yhGPhnG6OgwHOtOLOuW8e47b+P20h3Y7RZEIzHYLebEcwFtNstiKBRCJBxGX18fnARyl0AKWBYbwSBk+bLs1Xyrvx8Gown37ulIUq7VZwJSrUQkIyvVKq0sU1JX5dQYK7TaRXz/wzW0tLyI+r17YbPbwQgYtFBZSL8JknCwqqqqgiCEOwBJoDISZtButdzn04Cquhrd3a9hZHiYuloEl9uDAA2Jzo4O8jNXj4HJZFijN0eafRLIBfT5fHEaV06HwzExM/PtqkajeZoGl+YpNS/S6XTW1+v1/MTE+TWPx/OlUCh0h8PhRxTezL3L2/9Ktg45TBtPVldX1w4NDbXK6IpZLTYkucSmfmVVOD8/f4km0LW8vDwNZRag/WGy9I4B+4xVSvYyWX9OjNuS2jhZaMvn/jOx/8/1jwADAGAcA5mh2ubaAAAAAElFTkSuQmCC";
|
3483
|
+
|
3484
|
+
function renderSectionList() {
|
3485
|
+
var h = "";
|
3486
|
+
h += renderSectionListItem(TYPE_WEBFORMS, "Logins", logins_png);
|
3487
|
+
h += renderSectionListItem(TYPE_ACCOUNT, "Accounts", accounts_png);
|
3488
|
+
h += renderSectionListItem(TYPE_IDENTITIES, "Identities", identities_png);
|
3489
|
+
h += renderSectionListItem(TYPE_NOTES, "Secure Notes", secure_notes_png);
|
3490
|
+
h += renderSectionListItem(TYPE_SOFTWARE_LICENSES, "Software", software_png);
|
3491
|
+
h += renderSectionListItem(TYPE_WALLET, "Wallet", wallet_png);
|
3492
|
+
h += renderSectionListItem(TYPE_PASSWORDS, "Passwords", passwords_png);
|
3493
|
+
h += renderSectionListItem(TYPE_TRASHED, "Trash", trash_png);
|
3494
|
+
$('#sourcesPane').html(h);
|
3495
|
+
}
|
3496
|
+
|
3497
|
+
function renderSectionListItem(name, displayName, img) {
|
3498
|
+
|
3499
|
+
|
3500
|
+
var r = "<li " + sectionOptions(name) + ">";
|
3501
|
+
r += "<img src='" + img + "' alt='' />" + displayName;
|
3502
|
+
r += sectionCount(name, displayName);
|
3503
|
+
r += "</li>";
|
3504
|
+
return r;
|
3505
|
+
}
|
3506
|
+
|
3507
|
+
function sectionOptions(name) {
|
3508
|
+
var opts = "id='" + name + "' onclick='selectSection(\"" + name + "\")'"
|
3509
|
+
|
3510
|
+
if (selectedSection == name) {
|
3511
|
+
opts += " class='selected' "
|
3512
|
+
}
|
3513
|
+
return opts;
|
3514
|
+
}
|
3515
|
+
|
3516
|
+
function sectionCount(name, display_name) {
|
3517
|
+
var result = " <span class='sectionCount'>(" + keychain.itemsOfType(name).length + ")</span>";
|
3518
|
+
return result;
|
3519
|
+
}
|
3520
|
+
|
3521
|
+
function showAndHideConcealedField(id, clearText, concealed) {
|
3522
|
+
var revealHide = concealed ? "Reveal" : "Hide";
|
3523
|
+
|
3524
|
+
// IMPL NOTE: Normally you need not escape HTML values in JS, but innerHTML assignment interprets the JS for some reason.
|
3525
|
+
// Note the use &apos instead of '. This is important as the interpreter gets confused when evaling innerHTML.
|
3526
|
+
var htmlValue = clearText.escapeHTML();
|
3527
|
+
var jsValue = htmlValue.replace(/\\/g, "\\\\");
|
3528
|
+
jsValue = jsValue.replace(/"/g, "\\\"").replace(/'/g, "'");
|
3529
|
+
|
3530
|
+
var r = "<table class='hideRevealButton' id='" + id + "'><tr><td><a class='copy'>";
|
3531
|
+
|
3532
|
+
var copyImageId = "copyImage-" + id;
|
3533
|
+
r += copyableHiddenElement(copyImageId);
|
3534
|
+
r += "</a></td>";
|
3535
|
+
|
3536
|
+
r += "<td><a class='revealButton' href='#' style='text-decoration:none' onclick='toggleVisibilityOfConcealedField(\"#" + copyImageId + "\", \"" + jsValue + "\", " + !concealed + ")'>" + revealHide + "</a></td>";
|
3537
|
+
|
3538
|
+
r += "</tr>";
|
3539
|
+
r += "</table>";
|
3540
|
+
|
3541
|
+
id = "#" + id;
|
3542
|
+
$(id).html(r);
|
3543
|
+
|
3544
|
+
copyableEntries[copyImageId] = clearText;
|
3545
|
+
|
3546
|
+
return r;
|
3547
|
+
}
|
3548
|
+
|
3549
|
+
// TODO: Do not bother adding elements when running from file:// b/c of stupid default Flash security preference
|
3550
|
+
function copyableHiddenElement(id) {
|
3551
|
+
return "<div style='position:relative'><div class='copy' id='" + id + "'>••••••••••</div></div>";
|
3552
|
+
}
|
3553
|
+
|
3554
|
+
function toggleVisibilityOfConcealedField(id, clearText) {
|
3555
|
+
if ($(id).text() == clearText) {
|
3556
|
+
$(id).html("••••••••••");
|
3557
|
+
}
|
3558
|
+
else {
|
3559
|
+
$(id).text(clearText);
|
3560
|
+
}
|
3561
|
+
}
|
3562
|
+
|
3563
|
+
function enableCopyableEntries() {
|
3564
|
+
for (copyable in copyableEntries) {
|
3565
|
+
var clip = new ZeroClipboard.Client();
|
3566
|
+
clip.setHandCursor( true );
|
3567
|
+
clip.setText(copyableEntries[copyable]);
|
3568
|
+
|
3569
|
+
var button = $(copyable);
|
3570
|
+
var container = button.parentNode;
|
3571
|
+
|
3572
|
+
clip.glue( button, container );
|
3573
|
+
}
|
3574
|
+
}
|
3575
|
+
|
3576
|
+
/*
|
3577
|
+
function showPassword(data)
|
3578
|
+
{
|
3579
|
+
if (data.notesPlain && data.notesPlain.length > 0) {
|
3580
|
+
|
3581
|
+
$('#entryNotesDecryptedValue').parent().css('display', "");
|
3582
|
+
}
|
3583
|
+
|
3584
|
+
var passwd = "<tr><td class='fieldName'>Password</td><td class='fieldValue'>" + data.password.escapeHTML() + "</td></tr>";
|
3585
|
+
$('#dynamicFields').html(passwd);
|
3586
|
+
}
|
3587
|
+
*/
|
3588
|
+
|
3589
|
+
function convertNewLines(txt) {
|
3590
|
+
return txt.replace(/\n\r/g, "\n").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n/g, "<br />");
|
3591
|
+
}
|
3592
|
+
|
3593
|
+
function sortCompareFunction(a, b) {
|
3594
|
+
if (current_sort_criteria == "Domain") {
|
3595
|
+
a = a.domain;
|
3596
|
+
b = b.domain;
|
3597
|
+
}
|
3598
|
+
else if (current_sort_criteria == "Modified") {
|
3599
|
+
a = a.updatedAtMs + "";
|
3600
|
+
b = b.updatedAtMs + "";
|
3601
|
+
}
|
3602
|
+
else {
|
3603
|
+
a = a.title;
|
3604
|
+
b = b.title;
|
3605
|
+
}
|
3606
|
+
|
3607
|
+
var result = 0;
|
3608
|
+
if ( a.toLowerCase() < b.toLowerCase() ) {
|
3609
|
+
result = -1;
|
3610
|
+
}
|
3611
|
+
else if ( a.toLowerCase() > b.toLowerCase() ) {
|
3612
|
+
result = 1;
|
3613
|
+
}
|
3614
|
+
|
3615
|
+
if (!current_sort_ascending) result = result * -1;
|
3616
|
+
|
3617
|
+
return result;
|
3618
|
+
}
|
3619
|
+
|
3620
|
+
function selectSection(section_id)
|
3621
|
+
{
|
3622
|
+
if (selectedFolder != "") {
|
3623
|
+
$("#" + selectedFolder).attr('class', '');
|
3624
|
+
}
|
3625
|
+
|
3626
|
+
keychain.rescheduleAutoLogout();
|
3627
|
+
|
3628
|
+
if (selectedSection != section_id)
|
3629
|
+
{
|
3630
|
+
selectedSection = section_id;
|
3631
|
+
renderSectionList();
|
3632
|
+
displayEntries({'select_first':true});
|
3633
|
+
}
|
3634
|
+
}
|
3635
|
+
|
3636
|
+
function selectEntry(entry_id)
|
3637
|
+
{
|
3638
|
+
keychain.rescheduleAutoLogout();
|
3639
|
+
selectedEntryId = entry_id;
|
3640
|
+
|
3641
|
+
// Deselect the currently highlighted entry
|
3642
|
+
$('#listPane .selected').removeClass('selected')
|
3643
|
+
|
3644
|
+
$('#entry_' + entry_id).addClass('selected');
|
3645
|
+
var file = fullKeychainFilePath(entry_id + ".1password");
|
3646
|
+
loadFile(file, entryDidFinishLoading);
|
3647
|
+
}
|
3648
|
+
|
3649
|
+
function entryDidFinishLoading(json) {
|
3650
|
+
if (!json || json == "") {
|
3651
|
+
alert("The data file for this entry could not be loaded.")
|
3652
|
+
return;
|
3653
|
+
}
|
3654
|
+
|
3655
|
+
var entry;
|
3656
|
+
try {
|
3657
|
+
var json = "(" + json + ")";
|
3658
|
+
entry = eval(json);
|
3659
|
+
}
|
3660
|
+
catch (e) {alert('Error evaluating data for this entry! Error: ' + e);}
|
3661
|
+
|
3662
|
+
selectedEntry = new KeychainItem(entry);
|
3663
|
+
showEntryDetails();
|
3664
|
+
}
|
3665
|
+
|
3666
|
+
function displayEntries(opts)
|
3667
|
+
{
|
3668
|
+
var select_first = false;
|
3669
|
+
if (opts) {
|
3670
|
+
select_first = opts['select_first']
|
3671
|
+
}
|
3672
|
+
|
3673
|
+
var all = keychain.itemsOfType(selectedSection);
|
3674
|
+
var entries = [];
|
3675
|
+
|
3676
|
+
var s = $("#search").val().toLowerCase();
|
3677
|
+
|
3678
|
+
for (var i=0; i<all.length; ++i) {
|
3679
|
+
var e = all[i];
|
3680
|
+
if (e.matches(s)) entries.push(e);
|
3681
|
+
}
|
3682
|
+
|
3683
|
+
entries.sort(sortCompareFunction);
|
3684
|
+
var i, len = entries.length;
|
3685
|
+
var displayCount = 0;
|
3686
|
+
var html = ""
|
3687
|
+
for (i = 0; i < len; ++i) {
|
3688
|
+
e = entries[i];
|
3689
|
+
|
3690
|
+
displayCount++;
|
3691
|
+
var title = e.title;
|
3692
|
+
var domain = e.domain;
|
3693
|
+
var date = e.updatedAt;
|
3694
|
+
var uuid = e.uuid;
|
3695
|
+
var clazz = "";
|
3696
|
+
|
3697
|
+
html += '<li id="entry_' + uuid + '" onclick="selectEntry(\''+uuid+'\')"><strong>'+title.escapeHTML()+'</strong><br/>'+domain+'</li>';
|
3698
|
+
}
|
3699
|
+
$('#listPane').html(html);
|
3700
|
+
|
3701
|
+
if (entries.length == 0) $('#detailsPane').html("");
|
3702
|
+
else if (select_first) selectEntry(entries[0].uuid);
|
3703
|
+
|
3704
|
+
keychain.rescheduleAutoLogout();
|
3705
|
+
}
|
3706
|
+
|
3707
|
+
function showEntryDetails() {
|
3708
|
+
keychain.rescheduleAutoLogout();
|
3709
|
+
$('#emptyDetailsPane').css("display", "none");
|
3710
|
+
$('#detailsPane').css("display", "");
|
3711
|
+
copyableEntries = {};
|
3712
|
+
|
3713
|
+
concealedFieldCount = 0;
|
3714
|
+
|
3715
|
+
var decryption_status;
|
3716
|
+
try { decryption_status = selectedEntry.decrypt() }
|
3717
|
+
catch (e) {alert("error " + e);}
|
3718
|
+
|
3719
|
+
if (decryption_status != ERROR_OK) {
|
3720
|
+
alert("An error occurred while processing item '" + selectedEntry.uuid + "'.\n\n" + decryption_status );
|
3721
|
+
return;
|
3722
|
+
}
|
3723
|
+
|
3724
|
+
$('#detailsPane').html("");
|
3725
|
+
$('#detailsPane').html(selectedEntry.asHTML());
|
3726
|
+
enableCopyableEntries();
|
3727
|
+
}
|
3728
|
+
|
3729
|
+
function clearEntryDetails() {
|
3730
|
+
$('#listPane').html("");
|
3731
|
+
$('#sourcesPane').html("");
|
3732
|
+
$('#detailsPane').html("");
|
3733
|
+
}
|
3734
|
+
|
3735
|
+
function searchEntries()
|
3736
|
+
{
|
3737
|
+
if (lastSearchString == $('#search').val()) return;
|
3738
|
+
|
3739
|
+
displayEntries({'select_first':true});
|
3740
|
+
lastSearchString = $('#search').val();
|
3741
|
+
}
|
3742
|
+
</script>
|
3743
|
+
|
3744
|
+
<script>
|
3745
|
+
$(document).ready(mainPageDidFinishLoading);
|
3746
|
+
</script>
|
3747
|
+
|
3748
|
+
</head>
|
3749
|
+
|
3750
|
+
<body>
|
3751
|
+
<div id="mainBody">
|
3752
|
+
<div id="messageBox_wrapper" style="display:none;">
|
3753
|
+
<div id="messageBox" style="display:none;">
|
3754
|
+
<div>
|
3755
|
+
<h1 id="messageBox_title"></h1>
|
3756
|
+
<p id="messageBox_message"></p>
|
3757
|
+
<a id="messageBox_help" href="#"></a>
|
3758
|
+
<span id="messageBox_dismiss">OK</span>
|
3759
|
+
</div>
|
3760
|
+
</div>
|
3761
|
+
</div>
|
3762
|
+
</div>
|
3763
|
+
|
3764
|
+
<div id="login-html" style="display:none">
|
3765
|
+
|
3766
|
+
<!--[if lte IE 9]><style type="text/css">
|
3767
|
+
div.unsupported_browser { position:fixed; z-index: 100; top:0; left:0; right:0; bottom:0; width: 100%; background-color: #C00; color: white;}
|
3768
|
+
div.unsupported_browser div {padding: 1em 4em;}
|
3769
|
+
div.unsupported_browser h3 { font-size:1.5em; margin-bottom:.5em;}
|
3770
|
+
div.unsupported_browser a { color: #CCC;}
|
3771
|
+
</style>
|
3772
|
+
<div class="unsupported_browser"><div><h3>Unsupported Browser</h3><p>Internet Explorer is currently not supported by 1PasswordAnywhere. We eventually want to support Internet Explorer, but until then, please use <a href="http://www.getfirefox.com">Firefox</a>, <a href="http://www.apple.com/safari">Safari</a>, or <a href="http://chrome.google.com">Chrome</a>.<![if lt IE 9]> Please note that when we do support Internet Explorer, it will most likely be the latest release only. Right now, the latest release is Internet Explorer 9.<![endif]><![if lte IE 8]>You are using Internet Explorer <![endif]><![if IE 6]>6<![endif]><![if IE 7]>7<![endif]><![if IE 8]>8<![endif]><![if lte IE 8]>, so you would need to upgrade your browser as well.<![endif]></p></div></div>
|
3773
|
+
<![endif]-->
|
3774
|
+
|
3775
|
+
<div id="wrapper">
|
3776
|
+
<img id="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAdXCAIAAACPB4a6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM5JREFUeNrsWNEOgCAIVD/e37bZk2Nqhlig9+Ai2yC524GEGGNIKQXvfXDO3XZ+5ndq1/ayXa7SV22ffi/9teI/Lfr/nPitM3Piz+RvJAbdn82fVfyof4kzn4qfJP97ds+/Bvx20a8/8seJf6J+1eJZ4f8K/LTV71H9ksBvJH8n4jfD/9ZZZuq3NH6W67fW+gP+v8MP/ZdN/CTvH1z8oF/73B+t9l8S9Rv6Bf5r1a8d518r+I/5F/RLO/8x/8L8y2L/pWH+K3n/+BC/S4ABAFMgv7GXrGWPAAAAAElFTkSuQmCC" alt="" />
|
3777
|
+
<img id="top" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYmBgMAYIMAAAQgA2ye6eBQAAAABJRU5ErkJggg%3D%3D" alt="" />
|
3778
|
+
<img id="bottom" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYmBgMAYIMAAAQgA2ye6eBQAAAABJRU5ErkJggg%3D%3D" alt="" />
|
3779
|
+
<img id="left" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAdXCAIAAACPB4a6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANpJREFUeNrsWEkOgCAMBHwu/z9jMDExBKk2pQv0YKxLwHbGDsyRc06llBRjTCGEK67net3GvXs1lj7a77/j3jvt82cO2Pw46jfK6x7vbX5sLf/Uj2p+DfzZET9K/o/i0fgaOCPB/xn9S4L/mPlX7B8Qfr18NeD35ftn4Cet39Lcgeq3I34U/5+V9as1/daqP1L816o/EH5U6y9O/FZcf0n2FSx+3r949487+SfY/aOG/b/7J+6fcOmPRv8EynE2/3f0v1x/7NbP/Xtb+r2i/0Xln1jw7xnxOwUYAMcxzHw1xGeqAAAAAElFTkSuQmCC" alt="" />
|
3780
|
+
<img id="right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAdXCAIAAACPB4a6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANpJREFUeNrsWEkOgCAMBHwu/z9jMDExBKk2pQv0YKxLwHbGDsyRc06llBRjTCGEK67net3GvXs1lj7a77/j3jvt82cO2Pw46jfK6x7vbX5sLf/Uj2p+DfzZET9K/o/i0fgaOCPB/xn9S4L/mPlX7B8Qfr18NeD35ftn4Cet39Lcgeq3I34U/5+V9as1/daqP1L816o/EH5U6y9O/FZcf0n2FSx+3r949487+SfY/aOG/b/7J+6fcOmPRv8EynE2/3f0v1x/7NbP/Xtb+r2i/0Xln1jw7xnxOwUYAMcxzHw1xGeqAAAAAElFTkSuQmCC" alt="" />
|
3781
|
+
<img id="doors" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAdXCAIAAAA8T66gAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB+xJREFUeNrs3T1P5FgQhWGzmoiIlN/IDyclImVXMxJq2d2axd3369TjqBN45VOnbpXt8vXT29vb9sPj4+Pj8/Pz/f39v9+vr6/Pz88vLy8//Se/vr6+tp8f33/158eJf/Lr6enpBPj7r/78OPFP/tkGHcOkHnfGo2JM6nypmYu58qQG7ufq087a+asHeJdC5xKSubg6z9XymKubxXipM17bXGKcv2RqBICBgc8vmSfWna/fx+XvTrebnn4fl7/T71eTWh5z9Vyulsdc3SzGBaUul8eklk7AwMCZjcDVtazHWn119SZ1VD1+SIxJnS81czFXntTAwMDAXbvMy9sPA+7efo8ouHsLPJmrF7yXuWo6iXG3GNeTGhgYGBi4Q5E4FoxOZfFYIsUYuLir5TFXN4txvVkfMc6PsXkuYGBgYGBgYGBgYGBgYGBgYGDgFcEehuRL7X41qfOkZi7mypMaGBgYeECX6X0nYK5ev+fyvpMYkxoYGBgYuGc9vlo2epTFq4VSjIG5Wh5zdbMY2786P49JLZ2AgYEzGwHzXKQmNamLSm2ei9Q6EOZiLmBgYODk6nTibx7y5fZh36qvJ/VSZ/yQGJM6X2rmYq48qYH7ufqcNXbO6jcHssslcyDAXC2PubpljFeb9VnYXGKcv2RqBICBgbsWCZMvpJZOwEVdLY+5ulmMzXPl57HqBAwMDBzbCNyqGc3L4q0qSeqc1uf+GJM6X2rmYq48qV0fMxdzAQMDA9+1Vl+uz5VmfS6nfGrMc4kxqYGBgYGBR4KP18edwMc7AmIMzNXOmKtni/GwM65nLjHOXzI1AsDAwL8Pw/ukzpMamKubudr+1dbqvBh730mMgYGBgYEfUCTu/HL7sG/V15N6wdbnzhiTOl9q5mKuPKmBp67HV+3WI52uJpgYA3M1c3F1M1fX+1a9GOfHuJ7UwMDANRsBQ0aklk7ARV0tj7m6WYzNc+XnMamlEzAwcCbYy+2kJjWpST3/GQ+LMVfbwEAeizEwMDDwfYe9jf9/ZbR/tRiTurzUzMVceVIDT12PzYEwF1dzNXARV9uDTYzzYmyeCxgYuEwjcGsha75W31q6SU1qYK7u4Gp5zNXNYux9p/w8Vp2AgYGBMxuBbelxDFKTupnURm7yXc1cpNaBAAMDAwMDzwn2jrl3zMWY1KR2xsoiMPDPDm+GMBdXr+9qeczVzWJsnis/j0ktnYCBgTMbge3ihsuAcYzLHzWGjEhNalLPIjVzKYvNYuz6OD+PtbfAwMDAmY3ArjD0frl9dzuT1FGtz0NiTOp8qZmLufKkBp69HpsDYS6u5mrgCq62f7UY58XYPBcwMDAwMDAwMDAwMDAwMDAwMPCK4PN39r6fm/d+/PM9KVDmfjWpSU3qWaRmrnxz6UD6xbhcHjMXMDAwcHIHciwYncrisUSSOq31uTPGpM6XmrmYK09q4Knr8VW79UinqwkmxsBcLY+5ulmMV9sma2FziXH+kqkRAAYG7lokDCeQWjoBF3W1PObqZjE2z5Wfx6oTMDAwcCa43ufESU1qUpN6vTMeFmNS60CAgYH7Hr4+yFzA0smXYhc4Y5+2JHXcAuK7qcDANVsfr3ozF1fP5Wp5zNXNYmyeKz+PSS2dgIGBYxuBbd3PiZOa1KQm9WmpmUtZbBZj18f5eay9BQYGBo5tBDwMWUhq96tJnSc1czFXntTAwMDAwMDAwMDAwMDAwMA2YyV1otTAXN3M1fKYq5vF2DxXfh6TWjoBAwMnNwLHVazTWn1ct0lNalKTuo/U5rlIrQMBBgYGBgZ2ffz3nqRHz3W1CyN1VF/9kBiTOl9q5mKuPKmBp67HbqIyF1fP5Wp5zNXNYlzvmYQY58fYcydgYOAFG4HT1/+774f1AB+3rSQ1qYG5uqer5TFXN4sxqfPzWHUCBgYGXqA6lfuceD2pV5sD8cl4Ujtj5qooNTAwMHDXLtN0E3Nx9fo9l3kuMSY1MDAwMPCQerz5jjlzcfU8rpbHXN0sxvavzs9jUksnYGDgzEZgM89FaukEXNPV8jjfXBaQqS/aNsOCzAUMDAw8HXhXEvq9FLsrggVebh8m9bAzHhZjUudLzVzMpREABgYOBdu/Ov+MubpbjL3vJMZ5Mfa+EzAwMDDwQ4vEZZ0YMAdy+axcXw3M1fKYq1vG2DxXfh6TWjoBAwNnNgLHJ+ZdX24/rtukJjWpSd1H6mFnvOA+AqQGZi7mAgYGBq5yfWxYcCGpzXOROk9q5mKuPKmB+7n69F+eexr6APC557/MxdXBrpbHXN0sxgue8armEuP8JVMjAAwMfH7lcr+a1HFSA3N1M1fLY65uFmPzXPl5rDoBAwMDawQ0e4XrsdaH1K6PmYvUwMDAwMDAwN2unW71Bbk9160WTIzFuLLUwMDAwMBNi8Rm31vm4uqpXC2PubpZjOvtbSzG+TG2fzUwMHAN8PGJeSfwcUaA1KQG5urZXT3sjIfF2FqdH+N65hJjYGBg4CJgX8LJl9o8F6nzpGYu5sqTGnjqeryZA2EuruZq4BquNs8lxnkxNs8FDAxcoxFwv5rU0gm4qKvlMVc3i7H9q/PzmNTSCRgYOLYRsH81qUm9futj/2qbKpNaI8BczAUMDAw8ZZE492e7AZQCZ7yb9RFjMSZ1SamZSz0GBj6/ZJoDYS6u5mrm4ur5zth8tRi3irF5LmBg4DKNgCEjUk8s9b8CDAB1fQOaVD7Z1wAAAABJRU5ErkJggg%3D%3D" alt="" />
|
3782
|
+
|
3783
|
+
<form id="login" name="login" method="post" action="" onsubmit="verifyPassword($('#masterPassword').val()); return false;">
|
3784
|
+
|
3785
|
+
<label for="masterPassword" id="passwordLabel"></label>
|
3786
|
+
<input id="masterPassword" type="password" name="masterPassword" value="" tabindex="1" />
|
3787
|
+
|
3788
|
+
<button id="unlock" type="submit" tabindex="2"></button>
|
3789
|
+
|
3790
|
+
<!--Had to make the keyhole background a form element because it's impossible to make form spacing the same on all browsers (couldn't make things line up together)-->
|
3791
|
+
<button id="keyhole" type="button" name="keyhole" value="" tabindex="-1"></button>
|
3792
|
+
|
3793
|
+
</form>
|
3794
|
+
|
3795
|
+
<div id="passwordError" style="display:none;">
|
3796
|
+
<h3>Password Hint:</h3>
|
3797
|
+
<p id="masterPasswordHint"></p>
|
3798
|
+
</div>
|
3799
|
+
|
3800
|
+
<img id="rivetTL" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUJJREFUeNpi/P//PwMtABMDjcCowbQ3mIWQAkZGRiEgJQfEokD8G4hfAfENYGr6h1cfvuQGNNQUSKlgkfoExPuBer+R7GKgocIgQ1lYWJhqa2vdNTU1LX79+vV1x44dW5YsWXINKGcJxHtJNpiTk1MeRJeWlnoYGBjEgNjs7OwMQUFBai9evKg/evQoAxcXl8i3b9/ekGQwUBMoTBkkJCQsP378iCJlYmJieP78+afQcCfNYB4enl8g+u3bt19///6NIvf+/fsvQHkQ8xfJQQF0MSj2JS5cuLBeW1tbARjWfCBxoNcvA117EijPAE0hpKcKoJc9gZSAuLi4JBDoA13+5c6dO6d/AgFQ/MGZM2eOk2Wwra0tB5CyAmJxNKn7hw8fPkF2OoYBJycnIWhEgVz6et++fV8JZqzR8njUYAwAEGAAJYt4HfLkZYsAAAAASUVORK5CYII%3D" alt="" />
|
3801
|
+
<img id="rivetTR" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUJJREFUeNpi/P//PwMtABMDjcCowbQ3mIWQAkZGRiEgJQfEokD8G4hfAfENYGr6h1cfvuQGNNQUSKlgkfoExPuBer+R7GKgocIgQ1lYWJhqa2vdNTU1LX79+vV1x44dW5YsWXINKGcJxHtJNpiTk1MeRJeWlnoYGBjEgNjs7OwMQUFBai9evKg/evQoAxcXl8i3b9/ekGQwUBMoTBkkJCQsP378iCJlYmJieP78+afQcCfNYB4enl8g+u3bt19///6NIvf+/fsvQHkQ8xfJQQF0MSj2JS5cuLBeW1tbARjWfCBxoNcvA117EijPAE0hpKcKoJc9gZSAuLi4JBDoA13+5c6dO6d/AgFQ/MGZM2eOk2Wwra0tB5CyAmJxNKn7hw8fPkF2OoYBJycnIWhEgVz6et++fV8JZqzR8njUYAwAEGAAJYt4HfLkZYsAAAAASUVORK5CYII%3D" alt="" />
|
3802
|
+
<img id="rivetBL" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUJJREFUeNpi/P//PwMtABMDjcCowbQ3mIWQAkZGRiEgJQfEokD8G4hfAfENYGr6h1cfvuQGNNQUSKlgkfoExPuBer+R7GKgocIgQ1lYWJhqa2vdNTU1LX79+vV1x44dW5YsWXINKGcJxHtJNpiTk1MeRJeWlnoYGBjEgNjs7OwMQUFBai9evKg/evQoAxcXl8i3b9/ekGQwUBMoTBkkJCQsP378iCJlYmJieP78+afQcCfNYB4enl8g+u3bt19///6NIvf+/fsvQHkQ8xfJQQF0MSj2JS5cuLBeW1tbARjWfCBxoNcvA117EijPAE0hpKcKoJc9gZSAuLi4JBDoA13+5c6dO6d/AgFQ/MGZM2eOk2Wwra0tB5CyAmJxNKn7hw8fPkF2OoYBJycnIWhEgVz6et++fV8JZqzR8njUYAwAEGAAJYt4HfLkZYsAAAAASUVORK5CYII%3D" alt="" />
|
3803
|
+
<img id="rivetsDoorsTop" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAWCAYAAAC7ZX7KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXtJREFUeNpi/P//P8NQAkwMQwyMOnjUwUPdwSyEFDAyMgoBKTkgFgXi30D8CohvAEuXf5RYTK65jPiKNaChpkBKBYvUJyDeD9T7jUzHkm0uCx5DhUGGsrCwMNXW1rprampa/Pr16+uOHTu2LFmy5BpQzhKI95LhWIrMxelgTk5OeRBdWlrqYWBgEANis7OzMwQFBam9ePGi/ujRowxcXFwi3759e0OKgyk1F6eDgZpAaYtBQkLC8uPHjyhSJiYmhufPn38KTX8kOZhSc3E6mIeH5xeIfvv27dffv3+jyL1///4LUB7E/EVqkqDUXHwhDMq1EhcuXFivra2tAExzfCBxYFRdBobCSaA8AzRnM5AYwhSZi7eUAEaRJ5ASEBcXlwQCfWCIfLlz587pn0AAFH9w5syZ4+SUEpSYi9fBtra2HEDKCojF0aTuHz58+AS5ZTAl5jIS07x0cnISgmYEUAi83rdv31dq1FrkmMs42h4edfCog0cdjBcABBgAQ8XeGZejfMAAAAAASUVORK5CYII%3D" alt="" />
|
3804
|
+
<img id="rivetsDoorsBottom" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAWCAYAAAC7ZX7KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXtJREFUeNpi/P//P8NQAkwMQwyMOnjUwUPdwSyEFDAyMgoBKTkgFgXi30D8CohvAEuXf5RYTK65jPiKNaChpkBKBYvUJyDeD9T7jUzHkm0uCx5DhUGGsrCwMNXW1rprampa/Pr16+uOHTu2LFmy5BpQzhKI95LhWIrMxelgTk5OeRBdWlrqYWBgEANis7OzMwQFBam9ePGi/ujRowxcXFwi3759e0OKgyk1F6eDgZpAaYtBQkLC8uPHjyhSJiYmhufPn38KTX8kOZhSc3E6mIeH5xeIfvv27dffv3+jyL1///4LUB7E/EVqkqDUXHwhDMq1EhcuXFivra2tAExzfCBxYFRdBobCSaA8AzRnM5AYwhSZi7eUAEaRJ5ASEBcXlwQCfWCIfLlz587pn0AAFH9w5syZ4+SUEpSYi9fBtra2HEDKCojF0aTuHz58+AS5ZTAl5jIS07x0cnISgmYEUAi83rdv31dq1FrkmMs42h4edfCog0cdjBcABBgAQ8XeGZejfMAAAAAASUVORK5CYII%3D" alt="" />
|
3805
|
+
|
3806
|
+
<a id="help" target='_blank' href="http://help.agilebits.com/1Password3/1passwordanywhere.html"></a>
|
3807
|
+
|
3808
|
+
<img id="branding" src="data:image/png;base64,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" alt="" />
|
3809
|
+
</div>
|
3810
|
+
|
3811
|
+
<div id="messageBox_wrapper" style="display:none;">
|
3812
|
+
<div id="messageBox">
|
3813
|
+
<h1 id="messageBox_title"></h1>
|
3814
|
+
<div id="messageBox_message"></div>
|
3815
|
+
<a id="messageBox_help" href="#"></a>
|
3816
|
+
<a id="messageBox_dismiss" href=""></a>
|
3817
|
+
</div>
|
3818
|
+
</div>
|
3819
|
+
|
3820
|
+
</div>
|
3821
|
+
|
3822
|
+
|
3823
|
+
<div id="main-html" style="display:none">
|
3824
|
+
|
3825
|
+
<div>
|
3826
|
+
<div id="headerBar">
|
3827
|
+
<img src="data:image/png;base64,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%3D%3D" />
|
3828
|
+
<input id="search" type="search" name="" value="" placeholder="Search" results="0" onkeyup="searchEntries();" onclick="searchEntries();"/>
|
3829
|
+
<button id="lock" onclick="logout(false);"></button>
|
3830
|
+
</div>
|
3831
|
+
|
3832
|
+
<ul id="sourcesPane">
|
3833
|
+
<!--
|
3834
|
+
<li class="subFolder">
|
3835
|
+
<ul>
|
3836
|
+
<li>
|
3837
|
+
<img src="http://aws.cachefly.net/anywhere/001/images/folder-20.png" alt="" />
|
3838
|
+
AWS</li>
|
3839
|
+
</ul></li>
|
3840
|
+
<li>
|
3841
|
+
-->
|
3842
|
+
</ul>
|
3843
|
+
|
3844
|
+
<ul id="listPane">
|
3845
|
+
</ul>
|
3846
|
+
|
3847
|
+
<div id="detailsPane">
|
3848
|
+
<table>
|
3849
|
+
|
3850
|
+
</table>
|
3851
|
+
</div>
|
3852
|
+
|
3853
|
+
<div id="emptyDetailsPane">
|
3854
|
+
</div>
|
3855
|
+
<div id="messageBox_wrapper" style="display:none;">
|
3856
|
+
<div id="messageBox" style="display:none;">
|
3857
|
+
<div>
|
3858
|
+
<h1 id="messageBox_title"></h1>
|
3859
|
+
<p id="messageBox_message"></p>
|
3860
|
+
<a id="messageBox_help" href="#"></a>
|
3861
|
+
<span id="messageBox_dismiss">OK</span>
|
3862
|
+
</div>
|
3863
|
+
</div>
|
3864
|
+
</div>
|
3865
|
+
|
3866
|
+
</div>
|
3867
|
+
</body>
|
3868
|
+
|
3869
|
+
|
3870
|
+
</html>
|