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