cloudrail_si 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +3 -0
  3. data/examples/README.md +3 -0
  4. data/examples/simple/index.rb +11 -0
  5. data/lib/cloudrail_si.rb +41 -0
  6. data/lib/cloudrail_si/RedirectReceivers.rb +40 -0
  7. data/lib/cloudrail_si/Settings.rb +12 -0
  8. data/lib/cloudrail_si/errors/DetailErrors.rb +13 -0
  9. data/lib/cloudrail_si/errors/InternalError.rb +10 -0
  10. data/lib/cloudrail_si/errors/UserError.rb +11 -0
  11. data/lib/cloudrail_si/helpers/Helper.rb +151 -0
  12. data/lib/cloudrail_si/helpers/LimitedReadableStream.rb +55 -0
  13. data/lib/cloudrail_si/helpers/SequenceReadableStream.rb +59 -0
  14. data/lib/cloudrail_si/servicecode/InitSelfTest.rb +92 -0
  15. data/lib/cloudrail_si/servicecode/Interpreter.rb +213 -0
  16. data/lib/cloudrail_si/servicecode/Sandbox.rb +361 -0
  17. data/lib/cloudrail_si/servicecode/VarAddress.rb +11 -0
  18. data/lib/cloudrail_si/servicecode/commands/AwaitCodeRedirect.rb +48 -0
  19. data/lib/cloudrail_si/servicecode/commands/Break.rb +16 -0
  20. data/lib/cloudrail_si/servicecode/commands/CallFunc.rb +26 -0
  21. data/lib/cloudrail_si/servicecode/commands/Clone.rb +18 -0
  22. data/lib/cloudrail_si/servicecode/commands/Concat.rb +22 -0
  23. data/lib/cloudrail_si/servicecode/commands/Conditional.rb +27 -0
  24. data/lib/cloudrail_si/servicecode/commands/Create.rb +56 -0
  25. data/lib/cloudrail_si/servicecode/commands/Delete.rb +21 -0
  26. data/lib/cloudrail_si/servicecode/commands/Get.rb +25 -0
  27. data/lib/cloudrail_si/servicecode/commands/GetMimeType.rb +1005 -0
  28. data/lib/cloudrail_si/servicecode/commands/JumpRel.rb +18 -0
  29. data/lib/cloudrail_si/servicecode/commands/Pull.rb +34 -0
  30. data/lib/cloudrail_si/servicecode/commands/Push.rb +32 -0
  31. data/lib/cloudrail_si/servicecode/commands/Return.rb +16 -0
  32. data/lib/cloudrail_si/servicecode/commands/Set.rb +23 -0
  33. data/lib/cloudrail_si/servicecode/commands/Size.rb +26 -0
  34. data/lib/cloudrail_si/servicecode/commands/ThrowError.rb +17 -0
  35. data/lib/cloudrail_si/servicecode/commands/array/Uint8ToBase64.rb +25 -0
  36. data/lib/cloudrail_si/servicecode/commands/debug/Out.rb +24 -0
  37. data/lib/cloudrail_si/servicecode/commands/hash/md5.rb +29 -0
  38. data/lib/cloudrail_si/servicecode/commands/hash/sha1.rb +30 -0
  39. data/lib/cloudrail_si/servicecode/commands/http/RequestCall.rb +51 -0
  40. data/lib/cloudrail_si/servicecode/commands/json/Parse.rb +40 -0
  41. data/lib/cloudrail_si/servicecode/commands/json/Stringify.rb +21 -0
  42. data/lib/cloudrail_si/servicecode/commands/math/Floor.rb +27 -0
  43. data/lib/cloudrail_si/servicecode/commands/math/MathCombine.rb +35 -0
  44. data/lib/cloudrail_si/servicecode/commands/object/GetKeyArray.rb +21 -0
  45. data/lib/cloudrail_si/servicecode/commands/object/GetKeyValueArrays.rb +29 -0
  46. data/lib/cloudrail_si/servicecode/commands/stream/MakeJoinedStream.rb +38 -0
  47. data/lib/cloudrail_si/servicecode/commands/stream/MakeLimitedStream.rb +23 -0
  48. data/lib/cloudrail_si/servicecode/commands/stream/StreamToString.rb +25 -0
  49. data/lib/cloudrail_si/servicecode/commands/stream/StringToStream.rb +20 -0
  50. data/lib/cloudrail_si/servicecode/commands/string/Base64Encode.rb +42 -0
  51. data/lib/cloudrail_si/servicecode/commands/string/Format.rb +43 -0
  52. data/lib/cloudrail_si/servicecode/commands/string/IndexOf.rb +29 -0
  53. data/lib/cloudrail_si/servicecode/commands/string/LastIndexOf.rb +29 -0
  54. data/lib/cloudrail_si/servicecode/commands/string/Split.rb +29 -0
  55. data/lib/cloudrail_si/servicecode/commands/string/StringTransform.rb +29 -0
  56. data/lib/cloudrail_si/servicecode/commands/string/Substr.rb +30 -0
  57. data/lib/cloudrail_si/servicecode/commands/string/Substring.rb +30 -0
  58. data/lib/cloudrail_si/services/Facebook.rb +528 -0
  59. data/lib/cloudrail_si/services/FacebookPage.rb +310 -0
  60. data/lib/cloudrail_si/services/Foursquare.rb +314 -0
  61. data/lib/cloudrail_si/services/GitHub.rb +354 -0
  62. data/lib/cloudrail_si/services/GooglePlaces.rb +309 -0
  63. data/lib/cloudrail_si/services/GooglePlus.rb +367 -0
  64. data/lib/cloudrail_si/services/Instagram.rb +342 -0
  65. data/lib/cloudrail_si/services/LinkedIn.rb +363 -0
  66. data/lib/cloudrail_si/services/MicrosoftLive.rb +346 -0
  67. data/lib/cloudrail_si/services/Nexmo.rb +173 -0
  68. data/lib/cloudrail_si/services/Slack.rb +318 -0
  69. data/lib/cloudrail_si/services/Twilio.rb +173 -0
  70. data/lib/cloudrail_si/services/Twitter.rb +795 -0
  71. data/lib/cloudrail_si/services/Yahoo.rb +408 -0
  72. data/lib/cloudrail_si/services/Yelp.rb +389 -0
  73. data/lib/cloudrail_si/statistics/Statistics.rb +125 -0
  74. data/lib/cloudrail_si/types/Address.rb +9 -0
  75. data/lib/cloudrail_si/types/Charge.rb +33 -0
  76. data/lib/cloudrail_si/types/CloudMetaData.rb +19 -0
  77. data/lib/cloudrail_si/types/CreditCard.rb +76 -0
  78. data/lib/cloudrail_si/types/Date.rb +49 -0
  79. data/lib/cloudrail_si/types/DateOfBirth.rb +16 -0
  80. data/lib/cloudrail_si/types/Error.rb +21 -0
  81. data/lib/cloudrail_si/types/Location.rb +8 -0
  82. data/lib/cloudrail_si/types/POI.rb +17 -0
  83. data/lib/cloudrail_si/types/Refund.rb +25 -0
  84. data/lib/cloudrail_si/types/SandboxObject.rb +20 -0
  85. data/lib/cloudrail_si/types/SpaceAllocation.rb +13 -0
  86. data/lib/cloudrail_si/types/Subscription.rb +27 -0
  87. data/lib/cloudrail_si/types/SubscriptionPlan.rb +26 -0
  88. data/lib/cloudrail_si/types/Types.rb +43 -0
  89. data/lib/cloudrail_si/version.rb +3 -0
  90. metadata +205 -0
@@ -0,0 +1,11 @@
1
+ module CloudRailSi
2
+ module ServiceCode
3
+ class VarAddress
4
+ attr_reader :address_string
5
+
6
+ def initialize(address_string)
7
+ @address_string = address_string;
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,48 @@
1
+ require_relative '../../helpers/Helper'
2
+ require_relative '../../errors/UserError'
3
+
4
+ require 'cgi'
5
+
6
+ module CloudRailSi
7
+ module ServiceCode
8
+ class AwaitCodeRedirect
9
+ def get_identifier
10
+ 'awaitCodeRedirect'
11
+ end
12
+
13
+ def execute(environment, parameters)
14
+ Helper.assert(parameters.length >= 2 && Helper.is_var_address(parameters[0]) &&
15
+ (Helper.is_string(parameters[1]) || Helper.is_var_address(parameters[1])))
16
+
17
+ res_var = parameters[0]
18
+ url_str = Helper.resolve(environment, parameters[1])
19
+ legacy = parameters.length == 2
20
+ keys = []
21
+
22
+ (2..parameters.length - 1).each do |i|
23
+ keys.push(Helper.resolve(environment, parameters[i]))
24
+ end
25
+ keys.push('code') if (legacy)
26
+ redirect_receiver = environment.instance_dependency_storage[:redirect_receiver] # TODO: use of symbols not consistent with most of rest of app
27
+ if (!redirect_receiver || !redirect_receiver.respond_to?(:call))
28
+ raise Errors::UserError.new("This service needs the RedirectReceiver to be implemented as a function. Have a look at our examples and documentation if you are unsure how to do that.")
29
+ end
30
+ redirect_url = redirect_receiver.call(url_str, environment.save_state_to_string())
31
+ parts = redirect_url.split('?')
32
+ param_str = (parts.length >= 2) ? parts[1] : parts[0]
33
+
34
+ query_map = CGI::parse(param_str)
35
+ res_map = {}
36
+ keys.each do |key|
37
+ if query_map[key].nil? || query_map[key].empty?
38
+ raise Errors::UserError.new("The URL the RedirectReceiver returns does not contain all necessary keys in the query, it's missing at least #{key}")
39
+ else
40
+ res_map[key] = query_map[key][0] # Note we assume only one param here with a given name
41
+ end
42
+ end
43
+
44
+ environment.set_variable(res_var, legacy ? res_map["code"] : res_map)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../helpers/Helper'
2
+ require "byebug"
3
+
4
+ module CloudRailSi
5
+ module ServiceCode
6
+ class Break
7
+ def get_identifier
8
+ 'break'
9
+ end
10
+
11
+ def execute(environment, parameters)
12
+ byebug
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class CallFunc
6
+ def get_identifier
7
+ 'callFunc'
8
+ end
9
+
10
+ def execute(environment, parameters)
11
+ Helper.assert((parameters.length >= 1) &&
12
+ ((Helper.is_string(parameters[0])) || Helper.is_var_address(parameters[0])))
13
+
14
+ function_name = Helper.resolve(environment, parameters[0], true)
15
+ function_name = function_name.to_s if (!Helper.is_string(function_name))
16
+ function_parameters = []
17
+
18
+ (1..parameters.length - 1).each do |i|
19
+ function_parameters.push(Helper.resolve(environment, parameters[i], false))
20
+ end
21
+
22
+ environment.call_function(function_name, function_parameters)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class Clone
6
+ def get_identifier
7
+ return 'clone'
8
+ end
9
+
10
+ def execute(environment, parameters)
11
+ Helper.assert(parameters.length == 2 && Helper.is_var_address(parameters[0]))
12
+ target_id = parameters[0]
13
+ source_obj = Helper.resolve(environment, parameters[1])
14
+ raise Errors::InternalError.new('Clone not implemented')
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class Concat
6
+ def get_identifier
7
+ 'string.concat'
8
+ end
9
+
10
+ def execute(environment, parameters)
11
+ Helper.assert(parameters.length >= 2 && Helper.is_var_address(parameters[0]))
12
+ result_var = parameters[0]
13
+ str = ""
14
+ (1..parameters.length).each do |i|
15
+ str_part = Helper.resolve(environment, parameters[i])
16
+ str += str_part.to_s
17
+ end
18
+ environment.set_variable(result_var, str)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class Conditional
6
+ def initialize(identifier, compare_function, type_check)
7
+ @identifier = identifier
8
+ @compare_function = compare_function
9
+ @type_check = type_check
10
+ end
11
+
12
+ def get_identifier
13
+ @identifier
14
+ end
15
+
16
+ def execute(environment, parameters)
17
+ Helper.assert(parameters.length == 3)
18
+ a_obj = parameters[0]
19
+ b_obj = parameters[1]
20
+ relative_end_pos = Helper.resolve(environment, parameters[2])
21
+ Helper.assert(Helper.is_number(relative_end_pos))
22
+ compare = environment.compare_variables(a_obj, b_obj, @identifier, @type_check)
23
+ environment.increment_current_service_code_line(relative_end_pos) if (!@compare_function.call(compare))
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,56 @@
1
+ require_relative '../../helpers/Helper'
2
+ require_relative '../../types/types'
3
+
4
+ module CloudRailSi
5
+ module ServiceCode
6
+ class Create
7
+ def get_identifier
8
+ 'create'
9
+ end
10
+
11
+ def execute(environment, parameters)
12
+ Helper.assert(parameters.length >= 2 && Helper.is_var_address(parameters[0]) &&
13
+ (Helper.is_string(parameters[1]) || Helper.is_var_address(parameters[1])))
14
+ target_id = parameters[0]
15
+ type = Helper.resolve(environment, parameters[1])
16
+ Helper.assert(Helper.is_string(type))
17
+ target_id_parts = environment.decode_variable_address(target_id)
18
+ constructor_args = []
19
+ (2..parameters.length - 1).each do |i|
20
+ constructor_args.push(Helper.resolve(environment, parameters[i]))
21
+ end
22
+ if (type === 'String')
23
+ new_object = ''
24
+
25
+ (0..constructor_args.length - 1).each do |i|
26
+ new_object += constructor_args[i].to_s
27
+ end
28
+ elsif (type === 'Number')
29
+ raise Errors::InternalError.new('Create Number has too many arguments') if (constructor_args.length > 1)
30
+ if (constructor_args.length === 1)
31
+ if (Helper.is_number(constructor_args[0]))
32
+ new_object = constructor_args[0]
33
+ else
34
+ raise Errors::InternalError.new('Create Number has an invalid argument type')
35
+ end
36
+ else
37
+ new_object = 0
38
+ end
39
+ elsif (type === 'Object')
40
+ raise Errors::InternalError.new('Create Object does not take constructor arguments') if (constructor_args.length != 0)
41
+ new_object = {}
42
+ elsif (type === 'Array')
43
+ new_object = constructor_args.clone
44
+ else
45
+ if CloudRailSi::Types::Types.type_map.key?(type)
46
+ constr = CloudRailSi::Types::Types.type_map[type]
47
+ new_object = constr.new(*constructor_args)
48
+ else
49
+ assert(false)
50
+ end
51
+ end
52
+ environment.set_variable(target_id_parts, new_object)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,21 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class Delete
6
+ def get_identifier
7
+ 'delete'
8
+ end
9
+
10
+ def execute(environment, parameters)
11
+ Helper.assert(parameters.length >= 1 && Helper.is_var_address(parameters[0]))
12
+ target_id = parameters[0]
13
+ target_id_parts = environment.decode_variable_address(target_id)
14
+ (1..parameters.length - 1).each do |i|
15
+ target_id_parts.push(Helper.resolve(environment, parameters[i]))
16
+ end
17
+ environment.delete_variable(target_id_parts)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class Get
6
+ def get_identifier
7
+ 'get'
8
+ end
9
+
10
+ def execute(environment, parameters)
11
+ Helper.assert(parameters.length >= 2 &&
12
+ Helper.is_var_address(parameters[0]) &&
13
+ Helper.is_var_address(parameters[1]))
14
+ target_id = parameters[0]
15
+ container_id_parts = environment.decode_variable_address(parameters[1])
16
+
17
+ (2..parameters.length - 1).each do |i|
18
+ container_id_parts.push(Helper.resolve(environment, parameters[i]))
19
+ end
20
+
21
+ environment.set_variable(target_id, environment.get_variable(container_id_parts))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,1005 @@
1
+ require_relative '../../helpers/Helper'
2
+
3
+ module CloudRailSi
4
+ module ServiceCode
5
+ class GetMimeType
6
+ def get_identifier
7
+ return 'getMimeType'
8
+ end
9
+
10
+ def execute(environment, parameters)
11
+ Helper.assert(parameters.length === 2 &&
12
+ Helper.is_var_address(parameters[0]) &&
13
+ (Helper.is_string(parameters[1]) || Helper.is_var_address(parameters[1])))
14
+ res_var = parameters[0]
15
+ file_ext = Helper.resolve(environment, parameters[1])
16
+ environment.set_variable(res_var, @mime_types[file_ext])
17
+ end
18
+
19
+ @mime_types = {
20
+ 'ez' => 'application/andrew-inset',
21
+ 'aw' => 'application/applixware',
22
+ 'atom' => 'application/atom+xml',
23
+ 'atomcat' => 'application/atomcat+xml',
24
+ 'atomsvc' => 'application/atomsvc+xml',
25
+ 'ccxml' => 'application/ccxml+xml',
26
+ 'cdmia' => 'application/cdmi-capability',
27
+ 'cdmic' => 'application/cdmi-container',
28
+ 'cdmid' => 'application/cdmi-domain',
29
+ 'cdmio' => 'application/cdmi-object',
30
+ 'cdmiq' => 'application/cdmi-queue',
31
+ 'cu' => 'application/cu-seeme',
32
+ 'davmount' => 'application/davmount+xml',
33
+ 'dbk' => 'application/docbook+xml',
34
+ 'dssc' => 'application/dssc+der',
35
+ 'xdssc' => 'application/dssc+xml',
36
+ 'ecma' => 'application/ecmascript',
37
+ 'emma' => 'application/emma+xml',
38
+ 'epub' => 'application/epub+zip',
39
+ 'exi' => 'application/exi',
40
+ 'pfr' => 'application/font-tdpfr',
41
+ 'woff' => 'application/font-woff',
42
+ 'gml' => 'application/gml+xml',
43
+ 'gpx' => 'application/gpx+xml',
44
+ 'gxf' => 'application/gxf',
45
+ 'stk' => 'application/hyperstudio',
46
+ 'ink' => 'application/inkml+xml',
47
+ 'inkml' => 'application/inkml+xml',
48
+ 'ipfix' => 'application/ipfix',
49
+ 'jar' => 'application/java-archive',
50
+ 'ser' => 'application/java-serialized-object',
51
+ 'class' => 'application/java-vm',
52
+ 'js' => 'application/javascript',
53
+ 'json' => 'application/json',
54
+ 'jsonml' => 'application/jsonml+json',
55
+ 'lostxml' => 'application/lost+xml',
56
+ 'hqx' => 'application/mac-binhex40',
57
+ 'cpt' => 'application/mac-compactpro',
58
+ 'mads' => 'application/mads+xml',
59
+ 'mrc' => 'application/marc',
60
+ 'mrcx' => 'application/marcxml+xml',
61
+ 'ma' => 'application/mathematica',
62
+ 'nb' => 'application/mathematica',
63
+ 'mb' => 'application/mathematica',
64
+ 'mathml' => 'application/mathml+xml',
65
+ 'mbox' => 'application/mbox',
66
+ 'mscml' => 'application/mediaservercontrol+xml',
67
+ 'metalink' => 'application/metalink+xml',
68
+ 'meta4' => 'application/metalink4+xml',
69
+ 'mets' => 'application/mets+xml',
70
+ 'mods' => 'application/mods+xml',
71
+ 'm21' => 'application/mp21',
72
+ 'mp21' => 'application/mp21',
73
+ 'mp4s' => 'application/mp4',
74
+ 'doc' => 'application/msword',
75
+ 'dot' => 'application/msword',
76
+ 'mxf' => 'application/mxf',
77
+ 'bin' => 'application/octet-stream',
78
+ 'dms' => 'application/octet-stream',
79
+ 'lrf' => 'application/octet-stream',
80
+ 'mar' => 'application/octet-stream',
81
+ 'so' => 'application/octet-stream',
82
+ 'dist' => 'application/octet-stream',
83
+ 'distz' => 'application/octet-stream',
84
+ 'pkg' => 'application/octet-stream',
85
+ 'bpk' => 'application/octet-stream',
86
+ 'dump' => 'application/octet-stream',
87
+ 'elc' => 'application/octet-stream',
88
+ 'deploy' => 'application/octet-stream',
89
+ 'oda' => 'application/oda',
90
+ 'opf' => 'application/oebps-package+xml',
91
+ 'ogx' => 'application/ogg',
92
+ 'omdoc' => 'application/omdoc+xml',
93
+ 'onetoc' => 'application/onenote',
94
+ 'onetoc2' => 'application/onenote',
95
+ 'onetmp' => 'application/onenote',
96
+ 'onepkg' => 'application/onenote',
97
+ 'oxps' => 'application/oxps',
98
+ 'xer' => 'application/patch-ops-error+xml',
99
+ 'pdf' => 'application/pdf',
100
+ 'pgp' => 'application/pgp-encrypted',
101
+ 'asc' => 'application/pgp-signature',
102
+ 'sig' => 'application/pgp-signature',
103
+ 'prf' => 'application/pics-rules',
104
+ 'p10' => 'application/pkcs10',
105
+ 'p7m' => 'application/pkcs7-mime',
106
+ 'p7c' => 'application/pkcs7-mime',
107
+ 'p7s' => 'application/pkcs7-signature',
108
+ 'p8' => 'application/pkcs8',
109
+ 'ac' => 'application/pkix-attr-cert',
110
+ 'cer' => 'application/pkix-cert',
111
+ 'crl' => 'application/pkix-crl',
112
+ 'pkipath' => 'application/pkix-pkipath',
113
+ 'pki' => 'application/pkixcmp',
114
+ 'pls' => 'application/pls+xml',
115
+ 'ai' => 'application/postscript',
116
+ 'eps' => 'application/postscript',
117
+ 'ps' => 'application/postscript',
118
+ 'cww' => 'application/prs.cww',
119
+ 'pskcxml' => 'application/pskc+xml',
120
+ 'rdf' => 'application/rdf+xml',
121
+ 'rif' => 'application/reginfo+xml',
122
+ 'rnc' => 'application/relax-ng-compact-syntax',
123
+ 'rl' => 'application/resource-lists+xml',
124
+ 'rld' => 'application/resource-lists-diff+xml',
125
+ 'rs' => 'application/rls-services+xml',
126
+ 'gbr' => 'application/rpki-ghostbusters',
127
+ 'mft' => 'application/rpki-manifest',
128
+ 'roa' => 'application/rpki-roa',
129
+ 'rsd' => 'application/rsd+xml',
130
+ 'rss' => 'application/rss+xml',
131
+ 'rtf' => 'application/rtf',
132
+ 'sbml' => 'application/sbml+xml',
133
+ 'scq' => 'application/scvp-cv-request',
134
+ 'scs' => 'application/scvp-cv-response',
135
+ 'spq' => 'application/scvp-vp-request',
136
+ 'spp' => 'application/scvp-vp-response',
137
+ 'sdp' => 'application/sdp',
138
+ 'setpay' => 'application/set-payment-initiation',
139
+ 'setreg' => 'application/set-registration-initiation',
140
+ 'shf' => 'application/shf+xml',
141
+ 'smi' => 'application/smil+xml',
142
+ 'smil' => 'application/smil+xml',
143
+ 'rq' => 'application/sparql-query',
144
+ 'srx' => 'application/sparql-results+xml',
145
+ 'gram' => 'application/srgs',
146
+ 'grxml' => 'application/srgs+xml',
147
+ 'sru' => 'application/sru+xml',
148
+ 'ssdl' => 'application/ssdl+xml',
149
+ 'ssml' => 'application/ssml+xml',
150
+ 'tei' => 'application/tei+xml',
151
+ 'teicorpus' => 'application/tei+xml',
152
+ 'tfi' => 'application/thraud+xml',
153
+ 'tsd' => 'application/timestamped-data',
154
+ 'plb' => 'application/vnd.3gpp.pic-bw-large',
155
+ 'psb' => 'application/vnd.3gpp.pic-bw-small',
156
+ 'pvb' => 'application/vnd.3gpp.pic-bw-var',
157
+ 'tcap' => 'application/vnd.3gpp2.tcap',
158
+ 'pwn' => 'application/vnd.3m.post-it-notes',
159
+ 'aso' => 'application/vnd.accpac.simply.aso',
160
+ 'imp' => 'application/vnd.accpac.simply.imp',
161
+ 'acu' => 'application/vnd.acucobol',
162
+ 'atc' => 'application/vnd.acucorp',
163
+ 'acutc' => 'application/vnd.acucorp',
164
+ 'air' => 'application/vnd.adobe.air-application-installer-package+zip',
165
+ 'fcdt' => 'application/vnd.adobe.formscentral.fcdt',
166
+ 'fxp' => 'application/vnd.adobe.fxp',
167
+ 'fxpl' => 'application/vnd.adobe.fxp',
168
+ 'xdp' => 'application/vnd.adobe.xdp+xml',
169
+ 'xfdf' => 'application/vnd.adobe.xfdf',
170
+ 'ahead' => 'application/vnd.ahead.space',
171
+ 'azf' => 'application/vnd.airzip.filesecure.azf',
172
+ 'azs' => 'application/vnd.airzip.filesecure.azs',
173
+ 'azw' => 'application/vnd.amazon.ebook',
174
+ 'acc' => 'application/vnd.americandynamics.acc',
175
+ 'ami' => 'application/vnd.amiga.ami',
176
+ 'apk' => 'application/vnd.android.package-archive',
177
+ 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',
178
+ 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',
179
+ 'atx' => 'application/vnd.antix.game-component',
180
+ 'mpkg' => 'application/vnd.apple.installer+xml',
181
+ 'm3u8' => 'application/vnd.apple.mpegurl',
182
+ 'swi' => 'application/vnd.aristanetworks.swi',
183
+ 'iota' => 'application/vnd.astraea-software.iota',
184
+ 'aep' => 'application/vnd.audiograph',
185
+ 'mpm' => 'application/vnd.blueice.multipass',
186
+ 'bmi' => 'application/vnd.bmi',
187
+ 'rep' => 'application/vnd.businessobjects',
188
+ 'cdxml' => 'application/vnd.chemdraw+xml',
189
+ 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',
190
+ 'cdy' => 'application/vnd.cinderella',
191
+ 'cla' => 'application/vnd.claymore',
192
+ 'rp9' => 'application/vnd.cloanto.rp9',
193
+ 'c4g' => 'application/vnd.clonk.c4group',
194
+ 'c4d' => 'application/vnd.clonk.c4group',
195
+ 'c4f' => 'application/vnd.clonk.c4group',
196
+ 'c4p' => 'application/vnd.clonk.c4group',
197
+ 'c4u' => 'application/vnd.clonk.c4group',
198
+ 'c11amc' => 'application/vnd.cluetrust.cartomobile-config',
199
+ 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',
200
+ 'csp' => 'application/vnd.commonspace',
201
+ 'cdbcmsg' => 'application/vnd.contact.cmsg',
202
+ 'cmc' => 'application/vnd.cosmocaller',
203
+ 'clkx' => 'application/vnd.crick.clicker',
204
+ 'clkk' => 'application/vnd.crick.clicker.keyboard',
205
+ 'clkp' => 'application/vnd.crick.clicker.palette',
206
+ 'clkt' => 'application/vnd.crick.clicker.template',
207
+ 'clkw' => 'application/vnd.crick.clicker.wordbank',
208
+ 'wbs' => 'application/vnd.criticaltools.wbs+xml',
209
+ 'pml' => 'application/vnd.ctc-posml',
210
+ 'ppd' => 'application/vnd.cups-ppd',
211
+ 'car' => 'application/vnd.curl.car',
212
+ 'pcurl' => 'application/vnd.curl.pcurl',
213
+ 'dart' => 'application/vnd.dart',
214
+ 'rdz' => 'application/vnd.data-vision.rdz',
215
+ 'uvf' => 'application/vnd.dece.data',
216
+ 'uvvf' => 'application/vnd.dece.data',
217
+ 'uvd' => 'application/vnd.dece.data',
218
+ 'uvvd' => 'application/vnd.dece.data',
219
+ 'uvt' => 'application/vnd.dece.ttml+xml',
220
+ 'uvvt' => 'application/vnd.dece.ttml+xml',
221
+ 'uvx' => 'application/vnd.dece.unspecified',
222
+ 'uvvx' => 'application/vnd.dece.unspecified',
223
+ 'uvz' => 'application/vnd.dece.zip',
224
+ 'uvvz' => 'application/vnd.dece.zip',
225
+ 'fe_launch' => 'application/vnd.denovo.fcselayout-link',
226
+ 'dna' => 'application/vnd.dna',
227
+ 'mlp' => 'application/vnd.dolby.mlp',
228
+ 'dpg' => 'application/vnd.dpgraph',
229
+ 'dfac' => 'application/vnd.dreamfactory',
230
+ 'kpxx' => 'application/vnd.ds-keypoint',
231
+ 'ait' => 'application/vnd.dvb.ait',
232
+ 'svc' => 'application/vnd.dvb.service',
233
+ 'geo' => 'application/vnd.dynageo',
234
+ 'mag' => 'application/vnd.ecowin.chart',
235
+ 'nml' => 'application/vnd.enliven',
236
+ 'esf' => 'application/vnd.epson.esf',
237
+ 'msf' => 'application/vnd.epson.msf',
238
+ 'qam' => 'application/vnd.epson.quickanime',
239
+ 'slt' => 'application/vnd.epson.salt',
240
+ 'ssf' => 'application/vnd.epson.ssf',
241
+ 'es3' => 'application/vnd.eszigno3+xml',
242
+ 'et3' => 'application/vnd.eszigno3+xml',
243
+ 'ez2' => 'application/vnd.ezpix-album',
244
+ 'ez3' => 'application/vnd.ezpix-package',
245
+ 'fdf' => 'application/vnd.fdf',
246
+ 'mseed' => 'application/vnd.fdsn.mseed',
247
+ 'seed' => 'application/vnd.fdsn.seed',
248
+ 'dataless' => 'application/vnd.fdsn.seed',
249
+ 'gph' => 'application/vnd.flographit',
250
+ 'ftc' => 'application/vnd.fluxtime.clip',
251
+ 'fm' => 'application/vnd.framemaker',
252
+ 'frame' => 'application/vnd.framemaker',
253
+ 'maker' => 'application/vnd.framemaker',
254
+ 'book' => 'application/vnd.framemaker',
255
+ 'fnc' => 'application/vnd.frogans.fnc',
256
+ 'ltf' => 'application/vnd.frogans.ltf',
257
+ 'fsc' => 'application/vnd.fsc.weblaunch',
258
+ 'oas' => 'application/vnd.fujitsu.oasys',
259
+ 'oa2' => 'application/vnd.fujitsu.oasys2',
260
+ 'oa3' => 'application/vnd.fujitsu.oasys3',
261
+ 'fg5' => 'application/vnd.fujitsu.oasysgp',
262
+ 'bh2' => 'application/vnd.fujitsu.oasysprs',
263
+ 'ddd' => 'application/vnd.fujixerox.ddd',
264
+ 'xdw' => 'application/vnd.fujixerox.docuworks',
265
+ 'xbd' => 'application/vnd.fujixerox.docuworks.binder',
266
+ 'fzs' => 'application/vnd.fuzzysheet',
267
+ 'txd' => 'application/vnd.genomatix.tuxedo',
268
+ 'ggb' => 'application/vnd.geogebra.file',
269
+ 'ggt' => 'application/vnd.geogebra.tool',
270
+ 'gex' => 'application/vnd.geometry-explorer',
271
+ 'gre' => 'application/vnd.geometry-explorer',
272
+ 'gxt' => 'application/vnd.geonext',
273
+ 'g2w' => 'application/vnd.geoplan',
274
+ 'g3w' => 'application/vnd.geospace',
275
+ 'gmx' => 'application/vnd.gmx',
276
+ 'kml' => 'application/vnd.google-earth.kml+xml',
277
+ 'kmz' => 'application/vnd.google-earth.kmz',
278
+ 'gqf' => 'application/vnd.grafeq',
279
+ 'gqs' => 'application/vnd.grafeq',
280
+ 'gac' => 'application/vnd.groove-account',
281
+ 'ghf' => 'application/vnd.groove-help',
282
+ 'gim' => 'application/vnd.groove-identity-message',
283
+ 'grv' => 'application/vnd.groove-injector',
284
+ 'gtm' => 'application/vnd.groove-tool-message',
285
+ 'tpl' => 'application/vnd.groove-tool-template',
286
+ 'vcg' => 'application/vnd.groove-vcard',
287
+ 'hal' => 'application/vnd.hal+xml',
288
+ 'zmm' => 'application/vnd.handheld-entertainment+xml',
289
+ 'hbci' => 'application/vnd.hbci',
290
+ 'les' => 'application/vnd.hhe.lesson-player',
291
+ 'hpgl' => 'application/vnd.hp-hpgl',
292
+ 'hpid' => 'application/vnd.hp-hpid',
293
+ 'hps' => 'application/vnd.hp-hps',
294
+ 'jlt' => 'application/vnd.hp-jlyt',
295
+ 'pcl' => 'application/vnd.hp-pcl',
296
+ 'pclxl' => 'application/vnd.hp-pclxl',
297
+ 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',
298
+ 'mpy' => 'application/vnd.ibm.minipay',
299
+ 'afp' => 'application/vnd.ibm.modcap',
300
+ 'listafp' => 'application/vnd.ibm.modcap',
301
+ 'list3820' => 'application/vnd.ibm.modcap',
302
+ 'irm' => 'application/vnd.ibm.rights-management',
303
+ 'sc' => 'application/vnd.ibm.secure-container',
304
+ 'icc' => 'application/vnd.iccprofile',
305
+ 'icm' => 'application/vnd.iccprofile',
306
+ 'igl' => 'application/vnd.igloader',
307
+ 'ivp' => 'application/vnd.immervision-ivp',
308
+ 'ivu' => 'application/vnd.immervision-ivu',
309
+ 'igm' => 'application/vnd.insors.igm',
310
+ 'xpw' => 'application/vnd.intercon.formnet',
311
+ 'xpx' => 'application/vnd.intercon.formnet',
312
+ 'i2g' => 'application/vnd.intergeo',
313
+ 'qbo' => 'application/vnd.intu.qbo',
314
+ 'qfx' => 'application/vnd.intu.qfx',
315
+ 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',
316
+ 'irp' => 'application/vnd.irepository.package+xml',
317
+ 'xpr' => 'application/vnd.is-xpr',
318
+ 'fcs' => 'application/vnd.isac.fcs',
319
+ 'jam' => 'application/vnd.jam',
320
+ 'rms' => 'application/vnd.jcp.javame.midlet-rms',
321
+ 'jisp' => 'application/vnd.jisp',
322
+ 'joda' => 'application/vnd.joost.joda-archive',
323
+ 'ktz' => 'application/vnd.kahootz',
324
+ 'ktr' => 'application/vnd.kahootz',
325
+ 'karbon' => 'application/vnd.kde.karbon',
326
+ 'chrt' => 'application/vnd.kde.kchart',
327
+ 'kfo' => 'application/vnd.kde.kformula',
328
+ 'flw' => 'application/vnd.kde.kivio',
329
+ 'kon' => 'application/vnd.kde.kontour',
330
+ 'kpr' => 'application/vnd.kde.kpresenter',
331
+ 'kpt' => 'application/vnd.kde.kpresenter',
332
+ 'ksp' => 'application/vnd.kde.kspread',
333
+ 'kwd' => 'application/vnd.kde.kword',
334
+ 'kwt' => 'application/vnd.kde.kword',
335
+ 'htke' => 'application/vnd.kenameaapp',
336
+ 'kia' => 'application/vnd.kidspiration',
337
+ 'kne' => 'application/vnd.kinar',
338
+ 'knp' => 'application/vnd.kinar',
339
+ 'skp' => 'application/vnd.koan',
340
+ 'skd' => 'application/vnd.koan',
341
+ 'skt' => 'application/vnd.koan',
342
+ 'skm' => 'application/vnd.koan',
343
+ 'sse' => 'application/vnd.kodak-descriptor',
344
+ 'lasxml' => 'application/vnd.las.las+xml',
345
+ 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',
346
+ 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',
347
+ '123' => 'application/vnd.lotus-1-2-3',
348
+ 'apr' => 'application/vnd.lotus-approach',
349
+ 'pre' => 'application/vnd.lotus-freelance',
350
+ 'nsf' => 'application/vnd.lotus-notes',
351
+ 'org' => 'application/vnd.lotus-organizer',
352
+ 'scm' => 'application/vnd.lotus-screencam',
353
+ 'lwp' => 'application/vnd.lotus-wordpro',
354
+ 'portpkg' => 'application/vnd.macports.portpkg',
355
+ 'mcd' => 'application/vnd.mcd',
356
+ 'mc1' => 'application/vnd.medcalcdata',
357
+ 'cdkey' => 'application/vnd.mediastation.cdkey',
358
+ 'mwf' => 'application/vnd.mfer',
359
+ 'mfm' => 'application/vnd.mfmp',
360
+ 'flo' => 'application/vnd.micrografx.flo',
361
+ 'igx' => 'application/vnd.micrografx.igx',
362
+ 'mif' => 'application/vnd.mif',
363
+ 'daf' => 'application/vnd.mobius.daf',
364
+ 'dis' => 'application/vnd.mobius.dis',
365
+ 'mbk' => 'application/vnd.mobius.mbk',
366
+ 'mqy' => 'application/vnd.mobius.mqy',
367
+ 'msl' => 'application/vnd.mobius.msl',
368
+ 'plc' => 'application/vnd.mobius.plc',
369
+ 'txf' => 'application/vnd.mobius.txf',
370
+ 'mpn' => 'application/vnd.mophun.application',
371
+ 'mpc' => 'application/vnd.mophun.certificate',
372
+ 'xul' => 'application/vnd.mozilla.xul+xml',
373
+ 'cil' => 'application/vnd.ms-artgalry',
374
+ 'cab' => 'application/vnd.ms-cab-compressed',
375
+ 'xls' => 'application/vnd.ms-excel',
376
+ 'xlm' => 'application/vnd.ms-excel',
377
+ 'xla' => 'application/vnd.ms-excel',
378
+ 'xlc' => 'application/vnd.ms-excel',
379
+ 'xlt' => 'application/vnd.ms-excel',
380
+ 'xlw' => 'application/vnd.ms-excel',
381
+ 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12',
382
+ 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
383
+ 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12',
384
+ 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12',
385
+ 'eot' => 'application/vnd.ms-fontobject',
386
+ 'chm' => 'application/vnd.ms-htmlhelp',
387
+ 'ims' => 'application/vnd.ms-ims',
388
+ 'lrm' => 'application/vnd.ms-lrm',
389
+ 'thmx' => 'application/vnd.ms-officetheme',
390
+ 'cat' => 'application/vnd.ms-pki.seccat',
391
+ 'stl' => 'application/vnd.ms-pki.stl',
392
+ 'ppt' => 'application/vnd.ms-powerpoint',
393
+ 'pps' => 'application/vnd.ms-powerpoint',
394
+ 'pot' => 'application/vnd.ms-powerpoint',
395
+ 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12',
396
+ 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
397
+ 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',
398
+ 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
399
+ 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12',
400
+ 'mpp' => 'application/vnd.ms-project',
401
+ 'mpt' => 'application/vnd.ms-project',
402
+ 'docm' => 'application/vnd.ms-word.document.macroenabled.12',
403
+ 'dotm' => 'application/vnd.ms-word.template.macroenabled.12',
404
+ 'wps' => 'application/vnd.ms-works',
405
+ 'wks' => 'application/vnd.ms-works',
406
+ 'wcm' => 'application/vnd.ms-works',
407
+ 'wdb' => 'application/vnd.ms-works',
408
+ 'wpl' => 'application/vnd.ms-wpl',
409
+ 'xps' => 'application/vnd.ms-xpsdocument',
410
+ 'mseq' => 'application/vnd.mseq',
411
+ 'mus' => 'application/vnd.musician',
412
+ 'msty' => 'application/vnd.muvee.style',
413
+ 'taglet' => 'application/vnd.mynfc',
414
+ 'nlu' => 'application/vnd.neurolanguage.nlu',
415
+ 'ntf' => 'application/vnd.nitf',
416
+ 'nitf' => 'application/vnd.nitf',
417
+ 'nnd' => 'application/vnd.noblenet-directory',
418
+ 'nns' => 'application/vnd.noblenet-sealer',
419
+ 'nnw' => 'application/vnd.noblenet-web',
420
+ 'ngdat' => 'application/vnd.nokia.n-gage.data',
421
+ 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',
422
+ 'rpst' => 'application/vnd.nokia.radio-preset',
423
+ 'rpss' => 'application/vnd.nokia.radio-presets',
424
+ 'edm' => 'application/vnd.novadigm.edm',
425
+ 'edx' => 'application/vnd.novadigm.edx',
426
+ 'ext' => 'application/vnd.novadigm.ext',
427
+ 'odc' => 'application/vnd.oasis.opendocument.chart',
428
+ 'otc' => 'application/vnd.oasis.opendocument.chart-template',
429
+ 'odb' => 'application/vnd.oasis.opendocument.database',
430
+ 'odf' => 'application/vnd.oasis.opendocument.formula',
431
+ 'odft' => 'application/vnd.oasis.opendocument.formula-template',
432
+ 'odg' => 'application/vnd.oasis.opendocument.graphics',
433
+ 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
434
+ 'odi' => 'application/vnd.oasis.opendocument.image',
435
+ 'oti' => 'application/vnd.oasis.opendocument.image-template',
436
+ 'odp' => 'application/vnd.oasis.opendocument.presentation',
437
+ 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
438
+ 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
439
+ 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
440
+ 'odt' => 'application/vnd.oasis.opendocument.text',
441
+ 'odm' => 'application/vnd.oasis.opendocument.text-master',
442
+ 'ott' => 'application/vnd.oasis.opendocument.text-template',
443
+ 'oth' => 'application/vnd.oasis.opendocument.text-web',
444
+ 'xo' => 'application/vnd.olpc-sugar',
445
+ 'dd2' => 'application/vnd.oma.dd2+xml',
446
+ 'oxt' => 'application/vnd.openofficeorg.extension',
447
+ 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
448
+ 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
449
+ 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
450
+ 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
451
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
452
+ 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
453
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
454
+ 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
455
+ 'mgp' => 'application/vnd.osgeo.mapguide.package',
456
+ 'dp' => 'application/vnd.osgi.dp',
457
+ 'esa' => 'application/vnd.osgi.subsystem',
458
+ 'pdb' => 'application/vnd.palm',
459
+ 'pqa' => 'application/vnd.palm',
460
+ 'oprc' => 'application/vnd.palm',
461
+ 'paw' => 'application/vnd.pawaafile',
462
+ 'str' => 'application/vnd.pg.format',
463
+ 'ei6' => 'application/vnd.pg.osasli',
464
+ 'efif' => 'application/vnd.picsel',
465
+ 'wg' => 'application/vnd.pmi.widget',
466
+ 'plf' => 'application/vnd.pocketlearn',
467
+ 'pbd' => 'application/vnd.powerbuilder6',
468
+ 'box' => 'application/vnd.previewsystems.box',
469
+ 'mgz' => 'application/vnd.proteus.magazine',
470
+ 'qps' => 'application/vnd.publishare-delta-tree',
471
+ 'ptid' => 'application/vnd.pvi.ptid1',
472
+ 'qxd' => 'application/vnd.quark.quarkxpress',
473
+ 'qxt' => 'application/vnd.quark.quarkxpress',
474
+ 'qwd' => 'application/vnd.quark.quarkxpress',
475
+ 'qwt' => 'application/vnd.quark.quarkxpress',
476
+ 'qxl' => 'application/vnd.quark.quarkxpress',
477
+ 'qxb' => 'application/vnd.quark.quarkxpress',
478
+ 'bed' => 'application/vnd.realvnc.bed',
479
+ 'mxl' => 'application/vnd.recordare.musicxml',
480
+ 'musicxml' => 'application/vnd.recordare.musicxml+xml',
481
+ 'cryptonote' => 'application/vnd.rig.cryptonote',
482
+ 'cod' => 'application/vnd.rim.cod',
483
+ 'rm' => 'application/vnd.rn-realmedia',
484
+ 'rmvb' => 'application/vnd.rn-realmedia-vbr',
485
+ 'link66' => 'application/vnd.route66.link66+xml',
486
+ 'st' => 'application/vnd.sailingtracker.track',
487
+ 'see' => 'application/vnd.seemail',
488
+ 'sema' => 'application/vnd.sema',
489
+ 'semd' => 'application/vnd.semd',
490
+ 'semf' => 'application/vnd.semf',
491
+ 'ifm' => 'application/vnd.shana.informed.formdata',
492
+ 'itp' => 'application/vnd.shana.informed.formtemplate',
493
+ 'iif' => 'application/vnd.shana.informed.interchange',
494
+ 'ipk' => 'application/vnd.shana.informed.package',
495
+ 'twd' => 'application/vnd.simtech-mindmapper',
496
+ 'twds' => 'application/vnd.simtech-mindmapper',
497
+ 'mmf' => 'application/vnd.smaf',
498
+ 'teacher' => 'application/vnd.smart.teacher',
499
+ 'sdkm' => 'application/vnd.solent.sdkm+xml',
500
+ 'sdkd' => 'application/vnd.solent.sdkm+xml',
501
+ 'dxp' => 'application/vnd.spotfire.dxp',
502
+ 'sfs' => 'application/vnd.spotfire.sfs',
503
+ 'sdc' => 'application/vnd.stardivision.calc',
504
+ 'sda' => 'application/vnd.stardivision.draw',
505
+ 'sdd' => 'application/vnd.stardivision.impress',
506
+ 'smf' => 'application/vnd.stardivision.math',
507
+ 'sdw' => 'application/vnd.stardivision.writer',
508
+ 'vor' => 'application/vnd.stardivision.writer',
509
+ 'sgl' => 'application/vnd.stardivision.writer-global',
510
+ 'smzip' => 'application/vnd.stepmania.package',
511
+ 'sm' => 'application/vnd.stepmania.stepchart',
512
+ 'sxc' => 'application/vnd.sun.xml.calc',
513
+ 'stc' => 'application/vnd.sun.xml.calc.template',
514
+ 'sxd' => 'application/vnd.sun.xml.draw',
515
+ 'std' => 'application/vnd.sun.xml.draw.template',
516
+ 'sxi' => 'application/vnd.sun.xml.impress',
517
+ 'sti' => 'application/vnd.sun.xml.impress.template',
518
+ 'sxm' => 'application/vnd.sun.xml.math',
519
+ 'sxw' => 'application/vnd.sun.xml.writer',
520
+ 'sxg' => 'application/vnd.sun.xml.writer.global',
521
+ 'stw' => 'application/vnd.sun.xml.writer.template',
522
+ 'sus' => 'application/vnd.sus-calendar',
523
+ 'susp' => 'application/vnd.sus-calendar',
524
+ 'svd' => 'application/vnd.svd',
525
+ 'sis' => 'application/vnd.symbian.install',
526
+ 'sisx' => 'application/vnd.symbian.install',
527
+ 'xsm' => 'application/vnd.syncml+xml',
528
+ 'bdm' => 'application/vnd.syncml.dm+wbxml',
529
+ 'xdm' => 'application/vnd.syncml.dm+xml',
530
+ 'tao' => 'application/vnd.tao.intent-module-archive',
531
+ 'pcap' => 'application/vnd.tcpdump.pcap',
532
+ 'cap' => 'application/vnd.tcpdump.pcap',
533
+ 'dmp' => 'application/vnd.tcpdump.pcap',
534
+ 'tmo' => 'application/vnd.tmobile-livetv',
535
+ 'tpt' => 'application/vnd.trid.tpt',
536
+ 'mxs' => 'application/vnd.triscape.mxs',
537
+ 'tra' => 'application/vnd.trueapp',
538
+ 'ufd' => 'application/vnd.ufdl',
539
+ 'ufdl' => 'application/vnd.ufdl',
540
+ 'utz' => 'application/vnd.uiq.theme',
541
+ 'umj' => 'application/vnd.umajin',
542
+ 'unityweb' => 'application/vnd.unity',
543
+ 'uoml' => 'application/vnd.uoml+xml',
544
+ 'vcx' => 'application/vnd.vcx',
545
+ 'vsd' => 'application/vnd.visio',
546
+ 'vst' => 'application/vnd.visio',
547
+ 'vss' => 'application/vnd.visio',
548
+ 'vsw' => 'application/vnd.visio',
549
+ 'vis' => 'application/vnd.visionary',
550
+ 'vsf' => 'application/vnd.vsf',
551
+ 'wbxml' => 'application/vnd.wap.wbxml',
552
+ 'wmlc' => 'application/vnd.wap.wmlc',
553
+ 'wmlsc' => 'application/vnd.wap.wmlscriptc',
554
+ 'wtb' => 'application/vnd.webturbo',
555
+ 'nbp' => 'application/vnd.wolfram.player',
556
+ 'wpd' => 'application/vnd.wordperfect',
557
+ 'wqd' => 'application/vnd.wqd',
558
+ 'stf' => 'application/vnd.wt.stf',
559
+ 'xar' => 'application/vnd.xara',
560
+ 'xfdl' => 'application/vnd.xfdl',
561
+ 'hvd' => 'application/vnd.yamaha.hv-dic',
562
+ 'hvs' => 'application/vnd.yamaha.hv-script',
563
+ 'hvp' => 'application/vnd.yamaha.hv-voice',
564
+ 'osf' => 'application/vnd.yamaha.openscoreformat',
565
+ 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
566
+ 'saf' => 'application/vnd.yamaha.smaf-audio',
567
+ 'spf' => 'application/vnd.yamaha.smaf-phrase',
568
+ 'cmp' => 'application/vnd.yellowriver-custom-menu',
569
+ 'zir' => 'application/vnd.zul',
570
+ 'zirz' => 'application/vnd.zul',
571
+ 'zaz' => 'application/vnd.zzazz.deck+xml',
572
+ 'vxml' => 'application/voicexml+xml',
573
+ 'wgt' => 'application/widget',
574
+ 'hlp' => 'application/winhlp',
575
+ 'wsdl' => 'application/wsdl+xml',
576
+ 'wspolicy' => 'application/wspolicy+xml',
577
+ '7z' => 'application/x-7z-compressed',
578
+ 'abw' => 'application/x-abiword',
579
+ 'ace' => 'application/x-ace-compressed',
580
+ 'dmg' => 'application/x-apple-diskimage',
581
+ 'aab' => 'application/x-authorware-bin',
582
+ 'x32' => 'application/x-authorware-bin',
583
+ 'u32' => 'application/x-authorware-bin',
584
+ 'vox' => 'application/x-authorware-bin',
585
+ 'aam' => 'application/x-authorware-map',
586
+ 'aas' => 'application/x-authorware-seg',
587
+ 'bcpio' => 'application/x-bcpio',
588
+ 'torrent' => 'application/x-bittorrent',
589
+ 'blb' => 'application/x-blorb',
590
+ 'blorb' => 'application/x-blorb',
591
+ 'bz' => 'application/x-bzip',
592
+ 'bz2' => 'application/x-bzip2',
593
+ 'boz' => 'application/x-bzip2',
594
+ 'cbr' => 'application/x-cbr',
595
+ 'cba' => 'application/x-cbr',
596
+ 'cbt' => 'application/x-cbr',
597
+ 'cbz' => 'application/x-cbr',
598
+ 'cb7' => 'application/x-cbr',
599
+ 'vcd' => 'application/x-cdlink',
600
+ 'cfs' => 'application/x-cfs-compressed',
601
+ 'chat' => 'application/x-chat',
602
+ 'pgn' => 'application/x-chess-pgn',
603
+ 'nsc' => 'application/x-conference',
604
+ 'cpio' => 'application/x-cpio',
605
+ 'csh' => 'application/x-csh',
606
+ 'deb' => 'application/x-debian-package',
607
+ 'udeb' => 'application/x-debian-package',
608
+ 'dgc' => 'application/x-dgc-compressed',
609
+ 'dir' => 'application/x-director',
610
+ 'dcr' => 'application/x-director',
611
+ 'dxr' => 'application/x-director',
612
+ 'cst' => 'application/x-director',
613
+ 'cct' => 'application/x-director',
614
+ 'cxt' => 'application/x-director',
615
+ 'w3d' => 'application/x-director',
616
+ 'fgd' => 'application/x-director',
617
+ 'swa' => 'application/x-director',
618
+ 'wad' => 'application/x-doom',
619
+ 'ncx' => 'application/x-dtbncx+xml',
620
+ 'dtb' => 'application/x-dtbook+xml',
621
+ 'res' => 'application/x-dtbresource+xml',
622
+ 'dvi' => 'application/x-dvi',
623
+ 'evy' => 'application/x-envoy',
624
+ 'eva' => 'application/x-eva',
625
+ 'bdf' => 'application/x-font-bdf',
626
+ 'gsf' => 'application/x-font-ghostscript',
627
+ 'psf' => 'application/x-font-linux-psf',
628
+ 'otf' => 'application/x-font-otf',
629
+ 'pcf' => 'application/x-font-pcf',
630
+ 'snf' => 'application/x-font-snf',
631
+ 'ttf' => 'application/x-font-ttf',
632
+ 'ttc' => 'application/x-font-ttf',
633
+ 'pfa' => 'application/x-font-type1',
634
+ 'pfb' => 'application/x-font-type1',
635
+ 'pfm' => 'application/x-font-type1',
636
+ 'afm' => 'application/x-font-type1',
637
+ 'arc' => 'application/x-freearc',
638
+ 'spl' => 'application/x-futuresplash',
639
+ 'gca' => 'application/x-gca-compressed',
640
+ 'ulx' => 'application/x-glulx',
641
+ 'gnumeric' => 'application/x-gnumeric',
642
+ 'gramps' => 'application/x-gramps-xml',
643
+ 'gtar' => 'application/x-gtar',
644
+ 'hdf' => 'application/x-hdf',
645
+ 'install' => 'application/x-install-instructions',
646
+ 'iso' => 'application/x-iso9660-image',
647
+ 'jnlp' => 'application/x-java-jnlp-file',
648
+ 'latex' => 'application/x-latex',
649
+ 'lzh' => 'application/x-lzh-compressed',
650
+ 'lha' => 'application/x-lzh-compressed',
651
+ 'mie' => 'application/x-mie',
652
+ 'prc' => 'application/x-mobipocket-ebook',
653
+ 'mobi' => 'application/x-mobipocket-ebook',
654
+ 'application' => 'application/x-ms-application',
655
+ 'lnk' => 'application/x-ms-shortcut',
656
+ 'wmd' => 'application/x-ms-wmd',
657
+ 'xbap' => 'application/x-ms-xbap',
658
+ 'mdb' => 'application/x-msaccess',
659
+ 'obd' => 'application/x-msbinder',
660
+ 'crd' => 'application/x-mscardfile',
661
+ 'clp' => 'application/x-msclip',
662
+ 'exe' => 'application/x-msdownload',
663
+ 'dll' => 'application/x-msdownload',
664
+ 'com' => 'application/x-msdownload',
665
+ 'bat' => 'application/x-msdownload',
666
+ 'msi' => 'application/x-msdownload',
667
+ 'mvb' => 'application/x-msmediaview',
668
+ 'm13' => 'application/x-msmediaview',
669
+ 'm14' => 'application/x-msmediaview',
670
+ 'wmf' => 'application/x-msmetafile',
671
+ 'wmz' => 'application/x-msmetafile',
672
+ 'emf' => 'application/x-msmetafile',
673
+ 'emz' => 'application/x-msmetafile',
674
+ 'mny' => 'application/x-msmoney',
675
+ 'pub' => 'application/x-mspublisher',
676
+ 'scd' => 'application/x-msschedule',
677
+ 'trm' => 'application/x-msterminal',
678
+ 'wri' => 'application/x-mswrite',
679
+ 'nc' => 'application/x-netcdf',
680
+ 'cdf' => 'application/x-netcdf',
681
+ 'nzb' => 'application/x-nzb',
682
+ 'p12' => 'application/x-pkcs12',
683
+ 'pfx' => 'application/x-pkcs12',
684
+ 'p7b' => 'application/x-pkcs7-certificates',
685
+ 'spc' => 'application/x-pkcs7-certificates',
686
+ 'p7r' => 'application/x-pkcs7-certreqresp',
687
+ 'rar' => 'application/x-rar-compressed',
688
+ 'ris' => 'application/x-research-info-systems',
689
+ 'sh' => 'application/x-sh',
690
+ 'shar' => 'application/x-shar',
691
+ 'swf' => 'application/x-shockwave-flash',
692
+ 'xap' => 'application/x-silverlight-app',
693
+ 'sql' => 'application/x-sql',
694
+ 'sit' => 'application/x-stuffit',
695
+ 'sitx' => 'application/x-stuffitx',
696
+ 'srt' => 'application/x-subrip',
697
+ 'sv4cpio' => 'application/x-sv4cpio',
698
+ 'sv4crc' => 'application/x-sv4crc',
699
+ 't3' => 'application/x-t3vm-image',
700
+ 'gam' => 'application/x-tads',
701
+ 'tar' => 'application/x-tar',
702
+ 'tcl' => 'application/x-tcl',
703
+ 'tex' => 'application/x-tex',
704
+ 'tfm' => 'application/x-tex-tfm',
705
+ 'texinfo' => 'application/x-texinfo',
706
+ 'texi' => 'application/x-texinfo',
707
+ 'obj' => 'application/x-tgif',
708
+ 'ustar' => 'application/x-ustar',
709
+ 'src' => 'application/x-wais-source',
710
+ 'der' => 'application/x-x509-ca-cert',
711
+ 'crt' => 'application/x-x509-ca-cert',
712
+ 'fig' => 'application/x-xfig',
713
+ 'xlf' => 'application/x-xliff+xml',
714
+ 'xpi' => 'application/x-xpinstall',
715
+ 'xz' => 'application/x-xz',
716
+ 'z1' => 'application/x-zmachine',
717
+ 'z2' => 'application/x-zmachine',
718
+ 'z3' => 'application/x-zmachine',
719
+ 'z4' => 'application/x-zmachine',
720
+ 'z5' => 'application/x-zmachine',
721
+ 'z6' => 'application/x-zmachine',
722
+ 'z7' => 'application/x-zmachine',
723
+ 'z8' => 'application/x-zmachine',
724
+ 'xaml' => 'application/xaml+xml',
725
+ 'xdf' => 'application/xcap-diff+xml',
726
+ 'xenc' => 'application/xenc+xml',
727
+ 'xhtml' => 'application/xhtml+xml',
728
+ 'xht' => 'application/xhtml+xml',
729
+ 'xml' => 'application/xml',
730
+ 'xsl' => 'application/xml',
731
+ 'dtd' => 'application/xml-dtd',
732
+ 'xop' => 'application/xop+xml',
733
+ 'xpl' => 'application/xproc+xml',
734
+ 'xslt' => 'application/xslt+xml',
735
+ 'xspf' => 'application/xspf+xml',
736
+ 'mxml' => 'application/xv+xml',
737
+ 'xhvml' => 'application/xv+xml',
738
+ 'xvml' => 'application/xv+xml',
739
+ 'xvm' => 'application/xv+xml',
740
+ 'yang' => 'application/yang',
741
+ 'yin' => 'application/yin+xml',
742
+ 'zip' => 'application/zip',
743
+ 'adp' => 'audio/adpcm',
744
+ 'au' => 'audio/basic',
745
+ 'snd' => 'audio/basic',
746
+ 'mid' => 'audio/midi',
747
+ 'midi' => 'audio/midi',
748
+ 'kar' => 'audio/midi',
749
+ 'rmi' => 'audio/midi',
750
+ 'm4a' => 'audio/mp4',
751
+ 'mp4a' => 'audio/mp4',
752
+ 'mpga' => 'audio/mpeg',
753
+ 'mp2' => 'audio/mpeg',
754
+ 'mp2a' => 'audio/mpeg',
755
+ 'mp3' => 'audio/mpeg',
756
+ 'm2a' => 'audio/mpeg',
757
+ 'm3a' => 'audio/mpeg',
758
+ 'oga' => 'audio/ogg',
759
+ 'ogg' => 'audio/ogg',
760
+ 'spx' => 'audio/ogg',
761
+ 's3m' => 'audio/s3m',
762
+ 'sil' => 'audio/silk',
763
+ 'uva' => 'audio/vnd.dece.audio',
764
+ 'uvva' => 'audio/vnd.dece.audio',
765
+ 'eol' => 'audio/vnd.digital-winds',
766
+ 'dra' => 'audio/vnd.dra',
767
+ 'dts' => 'audio/vnd.dts',
768
+ 'dtshd' => 'audio/vnd.dts.hd',
769
+ 'lvp' => 'audio/vnd.lucent.voice',
770
+ 'pya' => 'audio/vnd.ms-playready.media.pya',
771
+ 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',
772
+ 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',
773
+ 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',
774
+ 'rip' => 'audio/vnd.rip',
775
+ 'weba' => 'audio/webm',
776
+ 'aac' => 'audio/x-aac',
777
+ 'aif' => 'audio/x-aiff',
778
+ 'aiff' => 'audio/x-aiff',
779
+ 'aifc' => 'audio/x-aiff',
780
+ 'caf' => 'audio/x-caf',
781
+ 'flac' => 'audio/x-flac',
782
+ 'mka' => 'audio/x-matroska',
783
+ 'm3u' => 'audio/x-mpegurl',
784
+ 'wax' => 'audio/x-ms-wax',
785
+ 'wma' => 'audio/x-ms-wma',
786
+ 'ram' => 'audio/x-pn-realaudio',
787
+ 'ra' => 'audio/x-pn-realaudio',
788
+ 'rmp' => 'audio/x-pn-realaudio-plugin',
789
+ 'wav' => 'audio/x-wav',
790
+ 'xm' => 'audio/xm',
791
+ 'cdx' => 'chemical/x-cdx',
792
+ 'cif' => 'chemical/x-cif',
793
+ 'cmdf' => 'chemical/x-cmdf',
794
+ 'cml' => 'chemical/x-cml',
795
+ 'csml' => 'chemical/x-csml',
796
+ 'xyz' => 'chemical/x-xyz',
797
+ 'bmp' => 'image/bmp',
798
+ 'cgm' => 'image/cgm',
799
+ 'g3' => 'image/g3fax',
800
+ 'gif' => 'image/gif',
801
+ 'ief' => 'image/ief',
802
+ 'jpeg' => 'image/jpeg',
803
+ 'jpg' => 'image/jpeg',
804
+ 'jpe' => 'image/jpeg',
805
+ 'ktx' => 'image/ktx',
806
+ 'png' => 'image/png',
807
+ 'btif' => 'image/prs.btif',
808
+ 'sgi' => 'image/sgi',
809
+ 'svg' => 'image/svg+xml',
810
+ 'svgz' => 'image/svg+xml',
811
+ 'tiff' => 'image/tiff',
812
+ 'tif' => 'image/tiff',
813
+ 'psd' => 'image/vnd.adobe.photoshop',
814
+ 'uvi' => 'image/vnd.dece.graphic',
815
+ 'uvvi' => 'image/vnd.dece.graphic',
816
+ 'uvg' => 'image/vnd.dece.graphic',
817
+ 'uvvg' => 'image/vnd.dece.graphic',
818
+ 'djvu' => 'image/vnd.djvu',
819
+ 'djv' => 'image/vnd.djvu',
820
+ 'dwg' => 'image/vnd.dwg',
821
+ 'dxf' => 'image/vnd.dxf',
822
+ 'fbs' => 'image/vnd.fastbidsheet',
823
+ 'fpx' => 'image/vnd.fpx',
824
+ 'fst' => 'image/vnd.fst',
825
+ 'mmr' => 'image/vnd.fujixerox.edmics-mmr',
826
+ 'rlc' => 'image/vnd.fujixerox.edmics-rlc',
827
+ 'mdi' => 'image/vnd.ms-modi',
828
+ 'wdp' => 'image/vnd.ms-photo',
829
+ 'npx' => 'image/vnd.net-fpx',
830
+ 'wbmp' => 'image/vnd.wap.wbmp',
831
+ 'xif' => 'image/vnd.xiff',
832
+ 'webp' => 'image/webp',
833
+ '3ds' => 'image/x-3ds',
834
+ 'ras' => 'image/x-cmu-raster',
835
+ 'cmx' => 'image/x-cmx',
836
+ 'fh' => 'image/x-freehand',
837
+ 'fhc' => 'image/x-freehand',
838
+ 'fh4' => 'image/x-freehand',
839
+ 'fh5' => 'image/x-freehand',
840
+ 'fh7' => 'image/x-freehand',
841
+ 'ico' => 'image/x-icon',
842
+ 'sid' => 'image/x-mrsid-image',
843
+ 'pcx' => 'image/x-pcx',
844
+ 'pic' => 'image/x-pict',
845
+ 'pct' => 'image/x-pict',
846
+ 'pnm' => 'image/x-portable-anymap',
847
+ 'pbm' => 'image/x-portable-bitmap',
848
+ 'pgm' => 'image/x-portable-graymap',
849
+ 'ppm' => 'image/x-portable-pixmap',
850
+ 'rgb' => 'image/x-rgb',
851
+ 'tga' => 'image/x-tga',
852
+ 'xbm' => 'image/x-xbitmap',
853
+ 'xpm' => 'image/x-xpixmap',
854
+ 'xwd' => 'image/x-xwindowdump',
855
+ 'eml' => 'message/rfc822',
856
+ 'mime' => 'message/rfc822',
857
+ 'igs' => 'model/iges',
858
+ 'iges' => 'model/iges',
859
+ 'msh' => 'model/mesh',
860
+ 'mesh' => 'model/mesh',
861
+ 'silo' => 'model/mesh',
862
+ 'dae' => 'model/vnd.collada+xml',
863
+ 'dwf' => 'model/vnd.dwf',
864
+ 'gdl' => 'model/vnd.gdl',
865
+ 'gtw' => 'model/vnd.gtw',
866
+ 'mts' => 'model/vnd.mts',
867
+ 'vtu' => 'model/vnd.vtu',
868
+ 'wrl' => 'model/vrml',
869
+ 'vrml' => 'model/vrml',
870
+ 'x3db' => 'model/x3d+binary',
871
+ 'x3dbz' => 'model/x3d+binary',
872
+ 'x3dv' => 'model/x3d+vrml',
873
+ 'x3dvz' => 'model/x3d+vrml',
874
+ 'x3d' => 'model/x3d+xml',
875
+ 'x3dz' => 'model/x3d+xml',
876
+ 'appcache' => 'text/cache-manifest',
877
+ 'ics' => 'text/calendar',
878
+ 'ifb' => 'text/calendar',
879
+ 'css' => 'text/css',
880
+ 'csv' => 'text/csv',
881
+ 'html' => 'text/html',
882
+ 'htm' => 'text/html',
883
+ 'n3' => 'text/n3',
884
+ 'txt' => 'text/plain',
885
+ 'text' => 'text/plain',
886
+ 'conf' => 'text/plain',
887
+ 'def' => 'text/plain',
888
+ 'list' => 'text/plain',
889
+ 'log' => 'text/plain',
890
+ 'in' => 'text/plain',
891
+ 'dsc' => 'text/prs.lines.tag',
892
+ 'rtx' => 'text/richtext',
893
+ 'sgml' => 'text/sgml',
894
+ 'sgm' => 'text/sgml',
895
+ 'tsv' => 'text/tab-separated-values',
896
+ 't' => 'text/troff',
897
+ 'tr' => 'text/troff',
898
+ 'roff' => 'text/troff',
899
+ 'man' => 'text/troff',
900
+ 'me' => 'text/troff',
901
+ 'ms' => 'text/troff',
902
+ 'ttl' => 'text/turtle',
903
+ 'uri' => 'text/uri-list',
904
+ 'uris' => 'text/uri-list',
905
+ 'urls' => 'text/uri-list',
906
+ 'vcard' => 'text/vcard',
907
+ 'curl' => 'text/vnd.curl',
908
+ 'dcurl' => 'text/vnd.curl.dcurl',
909
+ 'mcurl' => 'text/vnd.curl.mcurl',
910
+ 'scurl' => 'text/vnd.curl.scurl',
911
+ 'sub' => 'text/vnd.dvb.subtitle',
912
+ 'fly' => 'text/vnd.fly',
913
+ 'flx' => 'text/vnd.fmi.flexstor',
914
+ 'gv' => 'text/vnd.graphviz',
915
+ '3dml' => 'text/vnd.in3d.3dml',
916
+ 'spot' => 'text/vnd.in3d.spot',
917
+ 'jad' => 'text/vnd.sun.j2me.app-descriptor',
918
+ 'wml' => 'text/vnd.wap.wml',
919
+ 'wmls' => 'text/vnd.wap.wmlscript',
920
+ 's' => 'text/x-asm',
921
+ 'asm' => 'text/x-asm',
922
+ 'c' => 'text/x-c',
923
+ 'cc' => 'text/x-c',
924
+ 'cxx' => 'text/x-c',
925
+ 'cpp' => 'text/x-c',
926
+ 'h' => 'text/x-c',
927
+ 'hh' => 'text/x-c',
928
+ 'dic' => 'text/x-c',
929
+ 'f' => 'text/x-fortran',
930
+ 'for' => 'text/x-fortran',
931
+ 'f77' => 'text/x-fortran',
932
+ 'f90' => 'text/x-fortran',
933
+ 'java' => 'text/x-java-source',
934
+ 'nfo' => 'text/x-nfo',
935
+ 'opml' => 'text/x-opml',
936
+ 'p' => 'text/x-pascal',
937
+ 'pas' => 'text/x-pascal',
938
+ 'etx' => 'text/x-setext',
939
+ 'sfv' => 'text/x-sfv',
940
+ 'uu' => 'text/x-uuencode',
941
+ 'vcs' => 'text/x-vcalendar',
942
+ 'vcf' => 'text/x-vcard',
943
+ '3gp' => 'video/3gpp',
944
+ '3g2' => 'video/3gpp2',
945
+ 'h261' => 'video/h261',
946
+ 'h263' => 'video/h263',
947
+ 'h264' => 'video/h264',
948
+ 'jpgv' => 'video/jpeg',
949
+ 'jpm' => 'video/jpm',
950
+ 'jpgm' => 'video/jpm',
951
+ 'mj2' => 'video/mj2',
952
+ 'mjp2' => 'video/mj2',
953
+ 'mp4' => 'video/mp4',
954
+ 'mp4v' => 'video/mp4',
955
+ 'mpg4' => 'video/mp4',
956
+ 'mpeg' => 'video/mpeg',
957
+ 'mpg' => 'video/mpeg',
958
+ 'mpe' => 'video/mpeg',
959
+ 'm1v' => 'video/mpeg',
960
+ 'm2v' => 'video/mpeg',
961
+ 'ogv' => 'video/ogg',
962
+ 'qt' => 'video/quicktime',
963
+ 'mov' => 'video/quicktime',
964
+ 'uvh' => 'video/vnd.dece.hd',
965
+ 'uvvh' => 'video/vnd.dece.hd',
966
+ 'uvm' => 'video/vnd.dece.mobile',
967
+ 'uvvm' => 'video/vnd.dece.mobile',
968
+ 'uvp' => 'video/vnd.dece.pd',
969
+ 'uvvp' => 'video/vnd.dece.pd',
970
+ 'uvs' => 'video/vnd.dece.sd',
971
+ 'uvvs' => 'video/vnd.dece.sd',
972
+ 'uvv' => 'video/vnd.dece.video',
973
+ 'uvvv' => 'video/vnd.dece.video',
974
+ 'dvb' => 'video/vnd.dvb.file',
975
+ 'fvt' => 'video/vnd.fvt',
976
+ 'mxu' => 'video/vnd.mpegurl',
977
+ 'm4u' => 'video/vnd.mpegurl',
978
+ 'pyv' => 'video/vnd.ms-playready.media.pyv',
979
+ 'uvu' => 'video/vnd.uvvu.mp4',
980
+ 'uvvu' => 'video/vnd.uvvu.mp4',
981
+ 'viv' => 'video/vnd.vivo',
982
+ 'webm' => 'video/webm',
983
+ 'f4v' => 'video/x-f4v',
984
+ 'fli' => 'video/x-fli',
985
+ 'flv' => 'video/x-flv',
986
+ 'm4v' => 'video/x-m4v',
987
+ 'mkv' => 'video/x-matroska',
988
+ 'mk3d' => 'video/x-matroska',
989
+ 'mks' => 'video/x-matroska',
990
+ 'mng' => 'video/x-mng',
991
+ 'asf' => 'video/x-ms-asf',
992
+ 'asx' => 'video/x-ms-asf',
993
+ 'vob' => 'video/x-ms-vob',
994
+ 'wm' => 'video/x-ms-wm',
995
+ 'wmv' => 'video/x-ms-wmv',
996
+ 'wmx' => 'video/x-ms-wmx',
997
+ 'wvx' => 'video/x-ms-wvx',
998
+ 'avi' => 'video/x-msvideo',
999
+ 'movie' => 'video/x-sgi-movie',
1000
+ 'smv' => 'video/x-smv',
1001
+ 'ice' => 'x-conference/x-cooltalk'
1002
+ }
1003
+ end
1004
+ end
1005
+ end