landline 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/HACKING.md +30 -0
  3. data/LAYOUT.md +59 -0
  4. data/LICENSE.md +660 -0
  5. data/README.md +159 -0
  6. data/lib/landline/dsl/constructors_path.rb +107 -0
  7. data/lib/landline/dsl/constructors_probe.rb +28 -0
  8. data/lib/landline/dsl/methods_common.rb +28 -0
  9. data/lib/landline/dsl/methods_path.rb +75 -0
  10. data/lib/landline/dsl/methods_probe.rb +129 -0
  11. data/lib/landline/dsl/methods_template.rb +16 -0
  12. data/lib/landline/node.rb +87 -0
  13. data/lib/landline/path.rb +157 -0
  14. data/lib/landline/pattern_matching/glob.rb +168 -0
  15. data/lib/landline/pattern_matching/rematch.rb +49 -0
  16. data/lib/landline/pattern_matching/util.rb +15 -0
  17. data/lib/landline/pattern_matching.rb +75 -0
  18. data/lib/landline/probe/handler.rb +56 -0
  19. data/lib/landline/probe/http_method.rb +74 -0
  20. data/lib/landline/probe/serve_handler.rb +39 -0
  21. data/lib/landline/probe.rb +62 -0
  22. data/lib/landline/request.rb +135 -0
  23. data/lib/landline/response.rb +140 -0
  24. data/lib/landline/server.rb +49 -0
  25. data/lib/landline/template/erb.rb +27 -0
  26. data/lib/landline/template/erubi.rb +36 -0
  27. data/lib/landline/template.rb +95 -0
  28. data/lib/landline/util/cookie.rb +150 -0
  29. data/lib/landline/util/errors.rb +11 -0
  30. data/lib/landline/util/html.rb +119 -0
  31. data/lib/landline/util/lookup.rb +37 -0
  32. data/lib/landline/util/mime.rb +1276 -0
  33. data/lib/landline/util/multipart.rb +175 -0
  34. data/lib/landline/util/parsesorting.rb +37 -0
  35. data/lib/landline/util/parseutils.rb +111 -0
  36. data/lib/landline/util/query.rb +66 -0
  37. data/lib/landline.rb +20 -0
  38. metadata +85 -0
@@ -0,0 +1,1276 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Landline
4
+ module MIME
5
+ MIME = {
6
+ "a2l" => "application/A2L",
7
+ "aml" => "application/AML",
8
+ "ez" => "application/andrew-inset",
9
+ "atf" => "application/ATF",
10
+ "atfx" => "application/ATFX",
11
+ "atxml" => "application/ATXML",
12
+ "atom" => "application/atom+xml",
13
+ "atomcat" => "application/atomcat+xml",
14
+ "atomdeleted" => "application/atomdeleted+xml",
15
+ "atomsvc" => "application/atomsvc+xml",
16
+ "dwd" => "application/atsc-dwd+xml",
17
+ "held" => "application/atsc-held+xml",
18
+ "rsat" => "application/atsc-rsat+xml",
19
+ "apxml" => "application/auth-policy+xml",
20
+ "amlx" => "application/automationml-amlx+zip",
21
+ "xdd" => "application/bacnet-xdd+zip",
22
+ "xcs" => "application/calendar+xml",
23
+ "cbor" => "application/cbor",
24
+ "c3ex" => "application/cccex",
25
+ "ccmp" => "application/ccmp+xml",
26
+ "ccxml" => "application/ccxml+xml",
27
+ "cdfx" => "application/CDFX+XML",
28
+ "cdmia" => "application/cdmi-capability",
29
+ "cdmic" => "application/cdmi-container",
30
+ "cdmid" => "application/cdmi-domain",
31
+ "cdmio" => "application/cdmi-object",
32
+ "cdmiq" => "application/cdmi-queue",
33
+ "cea" => "application/CEA",
34
+ "cellml" => "application/cellml+xml",
35
+ "cml" => "application/cellml+xml",
36
+ "1clr" => "application/clr",
37
+ "clue" => "application/clue_info+xml",
38
+ "cmsc" => "application/cms",
39
+ "cpl" => "application/cpl+xml",
40
+ "csrattrs" => "application/csrattrs",
41
+ "cwl" => "application/cwl",
42
+ "cwl.json" => "application/cwl+json",
43
+ "mpd" => "application/dash+xml",
44
+ "mpdd" => "application/dashdelta",
45
+ "davmount" => "application/davmount+xml",
46
+ "dcd" => "application/DCD",
47
+ "dcm" => "application/dicom",
48
+ "dii" => "application/DII",
49
+ "dit" => "application/DIT",
50
+ "xmls" => "application/dskpp+xml",
51
+ "dssc" => "application/dssc+der",
52
+ "xdssc" => "application/dssc+xml",
53
+ "dvc" => "application/dvcs",
54
+ "es" => "application/ecmascript",
55
+ "efi" => "application/efi",
56
+ "emma" => "application/emma+xml",
57
+ "emotionml" => "application/emotionml+xml",
58
+ "epub" => "application/epub+zip",
59
+ "exi" => "application/exi",
60
+ "exp" => "application/express",
61
+ "finf" => "application/fastinfoset",
62
+ "fdt" => "application/fdt+xml",
63
+ "pfr" => "application/font-tdpfr",
64
+ "geojson" => "application/geo+json",
65
+ "gpkg" => "application/geopackage+sqlite3",
66
+ "glbin" => "application/gltf-buffer",
67
+ "glbuf" => "application/gltf-buffer",
68
+ "gml" => "application/gml+xml",
69
+ "gz" => "application/gzip",
70
+ "tgz" => "application/gzip",
71
+ "stk" => "application/hyperstudio",
72
+ "ink" => "application/inkml+xml",
73
+ "inkml" => "application/inkml+xml",
74
+ "ipfix" => "application/ipfix",
75
+ "its" => "application/its+xml",
76
+ "jar" => "application/java-archive",
77
+ "jrd" => "application/jrd+json",
78
+ "json" => "application/json",
79
+ "json-patch" => "application/json-patch+json",
80
+ "jsonld" => "application/ld+json",
81
+ "lgr" => "application/lgr+xml",
82
+ "wlnk" => "application/link-format",
83
+ "lostxml" => "application/lost+xml",
84
+ "lostsyncxml" => "application/lostsync+xml",
85
+ "lpf" => "application/lpf+zip",
86
+ "lxf" => "application/LXF",
87
+ "hqx" => "application/mac-binhex40",
88
+ "mads" => "application/mads+xml",
89
+ "webmanifest" => "application/manifest+json",
90
+ "mrc" => "application/marc",
91
+ "mrcx" => "application/marcxml+xml",
92
+ "nb" => "application/mathematica",
93
+ "ma" => "application/mathematica",
94
+ "mb" => "application/mathematica",
95
+ "mml" => "application/mathml+xml",
96
+ "mbox" => "application/mbox",
97
+ "meta4" => "application/metalink4+xml",
98
+ "mets" => "application/mets+xml",
99
+ "mf4" => "application/MF4",
100
+ "h5" => "application/mipc",
101
+ "maei" => "application/mmt-aei+xml",
102
+ "musd" => "application/mmt-usd+xml",
103
+ "mods" => "application/mods+xml",
104
+ "m21" => "application/mp21",
105
+ "mp21" => "application/mp21",
106
+ "doc" => "application/msword",
107
+ "mxf" => "application/mxf",
108
+ "nq" => "application/n-quads",
109
+ "nt" => "application/n-triples",
110
+ "orq" => "application/ocsp-request",
111
+ "ors" => "application/ocsp-response",
112
+ "bin" => "application/octet-stream",
113
+ "lha" => "application/octet-stream",
114
+ "lzh" => "application/octet-stream",
115
+ "exe" => "application/octet-stream",
116
+ "class" => "application/octet-stream",
117
+ "so" => "application/octet-stream",
118
+ "dll" => "application/octet-stream",
119
+ "img" => "application/octet-stream",
120
+ "iso" => "application/octet-stream",
121
+ "oda" => "application/ODA",
122
+ "odx" => "application/ODX",
123
+ "opf" => "application/oebps-package+xml",
124
+ "ogx" => "application/ogg",
125
+ "oxps" => "application/oxps",
126
+ "p21" => "application/p21",
127
+ "stp" => "application/p21",
128
+ "step" => "application/p21",
129
+ "stpnc" => "application/p21",
130
+ "210" => "application/p21",
131
+ "ifc" => "application/p21",
132
+ "stpz" => "application/p21+zip",
133
+ "relo" => "application/p2p-overlay+xml",
134
+ "pdf" => "application/pdf",
135
+ "pdx" => "application/PDX",
136
+ "pem" => "application/pem-certificate-chain",
137
+ "pgp" => "application/pgp-encrypted",
138
+ "sig" => "application/pgp-signature",
139
+ "p10" => "application/pkcs10",
140
+ "p12" => "application/pkcs12",
141
+ "pfx" => "application/pkcs12",
142
+ "p7m" => "application/pkcs7-mime",
143
+ "p7c" => "application/pkcs7-mime",
144
+ "p7s" => "application/pkcs7-signature",
145
+ "p8" => "application/pkcs8",
146
+ "p8e" => "application/pkcs8-encrypted",
147
+ "cer" => "application/pkix-cert",
148
+ "crl" => "application/pkix-crl",
149
+ "pkipath" => "application/pkix-pkipath",
150
+ "pki" => "application/pkixcmp",
151
+ "pls" => "application/pls+xml",
152
+ "ps" => "application/postscript",
153
+ "eps" => "application/postscript",
154
+ "ai" => "application/postscript",
155
+ "provx" => "application/provenance+xml",
156
+ "pskcxml" => "application/pskc+xml",
157
+ "rdf" => "application/rdf+xml",
158
+ "rapd" => "application/route-apd+xml",
159
+ "sls" => "application/route-s-tsid+xml",
160
+ "rusd" => "application/route-usd+xml",
161
+ "rif" => "application/reginfo+xml",
162
+ "rnc" => "application/relax-ng-compact-syntax",
163
+ "rld" => "application/resource-lists-diff+xml",
164
+ "rl" => "application/resource-lists+xml",
165
+ "rfcxml" => "application/rfc+xml",
166
+ "rs" => "application/rls-services+xml",
167
+ "gbr" => "application/rpki-ghostbusters",
168
+ "mft" => "application/rpki-manifest",
169
+ "roa" => "application/rpki-roa",
170
+ "rtf" => "application/rtf",
171
+ "sarif-external-properties" => "application/sarif-external-properties+json",
172
+ "sarif-external-properties.json" =>
173
+ "application/sarif-external-properties+json",
174
+ "sarif" => "application/sarif+json",
175
+ "sarif.json" => "application/sarif+json",
176
+ "scim" => "application/scim+json",
177
+ "scq" => "application/scvp-cv-request",
178
+ "scs" => "application/scvp-cv-response",
179
+ "spq" => "application/scvp-vp-request",
180
+ "spp" => "application/scvp-vp-response",
181
+ "sdp" => "application/sdp",
182
+ "senml-etchc" => "application/senml-etch+cbor",
183
+ "senml-etchj" => "application/senml-etch+json",
184
+ "senmlc" => "application/senml+cbor",
185
+ "senml" => "application/senml+json",
186
+ "senmlx" => "application/senml+xml",
187
+ "senmle" => "application/senml-exi",
188
+ "sensmlc" => "application/sensml+cbor",
189
+ "sensml" => "application/sensml+json",
190
+ "sensmlx" => "application/sensml+xml",
191
+ "sensmle" => "application/sensml-exi",
192
+ "soc" => "application/sgml-open-catalog",
193
+ "shf" => "application/shf+xml",
194
+ "siv" => "application/sieve",
195
+ "sieve" => "application/sieve",
196
+ "cl" => "application/simple-filter+xml",
197
+ "smil" => "application/smil+xml",
198
+ "smi" => "application/smil+xml",
199
+ "sml" => "application/smil+xml",
200
+ "rq" => "application/sparql-query",
201
+ "spdx.json" => "application/spdx+json",
202
+ "srx" => "application/sparql-results+xml",
203
+ "sql" => "application/sql",
204
+ "gram" => "application/srgs",
205
+ "grxml" => "application/srgs+xml",
206
+ "sru" => "application/sru+xml",
207
+ "ssml" => "application/ssml+xml",
208
+ "stix" => "application/stix+json",
209
+ "coswid" => "application/swid+cbor",
210
+ "swidtag" => "application/swid+xml",
211
+ "tau" => "application/tamp-apex-update",
212
+ "auc" => "application/tamp-apex-update-confirm",
213
+ "tcu" => "application/tamp-community-update",
214
+ "cuc" => "application/tamp-community-update-confirm",
215
+ "jsontd" => "application/td+json",
216
+ "ter" => "application/tamp-error",
217
+ "tsa" => "application/tamp-sequence-adjust",
218
+ "sac" => "application/tamp-sequence-adjust-confirm",
219
+ "tur" => "application/tamp-update",
220
+ "tuc" => "application/tamp-update-confirm",
221
+ "tei" => "application/tei+xml",
222
+ "teiCorpus" => "application/tei+xml",
223
+ "odd" => "application/tei+xml",
224
+ "tfi" => "application/thraud+xml",
225
+ "tsq" => "application/timestamp-query",
226
+ "tsr" => "application/timestamp-reply",
227
+ "tsd" => "application/timestamped-data",
228
+ "jsontm" => "application/tm+json",
229
+ "tm.json" => "application/tm+json",
230
+ "tm.jsonld" => "application/tm+json",
231
+ "trig" => "application/trig",
232
+ "ttml" => "application/ttml+xml",
233
+ "gsheet" => "application/urc-grpsheet+xml",
234
+ "rsheet" => "application/urc-ressheet+xml",
235
+ "td" => "application/urc-targetdesc+xml",
236
+ "uis" => "application/urc-uisocketdesc+xml",
237
+ "1km" => "application/vnd.1000minds.decision-model+xml",
238
+ "ob" => "application/vnd.1ob",
239
+ "plb" => "application/vnd.3gpp.pic-bw-large",
240
+ "psb" => "application/vnd.3gpp.pic-bw-small",
241
+ "pvb" => "application/vnd.3gpp.pic-bw-var",
242
+ "sms" => "application/vnd.3gpp2.sms",
243
+ "tcap" => "application/vnd.3gpp2.tcap",
244
+ "imgcal" => "application/vnd.3lightssoftware.imagescal",
245
+ "pwn" => "application/vnd.3M.Post-it-Notes",
246
+ "aso" => "application/vnd.accpac.simply.aso",
247
+ "imp" => "application/vnd.accpac.simply.imp",
248
+ "acu" => "application/vnd.acucobol",
249
+ "atc" => "application/vnd.acucorp",
250
+ "acutc" => "application/vnd.acucorp",
251
+ "swf" => "application/vnd.adobe.flash.movie",
252
+ "fcdt" => "application/vnd.adobe.formscentral.fcdt",
253
+ "fxp" => "application/vnd.adobe.fxp",
254
+ "fxpl" => "application/vnd.adobe.fxp",
255
+ "xdp" => "application/vnd.adobe.xdp+xml",
256
+ "list3820" => "application/vnd.afpc.modca",
257
+ "listafp" => "application/vnd.afpc.modca",
258
+ "afp" => "application/vnd.afpc.modca",
259
+ "pseg3820" => "application/vnd.afpc.modca",
260
+ "ovl" => "application/vnd.afpc.modca-overlay",
261
+ "psg" => "application/vnd.afpc.modca-pagesegment",
262
+ "age" => "application/vnd.age",
263
+ "ahead" => "application/vnd.ahead.space",
264
+ "azf" => "application/vnd.airzip.filesecure.azf",
265
+ "azs" => "application/vnd.airzip.filesecure.azs",
266
+ "azw3" => "application/vnd.amazon.mobi8-ebook",
267
+ "acc" => "application/vnd.americandynamics.acc",
268
+ "ami" => "application/vnd.amiga.ami",
269
+ "ota" => "application/vnd.android.ota",
270
+ "apkg" => "application/vnd.anki",
271
+ "cii" => "application/vnd.anser-web-certificate-issue-initiation",
272
+ "fti" => "application/vnd.anser-web-funds-transfer-initiation",
273
+ "arrow" => "application/vnd.apache.arrow.file",
274
+ "arrows" => "application/vnd.apache.arrow.stream",
275
+ "apexland" => "application/vnd.apexlang",
276
+ "apex" => "application/vnd.apexlang",
277
+ "axdl" => "application/vnd.apexlang",
278
+ "dist" => "application/vnd.apple.installer+xml",
279
+ "distz" => "application/vnd.apple.installer+xml",
280
+ "pkg" => "application/vnd.apple.installer+xml",
281
+ "mpkg" => "application/vnd.apple.installer+xml",
282
+ "keynote" => "application/vnd.apple.keynote",
283
+ "m3u8" => "application/vnd.apple.mpegurl",
284
+ "numbers" => "application/vnd.apple.numbers",
285
+ "pages" => "application/vnd.apple.pages",
286
+ "swi" => "application/vnd.aristanetworks.swi",
287
+ "artisan" => "application/vnd.artisan+json",
288
+ "iota" => "application/vnd.astraea-software.iota",
289
+ "aep" => "application/vnd.audiograph",
290
+ "package" => "application/vnd.autopackage",
291
+ "bmml" => "application/vnd.balsamiq.bmml+xml",
292
+ "ac2" => "application/vnd.banana-accounting",
293
+ "bmpr" => "application/vnd.balsamiq.bmpr",
294
+ "lhzd" => "application/vnd.belightsoft.lhzd+zip",
295
+ "lhzl" => "application/vnd.belightsoft.lhzl+zip",
296
+ "mpm" => "application/vnd.blueice.multipass",
297
+ "ep" => "application/vnd.bluetooth.ep.oob",
298
+ "le" => "application/vnd.bluetooth.le.oob",
299
+ "bmi" => "application/vnd.bmi",
300
+ "rep" => "application/vnd.businessobjects",
301
+ "tlclient" => "application/vnd.cendio.thinlinc.clientconf",
302
+ "cdxml" => "application/vnd.chemdraw+xml",
303
+ "pgn" => "application/vnd.chess-pgn",
304
+ "mmd" => "application/vnd.chipnuts.karaoke-mmd",
305
+ "cdy" => "application/vnd.cinderella",
306
+ "csl" => "application/vnd.citationstyles.style+xml",
307
+ "cla" => "application/vnd.claymore",
308
+ "rp9" => "application/vnd.cloanto.rp9",
309
+ "c4g" => "application/vnd.clonk.c4group",
310
+ "c4d" => "application/vnd.clonk.c4group",
311
+ "c4f" => "application/vnd.clonk.c4group",
312
+ "c4p" => "application/vnd.clonk.c4group",
313
+ "c4u" => "application/vnd.clonk.c4group",
314
+ "c11amc" => "application/vnd.cluetrust.cartomobile-config",
315
+ "c11amz" => "application/vnd.cluetrust.cartomobile-config-pkg",
316
+ "coffee" => "application/vnd.coffeescript",
317
+ "xodt" => "application/vnd.collabio.xodocuments.document",
318
+ "xott" => "application/vnd.collabio.xodocuments.document-template",
319
+ "xodp" => "application/vnd.collabio.xodocuments.presentation",
320
+ "xotp" => "application/vnd.collabio.xodocuments.presentation-template",
321
+ "xods" => "application/vnd.collabio.xodocuments.spreadsheet",
322
+ "xots" => "application/vnd.collabio.xodocuments.spreadsheet-template",
323
+ "cbr" => "application/vnd.comicbook-rar",
324
+ "cbz" => "application/vnd.comicbook+zip",
325
+ "ica" => "application/vnd.commerce-battelle",
326
+ "icf" => "application/vnd.commerce-battelle",
327
+ "icd" => "application/vnd.commerce-battelle",
328
+ "ic0" => "application/vnd.commerce-battelle",
329
+ "ic1" => "application/vnd.commerce-battelle",
330
+ "ic2" => "application/vnd.commerce-battelle",
331
+ "ic3" => "application/vnd.commerce-battelle",
332
+ "ic4" => "application/vnd.commerce-battelle",
333
+ "ic5" => "application/vnd.commerce-battelle",
334
+ "ic6" => "application/vnd.commerce-battelle",
335
+ "ic7" => "application/vnd.commerce-battelle",
336
+ "ic8" => "application/vnd.commerce-battelle",
337
+ "csp" => "application/vnd.commonspace",
338
+ "cst" => "application/vnd.commonspace",
339
+ "cdbcmsg" => "application/vnd.contact.cmsg",
340
+ "ign" => "application/vnd.coreos.ignition+json",
341
+ "ignition" => "application/vnd.coreos.ignition+json",
342
+ "cmc" => "application/vnd.cosmocaller",
343
+ "clkx" => "application/vnd.crick.clicker",
344
+ "clkk" => "application/vnd.crick.clicker.keyboard",
345
+ "clkp" => "application/vnd.crick.clicker.palette",
346
+ "clkt" => "application/vnd.crick.clicker.template",
347
+ "clkw" => "application/vnd.crick.clicker.wordbank",
348
+ "wbs" => "application/vnd.criticaltools.wbs+xml",
349
+ "ssvc" => "application/vnd.crypto-shade-file",
350
+ "c9r" => "application/vnd.cryptomator.encrypted",
351
+ "c9s" => "application/vnd.cryptomator.encrypted",
352
+ "cryptomator" => "application/vnd.cryptomator.vault",
353
+ "pml" => "application/vnd.ctc-posml",
354
+ "ppd" => "application/vnd.cups-ppd",
355
+ "curl" => "application/vnd.curl",
356
+ "dart" => "application/vnd.dart",
357
+ "rdz" => "application/vnd.data-vision.rdz",
358
+ "dl" => "application/vnd.datalog",
359
+ "dbf" => "application/vnd.dbf",
360
+ "deb" => "application/vnd.debian.binary-package",
361
+ "udeb" => "application/vnd.debian.binary-package",
362
+ "uvf" => "application/vnd.dece.data",
363
+ "uvvf" => "application/vnd.dece.data",
364
+ "uvd" => "application/vnd.dece.data",
365
+ "uvvd" => "application/vnd.dece.data",
366
+ "uvt" => "application/vnd.dece.ttml+xml",
367
+ "uvvt" => "application/vnd.dece.ttml+xml",
368
+ "uvx" => "application/vnd.dece.unspecified",
369
+ "uvvx" => "application/vnd.dece.unspecified",
370
+ "uvz" => "application/vnd.dece.zip",
371
+ "uvvz" => "application/vnd.dece.zip",
372
+ "fe_launch" => "application/vnd.denovo.fcselayout-link",
373
+ "dsm" => "application/vnd.desmume.movie",
374
+ "dna" => "application/vnd.dna",
375
+ "docjson" => "application/vnd.document+json",
376
+ "scld" => "application/vnd.doremir.scorecloud-binary-document",
377
+ "dpg" => "application/vnd.dpgraph",
378
+ "mwc" => "application/vnd.dpgraph",
379
+ "dpgraph" => "application/vnd.dpgraph",
380
+ "dfac" => "application/vnd.dreamfactory",
381
+ "fla" => "application/vnd.dtg.local.flash",
382
+ "ait" => "application/vnd.dvb.ait",
383
+ "svc" => "application/vnd.dvb.service",
384
+ "geo" => "application/vnd.dynageo",
385
+ "dzr" => "application/vnd.dzr",
386
+ "mag" => "application/vnd.ecowin.chart",
387
+ "eln" => "application/vnd.eln+zip",
388
+ "nml" => "application/vnd.enliven",
389
+ "esf" => "application/vnd.epson.esf",
390
+ "msf" => "application/vnd.epson.msf",
391
+ "qam" => "application/vnd.epson.quickanime",
392
+ "slt" => "application/vnd.epson.salt",
393
+ "ssf" => "application/vnd.epson.ssf",
394
+ "qcall" => "application/vnd.ericsson.quickcall",
395
+ "qca" => "application/vnd.ericsson.quickcall",
396
+ "espass" => "application/vnd.espass-espass+zip",
397
+ "es3" => "application/vnd.eszigno3+xml",
398
+ "et3" => "application/vnd.eszigno3+xml",
399
+ "asice" => "application/vnd.etsi.asic-e+zip",
400
+ "sce" => "application/vnd.etsi.asic-e+zip",
401
+ "asics" => "application/vnd.etsi.asic-s+zip",
402
+ "tst" => "application/vnd.etsi.timestamp-token",
403
+ "carjson" => "application/vnd.eu.kasparian.car+json",
404
+ "mpw" => "application/vnd.exstream-empower+zip",
405
+ "pub" => "application/vnd.exstream-package",
406
+ "ecigprofile" => "application/vnd.evolv.ecig.profile",
407
+ "ecig" => "application/vnd.evolv.ecig.settings",
408
+ "ecigtheme" => "application/vnd.evolv.ecig.theme",
409
+ "ez2" => "application/vnd.ezpix-album",
410
+ "ez3" => "application/vnd.ezpix-package",
411
+ "dim" => "application/vnd.fastcopy-disk-image",
412
+ "gdz" => "application/vnd.familysearch.gedcom+zip",
413
+ "fdf" => "application/vnd.fdf",
414
+ "msd" => "application/vnd.fdsn.mseed",
415
+ "mseed" => "application/vnd.fdsn.mseed",
416
+ "seed" => "application/vnd.fdsn.seed",
417
+ "dataless" => "application/vnd.fdsn.seed",
418
+ "flb" => "application/vnd.ficlab.flb+zip",
419
+ "zfc" => "application/vnd.filmit.zfc",
420
+ "gph" => "application/vnd.FloGraphIt",
421
+ "ftc" => "application/vnd.fluxtime.clip",
422
+ "sfd" => "application/vnd.font-fontforge-sfd",
423
+ "fm" => "application/vnd.framemaker",
424
+ "fnc" => "application/vnd.frogans.fnc",
425
+ "ltf" => "application/vnd.frogans.ltf",
426
+ "fsc" => "application/vnd.fsc.weblaunch",
427
+ "oas" => "application/vnd.fujitsu.oasys",
428
+ "oa2" => "application/vnd.fujitsu.oasys2",
429
+ "oa3" => "application/vnd.fujitsu.oasys3",
430
+ "fg5" => "application/vnd.fujitsu.oasysgp",
431
+ "bh2" => "application/vnd.fujitsu.oasysprs",
432
+ "ddd" => "application/vnd.fujixerox.ddd",
433
+ "xdw" => "application/vnd.fujixerox.docuworks",
434
+ "xbd" => "application/vnd.fujixerox.docuworks.binder",
435
+ "xct" => "application/vnd.fujixerox.docuworks.container",
436
+ "fzs" => "application/vnd.fuzzysheet",
437
+ "txd" => "application/vnd.genomatix.tuxedo",
438
+ "genozip" => "application/vnd.genozip",
439
+ "ebuild" => "application/vnd.gentoo.ebuild",
440
+ "eclass" => "application/vnd.gentoo.eclass",
441
+ "gpkg.tar" => "application/vnd.gentoo.gpkg",
442
+ "tbz2" => "application/vnd.gentoo.xpak",
443
+ "xpak" => "application/vnd.gentoo.xpak",
444
+ "g3" => "application/vnd.geocube+xml",
445
+ "g³" => "application/vnd.geocube+xml",
446
+ "ggb" => "application/vnd.geogebra.file",
447
+ "ggs" => "application/vnd.geogebra.slides",
448
+ "ggt" => "application/vnd.geogebra.tool",
449
+ "gex" => "application/vnd.geometry-explorer",
450
+ "gre" => "application/vnd.geometry-explorer",
451
+ "gxt" => "application/vnd.geonext",
452
+ "g2w" => "application/vnd.geoplan",
453
+ "g3w" => "application/vnd.geospace",
454
+ "gmx" => "application/vnd.gmx",
455
+ "kml" => "application/vnd.google-earth.kml+xml",
456
+ "kmz" => "application/vnd.google-earth.kmz",
457
+ "gqf" => "application/vnd.grafeq",
458
+ "gqs" => "application/vnd.grafeq",
459
+ "gac" => "application/vnd.groove-account",
460
+ "ghf" => "application/vnd.groove-help",
461
+ "gim" => "application/vnd.groove-identity-message",
462
+ "grv" => "application/vnd.groove-injector",
463
+ "gtm" => "application/vnd.groove-tool-message",
464
+ "tpl" => "application/vnd.groove-tool-template",
465
+ "vcg" => "application/vnd.groove-vcard",
466
+ "hal" => "application/vnd.hal+xml",
467
+ "zmm" => "application/vnd.HandHeld-Entertainment+xml",
468
+ "hbci" => "application/vnd.hbci",
469
+ "hbc" => "application/vnd.hbci",
470
+ "kom" => "application/vnd.hbci",
471
+ "upa" => "application/vnd.hbci",
472
+ "pkd" => "application/vnd.hbci",
473
+ "bpd" => "application/vnd.hbci",
474
+ "hdt" => "application/vnd.hdt",
475
+ "les" => "application/vnd.hhe.lesson-player",
476
+ "hpgl" => "application/vnd.hp-HPGL",
477
+ "hpi" => "application/vnd.hp-hpid",
478
+ "hpid" => "application/vnd.hp-hpid",
479
+ "hps" => "application/vnd.hp-hps",
480
+ "jlt" => "application/vnd.hp-jlyt",
481
+ "pcl" => "application/vnd.hp-PCL",
482
+ "hsl" => "application/vnd.hsl",
483
+ "sfd-hdstx" => "application/vnd.hydrostatix.sof-data",
484
+ "x3d" => "application/vnd.hzn-3d-crossword",
485
+ "emm" => "application/vnd.ibm.electronic-media",
486
+ "mpy" => "application/vnd.ibm.MiniPay",
487
+ "irm" => "application/vnd.ibm.rights-management",
488
+ "sc" => "application/vnd.ibm.secure-container",
489
+ "icc" => "application/vnd.iccprofile",
490
+ "icm" => "application/vnd.iccprofile",
491
+ "1905.1" => "application/vnd.ieee.1905",
492
+ "igl" => "application/vnd.igloader",
493
+ "imf" => "application/vnd.imagemeter.folder+zip",
494
+ "imi" => "application/vnd.imagemeter.image+zip",
495
+ "ivp" => "application/vnd.immervision-ivp",
496
+ "ivu" => "application/vnd.immervision-ivu",
497
+ "imscc" => "application/vnd.ims.imsccv1p1",
498
+ "igm" => "application/vnd.insors.igm",
499
+ "xpw" => "application/vnd.intercon.formnet",
500
+ "xpx" => "application/vnd.intercon.formnet",
501
+ "i2g" => "application/vnd.intergeo",
502
+ "qbo" => "application/vnd.intu.qbo",
503
+ "qfx" => "application/vnd.intu.qfx",
504
+ "car" => "application/vnd.ipld.car",
505
+ "rcprofile" => "application/vnd.ipunplugged.rcprofile",
506
+ "irp" => "application/vnd.irepository.package+xml",
507
+ "xpr" => "application/vnd.is-xpr",
508
+ "fcs" => "application/vnd.isac.fcs",
509
+ "jam" => "application/vnd.jam",
510
+ "rms" => "application/vnd.jcp.javame.midlet-rms",
511
+ "jisp" => "application/vnd.jisp",
512
+ "joda" => "application/vnd.joost.joda-archive",
513
+ "ktz" => "application/vnd.kahootz",
514
+ "ktr" => "application/vnd.kahootz",
515
+ "karbon" => "application/vnd.kde.karbon",
516
+ "chrt" => "application/vnd.kde.kchart",
517
+ "kfo" => "application/vnd.kde.kformula",
518
+ "flw" => "application/vnd.kde.kivio",
519
+ "kon" => "application/vnd.kde.kontour",
520
+ "kpr" => "application/vnd.kde.kpresenter",
521
+ "kpt" => "application/vnd.kde.kpresenter",
522
+ "ksp" => "application/vnd.kde.kspread",
523
+ "kwd" => "application/vnd.kde.kword",
524
+ "kwt" => "application/vnd.kde.kword",
525
+ "htke" => "application/vnd.kenameaapp",
526
+ "kia" => "application/vnd.kidspiration",
527
+ "kne" => "application/vnd.Kinar",
528
+ "knp" => "application/vnd.Kinar",
529
+ "sdf" => "application/vnd.Kinar",
530
+ "skp" => "application/vnd.koan",
531
+ "skd" => "application/vnd.koan",
532
+ "skm" => "application/vnd.koan",
533
+ "skt" => "application/vnd.koan",
534
+ "sse" => "application/vnd.kodak-descriptor",
535
+ "las" => "application/vnd.las",
536
+ "lasjson" => "application/vnd.las.las+json",
537
+ "lasxml" => "application/vnd.las.las+xml",
538
+ "lbd" => "application/vnd.llamagraphics.life-balance.desktop",
539
+ "lbe" => "application/vnd.llamagraphics.life-balance.exchange+xml",
540
+ "lcs" => "application/vnd.logipipe.circuit+zip",
541
+ "lca" => "application/vnd.logipipe.circuit+zip",
542
+ "loom" => "application/vnd.loom",
543
+ "123" => "application/vnd.lotus-1-2-3",
544
+ "wk4" => "application/vnd.lotus-1-2-3",
545
+ "wk3" => "application/vnd.lotus-1-2-3",
546
+ "wk1" => "application/vnd.lotus-1-2-3",
547
+ "apr" => "application/vnd.lotus-approach",
548
+ "vew" => "application/vnd.lotus-approach",
549
+ "prz" => "application/vnd.lotus-freelance",
550
+ "pre" => "application/vnd.lotus-freelance",
551
+ "nsf" => "application/vnd.lotus-notes",
552
+ "ntf" => "application/vnd.lotus-notes",
553
+ "ndl" => "application/vnd.lotus-notes",
554
+ "ns4" => "application/vnd.lotus-notes",
555
+ "ns3" => "application/vnd.lotus-notes",
556
+ "ns2" => "application/vnd.lotus-notes",
557
+ "nsh" => "application/vnd.lotus-notes",
558
+ "nsg" => "application/vnd.lotus-notes",
559
+ "or3" => "application/vnd.lotus-organizer",
560
+ "or2" => "application/vnd.lotus-organizer",
561
+ "org" => "application/vnd.lotus-organizer",
562
+ "scm" => "application/vnd.lotus-screencam",
563
+ "lwp" => "application/vnd.lotus-wordpro",
564
+ "sam" => "application/vnd.lotus-wordpro",
565
+ "portpkg" => "application/vnd.macports.portpkg",
566
+ "mvt" => "application/vnd.mapbox-vector-tile",
567
+ "mdc" => "application/vnd.marlin.drm.mdcf",
568
+ "3tz" => "application/vnd.maxar.archive.3tz+zip",
569
+ "mmdb" => "application/vnd.maxmind.maxmind-db",
570
+ "mcd" => "application/vnd.mcd",
571
+ "mdl" => "application/vnd.mdl",
572
+ "mbsdf" => "application/vnd.mdl-mbsdf",
573
+ "mc1" => "application/vnd.medcalcdata",
574
+ "cdkey" => "application/vnd.mediastation.cdkey",
575
+ "rxr" => "application/vnd.medicalholodeck.recordxr",
576
+ "mwf" => "application/vnd.MFER",
577
+ "mfm" => "application/vnd.mfmp",
578
+ "flo" => "application/vnd.micrografx.flo",
579
+ "igx" => "application/vnd.micrografx.igx",
580
+ "mif" => "application/vnd.mif",
581
+ "daf" => "application/vnd.Mobius.DAF",
582
+ "dis" => "application/vnd.Mobius.DIS",
583
+ "mbk" => "application/vnd.Mobius.MBK",
584
+ "mqy" => "application/vnd.Mobius.MQY",
585
+ "msl" => "application/vnd.Mobius.MSL",
586
+ "plc" => "application/vnd.Mobius.PLC",
587
+ "txf" => "application/vnd.Mobius.TXF",
588
+ "modl" => "application/vnd.modl",
589
+ "mpn" => "application/vnd.mophun.application",
590
+ "mpc" => "application/vnd.mophun.certificate",
591
+ "xul" => "application/vnd.mozilla.xul+xml",
592
+ "3mf" => "application/vnd.ms-3mfdocument",
593
+ "cil" => "application/vnd.ms-artgalry",
594
+ "asf" => "application/vnd.ms-asf",
595
+ "cab" => "application/vnd.ms-cab-compressed",
596
+ "xls" => "application/vnd.ms-excel",
597
+ "xlm" => "application/vnd.ms-excel",
598
+ "xla" => "application/vnd.ms-excel",
599
+ "xlc" => "application/vnd.ms-excel",
600
+ "xlt" => "application/vnd.ms-excel",
601
+ "xlw" => "application/vnd.ms-excel",
602
+ "xltm" => "application/vnd.ms-excel.template.macroEnabled.12",
603
+ "xlam" => "application/vnd.ms-excel.addin.macroEnabled.12",
604
+ "xlsb" => "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
605
+ "xlsm" => "application/vnd.ms-excel.sheet.macroEnabled.12",
606
+ "eot" => "application/vnd.ms-fontobject",
607
+ "chm" => "application/vnd.ms-htmlhelp",
608
+ "ims" => "application/vnd.ms-ims",
609
+ "lrm" => "application/vnd.ms-lrm",
610
+ "thmx" => "application/vnd.ms-officetheme",
611
+ "ppt" => "application/vnd.ms-powerpoint",
612
+ "pps" => "application/vnd.ms-powerpoint",
613
+ "pot" => "application/vnd.ms-powerpoint",
614
+ "ppam" => "application/vnd.ms-powerpoint.addin.macroEnabled.12",
615
+ "pptm" => "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
616
+ "sldm" => "application/vnd.ms-powerpoint.slide.macroEnabled.12",
617
+ "ppsm" => "application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
618
+ "potm" => "application/vnd.ms-powerpoint.template.macroEnabled.12",
619
+ "mpp" => "application/vnd.ms-project",
620
+ "mpt" => "application/vnd.ms-project",
621
+ "tnef" => "application/vnd.ms-tnef",
622
+ "tnf" => "application/vnd.ms-tnef",
623
+ "docm" => "application/vnd.ms-word.document.macroEnabled.12",
624
+ "dotm" => "application/vnd.ms-word.template.macroEnabled.12",
625
+ "wcm" => "application/vnd.ms-works",
626
+ "wdb" => "application/vnd.ms-works",
627
+ "wks" => "application/vnd.ms-works",
628
+ "wps" => "application/vnd.ms-works",
629
+ "wpl" => "application/vnd.ms-wpl",
630
+ "xps" => "application/vnd.ms-xpsdocument",
631
+ "msa" => "application/vnd.msa-disk-image",
632
+ "mseq" => "application/vnd.mseq",
633
+ "crtr" => "application/vnd.multiad.creator",
634
+ "cif" => "application/vnd.multiad.creator.cif",
635
+ "mus" => "application/vnd.musician",
636
+ "msty" => "application/vnd.muvee.style",
637
+ "taglet" => "application/vnd.mynfc",
638
+ "nebul" => "application/vnd.nebumind.line",
639
+ "line" => "application/vnd.nebumind.line",
640
+ "entity" => "application/vnd.nervana",
641
+ "request" => "application/vnd.nervana",
642
+ "bkm" => "application/vnd.nervana",
643
+ "kcm" => "application/vnd.nervana",
644
+ "nimn" => "application/vnd.nimn",
645
+ "nitf" => "application/vnd.nitf",
646
+ "nlu" => "application/vnd.neurolanguage.nlu",
647
+ "nds" => "application/vnd.nintendo.nitro.rom",
648
+ "sfc" => "application/vnd.nintendo.snes.rom",
649
+ "smc" => "application/vnd.nintendo.snes.rom",
650
+ "nnd" => "application/vnd.noblenet-directory",
651
+ "nns" => "application/vnd.noblenet-sealer",
652
+ "nnw" => "application/vnd.noblenet-web",
653
+ "ac" => "application/vnd.nokia.n-gage.ac+xml",
654
+ "ngdat" => "application/vnd.nokia.n-gage.data",
655
+ "n-gage" => "application/vnd.nokia.n-gage.symbian.install",
656
+ "rpst" => "application/vnd.nokia.radio-preset",
657
+ "rpss" => "application/vnd.nokia.radio-presets",
658
+ "edm" => "application/vnd.novadigm.EDM",
659
+ "edx" => "application/vnd.novadigm.EDX",
660
+ "ext" => "application/vnd.novadigm.EXT",
661
+ "odb" => "application/vnd.oasis.opendocument.base",
662
+ "odc" => "application/vnd.oasis.opendocument.chart",
663
+ "otc" => "application/vnd.oasis.opendocument.chart-template",
664
+ "odf" => "application/vnd.oasis.opendocument.formula",
665
+ "odg" => "application/vnd.oasis.opendocument.graphics",
666
+ "otg" => "application/vnd.oasis.opendocument.graphics-template",
667
+ "odi" => "application/vnd.oasis.opendocument.image",
668
+ "oti" => "application/vnd.oasis.opendocument.image-template",
669
+ "odp" => "application/vnd.oasis.opendocument.presentation",
670
+ "otp" => "application/vnd.oasis.opendocument.presentation-template",
671
+ "ods" => "application/vnd.oasis.opendocument.spreadsheet",
672
+ "ots" => "application/vnd.oasis.opendocument.spreadsheet-template",
673
+ "odt" => "application/vnd.oasis.opendocument.text",
674
+ "odm" => "application/vnd.oasis.opendocument.text-master",
675
+ "otm" => "application/vnd.oasis.opendocument.text-master-template",
676
+ "ott" => "application/vnd.oasis.opendocument.text-template",
677
+ "oth" => "application/vnd.oasis.opendocument.text-web",
678
+ "xo" => "application/vnd.olpc-sugar",
679
+ "dd2" => "application/vnd.oma.dd2+xml",
680
+ "tam" => "application/vnd.onepager",
681
+ "tamp" => "application/vnd.onepagertamp",
682
+ "tamx" => "application/vnd.onepagertamx",
683
+ "tat" => "application/vnd.onepagertat",
684
+ "tatp" => "application/vnd.onepagertatp",
685
+ "tatx" => "application/vnd.onepagertatx",
686
+ "obgx" => "application/vnd.openblox.game+xml",
687
+ "obg" => "application/vnd.openblox.game-binary",
688
+ "oeb" => "application/vnd.openeye.oeb",
689
+ "oxt" => "application/vnd.openofficeorg.extension",
690
+ "osm" => "application/vnd.openstreetmap.data+xml",
691
+ "pptx" =>
692
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
693
+ "sldx" => "application/vnd.openxmlformats-officedocument.presentationml.slide",
694
+ "ppsx" =>
695
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
696
+ "potx" =>
697
+ "application/vnd.openxmlformats-officedocument.presentationml.template",
698
+ "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
699
+ "xltx" =>
700
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
701
+ "docx" =>
702
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
703
+ "dotx" =>
704
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
705
+ "ndc" => "application/vnd.osa.netdeploy",
706
+ "mgp" => "application/vnd.osgeo.mapguide.package",
707
+ "dp" => "application/vnd.osgi.dp",
708
+ "esa" => "application/vnd.osgi.subsystem",
709
+ "oxlicg" => "application/vnd.oxli.countgraph",
710
+ "prc" => "application/vnd.palm",
711
+ "pdb" => "application/vnd.palm",
712
+ "pqa" => "application/vnd.palm",
713
+ "oprc" => "application/vnd.palm",
714
+ "plp" => "application/vnd.panoply",
715
+ "dive" => "application/vnd.patentdive",
716
+ "paw" => "application/vnd.pawaafile",
717
+ "str" => "application/vnd.pg.format",
718
+ "ei6" => "application/vnd.pg.osasli",
719
+ "pil" => "application/vnd.piaccess.application-licence",
720
+ "efif" => "application/vnd.picsel",
721
+ "wg" => "application/vnd.pmi.widget",
722
+ "plf" => "application/vnd.pocketlearn",
723
+ "pbd" => "application/vnd.powerbuilder6",
724
+ "preminet" => "application/vnd.preminet",
725
+ "box" => "application/vnd.previewsystems.box",
726
+ "vbox" => "application/vnd.previewsystems.box",
727
+ "mgz" => "application/vnd.proteus.magazine",
728
+ "psfs" => "application/vnd.psfs",
729
+ "qps" => "application/vnd.publishare-delta-tree",
730
+ "ptid" => "application/vnd.pvi.ptid1",
731
+ "bar" => "application/vnd.qualcomm.brew-app-res",
732
+ "qxd" => "application/vnd.Quark.QuarkXPress",
733
+ "qxt" => "application/vnd.Quark.QuarkXPress",
734
+ "qwd" => "application/vnd.Quark.QuarkXPress",
735
+ "qwt" => "application/vnd.Quark.QuarkXPress",
736
+ "qxl" => "application/vnd.Quark.QuarkXPress",
737
+ "qxb" => "application/vnd.Quark.QuarkXPress",
738
+ "quox" => "application/vnd.quobject-quoxdocument",
739
+ "quiz" => "application/vnd.quobject-quoxdocument",
740
+ "tree" => "application/vnd.rainstor.data",
741
+ "rar" => "application/vnd.rar",
742
+ "bed" => "application/vnd.realvnc.bed",
743
+ "mxl" => "application/vnd.recordare.musicxml",
744
+ "rlm" => "application/vnd.resilient.logic",
745
+ "reload" => "application/vnd.resilient.logic",
746
+ "cryptonote" => "application/vnd.rig.cryptonote",
747
+ "link66" => "application/vnd.route66.link66+xml",
748
+ "st" => "application/vnd.sailingtracker.track",
749
+ "SAR" => "application/vnd.sar",
750
+ "scd" => "application/vnd.scribus",
751
+ "sla" => "application/vnd.scribus",
752
+ "slaz" => "application/vnd.scribus",
753
+ "s3df" => "application/vnd.sealed.3df",
754
+ "scsf" => "application/vnd.sealed.csf",
755
+ "sdoc" => "application/vnd.sealed.doc",
756
+ "sdo" => "application/vnd.sealed.doc",
757
+ "s1w" => "application/vnd.sealed.doc",
758
+ "seml" => "application/vnd.sealed.eml",
759
+ "sem" => "application/vnd.sealed.eml",
760
+ "smht" => "application/vnd.sealed.mht",
761
+ "smh" => "application/vnd.sealed.mht",
762
+ "sppt" => "application/vnd.sealed.ppt",
763
+ "s1p" => "application/vnd.sealed.ppt",
764
+ "stif" => "application/vnd.sealed.tiff",
765
+ "sxls" => "application/vnd.sealed.xls",
766
+ "sxl" => "application/vnd.sealed.xls",
767
+ "s1e" => "application/vnd.sealed.xls",
768
+ "stml" => "application/vnd.sealedmedia.softseal.html",
769
+ "s1h" => "application/vnd.sealedmedia.softseal.html",
770
+ "spdf" => "application/vnd.sealedmedia.softseal.pdf",
771
+ "spd" => "application/vnd.sealedmedia.softseal.pdf",
772
+ "s1a" => "application/vnd.sealedmedia.softseal.pdf",
773
+ "see" => "application/vnd.seemail",
774
+ "sema" => "application/vnd.sema",
775
+ "semd" => "application/vnd.semd",
776
+ "semf" => "application/vnd.semf",
777
+ "ssv" => "application/vnd.shade-save-file",
778
+ "ifm" => "application/vnd.shana.informed.formdata",
779
+ "itp" => "application/vnd.shana.informed.formtemplate",
780
+ "iif" => "application/vnd.shana.informed.interchange",
781
+ "ipk" => "application/vnd.shana.informed.package",
782
+ "shp" => "application/vnd.shp",
783
+ "shx" => "application/vnd.shx",
784
+ "sr" => "application/vnd.sigrok.session",
785
+ "twd" => "application/vnd.SimTech-MindMapper",
786
+ "twds" => "application/vnd.SimTech-MindMapper",
787
+ "mmf" => "application/vnd.smaf",
788
+ "notebook" => "application/vnd.smart.notebook",
789
+ "teacher" => "application/vnd.smart.teacher",
790
+ "sipa" => "application/vnd.smintio.portals.archive",
791
+ "ptrom" => "application/vnd.snesdev-page-table",
792
+ "pt" => "application/vnd.snesdev-page-table",
793
+ "fo" => "application/vnd.software602.filler.form+xml",
794
+ "zfo" => "application/vnd.software602.filler.form-xml-zip",
795
+ "sdkm" => "application/vnd.solent.sdkm+xml",
796
+ "sdkd" => "application/vnd.solent.sdkm+xml",
797
+ "dxp" => "application/vnd.spotfire.dxp",
798
+ "sfs" => "application/vnd.spotfire.sfs",
799
+ "sqlite" => "application/vnd.sqlite3",
800
+ "sqlite3" => "application/vnd.sqlite3",
801
+ "smzip" => "application/vnd.stepmania.package",
802
+ "sm" => "application/vnd.stepmania.stepchart",
803
+ "wadl" => "application/vnd.sun.wadl+xml",
804
+ "sus" => "application/vnd.sus-calendar",
805
+ "susp" => "application/vnd.sus-calendar",
806
+ "ml2" => "application/vnd.sybyl.mol2",
807
+ "mol2" => "application/vnd.sybyl.mol2",
808
+ "sy2" => "application/vnd.sybyl.mol2",
809
+ "scl" => "application/vnd.sycle+xml",
810
+ "syft.json" => "application/vnd.syft+json",
811
+ "xsm" => "application/vnd.syncml+xml",
812
+ "bdm" => "application/vnd.syncml.dm+wbxml",
813
+ "xdm" => "application/vnd.syncml.dm+xml",
814
+ "ddf" => "application/vnd.syncml.dmddf+xml",
815
+ "tao" => "application/vnd.tao.intent-module-archive",
816
+ "pcap" => "application/vnd.tcpdump.pcap",
817
+ "cap" => "application/vnd.tcpdump.pcap",
818
+ "dmp" => "application/vnd.tcpdump.pcap",
819
+ "qvd" => "application/vnd.theqvd",
820
+ "ppttc" => "application/vnd.think-cell.ppttc+json",
821
+ "vfr" => "application/vnd.tml",
822
+ "viaframe" => "application/vnd.tml",
823
+ "tmo" => "application/vnd.tmobile-livetv",
824
+ "tpt" => "application/vnd.trid.tpt",
825
+ "mxs" => "application/vnd.triscape.mxs",
826
+ "tra" => "application/vnd.trueapp",
827
+ "ufdl" => "application/vnd.ufdl",
828
+ "ufd" => "application/vnd.ufdl",
829
+ "frm" => "application/vnd.ufdl",
830
+ "utz" => "application/vnd.uiq.theme",
831
+ "umj" => "application/vnd.umajin",
832
+ "unityweb" => "application/vnd.unity",
833
+ "uoml" => "application/vnd.uoml+xml",
834
+ "uo" => "application/vnd.uoml+xml",
835
+ "urim" => "application/vnd.uri-map",
836
+ "urimap" => "application/vnd.uri-map",
837
+ "vmt" => "application/vnd.valve.source.material",
838
+ "vcx" => "application/vnd.vcx",
839
+ "mxi" => "application/vnd.vd-study",
840
+ "study-inter" => "application/vnd.vd-study",
841
+ "model-inter" => "application/vnd.vd-study",
842
+ "vwx" => "application/vnd.vectorworks",
843
+ "aion" => "application/vnd.veritone.aion+json",
844
+ "vtnstd" => "application/vnd.veritone.aion+json",
845
+ "istc" => "application/vnd.veryant.thin",
846
+ "isws" => "application/vnd.veryant.thin",
847
+ "VES" => "application/vnd.ves.encrypted",
848
+ "vsc" => "application/vnd.vidsoft.vidconference",
849
+ "vsd" => "application/vnd.visio",
850
+ "vst" => "application/vnd.visio",
851
+ "vsw" => "application/vnd.visio",
852
+ "vss" => "application/vnd.visio",
853
+ "vis" => "application/vnd.visionary",
854
+ "vsf" => "application/vnd.vsf",
855
+ "sic" => "application/vnd.wap.sic",
856
+ "slc" => "application/vnd.wap.slc",
857
+ "wbxml" => "application/vnd.wap.wbxml",
858
+ "wmlc" => "application/vnd.wap.wmlc",
859
+ "wmlsc" => "application/vnd.wap.wmlscriptc",
860
+ "wafl" => "application/vnd.wasmflow.wafl",
861
+ "wtb" => "application/vnd.webturbo",
862
+ "p2p" => "application/vnd.wfa.p2p",
863
+ "wsc" => "application/vnd.wfa.wsc",
864
+ "wmc" => "application/vnd.wmc",
865
+ "m" => "application/vnd.wolfram.mathematica.package",
866
+ "nbp" => "application/vnd.wolfram.player",
867
+ "wpd" => "application/vnd.wordperfect",
868
+ "wqd" => "application/vnd.wqd",
869
+ "stf" => "application/vnd.wt.stf",
870
+ "wv" => "application/vnd.wv.csp+wbxml",
871
+ "xar" => "application/vnd.xara",
872
+ "xfdl" => "application/vnd.xfdl",
873
+ "xfd" => "application/vnd.xfdl",
874
+ "cpkg" => "application/vnd.xmpie.cpkg",
875
+ "dpkg" => "application/vnd.xmpie.dpkg",
876
+ "ppkg" => "application/vnd.xmpie.ppkg",
877
+ "xlim" => "application/vnd.xmpie.xlim",
878
+ "hvd" => "application/vnd.yamaha.hv-dic",
879
+ "hvs" => "application/vnd.yamaha.hv-script",
880
+ "hvp" => "application/vnd.yamaha.hv-voice",
881
+ "osf" => "application/vnd.yamaha.openscoreformat",
882
+ "saf" => "application/vnd.yamaha.smaf-audio",
883
+ "spf" => "application/vnd.yamaha.smaf-phrase",
884
+ "yme" => "application/vnd.yaoweme",
885
+ "cmp" => "application/vnd.yellowriver-custom-menu",
886
+ "zir" => "application/vnd.zul",
887
+ "zirz" => "application/vnd.zul",
888
+ "zaz" => "application/vnd.zzazz.deck+xml",
889
+ "vxml" => "application/voicexml+xml",
890
+ "vcj" => "application/voucher-cms+json",
891
+ "wasm" => "application/wasm",
892
+ "wif" => "application/watcherinfo+xml",
893
+ "wgt" => "application/widget",
894
+ "wsdl" => "application/wsdl+xml",
895
+ "wspolicy" => "application/wspolicy+xml",
896
+ "yang" => "application/yang",
897
+ "yin" => "application/yin+xml",
898
+ "zip" => "application/zip",
899
+ "zst" => "application/zstd",
900
+ "726" => "audio/32kadpcm",
901
+ "adts" => "audio/aac",
902
+ "aac" => "audio/aac",
903
+ "ass" => "audio/aac",
904
+ "ac3" => "audio/ac3",
905
+ "amr" => "audio/AMR",
906
+ "awb" => "audio/AMR-WB",
907
+ "acn" => "audio/asc",
908
+ "aal" => "audio/ATRAC-ADVANCED-LOSSLESS",
909
+ "atx" => "audio/ATRAC-X",
910
+ "at3" => "audio/ATRAC3",
911
+ "aa3" => "audio/ATRAC3",
912
+ "omg" => "audio/ATRAC3",
913
+ "au" => "audio/basic",
914
+ "snd" => "audio/basic",
915
+ "dls" => "audio/dls",
916
+ "evc" => "audio/EVRC",
917
+ "evb" => "audio/EVRCB",
918
+ "enw" => "audio/EVRCNW",
919
+ "evw" => "audio/EVRCWB",
920
+ "lbc" => "audio/iLBC",
921
+ "l16" => "audio/L16",
922
+ "mhas" => "audio/mhas",
923
+ "mxmf" => "audio/mobile-xmf",
924
+ "m4a" => "audio/mp4",
925
+ "mp3" => "audio/mpeg",
926
+ "mpga" => "audio/mpeg",
927
+ "mp1" => "audio/mpeg",
928
+ "mp2" => "audio/mpeg",
929
+ "oga" => "audio/ogg",
930
+ "ogg" => "audio/ogg",
931
+ "opus" => "audio/ogg",
932
+ "spx" => "audio/ogg",
933
+ "qcp" => "audio/QCELP",
934
+ "smv" => "audio/SMV",
935
+ "sofa" => "audio/sofa",
936
+ "loas" => "audio/usac",
937
+ "xhe" => "audio/usac",
938
+ "koz" => "audio/vnd.audiokoz",
939
+ "uva" => "audio/vnd.dece.audio",
940
+ "uvva" => "audio/vnd.dece.audio",
941
+ "eol" => "audio/vnd.digital-winds",
942
+ "mlp" => "audio/vnd.dolby.mlp",
943
+ "dts" => "audio/vnd.dts",
944
+ "dtshd" => "audio/vnd.dts.hd",
945
+ "plj" => "audio/vnd.everad.plj",
946
+ "lvp" => "audio/vnd.lucent.voice",
947
+ "pya" => "audio/vnd.ms-playready.media.pya",
948
+ "vbk" => "audio/vnd.nortel.vbk",
949
+ "ecelp4800" => "audio/vnd.nuera.ecelp4800",
950
+ "ecelp7470" => "audio/vnd.nuera.ecelp7470",
951
+ "ecelp9600" => "audio/vnd.nuera.ecelp9600",
952
+ "multitrack" => "audio/vnd.presonus.multitrack",
953
+ "rip" => "audio/vnd.rip",
954
+ "smp3" => "audio/vnd.sealedmedia.softseal.mpeg",
955
+ "smp" => "audio/vnd.sealedmedia.softseal.mpeg",
956
+ "s1m" => "audio/vnd.sealedmedia.softseal.mpeg",
957
+ "ttc" => "font/collection",
958
+ "otf" => "font/otf",
959
+ "ttf" => "font/ttf",
960
+ "woff" => "font/woff",
961
+ "woff2" => "font/woff2",
962
+ "exr" => "image/aces",
963
+ "avci" => "image/avci",
964
+ "avcs" => "image/avcs",
965
+ "avif" => "image/avif",
966
+ "hif" => "image/avif",
967
+ "bmp" => "image/bmp",
968
+ "dib" => "image/bmp",
969
+ "cgm" => "image/cgm",
970
+ "drle" => "image/dicom-rle",
971
+ "dpx" => "image/dpx",
972
+ "emf" => "image/emf",
973
+ "fits" => "image/fits",
974
+ "fit" => "image/fits",
975
+ "fts" => "image/fits",
976
+ "heic" => "image/heic",
977
+ "heics" => "image/heic-sequence",
978
+ "heif" => "image/heif",
979
+ "heifs" => "image/heif-sequence",
980
+ "hej2" => "image/hej2k",
981
+ "hsj2" => "image/hsj2",
982
+ "gif" => "image/gif",
983
+ "ief" => "image/ief",
984
+ "jls" => "image/jls",
985
+ "jp2" => "image/jp2",
986
+ "jpg2" => "image/jp2",
987
+ "jph" => "image/jph",
988
+ "jhc" => "image/jphc",
989
+ "jpg" => "image/jpeg",
990
+ "jpeg" => "image/jpeg",
991
+ "jpe" => "image/jpeg",
992
+ "jfif" => "image/jpeg",
993
+ "jpm" => "image/jpm",
994
+ "jpgm" => "image/jpm",
995
+ "jpx" => "image/jpx",
996
+ "jpf" => "image/jpx",
997
+ "jxl" => "image/jxl",
998
+ "jxr" => "image/jxr",
999
+ "jxra" => "image/jxrA",
1000
+ "jxrs" => "image/jxrS",
1001
+ "jxs" => "image/jxs",
1002
+ "jxsc" => "image/jxsc",
1003
+ "jxsi" => "image/jxsi",
1004
+ "jxss" => "image/jxss",
1005
+ "ktx" => "image/ktx",
1006
+ "ktx2" => "image/ktx2",
1007
+ "png" => "image/png",
1008
+ "svg" => "image/svg+xml",
1009
+ "svgz" => "image/svg+xml",
1010
+ "t38" => "image/t38",
1011
+ "tiff" => "image/tiff",
1012
+ "tif" => "image/tiff",
1013
+ "tfx" => "image/tiff-fx",
1014
+ "psd" => "image/vnd.adobe.photoshop",
1015
+ "azv" => "image/vnd.airzip.accelerator.azv",
1016
+ "uvi" => "image/vnd.dece.graphic",
1017
+ "uvvi" => "image/vnd.dece.graphic",
1018
+ "uvg" => "image/vnd.dece.graphic",
1019
+ "uvvg" => "image/vnd.dece.graphic",
1020
+ "djvu" => "image/vnd.djvu",
1021
+ "djv" => "image/vnd.djvu",
1022
+ "dwg" => "image/vnd.dwg",
1023
+ "dxf" => "image/vnd.dxf",
1024
+ "fbs" => "image/vnd.fastbidsheet",
1025
+ "fpx" => "image/vnd.fpx",
1026
+ "fst" => "image/vnd.fst",
1027
+ "mmr" => "image/vnd.fujixerox.edmics-mmr",
1028
+ "rlc" => "image/vnd.fujixerox.edmics-rlc",
1029
+ "pgb" => "image/vnd.globalgraphics.pgb",
1030
+ "ico" => "image/vnd.microsoft.icon",
1031
+ "apng" => "image/vnd.mozilla.apng",
1032
+ "mdi" => "image/vnd.ms-modi",
1033
+ "b16" => "image/vnd.pco.b16",
1034
+ "hdr" => "image/vnd.radiance",
1035
+ "rgbe" => "image/vnd.radiance",
1036
+ "xyze" => "image/vnd.radiance",
1037
+ "spng" => "image/vnd.sealed.png",
1038
+ "spn" => "image/vnd.sealed.png",
1039
+ "s1n" => "image/vnd.sealed.png",
1040
+ "sgif" => "image/vnd.sealedmedia.softseal.gif",
1041
+ "sgi" => "image/vnd.sealedmedia.softseal.gif",
1042
+ "s1g" => "image/vnd.sealedmedia.softseal.gif",
1043
+ "sjpg" => "image/vnd.sealedmedia.softseal.jpg",
1044
+ "sjp" => "image/vnd.sealedmedia.softseal.jpg",
1045
+ "s1j" => "image/vnd.sealedmedia.softseal.jpg",
1046
+ "tap" => "image/vnd.tencent.tap",
1047
+ "vtf" => "image/vnd.valve.source.texture",
1048
+ "wbmp" => "image/vnd.wap.wbmp",
1049
+ "xif" => "image/vnd.xiff",
1050
+ "pcx" => "image/vnd.zbrush.pcx",
1051
+ "wmf" => "image/wmf",
1052
+ "u8msg" => "message/global",
1053
+ "u8dsn" => "message/global-delivery-status",
1054
+ "u8mdn" => "message/global-disposition-notification",
1055
+ "u8hdr" => "message/global-headers",
1056
+ "eml" => "message/rfc822",
1057
+ "mail" => "message/rfc822",
1058
+ "art" => "message/rfc822",
1059
+ "glb" => "model/gltf-binary",
1060
+ "gltf" => "model/gltf+json",
1061
+ "jt" => "model/JT",
1062
+ "igs" => "model/iges",
1063
+ "iges" => "model/iges",
1064
+ "msh" => "model/mesh",
1065
+ "mesh" => "model/mesh",
1066
+ "silo" => "model/mesh",
1067
+ "mtl" => "model/mtl",
1068
+ "obj" => "model/obj",
1069
+ "stpx" => "model/step+xml",
1070
+ "stpxz" => "model/step-xml+zip",
1071
+ "stl" => "model/stl",
1072
+ "u3d" => "model/u3d",
1073
+ "bary" => "model/vnd.bary",
1074
+ "cld" => "model/vnd.cld",
1075
+ "dae" => "model/vnd.collada+xml",
1076
+ "dwf" => "model/vnd.dwf",
1077
+ "gdl" => "model/vnd.gdl",
1078
+ "gsm" => "model/vnd.gdl",
1079
+ "win" => "model/vnd.gdl",
1080
+ "dor" => "model/vnd.gdl",
1081
+ "lmp" => "model/vnd.gdl",
1082
+ "rsm" => "model/vnd.gdl",
1083
+ "msm" => "model/vnd.gdl",
1084
+ "ism" => "model/vnd.gdl",
1085
+ "gtw" => "model/vnd.gtw",
1086
+ "moml" => "model/vnd.moml+xml",
1087
+ "mts" => "model/vnd.mts",
1088
+ "ogex" => "model/vnd.opengex",
1089
+ "x_b" => "model/vnd.parasolid.transmit.binary",
1090
+ "xmt_bin" => "model/vnd.parasolid.transmit.binary",
1091
+ "x_t" => "model/vnd.parasolid.transmit.text",
1092
+ "xmt_txt" => "model/vnd.parasolid.transmit.text",
1093
+ "pyo" => "model/vnd.pytha.pyox",
1094
+ "pyox" => "model/vnd.pytha.pyox",
1095
+ "vds" => "model/vnd.sap.vds",
1096
+ "usda" => "model/vnd.usda",
1097
+ "usdz" => "model/vnd.usdz+zip",
1098
+ "bsp" => "model/vnd.valve.source.compiled-map",
1099
+ "vtu" => "model/vnd.vtu",
1100
+ "wrl" => "model/vrml",
1101
+ "vrml" => "model/vrml",
1102
+ "bmed" => "multipart/vnd.bint.med-plus",
1103
+ "vpm" => "multipart/voice-message",
1104
+ "appcache" => "text/cache-manifest",
1105
+ "manifest" => "text/cache-manifest",
1106
+ "ics" => "text/calendar",
1107
+ "ifb" => "text/calendar",
1108
+ "CQL" => "text/cql",
1109
+ "css" => "text/css",
1110
+ "csv" => "text/csv",
1111
+ "csvs" => "text/csv-schema",
1112
+ "soa" => "text/dns",
1113
+ "zone" => "text/dns",
1114
+ "gff3" => "text/gff3",
1115
+ "html" => "text/html",
1116
+ "htm" => "text/html",
1117
+ "js" => "text/javascript",
1118
+ "mjs" => "text/javascript",
1119
+ "cnd" => "text/jcr-cnd",
1120
+ "markdown" => "text/markdown",
1121
+ "md" => "text/markdown",
1122
+ "miz" => "text/mizar",
1123
+ "n3" => "text/n3",
1124
+ "txt" => "text/plain",
1125
+ "asc" => "text/plain",
1126
+ "text" => "text/plain",
1127
+ "pm" => "text/plain",
1128
+ "el" => "text/plain",
1129
+ "c" => "text/plain",
1130
+ "h" => "text/plain",
1131
+ "cc" => "text/plain",
1132
+ "hh" => "text/plain",
1133
+ "cxx" => "text/plain",
1134
+ "hxx" => "text/plain",
1135
+ "f90" => "text/plain",
1136
+ "conf" => "text/plain",
1137
+ "log" => "text/plain",
1138
+ "provn" => "text/provenance-notation",
1139
+ "rtx" => "text/richtext",
1140
+ "sgml" => "text/SGML",
1141
+ "sgm" => "text/SGML",
1142
+ "shaclc" => "text/shaclc",
1143
+ "shc" => "text/shaclc",
1144
+ "shex" => "text/shex",
1145
+ "spdx" => "text/spdx",
1146
+ "tsv" => "text/tab-separated-values",
1147
+ "t" => "text/troff",
1148
+ "tr" => "text/troff",
1149
+ "roff" => "text/troff",
1150
+ "ttl" => "text/turtle",
1151
+ "uris" => "text/uri-list",
1152
+ "uri" => "text/uri-list",
1153
+ "vcf" => "text/vcard",
1154
+ "vcard" => "text/vcard",
1155
+ "a" => "text/vnd.a",
1156
+ "abc" => "text/vnd.abc",
1157
+ "ascii" => "text/vnd.ascii-art",
1158
+ "copyright" => "text/vnd.debian.copyright",
1159
+ "dms" => "text/vnd.DMClientScript",
1160
+ "sub" => "text/vnd.dvb.subtitle",
1161
+ "jtd" => "text/vnd.esmertec.theme-descriptor",
1162
+ "vfk" => "text/vnd.exchangeable",
1163
+ "ged" => "text/vnd.familysearch.gedcom",
1164
+ "flt" => "text/vnd.ficlab.flt",
1165
+ "fly" => "text/vnd.fly",
1166
+ "flx" => "text/vnd.fmi.flexstor",
1167
+ "gv" => "text/vnd.graphviz",
1168
+ "dot" => "text/vnd.graphviz",
1169
+ "hans" => "text/vnd.hans",
1170
+ "hgl" => "text/vnd.hgl",
1171
+ "3dml" => "text/vnd.in3d.3dml",
1172
+ "3dm" => "text/vnd.in3d.3dml",
1173
+ "spot" => "text/vnd.in3d.spot",
1174
+ "spo" => "text/vnd.in3d.spot",
1175
+ "mpf" => "text/vnd.ms-mediapackage",
1176
+ "ccc" => "text/vnd.net2phone.commcenter.command",
1177
+ "mc2" => "text/vnd.senx.warpscript",
1178
+ "uric" => "text/vnd.si.uricatalogue",
1179
+ "jad" => "text/vnd.sun.j2me.app-descriptor",
1180
+ "sos" => "text/vnd.sosi",
1181
+ "ts" => "text/vnd.trolltech.linguist",
1182
+ "si" => "text/vnd.wap.si",
1183
+ "sl" => "text/vnd.wap.sl",
1184
+ "wml" => "text/vnd.wap.wml",
1185
+ "wmls" => "text/vnd.wap.wmlscript",
1186
+ "vtt" => "text/vtt",
1187
+ "wgsl" => "text/wgsl",
1188
+ "3gp" => "video/3gpp",
1189
+ "3gpp" => "video/3gpp",
1190
+ "3g2" => "video/3gpp2",
1191
+ "3gpp2" => "video/3gpp2",
1192
+ "m4s" => "video/iso.segment",
1193
+ "mj2" => "video/mj2",
1194
+ "mjp2" => "video/mj2",
1195
+ "mp4" => "video/mp4",
1196
+ "mpg4" => "video/mp4",
1197
+ "m4v" => "video/mp4",
1198
+ "mpeg" => "video/mpeg",
1199
+ "mpg" => "video/mpeg",
1200
+ "mpe" => "video/mpeg",
1201
+ "m1v" => "video/mpeg",
1202
+ "m2v" => "video/mpeg",
1203
+ "ogv" => "video/ogg",
1204
+ "mov" => "video/quicktime",
1205
+ "qt" => "video/quicktime",
1206
+ "uvh" => "video/vnd.dece.hd",
1207
+ "uvvh" => "video/vnd.dece.hd",
1208
+ "uvm" => "video/vnd.dece.mobile",
1209
+ "uvvm" => "video/vnd.dece.mobile",
1210
+ "uvu" => "video/vnd.dece.mp4",
1211
+ "uvvu" => "video/vnd.dece.mp4",
1212
+ "uvp" => "video/vnd.dece.pd",
1213
+ "uvvp" => "video/vnd.dece.pd",
1214
+ "uvs" => "video/vnd.dece.sd",
1215
+ "uvvs" => "video/vnd.dece.sd",
1216
+ "uvv" => "video/vnd.dece.video",
1217
+ "uvvv" => "video/vnd.dece.video",
1218
+ "dvb" => "video/vnd.dvb.file",
1219
+ "fvt" => "video/vnd.fvt",
1220
+ "mxu" => "video/vnd.mpegurl",
1221
+ "m4u" => "video/vnd.mpegurl",
1222
+ "pyv" => "video/vnd.ms-playready.media.pyv",
1223
+ "nim" => "video/vnd.nokia.interleaved-multimedia",
1224
+ "bik" => "video/vnd.radgamettools.bink",
1225
+ "bk2" => "video/vnd.radgamettools.bink",
1226
+ "smk" => "video/vnd.radgamettools.smacker",
1227
+ "smpg" => "video/vnd.sealed.mpeg1",
1228
+ "s11" => "video/vnd.sealed.mpeg1",
1229
+ "s14" => "video/vnd.sealed.mpeg4",
1230
+ "sswf" => "video/vnd.sealed.swf",
1231
+ "ssw" => "video/vnd.sealed.swf",
1232
+ "smov" => "video/vnd.sealedmedia.softseal.mov",
1233
+ "smo" => "video/vnd.sealedmedia.softseal.mov",
1234
+ "s1q" => "video/vnd.sealedmedia.softseal.mov",
1235
+ "yt" => "video/vnd.youtube.yt",
1236
+ "viv" => "video/vnd.vivo",
1237
+ "cpt" => "application/mac-compactpro",
1238
+ "metalink" => "application/metalink+xml",
1239
+ "owx" => "application/owl+xml",
1240
+ "rss" => "application/rss+xml",
1241
+ "apk" => "application/vnd.android.package-archive",
1242
+ "dd" => "application/vnd.oma.dd+xml",
1243
+ "dcf" => "application/vnd.oma.drm.content",
1244
+ "o4a" => "application/vnd.oma.drm.dcf",
1245
+ "o4v" => "application/vnd.oma.drm.dcf",
1246
+ "dm" => "application/vnd.oma.drm.message",
1247
+ "drc" => "application/vnd.oma.drm.rights+wbxml",
1248
+ "dr" => "application/vnd.oma.drm.rights+xml",
1249
+ "sxc" => "application/vnd.sun.xml.calc",
1250
+ "stc" => "application/vnd.sun.xml.calc.template",
1251
+ "sxd" => "application/vnd.sun.xml.draw",
1252
+ "std" => "application/vnd.sun.xml.draw.template",
1253
+ "sxi" => "application/vnd.sun.xml.impress",
1254
+ "sti" => "application/vnd.sun.xml.impress.template",
1255
+ "sxm" => "application/vnd.sun.xml.math",
1256
+ "sxw" => "application/vnd.sun.xml.writer",
1257
+ "sxg" => "application/vnd.sun.xml.writer.global",
1258
+ "stw" => "application/vnd.sun.xml.writer.template",
1259
+ "sis" => "application/vnd.symbian.install",
1260
+ "mms" => "application/vnd.wap.mms-message",
1261
+ "mid" => "audio/midi",
1262
+ "midi" => "audio/midi",
1263
+ "kar" => "audio/midi",
1264
+ "webp" => "image/webp",
1265
+ "sandboxed" => "text/html-sandboxed",
1266
+ "webm" => "video/webm"
1267
+ }.freeze
1268
+
1269
+ # Get MIME type by file extension
1270
+ # @param ext [String] filename
1271
+ # @return [String] MIME type, defaults to "application/octet-stream"
1272
+ def self.get_mime_type(file)
1273
+ MIME[file.match(/\.(\w+)$/)&.[](1)] or "application/octet-stream"
1274
+ end
1275
+ end
1276
+ end