While working on a tool for extracting images from a webpage, I was surprised that HTML elements, like <a>, <img>, <svg>, <picture>, <iframe>, <object> may point to an image using data URL.

The idea is to have data inline, instead of hosting somewhere on external storage. Here is an example of embedding image directly into HTML element:

<img
   src="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw
   AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz
   ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp
   a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl
   ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis
   F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH
   hhx4dbgYKAAA7"
   alt="Larry">

The Data URL consist of two components: content type and/or parameters and actual data. The content type represent what is encoded and parameters tells additional attributes of encoded data.

Parsing data URL’s is pretty straightforward and here is sample implementation in Golang:

// DataURI represents the parsed "data" URL
type DataURI struct {
	Type     string
	Subtype  string
	Params   map[string]string
	IsBase64 bool
	Data     string
}

// IsDataURL return whether the URL is "data" URL
func IsDataURL(url string) bool {
	return strings.HasPrefix(url, "data:")
}

// ParseDataURL parse the "data" URL into components.
func ParseDataURL(url string) (DataURI, error) {
	const (
		dataURIPrefix   = "data:"
		defaultType     = "text"
		defaultSubType  = "plain"
		defaultParam    = "charset=US-ASCII"
		base64Indicator = "base64"
	)

	if !IsDataURL(url) {
		return DataURI{}, errors.New("Input URL is not correct Data URL")
	}

	data := url[len(dataURIPrefix):]
	if !strings.Contains(data, ",") {
		return DataURI{}, errors.New("Data not found in Data URI")
	}
	// split propeties and actual encoded data
	comp := strings.SplitN(data, ",", 2)
	properties, encodedData := comp[0], comp[1]

	var result DataURI = DataURI{Data: encodedData,
		Params: make(map[string]string)}
	for i, prop := range strings.Split(properties, ";") {
		if i == 0 {
			if strings.Contains(prop, "/") {
				appType := strings.SplitN(prop, "/", 2)
				result.Type, result.Subtype = appType[0], appType[1]
			} else {
				params := strings.Split(defaultParam, "=")
				result.Type, result.Subtype = defaultType, defaultSubType
				result.Params[params[0]] = params[1]
			}
		} else {
			if prop == base64Indicator {
				result.IsBase64 = true
			} else {
				// ignore if not valid properties assignment
				if strings.Contains(prop, "=") {
					propComponets := strings.SplitN(prop, "=", 2)
					result.Params[propComponets[0]] = propComponets[1]
				}
			}
		}
	}

	return result, nil
}

Now let’s add some tests:

func TestIsDataURL(t *testing.T) {
	type testCase struct {
		dataURL string
		valid   bool
	}

	var testCases = []testCase{
		{"data:,A%20brief%20note", true},
		{"data:image/gif;base64,R0l", true},
		{"data,A%20brief%20note", false},
		{"data :,A%20brief%20note", false},
		{"", false},
		{" data:,", false},
	}

	for _, test := range testCases {
		if IsDataURL(test.dataURL) != test.valid {
			t.Errorf("IsDataURL('%s') != %t", test.dataURL, test.valid)
		}
	}
}

func TestParseDataURL(t *testing.T) {
	type testCase struct {
		dataURL    string
		parsedData DataURI
	}

	var testCases = []testCase{
		{"data:image/gif;base64,XXX",
			DataURI{Type: "image", Subtype: "gif", IsBase64: true,
			Data: "XXX",
				Params: make(map[string]string)}},
		{`data:,A%20brief%20note`,
			DataURI{Type: "text", Subtype: "plain", Data: `A%20brief%20note`,
				Params: map[string]string{"charset": "US-ASCII"}}},
		{`data:text/plain;charset=iso-8859-7,%be%fg%be`,
			DataURI{Type: "text", Subtype: "plain", Data: "%be%fg%be",
				Params: map[string]string{"charset": "iso-8859-7"}}},
		{`data:application/vnd-xxx-query,select_vcount,fcol_from_fieldtable/local`,
			DataURI{Type: "application", Subtype: "vnd-xxx-query",
				Data:   "select_vcount,fcol_from_fieldtable/local",
				Params: make(map[string]string)}},
		{`data:,`, DataURI{Type: "text", Subtype: "plain", Data: ``,
					Params: map[string]string{"charset": "US-ASCII"}}},
		{`data:boo/foo;,`, DataURI{Type: "boo", Subtype: "foo", Data: "",
						Params: make(map[string]string)}},
	}

	for _, test := range testCases {
		t.Run(test.dataURL, func(t *testing.T) {
			result, _ := ParseDataURL(test.dataURL)
			if !cmp.Equal(result, test.parsedData) {
				t.Errorf("ParseDataURL return different result for input: %+v", result)
			}
		})
	}
}

Another tricky part is to have MIME type converted to the actual file type extension(s). But, the good new is that, the httpd maintains mapping MIME types to file extensions and it can be easily converted to Golang map:

var MimeType2Ext = map[string][]string{
	"application/x-dtbresource+xml":                         {"res"},
	"application/xspf+xml":                                  {"xspf"},
	"model/vnd.mts":                                         {"mts"},
	"video/x-ms-wvx":                                        {"wvx"},
	"application/octet-stream":                              {"bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy"},
	"application/vnd.android.package-archive":               {"apk"},
	"application/vnd.kde.kpresenter":                        {"kpr", "kpt"},
	"application/vnd.ms-excel.sheet.binary.macroenabled.12": {"xlsb"},
	"text/x-nfo":                                            {"nfo"},
	"application/vnd.ahead.space":                           {"ahead"},
	"application/vnd.mophun.certificate":                    {"mpc"},
	"application/vnd.stepmania.package":                     {"smzip"},
	"application/vnd.uoml+xml":                              {"uoml"},
	"application/sparql-query":                              {"rq"},
	"application/vnd.oasis.opendocument.text-master":        {"odm"},
	"application/vnd.olpc-sugar":                            {"xo"},
	"chemical/x-cml":                                        {"cml"},
	"application/cdmi-object":                               {"cdmio"},
	"application/mp21":                                      {"m21", "mp21"},
	"application/oda":                                       {"oda"},
	"application/postscript":                                {"ai", "eps", "ps"},
	"model/x3d+binary":                                      {"x3db", "x3dbz"},
	"application/vnd.cloanto.rp9":                           {"rp9"},
	"application/vnd.groove-vcard":                          {"vcg"},
	"application/vnd.immervision-ivu":                       {"ivu"},
	"video/vnd.fvt":                                         {"fvt"},
	"video/ogg":                                             {"ogv"},
	"application/vnd.geonext":                               {"gxt"},
	"application/vnd.isac.fcs":                              {"fcs"},
	"application/vnd.stardivision.math":                     {"smf"},
	"image/vnd.fujixerox.edmics-rlc":                        {"rlc"},
	"application/vnd.crick.clicker.template":                {"clkt"},
	"application/vnd.immervision-ivp":                       {"ivp"},
	"application/vnd.ms-pki.seccat":                         {"cat"},
	"application/vnd.stardivision.draw":                     {"sda"},
	"application/winhlp":                                    {"hlp"},
	"application/x-rar-compressed":                          {"rar"},
	"image/x-mrsid-image":                                   {"sid"},
	"image/x-pict":                                          {"pic", "pct"},
	"video/x-f4v":                                           {"f4v"},
	"application/metalink+xml":                              {"metalink"},
	"application/scvp-vp-response":                          {"spp"},
	"application/vnd.dolby.mlp":                             {"mlp"},
	"application/vnd.intu.qbo":                              {"qbo"},
	"application/vnd.audiograph":                            {"aep"},
	"video/vnd.dece.sd":                                     {"uvs", "uvvs"},
	"application/java-archive":                              {"jar"},
	"application/prs.cww":                                   {"cww"},
	"application/vnd.airzip.filesecure.azf":                 {"azf"},
	"application/vnd.apple.installer+xml":                   {"mpkg"},
	"application/x-pkcs7-certreqresp":                       {"p7r"},
	"audio/x-wav":                                           {"wav"},
	"image/ief":                                             {"ief"},
	"application/rss+xml":                                   {"rss"},
	"application/vnd.epson.esf":                             {"esf"},
	"application/vnd.macports.portpkg":                      {"portpkg"},
	"application/vnd.ms-fontobject":                         {"eot"},
	"application/x-xliff+xml":                               {"xlf"},
	"application/xhtml+xml":                                 {"xhtml", "xht"},
	"application/gxf":                                       {"gxf"},
	"application/lost+xml":                                  {"lostxml"},
	"application/x-mie":                                     {"mie"},
	"application/x-tar":                                     {"tar"},
	"application/vnd.micrografx.igx":                        {"igx"},
	"application/x-chess-pgn":                               {"pgn"},
	"image/vnd.dwg":                                         {"dwg"},
	"application/java-serialized-object":                    {"ser"},
	"application/vnd.ezpix-album":                           {"ez2"},
	"application/vnd.lotus-approach":                        {"apr"},
	"application/vnd.mfmp":                                  {"mfm"},
	"application/xml":                                       {"xml", "xsl"},
	"application/yang":                                      {"yang"},
	"video/x-mng":                                           {"mng"},
	"application/vnd.dece.ttml+xml":                         {"uvt", "uvvt"},
	"application/vnd.igloader":                              {"igl"},
	"application/vnd.jam":                                   {"jam"},
	"application/vnd.shana.informed.formtemplate":           {"itp"},
	"application/vnd.smart.teacher":                         {"teacher"},
	"application/xproc+xml":                                 {"xpl"},
	"video/mp4":                                             {"mp4", "mp4v", "mpg4"},
	"application/vnd.fujixerox.docuworks":                   {"xdw"},
	"application/vnd.gmx":                                   {"gmx"},
	"application/vnd.openxmlformats-officedocument.wordprocessingml.document": {"docx"},
	"application/vnd.previewsystems.box":                                      {"box"},
	"application/vnd.nokia.radio-presets":                                     {"rpss"},
	"application/vnd.oasis.opendocument.chart":                                {"odc"},
	"model/vnd.dwf":                                                        {"dwf"},
	"application/vnd.blueice.multipass":                                    {"mpm"},
	"application/vnd.hp-pclxl":                                             {"pclxl"},
	"application/vnd.ms-excel.template.macroenabled.12":                    {"xltm"},
	"application/vnd.ms-powerpoint.slide.macroenabled.12":                  {"sldm"},
	"application/vnd.sun.xml.math":                                         {"sxm"},
	"audio/x-ms-wax":                                                       {"wax"},
	"application/atomcat+xml":                                              {"atomcat"},
	"application/vnd.claymore":                                             {"cla"},
	"application/vnd.fujitsu.oasys":                                        {"oas"},
	"application/vnd.openxmlformats-officedocument.spreadsheetml.template": {"xltx"},
	"video/vnd.vivo":                                                       {"viv"},
	"application/vnd.adobe.xdp+xml":                                        {"xdp"},
	"application/vnd.joost.joda-archive":                                   {"joda"},
	"application/vnd.ms-artgalry":                                          {"cil"},
	"application/vnd.quark.quarkxpress":                                    {"qxd", "qxt", "qwd", "qwt", "qxl", "qxb"},
	"application/vnd.3gpp.pic-bw-small":                                    {"psb"},
	"application/vnd.businessobjects":                                      {"rep"},
	"application/vnd.handheld-entertainment+xml":                           {"zmm"},
	"application/vnd.neurolanguage.nlu":                                    {"nlu"},
	"application/x-tex-tfm":                                                {"tfm"},
	"chemical/x-cif":                                                       {"cif"},
	"image/bmp":                                                            {"bmp"},
	"application/ssdl+xml":                                                 {"ssdl"},
	"application/vnd.epson.salt":                                           {"slt"},
	"application/vnd.google-earth.kmz":                                     {"kmz"},
	"application/x-cbr":                                                    {"cbr", "cba", "cbt", "cbz", "cb7"},
	"application/vnd.fdsn.mseed":                                           {"mseed"},
	"application/xcap-diff+xml":                                            {"xdf"},
	"audio/ogg":                                                            {"oga", "ogg", "spx", "opus"},
	"application/vnd.ms-excel.addin.macroenabled.12":                       {"xlam"},
	"application/vnd.pg.format":                                            {"str"},
	"application/x-gtar":                                                   {"gtar"},
	"application/x-xz":                                                     {"xz"},
	"application/ipfix":                                                    {"ipfix"},
	"application/sru+xml":                                                  {"sru"},
	"application/ssml+xml":                                                 {"ssml"},
	"application/vnd.aristanetworks.swi":                                   {"swi"},
	"audio/adpcm":                                                          {"adp"},
	"application/vnd.mfer":                                                 {"mwf"},
	"application/vnd.openxmlformats-officedocument.presentationml.slideshow": {"ppsx"},
	"application/vnd.spotfire.dxp":                                           {"dxp"},
	"application/vnd.syncml.dm+wbxml":                                        {"bdm"},
	"application/mathml+xml":                                                 {"mathml"},
	"application/pkcs7-signature":                                            {"p7s"},
	"application/vnd.ipunplugged.rcprofile":                                  {"rcprofile"},
	"application/vnd.kenameaapp":                                             {"htke"},
	"video/x-ms-vob":                                                         {"vob"},
	"application/vnd.uiq.theme":                                              {"utz"},
	"application/x-bcpio":                                                    {"bcpio"},
	"application/x-blorb":                                                    {"blb", "blorb"},
	"application/x-font-linux-psf":                                           {"psf"},
	"application/vnd.smaf":                                                   {"mmf"},
	"application/x-doom":                                                     {"wad"},
	"image/vnd.fastbidsheet":                                                 {"fbs"},
	"application/vnd.ecowin.chart":                                           {"mag"},
	"chemical/x-xyz":                                                         {"xyz"},
	"application/x-ms-xbap":                                                  {"xbap"},
	"audio/x-ms-wma":                                                         {"wma"},
	"application/omdoc+xml":                                                  {"omdoc"},
	"application/vnd.osgi.subsystem":                                         {"esa"},
	"application/vnd.sun.xml.draw.template":                                  {"std"},
	"application/x-freearc":                                                  {"arc"},
	"application/vnd.yamaha.smaf-phrase":                                     {"spf"},
	"application/x-xpinstall":                                                {"xpi"},
	"audio/silk":                                                             {"sil"},
	"text/vnd.in3d.3dml":                                                     {"3dml"},
	"application/vnd.yamaha.smaf-audio":                                      {"saf"},
	"application/x-dtbncx+xml":                                               {"ncx"},
	"audio/vnd.dts":                                                          {"dts"},
	"font/woff2":                                                             {"woff2"},
	"application/mac-binhex40":                                               {"hqx"},
	"application/vnd.kde.kword":                                              {"kwd", "kwt"},
	"application/vnd.novadigm.ext":                                           {"ext"},
	"application/vnd.sailingtracker.track":                                   {"st"},
	"video/vnd.dece.video":                                                   {"uvv", "uvvv"},
	"video/vnd.ms-playready.media.pyv":                                       {"pyv"},
	"application/vnd.dynageo":                                                {"geo"},
	"application/x-install-instructions":                                     {"install"},
	"audio/x-aac":                                                            {"aac"},
	"image/x-freehand":                                                       {"fh", "fhc", "fh4", "fh5", "fh7"},
	"application/x-authorware-map":                                           {"aam"},
	"image/vnd.fujixerox.edmics-mmr":                                         {"mmr"},
	"application/vnd.ibm.secure-container":                                   {"sc"},
	"application/vnd.kodak-descriptor":                                       {"sse"},
	"application/vnd.ms-htmlhelp":                                            {"chm"},
	"application/vnd.sun.xml.draw":                                           {"sxd"},
	"application/vnd.rig.cryptonote":                                         {"cryptonote"},
	"image/x-xbitmap":                                                        {"xbm"},
	"application/vnd.contact.cmsg":                                           {"cdbcmsg"},
	"application/vnd.fuzzysheet":                                             {"fzs"},
	"application/vnd.kde.kivio":                                              {"flw"},
	"application/vnd.ms-officetheme":                                         {"thmx"},
	"text/calendar":                                                          {"ics", "ifb"},
	"application/vnd.kde.kformula":                                           {"kfo"},
	"application/vnd.umajin":                                                 {"umj"},
	"application/vnd.visio":                                                  {"vsd", "vst", "vss", "vsw"},
	"application/x-msterminal":                                               {"trm"},
	"application/vnd.mophun.application":                                     {"mpn"},
	"application/vnd.openxmlformats-officedocument.presentationml.template": {"potx"},
	"application/vnd.palm":                                    {"pdb", "pqa", "oprc"},
	"application/vnd.picsel":                                  {"efif"},
	"application/rls-services+xml":                            {"rs"},
	"application/vnd.adobe.fxp":                               {"fxp", "fxpl"},
	"application/vnd.frogans.ltf":                             {"ltf"},
	"application/vnd.kde.kontour":                             {"kon"},
	"application/vnd.stardivision.writer":                     {"sdw", "vor"},
	"text/richtext":                                           {"rtx"},
	"text/vnd.curl.mcurl":                                     {"mcurl"},
	"application/vnd.fdsn.seed":                               {"seed", "dataless"},
	"application/vnd.intercon.formnet":                        {"xpw", "xpx"},
	"application/vnd.is-xpr":                                  {"xpr"},
	"application/vnd.vsf":                                     {"vsf"},
	"application/rsd+xml":                                     {"rsd"},
	"application/thraud+xml":                                  {"tfi"},
	"application/vnd.anser-web-funds-transfer-initiation":     {"fti"},
	"application/vnd.commonspace":                             {"csp"},
	"application/vnd.wolfram.player":                          {"nbp"},
	"application/wspolicy+xml":                                {"wspolicy"},
	"audio/mpeg":                                              {"mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"},
	"font/collection":                                         {"ttc"},
	"application/vnd.medcalcdata":                             {"mc1"},
	"application/vnd.tmobile-livetv":                          {"tmo"},
	"application/vnd.yamaha.hv-dic":                           {"hvd"},
	"font/woff":                                               {"woff"},
	"application/smil+xml":                                    {"smi", "smil"},
	"application/vnd.airzip.filesecure.azs":                   {"azs"},
	"application/vnd.dece.data":                               {"uvf", "uvvf", "uvd", "uvvd"},
	"application/vnd.google-earth.kml+xml":                    {"kml"},
	"image/x-portable-pixmap":                                 {"ppm"},
	"application/vnd.americandynamics.acc":                    {"acc"},
	"application/vnd.dpgraph":                                 {"dpg"},
	"application/x-futuresplash":                              {"spl"},
	"text/sgml":                                               {"sgml", "sgm"},
	"text/prs.lines.tag":                                      {"dsc"},
	"text/uri-list":                                           {"uri", "uris", "urls"},
	"text/vnd.fly":                                            {"fly"},
	"application/inkml+xml":                                   {"ink", "inkml"},
	"application/sbml+xml":                                    {"sbml"},
	"application/x-msaccess":                                  {"mdb"},
	"application/x-msmoney":                                   {"mny"},
	"application/vnd.wap.wmlscriptc":                          {"wmlsc"},
	"application/vnd.yamaha.hv-voice":                         {"hvp"},
	"application/xslt+xml":                                    {"xslt"},
	"application/mxf":                                         {"mxf"},
	"application/oebps-package+xml":                           {"opf"},
	"application/vnd.hp-hpgl":                                 {"hpgl"},
	"application/vnd.pocketlearn":                             {"plf"},
	"audio/x-flac":                                            {"flac"},
	"application/vnd.epson.msf":                               {"msf"},
	"application/vnd.lotus-organizer":                         {"org"},
	"application/vnd.sun.xml.writer":                          {"sxw"},
	"application/x-cfs-compressed":                            {"cfs"},
	"audio/vnd.dra":                                           {"dra"},
	"audio/x-aiff":                                            {"aif", "aiff", "aifc"},
	"image/prs.btif":                                          {"btif"},
	"model/vnd.vtu":                                           {"vtu"},
	"application/vnd.cinderella":                              {"cdy"},
	"application/vnd.ms-ims":                                  {"ims"},
	"application/vnd.yamaha.hv-script":                        {"hvs"},
	"application/x-shar":                                      {"shar"},
	"application/x-dtbook+xml":                                {"dtb"},
	"chemical/x-csml":                                         {"csml"},
	"video/vnd.dece.mobile":                                   {"uvm", "uvvm"},
	"application/exi":                                         {"exi"},
	"application/vnd.fsc.weblaunch":                           {"fsc"},
	"application/vnd.noblenet-directory":                      {"nnd"},
	"application/vnd.rn-realmedia":                            {"rm"},
	"video/x-msvideo":                                         {"avi"},
	"x-conference/x-cooltalk":                                 {"ice"},
	"image/x-icon":                                            {"ico"},
	"text/vnd.curl":                                           {"curl"},
	"application/dssc+der":                                    {"dssc"},
	"application/vnd.dart":                                    {"dart"},
	"application/vnd.zul":                                     {"zir", "zirz"},
	"audio/vnd.nuera.ecelp7470":                               {"ecelp7470"},
	"application/vnd.ms-powerpoint.addin.macroenabled.12":     {"ppam"},
	"application/x-envoy":                                     {"evy"},
	"application/x-font-type1":                                {"pfa", "pfb", "pfm", "afm"},
	"application/x-sh":                                        {"sh"},
	"application/pkix-cert":                                   {"cer"},
	"application/rpki-manifest":                               {"mft"},
	"application/scvp-cv-request":                             {"scq"},
	"application/vnd.hhe.lesson-player":                       {"les"},
	"audio/vnd.dece.audio":                                    {"uva", "uvva"},
	"text/x-asm":                                              {"s", "asm"},
	"application/sparql-results+xml":                          {"srx"},
	"application/vnd.ms-excel":                                {"xls", "xlm", "xla", "xlc", "xlt", "xlw"},
	"application/vnd.shana.informed.formdata":                 {"ifm"},
	"application/vnd.visionary":                               {"vis"},
	"application/x-msclip":                                    {"clp"},
	"application/x-stuffit":                                   {"sit"},
	"application/cdmi-queue":                                  {"cdmiq"},
	"application/pkcs7-mime":                                  {"p7m", "p7c"},
	"application/vnd.acucorp":                                 {"atc", "acutc"},
	"application/vnd.oasis.opendocument.text-web":             {"oth"},
	"application/vnd.llamagraphics.life-balance.exchange+xml": {"lbe"},
	"application/vnd.mif":                                     {"mif"},
	"application/x-sql":                                       {"sql"},
	"text/x-vcard":                                            {"vcf"},
	"application/vnd.geogebra.tool":                           {"ggt"},
	"application/vnd.mediastation.cdkey":                      {"cdkey"},
	"application/vnd.oasis.opendocument.formula-template":     {"odft"},
	"application/vnd.openofficeorg.extension":                 {"oxt"},
	"application/vnd.mcd":                                     {"mcd"},
	"audio/vnd.rip":                                           {"rip"},
	"application/jsonml+json":                                 {"jsonml"},
	"application/vnd.data-vision.rdz":                         {"rdz"},
	"image/tiff":                                              {"tiff", "tif"},
	"image/x-cmx":                                             {"cmx"},
	"video/vnd.dece.hd":                                       {"uvh", "uvvh"},
	"application/andrew-inset":                                {"ez"},
	"application/pskc+xml":                                    {"pskcxml"},
	"application/vnd.ms-excel.sheet.macroenabled.12":          {"xlsm"},
	"application/widget":                                      {"wgt"},
	"application/vnd.nokia.n-gage.symbian.install":            {"n-gage"},
	"application/vnd.trueapp":                                 {"tra"},
	"application/x-director":                                  {"dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"},
	"audio/vnd.lucent.voice":                                  {"lvp"},
	"application/metalink4+xml":                               {"meta4"},
	"application/vnd.clonk.c4group":                           {"c4g", "c4d", "c4f", "c4p", "c4u"},
	"application/vnd.enliven":                                 {"nml"},
	"application/vnd.mobius.txf":                              {"txf"},
	"video/x-fli":                                             {"fli"},
	"application/vnd.powerbuilder6":                           {"pbd"},
	"application/vnd.recordare.musicxml+xml":                  {"musicxml"},
	"application/x-ace-compressed":                            {"ace"},
	"image/gif":                                               {"gif"},
	"application/shf+xml":                                     {"shf"},
	"application/vnd.groove-tool-template":                    {"tpl"},
	"application/vnd.kahootz":                                 {"ktz", "ktr"},
	"application/vnd.lotus-screencam":                         {"scm"},
	"image/png":                                               {"png"},
	"video/x-ms-asf":                                          {"asf", "asx"},
	"application/vnd.xara":                                    {"xar"},
	"font/ttf":                                                {"ttf"},
	"video/x-ms-wm":                                           {"wm"},
	"application/ccxml+xml":                                   {"ccxml"},
	"application/mediaservercontrol+xml":                      {"mscml"},
	"application/resource-lists-diff+xml":                     {"rld"},
	"application/vnd.openxmlformats-officedocument.presentationml.slide": {"sldx"},
	"application/vnd.groove-identity-message":                            {"gim"},
	"application/vnd.groove-tool-message":                                {"gtm"},
	"application/vnd.ms-powerpoint":                                      {"ppt", "pps", "pot"},
	"application/vnd.oma.dd2+xml":                                        {"dd2"},
	"application/vnd.3m.post-it-notes":                                   {"pwn"},
	"application/vnd.astraea-software.iota":                              {"iota"},
	"application/vnd.ds-keypoint":                                        {"kpxx"},
	"application/vnd.eszigno3+xml":                                       {"es3", "et3"},
	"application/vnd.semd":                                               {"semd"},
	"application/vnd.sun.xml.calc":                                       {"sxc"},
	"application/zip":                                                    {"zip"},
	"application/vnd.recordare.musicxml":                                 {"mxl"},
	"application/vnd.svd":                                                {"svd"},
	"application/x-authorware-bin":                                       {"aab", "x32", "u32", "vox"},
	"application/x-research-info-systems":                                {"ris"},
	"application/ogg":                                                    {"ogx"},
	"application/vnd.iccprofile":                                         {"icc", "icm"},
	"application/vnd.ms-lrm":                                             {"lrm"},
	"application/vnd.ms-word.template.macroenabled.12":                   {"dotm"},
	"text/vnd.curl.scurl":                                                {"scurl"},
	"application/x-t3vm-image":                                           {"t3"},
	"application/xv+xml":                                                 {"mxml", "xhvml", "xvml", "xvm"},
	"image/vnd.dxf":                                                      {"dxf"},
	"image/x-rgb":                                                        {"rgb"},
	"application/vnd.pvi.ptid1":                                          {"ptid"},
	"application/vnd.semf":                                               {"semf"},
	"application/vnd.wt.stf":                                             {"stf"},
	"application/x-tgif":                                                 {"obj"},
	"application/json":                                                   {"json"},
	"application/rdf+xml":                                                {"rdf"},
	"application/vnd.adobe.air-application-installer-package+zip":        {"air"},
	"application/vnd.crick.clicker":                                      {"clkx"},
	"text/vnd.sun.j2me.app-descriptor":                                   {"jad"},
	"video/x-ms-wmv":                                                     {"wmv"},
	"application/x-bzip2":                                                {"bz2", "boz"},
	"application/pkixcmp":                                                {"pki"},
	"application/vnd.epson.quickanime":                                   {"qam"},
	"application/vnd.insors.igm":                                         {"igm"},
	"application/vnd.nokia.radio-preset":                                 {"rpst"},
	"text/x-sfv":                                                         {"sfv"},
	"application/vnd.ms-powerpoint.presentation.macroenabled.12":         {"pptm"},
	"application/vnd.stardivision.writer-global":                         {"sgl"},
	"model/vnd.gtw":                                                      {"gtw"},
	"text/x-pascal":                                                      {"p", "pas"},
	"application/x-nzb":                                                  {"nzb"},
	"application/x-tex":                                                  {"tex"},
	"application/x-zmachine":                                             {"z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"},
	"application/vnd.jisp":                                               {"jisp"},
	"application/vnd.lotus-wordpro":                                      {"lwp"},
	"application/vnd.ms-project":                                         {"mpp", "mpt"},
	"application/vnd.simtech-mindmapper":                                 {"twd", "twds"},
	"application/x-dvi":                                                  {"dvi"},
	"application/x-font-snf":                                             {"snf"},
	"application/x-netcdf":                                               {"nc", "cdf"},
	"application/x-wais-source":                                          {"src"},
	"application/onenote":                                                {"onetoc", "onetoc2", "onetmp", "onepkg"},
	"application/vnd.ezpix-package":                                      {"ez3"},
	"application/vnd.groove-account":                                     {"gac"},
	"application/vnd.intergeo":                                           {"i2g"},
	"font/otf":                                                           {"otf"},
	"image/x-3ds":                                                        {"3ds"},
	"application/pgp-encrypted":                                          {"pgp"},
	"application/vnd.frogans.fnc":                                        {"fnc"},
	"application/vnd.groove-injector":                                    {"grv"},
	"application/x-xfig":                                                 {"fig"},
	"application/vnd.hp-hpid":                                            {"hpid"},
	"application/x-mscardfile":                                           {"crd"},
	"application/vnd.3gpp2.tcap":                                         {"tcap"},
	"application/vnd.crick.clicker.wordbank":                             {"clkw"},
	"application/vnd.ctc-posml":                                          {"pml"},
	"application/vnd.grafeq":                                             {"gqf", "gqs"},
	"application/voicexml+xml":                                           {"vxml"},
	"text/vnd.in3d.spot":                                                 {"spot"},
	"application/tei+xml":                                                {"tei", "teicorpus"},
	"application/vnd.3gpp.pic-bw-large":                                  {"plb"},
	"application/vnd.bmi":                                                {"bmi"},
	"application/vnd.musician":                                           {"mus"},
	"application/vnd.openxmlformats-officedocument.wordprocessingml.template": {"dotx"},
	"application/vnd.sun.xml.writer.global":                                   {"sxg"},
	"chemical/x-cmdf":                                                         {"cmdf"},
	"application/vnd.las.las+xml":                                             {"lasxml"},
	"application/vnd.mobius.plc":                                              {"plc"},
	"application/vnd.ms-powerpoint.template.macroenabled.12":                  {"potm"},
	"application/vnd.mseq":                                                    {"mseq"},
	"application/vnd.hal+xml":                                                 {"hal"},
	"application/vnd.irepository.package+xml":                                 {"irp"},
	"application/vnd.tcpdump.pcap":                                            {"pcap", "cap", "dmp"},
	"model/iges":                                                              {"igs", "iges"},
	"application/vnd.groove-help":                                             {"ghf"},
	"application/x-bzip":                                                      {"bz"},
	"application/x-mobipocket-ebook":                                          {"prc", "mobi"},
	"model/vnd.collada+xml":                                                   {"dae"},
	"application/epub+zip":                                                    {"epub"},
	"application/vnd.crick.clicker.keyboard":                                  {"clkk"},
	"application/vnd.geogebra.file":                                           {"ggb"},
	"application/vnd.geoplan":                                                 {"g2w"},
	"application/vnd.dece.unspecified":                                        {"uvx", "uvvx"},
	"application/vnd.fujixerox.ddd":                                           {"ddd"},
	"application/vnd.ibm.rights-management":                                   {"irm"},
	"video/h264":                                                              {"h264"},
	"video/x-matroska":                                                        {"mkv", "mk3d", "mks"},
	"application/vnd.criticaltools.wbs+xml":                                   {"wbs"},
	"application/x-msbinder":                                                  {"obd"},
	"application/x-shockwave-flash":                                           {"swf"},
	"image/vnd.fst":                                                           {"fst"},
	"application/vnd.lotus-freelance":                                         {"pre"},
	"application/vnd.wap.wmlc":                                                {"wmlc"},
	"application/vnd.ms-xpsdocument":                                          {"xps"},
	"application/vnd.noblenet-web":                                            {"nnw"},
	"application/vnd.vcx":                                                     {"vcx"},
	"application/vnd.yamaha.openscoreformat":                                  {"osf"},
	"application/scvp-vp-request":                                             {"spq"},
	"application/vnd.acucobol":                                                {"acu"},
	"application/vnd.dreamfactory":                                            {"dfac"},
	"application/vnd.jcp.javame.midlet-rms":                                   {"rms"},
	"audio/vnd.dts.hd":                                                        {"dtshd"},
	"application/vnd.openxmlformats-officedocument.presentationml.presentation": {"pptx"},
	"application/x-ms-wmz": {"wmz"},
	"text/x-uuencode":      {"uu"},
	"text/cache-manifest":  {"appcache"},
	"application/vnd.cluetrust.cartomobile-config-pkg":         {"c11amz"},
	"application/vnd.oasis.opendocument.database":              {"odb"},
	"application/vnd.oasis.opendocument.text":                  {"odt"},
	"audio/vnd.ms-playready.media.pya":                         {"pya"},
	"application/pkix-pkipath":                                 {"pkipath"},
	"application/vnd.syncml+xml":                               {"xsm"},
	"application/vnd.zzazz.deck+xml":                           {"zaz"},
	"application/x-debian-package":                             {"deb", "udeb"},
	"application/x-font-bdf":                                   {"bdf"},
	"application/x-tcl":                                        {"tcl"},
	"audio/x-matroska":                                         {"mka"},
	"text/tab-separated-values":                                {"tsv"},
	"application/gpx+xml":                                      {"gpx"},
	"application/vnd.fdf":                                      {"fdf"},
	"application/vnd.kinar":                                    {"kne", "knp"},
	"application/vnd.oasis.opendocument.graphics":              {"odg"},
	"application/vnd.oasis.opendocument.spreadsheet":           {"ods"},
	"application/x-7z-compressed":                              {"7z"},
	"application/x-gca-compressed":                             {"gca"},
	"video/mpeg":                                               {"mpeg", "mpg", "mpe", "m1v", "m2v"},
	"application/vnd.solent.sdkm+xml":                          {"sdkm", "sdkd"},
	"application/x-glulx":                                      {"ulx"},
	"application/xop+xml":                                      {"xop"},
	"text/turtle":                                              {"ttl"},
	"application/set-registration-initiation":                  {"setreg"},
	"application/vnd.adobe.formscentral.fcdt":                  {"fcdt"},
	"application/vnd.mozilla.xul+xml":                          {"xul"},
	"application/vnd.oasis.opendocument.graphics-template":     {"otg"},
	"text/vnd.fmi.flexstor":                                    {"flx"},
	"video/3gpp":                                               {"3gp"},
	"application/x-abiword":                                    {"abw"},
	"application/marc":                                         {"mrc"},
	"application/vnd.fluxtime.clip":                            {"ftc"},
	"application/vnd.osgeo.mapguide.package":                   {"mgp"},
	"application/vnd.yellowriver-custom-menu":                  {"cmp"},
	"application/mets+xml":                                     {"mets"},
	"application/vnd.geospace":                                 {"g3w"},
	"application/vnd.mobius.mqy":                               {"mqy"},
	"application/x-apple-diskimage":                            {"dmg"},
	"application/vnd.flographit":                               {"gph"},
	"application/vnd.micrografx.flo":                           {"flo"},
	"application/x-java-jnlp-file":                             {"jnlp"},
	"image/x-portable-anymap":                                  {"pnm"},
	"application/vnd.rim.cod":                                  {"cod"},
	"image/x-tga":                                              {"tga"},
	"application/vnd.crick.clicker.palette":                    {"clkp"},
	"application/vnd.cups-ppd":                                 {"ppd"},
	"application/vnd.kde.kspread":                              {"ksp"},
	"application/vnd.ms-works":                                 {"wps", "wks", "wcm", "wdb"},
	"application/vnd.shana.informed.interchange":               {"iif"},
	"application/vnd.trid.tpt":                                 {"tpt"},
	"application/x-sv4cpio":                                    {"sv4cpio"},
	"application/atomsvc+xml":                                  {"atomsvc"},
	"application/cdmi-container":                               {"cdmic"},
	"application/vnd.noblenet-sealer":                          {"nns"},
	"application/vnd.realvnc.bed":                              {"bed"},
	"application/x-lzh-compressed":                             {"lzh", "lha"},
	"image/vnd.net-fpx":                                        {"npx"},
	"application/hyperstudio":                                  {"stk"},
	"application/sdp":                                          {"sdp"},
	"application/vnd.epson.ssf":                                {"ssf"},
	"application/x-csh":                                        {"csh"},
	"audio/xm":                                                 {"xm"},
	"model/mesh":                                               {"msh", "mesh", "silo"},
	"text/vcard":                                               {"vcard"},
	"video/vnd.dvb.file":                                       {"dvb"},
	"application/vnd.ms-pki.stl":                               {"stl"},
	"application/vnd.oasis.opendocument.formula":               {"odf"},
	"application/vnd.ufdl":                                     {"ufd", "ufdl"},
	"application/x-mspublisher":                                {"pub"},
	"application/relax-ng-compact-syntax":                      {"rnc"},
	"application/vnd.mobius.mbk":                               {"mbk"},
	"image/x-pcx":                                              {"pcx"},
	"model/x3d+xml":                                            {"x3d", "x3dz"},
	"application/wsdl+xml":                                     {"wsdl"},
	"image/jpeg":                                               {"jpeg", "jpg", "jpe"},
	"application/srgs+xml":                                     {"grxml"},
	"application/vnd.oasis.opendocument.chart-template":        {"otc"},
	"application/vnd.oasis.opendocument.image":                 {"odi"},
	"application/vnd.syncml.dm+xml":                            {"xdm"},
	"application/vnd.denovo.fcselayout-link":                   {"fe_launch"},
	"application/vnd.ms-wpl":                                   {"wpl"},
	"image/ktx":                                                {"ktx"},
	"application/java-vm":                                      {"class"},
	"application/oxps":                                         {"oxps"},
	"image/vnd.ms-modi":                                        {"mdi"},
	"video/vnd.mpegurl":                                        {"mxu", "m4u"},
	"application/vnd.hp-pcl":                                   {"pcl"},
	"application/vnd.publishare-delta-tree":                    {"qps"},
	"application/vnd.stardivision.impress":                     {"sdd"},
	"application/vnd.stepmania.stepchart":                      {"sm"},
	"application/vnd.pmi.widget":                               {"wg"},
	"audio/vnd.digital-winds":                                  {"eol"},
	"application/pdf":                                          {"pdf"},
	"application/vnd.3gpp.pic-bw-var":                          {"pvb"},
	"application/vnd.curl.car":                                 {"car"},
	"application/vnd.oasis.opendocument.text-template":         {"ott"},
	"application/x-authorware-seg":                             {"aas"},
	"image/x-cmu-raster":                                       {"ras"},
	"application/mac-compactpro":                               {"cpt"},
	"application/marcxml+xml":                                  {"mrcx"},
	"application/pkcs8":                                        {"p8"},
	"application/vnd.tao.intent-module-archive":                {"tao"},
	"application/vnd.wqd":                                      {"wqd"},
	"application/mads+xml":                                     {"mads"},
	"application/mp4":                                          {"mp4s"},
	"application/vnd.hp-jlyt":                                  {"jlt"},
	"application/vnd.ibm.minipay":                              {"mpy"},
	"application/x-cpio":                                       {"cpio"},
	"application/xenc+xml":                                     {"xenc"},
	"application/emma+xml":                                     {"emma"},
	"application/scvp-cv-response":                             {"scs"},
	"application/vnd.hp-hps":                                   {"hps"},
	"application/vnd.sun.xml.writer.template":                  {"stw"},
	"image/vnd.adobe.photoshop":                                {"psd"},
	"video/mj2":                                                {"mj2", "mjp2"},
	"application/vnd.amiga.ami":                                {"ami"},
	"application/vnd.hydrostatix.sof-data":                     {"sfd-hdstx"},
	"application/vnd.pg.osasli":                                {"ei6"},
	"application/x-tads":                                       {"gam"},
	"application/vnd.wordperfect":                              {"wpd"},
	"application/x-texinfo":                                    {"texinfo", "texi"},
	"message/rfc822":                                           {"eml", "mime"},
	"text/csv":                                                 {"csv"},
	"application/vnd.adobe.xfdf":                               {"xfdf"},
	"application/vnd.anser-web-certificate-issue-initiation":   {"cii"},
	"application/vnd.shana.informed.package":                   {"ipk"},
	"application/vnd.unity":                                    {"unityweb"},
	"text/vnd.wap.wmlscript":                                   {"wmls"},
	"video/x-m4v":                                              {"m4v"},
	"video/x-ms-wmx":                                           {"wmx"},
	"application/vnd.osgi.dp":                                  {"dp"},
	"application/vnd.proteus.magazine":                         {"mgz"},
	"audio/mp4":                                                {"m4a", "mp4a"},
	"video/h263":                                               {"h263"},
	"application/vnd.accpac.simply.aso":                        {"aso"},
	"application/vnd.nitf":                                     {"ntf", "nitf"},
	"application/vnd.nokia.n-gage.data":                        {"ngdat"},
	"application/vnd.oasis.opendocument.presentation":          {"odp"},
	"application/vnd.fujitsu.oasysgp":                          {"fg5"},
	"application/vnd.fujixerox.docuworks.binder":               {"xbd"},
	"application/vnd.wap.wbxml":                                {"wbxml"},
	"application/x-ustar":                                      {"ustar"},
	"text/css":                                                 {"css"},
	"text/vnd.dvb.subtitle":                                    {"sub"},
	"text/vnd.wap.wml":                                         {"wml"},
	"application/vnd.oasis.opendocument.spreadsheet-template":  {"ots"},
	"application/x-pkcs7-certificates":                         {"p7b", "spc"},
	"audio/midi":                                               {"mid", "midi", "kar", "rmi"},
	"image/vnd.ms-photo":                                       {"wdp"},
	"video/h261":                                               {"h261"},
	"application/vnd.dvb.service":                              {"svc"},
	"application/vnd.stardivision.calc":                        {"sdc"},
	"application/yin+xml":                                      {"yin"},
	"audio/x-mpegurl":                                          {"m3u"},
	"application/vnd.triscape.mxs":                             {"mxs"},
	"application/x-chat":                                       {"chat"},
	"text/n3":                                                  {"n3"},
	"application/pics-rules":                                   {"prf"},
	"application/vnd.fujitsu.oasys2":                           {"oa2"},
	"application/vnd.hbci":                                     {"hbci"},
	"application/vnd.oasis.opendocument.image-template":        {"oti"},
	"application/vnd.fujitsu.oasys3":                           {"oa3"},
	"application/vnd.sema":                                     {"sema"},
	"audio/vnd.nuera.ecelp4800":                                {"ecelp4800"},
	"text/x-java-source":                                       {"java"},
	"application/davmount+xml":                                 {"davmount"},
	"application/pgp-signature":                                {"asc", "sig"},
	"application/pkcs10":                                       {"p10"},
	"application/reginfo+xml":                                  {"rif"},
	"application/vnd.amazon.ebook":                             {"azw"},
	"application/vnd.sun.xml.impress.template":                 {"sti"},
	"image/x-xwindowdump":                                      {"xwd"},
	"video/jpeg":                                               {"jpgv"},
	"chemical/x-cdx":                                           {"cdx"},
	"image/vnd.dvb.subtitle":                                   {"sub"},
	"application/x-latex":                                      {"latex"},
	"application/x-silverlight-app":                            {"xap"},
	"image/cgm":                                                {"cgm"},
	"text/x-fortran":                                           {"f", "for", "f77", "f90"},
	"application/rpki-ghostbusters":                            {"gbr"},
	"application/vnd.ibm.modcap":                               {"afp", "listafp", "list3820"},
	"application/vnd.lotus-1-2-3":                              {"123"},
	"application/vnd.novadigm.edm":                             {"edm"},
	"application/mathematica":                                  {"ma", "nb", "mb"},
	"application/vnd.kidspiration":                             {"kia"},
	"audio/x-caf":                                              {"caf"},
	"text/vnd.curl.dcurl":                                      {"dcurl"},
	"application/x-ms-wmd":                                     {"wmd"},
	"image/webp":                                               {"webp"},
	"application/javascript":                                   {"js"},
	"application/srgs":                                         {"gram"},
	"application/vnd.oasis.opendocument.presentation-template": {"otp"},
	"application/vnd.pawaafile":                                {"paw"},
	"application/vnd.ms-powerpoint.slideshow.macroenabled.12":  {"ppsm"},
	"application/x-eva":                                        {"eva"},
	"image/svg+xml":                                            {"svg", "svgz"},
	"application/vnd.mobius.msl":                               {"msl"},
	"application/vnd.muvee.style":                              {"msty"},
	"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {"xlsx"},
	"application/x-sv4crc":                               {"sv4crc"},
	"application/gml+xml":                                {"gml"},
	"application/pkix-crl":                               {"crl"},
	"application/set-payment-initiation":                 {"setpay"},
	"application/vnd.genomatix.tuxedo":                   {"txd"},
	"image/vnd.dece.graphic":                             {"uvi", "uvvi", "uvg", "uvvg"},
	"image/vnd.wap.wbmp":                                 {"wbmp"},
	"text/x-setext":                                      {"etx"},
	"application/atom+xml":                               {"atom"},
	"application/timestamped-data":                       {"tsd"},
	"application/vnd.sun.xml.calc.template":              {"stc"},
	"application/vnd.yamaha.openscoreformat.osfpvg+xml":  {"osfpvg"},
	"application/x-stuffitx":                             {"sitx"},
	"model/vrml":                                         {"wrl", "vrml"},
	"video/quicktime":                                    {"qt", "mov"},
	"application/cdmi-domain":                            {"cdmid"},
	"application/vnd.geometry-explorer":                  {"gex", "gre"},
	"application/x-gnumeric":                             {"gnumeric"},
	"application/x-ms-shortcut":                          {"lnk"},
	"application/vnd.spotfire.sfs":                       {"sfs"},
	"application/x-gramps-xml":                           {"gramps"},
	"application/x-pkcs12":                               {"p12", "pfx"},
	"audio/vnd.nuera.ecelp9600":                          {"ecelp9600"},
	"application/applixware":                             {"aw"},
	"application/font-tdpfr":                             {"pfr"},
	"application/vnd.dece.zip":                           {"uvz", "uvvz"},
	"application/vnd.dna":                                {"dna"},
	"image/vnd.xiff":                                     {"xif"},
	"text/html":                                          {"html", "htm"},
	"video/vnd.dece.pd":                                  {"uvp", "uvvp"},
	"application/vnd.kde.karbon":                         {"karbon"},
	"application/vnd.kde.kchart":                         {"chrt"},
	"application/vnd.koan":                               {"skp", "skd", "skt", "skm"},
	"image/g3fax":                                        {"g3"},
	"application/x-cdlink":                               {"vcd"},
	"application/x-msmediaview":                          {"mvb", "m13", "m14"},
	"audio/s3m":                                          {"s3m"},
	"text/x-c":                                           {"c", "cc", "cxx", "cpp", "h", "hh", "dic"},
	"application/cdmi-capability":                        {"cdmia"},
	"application/patch-ops-error+xml":                    {"xer"},
	"application/vnd.chipnuts.karaoke-mmd":               {"mmd"},
	"application/vnd.lotus-notes":                        {"nsf"},
	"video/x-smv":                                        {"smv"},
	"application/x-x509-ca-cert":                         {"der", "crt"},
	"audio/basic":                                        {"au", "snd"},
	"application/rpki-roa":                               {"roa"},
	"application/vnd.accpac.simply.imp":                  {"imp"},
	"application/vnd.cosmocaller":                        {"cmc"},
	"application/vnd.ms-word.document.macroenabled.12":   {"docm"},
	"application/x-mswrite":                              {"wri"},
	"application/xaml+xml":                               {"xaml"},
	"image/x-portable-graymap":                           {"pgm"},
	"application/pkix-attr-cert":                         {"ac"},
	"application/vnd.mobius.daf":                         {"daf"},
	"application/vnd.sun.xml.impress":                    {"sxi"},
	"application/x-font-pcf":                             {"pcf"},
	"text/vnd.graphviz":                                  {"gv"},
	"video/jpm":                                          {"jpm", "jpgm"},
	"video/vnd.uvvu.mp4":                                 {"uvu", "uvvu"},
	"video/x-sgi-movie":                                  {"movie"},
	"application/vnd.apple.mpegurl":                      {"m3u8"},
	"application/vnd.xfdl":                               {"xfdl"},
	"application/x-font-ghostscript":                     {"gsf"},
	"application/x-hdf":                                  {"hdf"},
	"text/troff":                                         {"t", "tr", "roff", "man", "me", "ms"},
	"application/msword":                                 {"doc", "dot"},
	"application/pls+xml":                                {"pls"},
	"application/vnd.fujitsu.oasysprs":                   {"bh2"},
	"application/vnd.symbian.install":                    {"sis", "sisx"},
	"application/vnd.sus-calendar":                       {"sus", "susp"},
	"application/x-conference":                           {"nsc"},
	"image/vnd.djvu":                                     {"djvu", "djv"},
	"text/plain":                                         {"txt", "text", "conf", "def", "list", "log", "in"},
	"application/docbook+xml":                            {"dbk"},
	"application/mods+xml":                               {"mods"},
	"application/vnd.intu.qfx":                           {"qfx"},
	"application/vnd.llamagraphics.life-balance.desktop": {"lbd"},
	"text/x-vcalendar":                                   {"vcs"},
	"image/vnd.fpx":                                      {"fpx"},
	"video/x-flv":                                        {"flv"},
	"application/cu-seeme":                               {"cu"},
	"application/vnd.mobius.dis":                         {"dis"},
	"application/vnd.rn-realmedia-vbr":                   {"rmvb"},
	"audio/x-pn-realaudio-plugin":                        {"rmp"},
	"image/sgi":                                          {"sgi"},
	"application/rtf":                                    {"rtf"},
	"application/vnd.curl.pcurl":                         {"pcurl"},
	"application/vnd.seemail":                            {"see"},
	"application/vnd.webturbo":                           {"wtb"},
	"application/mbox":                                   {"mbox"},
	"application/vnd.framemaker":                         {"fm", "frame", "maker", "book"},
	"application/x-dgc-compressed":                       {"dgc"},
	"video/webm":                                         {"webm"},
	"model/x3d+vrml":                                     {"x3dv", "x3dvz"},
	"video/3gpp2":                                        {"3g2"},
	"application/vnd.mynfc":                              {"taglet"},
	"application/vnd.novadigm.edx":                       {"edx"},
	"application/x-msdownload":                           {"exe", "dll", "com", "bat", "msi"},
	"audio/x-pn-realaudio":                               {"ram", "ra"},
	"application/vnd.route66.link66+xml":                 {"link66"},
	"application/x-msschedule":                           {"scd"},
	"application/xml-dtd":                                {"dtd"},
	"image/x-xpixmap":                                    {"xpm"},
	"application/ecmascript":                             {"ecma"},
	"application/resource-lists+xml":                     {"rl"},
	"application/vnd.chemdraw+xml":                       {"cdxml"},
	"application/vnd.ms-cab-compressed":                  {"cab"},
	"audio/webm":                                         {"weba"},
	"model/vnd.gdl":                                      {"gdl"},
	"text/x-opml":                                        {"opml"},
	"application/x-bittorrent":                           {"torrent"},
	"application/x-iso9660-image":                        {"iso"},
	"application/x-ms-application":                       {"application"},
	"application/x-subrip":                               {"srt"},
	"application/vnd.antix.game-component":               {"atx"},
	"application/vnd.dvb.ait":                            {"ait"},
	"application/dssc+xml":                               {"xdssc"},
	"application/vnd.cluetrust.cartomobile-config":       {"c11amc"},
	"image/x-portable-bitmap":                            {"pbm"},
	"application/x-msmetafile":                           {"wmf", "wmz", "emf", "emz"},
}