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