UNPKG

mdn-browser-compat-data

Version:

Browser compatibility data provided by MDN Web Docs

1,473 lines (1,472 loc) 43.9 kB
{ "api": { "WindowOrWorkerGlobalScope": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope", "support": { "chrome": { "version_added": "4" }, "chrome_android": { "version_added": "18" }, "edge": { "version_added": "12" }, "firefox": { "version_added": "1" }, "firefox_android": { "version_added": "4" }, "ie": { "version_added": true }, "opera": { "version_added": true }, "opera_android": { "version_added": true }, "safari": { "version_added": true }, "safari_ios": { "version_added": true }, "samsunginternet_android": { "version_added": "1.0" }, "webview_android": { "version_added": true } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } }, "atob": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/atob", "support": { "chrome": { "version_added": "4" }, "chrome_android": { "version_added": "18" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "1" }, { "version_added": "27", "notes": "<code>atob()</code> ignores all space characters in the argument to comply with the latest HTML5 spec (see <a href='https://bugzil.la/711180'>bug 711180</a>)." }, { "version_added": "57", "notes": "<code>atob()</code> now defined on <code><A href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "4" }, { "version_added": "27", "notes": "<code>atob()</code> ignores all space characters in the argument to comply with the latest HTML5 spec (see <a href='https://bugzil.la/711180'>bug 711180</a>)." }, { "version_added": "57", "notes": "<code>atob()</code> now defined on <code><A href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "10" }, "opera": { "version_added": "10.5" }, "opera_android": { "version_added": "11" }, "safari": { "version_added": "3" }, "safari_ios": { "version_added": "1" }, "samsunginternet_android": { "version_added": "1.0" }, "webview_android": { "version_added": "≤37" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "btoa": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/btoa", "support": { "chrome": { "version_added": "4" }, "chrome_android": { "version_added": "18" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "1" }, { "version_added": "52", "notes": "<code>btoa()</code> now defined on <code><A href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "4" }, { "version_added": "52", "notes": "<code>atob()</code> now defined on <code><A href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "10" }, "opera": { "version_added": "10.5" }, "opera_android": { "version_added": "11" }, "safari": { "version_added": "3" }, "safari_ios": { "version_added": "1" }, "samsunginternet_android": { "version_added": "1.0" }, "webview_android": { "version_added": "≤37" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "caches": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/caches", "support": { "chrome": { "version_added": "40" }, "chrome_android": { "version_added": true }, "edge": { "version_added": "≤79" }, "firefox": [ { "version_added": "42" }, { "version_added": "52", "notes": "<code>caches</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "42" }, { "version_added": "52", "notes": "<code>caches</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": false }, "opera": { "version_added": null }, "opera_android": { "version_added": true }, "safari": { "version_added": false }, "safari_ios": { "version_added": true }, "samsunginternet_android": { "version_added": true }, "webview_android": { "version_added": true } }, "status": { "experimental": true, "standard_track": true, "deprecated": false } } }, "clearInterval": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval", "support": { "chrome": { "version_added": "4" }, "chrome_android": { "version_added": "18" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "1" }, { "version_added": "52", "notes": "<code>clearInterval()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "4" }, { "version_added": "52", "notes": "<code>clearInterval()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "4", "notes": "From Internet Explorer 4 through 8, <code>clearInterval</code> is an Object rather than a Function. This behavior was fixed in Internet Explorer 9." }, "nodejs": { "version_added": true, "partial_implementation": true, "notes": "Takes a <code>Timeout</code> object instead of the <code>intervalID</code>." }, "opera": { "version_added": "4" }, "opera_android": { "version_added": "10.1" }, "safari": { "version_added": "4" }, "safari_ios": { "version_added": "1" }, "samsunginternet_android": { "version_added": "1.0" }, "webview_android": { "version_added": "1" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "clearTimeout": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout", "support": { "chrome": { "version_added": "45" }, "chrome_android": { "version_added": "45" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "1" }, { "version_added": "52", "notes": "<code>clearTimeout()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "4" }, { "version_added": "52", "notes": "<code>clearTimeout()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "4", "notes": "From Internet Explorer 4 through 8, <code>clearTimeout</code> is an Object rather than a Function. This behavior was fixed in Internet Explorer 9." }, "nodejs": { "version_added": true, "partial_implementation": true, "notes": "Takes a <code>Timeout</code> object instead of the <code>timeoutID</code>." }, "opera": { "version_added": "4" }, "opera_android": { "version_added": "10.1" }, "safari": { "version_added": "4" }, "safari_ios": { "version_added": "1" }, "samsunginternet_android": { "version_added": "5.0" }, "webview_android": { "version_added": "45" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "createImageBitmap": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/createImageBitmap", "support": { "chrome": { "version_added": "50" }, "chrome_android": { "version_added": "50" }, "edge": { "version_added": "79" }, "firefox": [ { "version_added": "52", "notes": "<code>createImageBitmap()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." }, { "version_added": "42" } ], "firefox_android": { "version_added": true }, "ie": { "version_added": false }, "opera": { "version_added": true }, "opera_android": { "version_added": true }, "safari": { "version_added": false }, "safari_ios": { "version_added": false }, "samsunginternet_android": { "version_added": "5.0" }, "webview_android": { "version_added": "50" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } }, "options_parameter": { "__compat": { "description": "<code>options</code> parameter", "support": { "chrome": { "version_added": "52" }, "chrome_android": { "version_added": "52" }, "edge": { "version_added": "79" }, "firefox": { "version_added": false }, "firefox_android": { "version_added": false }, "ie": { "version_added": false }, "opera": { "version_added": "39" }, "opera_android": { "version_added": "41" }, "safari": { "version_added": false }, "safari_ios": { "version_added": false }, "samsunginternet_android": { "version_added": "6.0" }, "webview_android": { "version_added": "52" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "resizeWidth_resizeHeight_resizeQuality": { "__compat": { "description": "<code>resizeWidth</code>, <code>resizeHeight</code>, and <code>resizeQuality</code>", "support": { "chrome": { "version_added": "54" }, "chrome_android": { "version_added": "54" }, "edge": { "version_added": "79" }, "firefox": { "version_added": false }, "firefox_android": { "version_added": false }, "ie": { "version_added": false }, "opera": { "version_added": true }, "opera_android": { "version_added": true }, "safari": { "version_added": false }, "safari_ios": { "version_added": false }, "samsunginternet_android": { "version_added": "6.0" }, "webview_android": { "version_added": "54" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "svgimageelement_as_source_image": { "__compat": { "description": "<code>SVGImageElement</code> as source image", "support": { "chrome": { "version_added": "59" }, "chrome_android": { "version_added": "59" }, "edge": { "version_added": "79" }, "firefox": { "version_added": "65" }, "firefox_android": { "version_added": "65" }, "ie": { "version_added": false }, "opera": { "version_added": true }, "opera_android": { "version_added": true }, "safari": { "version_added": false }, "safari_ios": { "version_added": false }, "samsunginternet_android": { "version_added": "7.0" }, "webview_android": { "version_added": "59" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } } }, "crossOriginIsolated": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/crossOriginIsolated", "support": { "chrome": { "version_added": false }, "chrome_android": { "version_added": false }, "edge": { "version_added": false }, "firefox": { "version_added": "72" }, "firefox_android": { "version_added": false }, "ie": { "version_added": false }, "nodejs": { "version_added": false }, "opera": { "version_added": false }, "opera_android": { "version_added": false }, "safari": { "version_added": false }, "safari_ios": { "version_added": false }, "samsunginternet_android": { "version_added": false }, "webview_android": { "version_added": false } }, "status": { "experimental": true, "standard_track": false, "deprecated": false } } }, "fetch": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch", "support": { "chrome": { "version_added": "42" }, "chrome_android": { "version_added": "42" }, "edge": { "version_added": "14" }, "firefox": [ { "version_added": "39" }, { "version_added": "34", "flags": [ { "type": "preference", "name": "dom.fetch.enable" } ] }, { "version_added": "52", "notes": "<code>fetch()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "39" }, { "version_added": "34", "flags": [ { "type": "preference", "name": "dom.fetch.enable" } ] }, { "version_added": "52", "notes": "<code>fetch()</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": false }, "opera": [ { "version_added": "29" }, { "version_added": "28", "flags": [ { "type": "preference", "name": "Experimental Web Platform Features" } ] } ], "opera_android": [ { "version_added": "29" }, { "version_added": "28", "flags": [ { "type": "preference", "name": "Experimental Web Platform Features" } ] } ], "safari": { "version_added": "10.1" }, "safari_ios": { "version_added": "10.3" }, "samsunginternet_android": { "version_added": "4.0" }, "webview_android": { "version_added": "42" } }, "status": { "experimental": true, "standard_track": true, "deprecated": false } }, "blob_data_support": { "__compat": { "description": "Support for blob: and data:", "support": { "chrome": { "version_added": "48" }, "chrome_android": { "version_added": "48" }, "edge": { "version_added": "79" }, "firefox": { "version_added": null }, "firefox_android": { "version_added": null }, "ie": { "version_added": false }, "opera": { "version_added": null }, "opera_android": { "version_added": null }, "safari": { "version_added": null }, "safari_ios": { "version_added": null }, "samsunginternet_android": { "version_added": "5.0" }, "webview_android": { "version_added": "43" } }, "status": { "experimental": true, "standard_track": true, "deprecated": false } } }, "referrerpolicy": { "__compat": { "description": "referrerPolicy", "support": { "chrome": { "version_added": "52" }, "chrome_android": { "version_added": "52" }, "edge": { "version_added": "79" }, "firefox": { "version_added": "52" }, "firefox_android": { "version_added": "52" }, "ie": { "version_added": false }, "opera": { "version_added": "39" }, "opera_android": { "version_added": "41" }, "safari": { "version_added": "11.1" }, "safari_ios": { "version_added": false }, "samsunginternet_android": { "version_added": "6.0" }, "webview_android": { "version_added": "52" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "signal": { "__compat": { "description": "signal", "support": { "chrome": { "version_added": "66" }, "chrome_android": { "version_added": "66" }, "edge": { "version_added": "16" }, "firefox": { "version_added": "57" }, "firefox_android": { "version_added": "57" }, "ie": { "version_added": false }, "opera": { "version_added": "53" }, "opera_android": { "version_added": "47" }, "safari": { "version_added": "11.1" }, "safari_ios": { "version_added": "11.3" }, "samsunginternet_android": { "version_added": "9.0" }, "webview_android": { "version_added": "66" } }, "status": { "experimental": true, "standard_track": true, "deprecated": false } } }, "streaming_response_body": { "__compat": { "description": "Streaming response body", "support": { "chrome": { "version_added": "43" }, "chrome_android": { "version_added": "43" }, "edge": { "version_added": "14" }, "firefox": { "version_added": true, "flags": [ { "type": "preference", "name": "dom.streams.enabled" }, { "type": "preference", "name": "javascript.options.streams" } ] }, "firefox_android": { "version_added": false }, "ie": { "version_added": false }, "opera": { "version_added": "29" }, "opera_android": { "version_added": false }, "safari": { "version_added": "10.1" }, "safari_ios": { "version_added": "10.3" }, "samsunginternet_android": { "version_added": "4.0" }, "webview_android": { "version_added": "43" } }, "status": { "experimental": true, "standard_track": true, "deprecated": false } } } }, "indexedDB": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/indexedDB", "support": { "chrome": { "version_added": "24" }, "chrome_android": { "version_added": "25" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "16" }, { "version_added": "10", "prefix": "moz" }, { "version_added": "52", "notes": "<code>indexedDB</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "22" }, { "version_added": "52", "notes": "<code>indexedDB</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "10", "partial_implementation": true }, "opera": { "version_added": "15" }, "opera_android": { "version_added": "14" }, "safari": { "version_added": "7" }, "safari_ios": { "version_added": "8" }, "samsunginternet_android": { "version_added": "2.0" }, "webview_android": { "version_added": true } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } }, "worker_support": { "__compat": { "description": "Available in workers", "support": { "chrome": { "version_added": true }, "chrome_android": { "version_added": true }, "edge": { "version_added": "≤18" }, "firefox": { "version_added": "37" }, "firefox_android": { "version_added": "37" }, "ie": { "version_added": null }, "opera": { "version_added": true }, "opera_android": { "version_added": true }, "safari": { "version_added": null }, "safari_ios": { "version_added": null }, "samsunginternet_android": { "version_added": true }, "webview_android": { "version_added": true } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } } }, "isSecureContext": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/isSecureContext", "support": { "chrome": { "version_added": "55" }, "chrome_android": { "version_added": "55" }, "edge": { "version_added": "≤79" }, "firefox": { "version_added": "52" }, "firefox_android": { "version_added": "52" }, "ie": { "version_added": null }, "opera": { "version_added": null }, "opera_android": { "version_added": null }, "safari": { "version_added": null }, "safari_ios": { "version_added": null }, "samsunginternet_android": { "version_added": "6.0" }, "webview_android": { "version_added": "55" } }, "status": { "experimental": true, "standard_track": true, "deprecated": false } } }, "origin": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/origin", "support": { "chrome": { "version_added": "59" }, "chrome_android": { "version_added": "59" }, "edge": { "version_added": "≤79" }, "firefox": { "version_added": "54" }, "firefox_android": { "version_added": "54" }, "ie": { "version_added": false }, "opera": { "version_added": false }, "opera_android": { "version_added": false }, "safari": { "version_added": "11" }, "safari_ios": { "version_added": "11" }, "samsunginternet_android": { "version_added": "7.0" }, "webview_android": { "version_added": "59" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "queueMicrotask": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask", "support": { "chrome": { "version_added": "71" }, "chrome_android": { "version_added": "71" }, "edge": { "version_added": "79" }, "firefox": { "version_added": "69" }, "firefox_android": { "version_added": false }, "ie": { "version_added": false }, "nodejs": { "version_added": "11.0.0" }, "opera": { "version_added": "58" }, "opera_android": { "version_added": "50" }, "safari": { "version_added": "12.1" }, "safari_ios": { "version_added": "12.2" }, "samsunginternet_android": { "version_added": "10.0" }, "webview_android": { "version_added": "71" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "setInterval": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setInterval", "support": { "chrome": { "version_added": "30" }, "chrome_android": { "version_added": "30" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "1" }, { "version_added": "52", "notes": "<code>setInterval</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "4" }, { "version_added": "52", "notes": "<code>setInterval</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "4" }, "nodejs": { "version_added": true, "partial_implementation": true, "notes": [ "Returns a <code>Timeout</code> object instead of the <code>intervalID</code>.", "Does not support passing a <code>code</code> string and throws when the first parameter is not a function." ] }, "opera": { "version_added": "4" }, "opera_android": { "version_added": "10.1" }, "safari": { "version_added": "1" }, "safari_ios": { "version_added": "1" }, "samsunginternet_android": { "version_added": "3.0" }, "webview_android": { "version_added": "4.4" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } }, "supports_parameters_for_callback": { "__compat": { "description": "Supports parameters for callback", "support": { "chrome": { "version_added": true }, "chrome_android": { "version_added": true }, "edge": { "version_added": "12" }, "firefox": { "version_added": true }, "firefox_android": { "version_added": null }, "ie": { "version_added": "10" }, "nodejs": { "version_added": true }, "opera": { "version_added": true }, "opera_android": { "version_added": null }, "safari": { "version_added": null }, "safari_ios": { "version_added": null }, "samsunginternet_android": { "version_added": true }, "webview_android": { "version_added": true } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } } }, "setTimeout": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout", "support": { "chrome": { "version_added": "30" }, "chrome_android": { "version_added": "30" }, "edge": { "version_added": "12" }, "firefox": [ { "version_added": "1" }, { "version_added": "52", "notes": "<code>setInterval</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "firefox_android": [ { "version_added": "4" }, { "version_added": "52", "notes": "<code>setInterval</code> now defined on <code><a href='https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope'>WindowOrWorkerGlobalScope</a></code> mixin." } ], "ie": { "version_added": "4" }, "nodejs": { "version_added": true, "partial_implementation": true, "notes": [ "Returns a <code>Timeout</code> object instead of the <code>timeoutID</code>.", "Does not support passing a <code>code</code> string and throws when the first parameter is not a function." ] }, "opera": { "version_added": "4" }, "opera_android": { "version_added": "10.1" }, "safari": { "version_added": "1" }, "safari_ios": { "version_added": "1" }, "samsunginternet_android": { "version_added": "3.0" }, "webview_android": { "version_added": "4.4" } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } }, "supports_parameters_for_callback": { "__compat": { "description": "Supports parameters for callback", "support": { "chrome": { "version_added": true }, "chrome_android": { "version_added": true }, "edge": { "version_added": "12" }, "firefox": { "version_added": true }, "firefox_android": { "version_added": null }, "ie": { "version_added": "10" }, "nodejs": { "version_added": true }, "opera": { "version_added": true }, "opera_android": { "version_added": null }, "safari": { "version_added": null }, "safari_ios": { "version_added": null }, "samsunginternet_android": { "version_added": true }, "webview_android": { "version_added": true } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } }, "tracking_throttling": { "__compat": { "description": "Throttling of tracking timeout scripts", "support": { "chrome": { "version_added": null }, "chrome_android": { "version_added": null }, "edge": { "version_added": null }, "firefox": { "version_added": "55" }, "firefox_android": { "version_added": "55" }, "ie": { "version_added": null }, "nodejs": { "version_added": null }, "opera": { "version_added": null }, "opera_android": { "version_added": null }, "safari": { "version_added": null }, "safari_ios": { "version_added": null }, "samsunginternet_android": { "version_added": null }, "webview_android": { "version_added": null } }, "status": { "experimental": false, "standard_track": true, "deprecated": false } } } } } } }