PageSourceSearch

https://www.openfabrics.org/ofmf-getting-started/

html openfabrics.org collected 2026-10-01 10:34:30 UTC 158,945 bytes, 2,076 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head>
4<meta charset="UTF-8"/>
5<meta name="twitter:widgets:csp" content="on"/>
6<link rel="profile" href="http://gmpg.org/xfn/11"/>
7<link rel="pingback" href="https://www.openfabrics.org/xmlrpc.php"/>
8
9<title>OFMF: Getting Started &#8211; OpenFabrics Alliance</title>
10<meta name='robots' content='max-image-preview:large' />
11<meta name="dlm-version" content="5.3.1"><link rel='dns-prefetch' href='//fonts.googleapis.com' />
12<link rel="alternate" type="application/rss+xml" title="OpenFabrics Alliance &raquo; Feed" href="https://www.openfabrics.org/feed/" />
13<link rel="alternate" type="application/rss+xml" title="OpenFabrics Alliance &raquo; Comments Feed" href="https://www.openfabrics.org/comments/feed/" />
14<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.openfabrics.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.openfabrics.org%2Fofmf-getting-started%2F" />
15<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.openfabrics.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.openfabrics.org%2Fofmf-getting-started%2F&#038;format=xml" />
16<style id="wp-img-auto-sizes-contain-inline-css">
17img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
18/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
19</style>
20<link rel='stylesheet' id='zn_all_g_fonts-css' href='//fonts.googleapis.com/css?family=Poppins:300,regular,500,600,700|Open+Sans:300,300italic,regular,italic,600,600italic,700,700italic,800,800italic|Roboto+Slab:100,300,regular,700|Josefin+Slab&#038;ver=7.1.2' media='all' />
21<style id="wp-emoji-styles-inline-css">
22
23	img.wp-smiley, img.emoji {
24		display: inline !important;
25		border: none !important;
26		box-shadow: none !important;
27		height: 1em !important;
28		width: 1em !important;
29		margin: 0 0.07em !important;
30		vertical-align: -0.1em !important;
31		background: none !important;
32		padding: 0 !important;
33	}
34/*# sourceURL=wp-emoji-styles-inline-css */
35</style>
36<style id="wp-block-library-inline-css">
37:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
37--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
38
39/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
40</style>
41<style id="classic-theme-styles-inline-css">
42/*! This file is auto-generated */
43.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
44/*# sourceURL=/wp-includes/css/classic-themes.min.css */
45</style>
46
47<style id="global-styles-inline-css">
48:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
480) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
48.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
49/*# sourceURL=global-styles-inline-css */
50</style>
51
52<link rel='stylesheet' id='sr7css-css' href='//www.openfabrics.org/wp-content/plugins/revslider/public/css/sr7.css?ver=1790435102' media='all' />
53<link rel='stylesheet' id='dlm-frontend-css' href='https://www.openfabrics.org/wp-content/plugins/download-monitor/assets/css/frontend-tailwind.min.css?ver=5.3.1' media='all' />
54<link rel='stylesheet' id='kallyas-styles-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/style.css?ver=4.26.0' media='all' />
55<link rel='stylesheet' id='th-bootstrap-styles-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/css/bootstrap.min.css?ver=4.26.0' media='all' />
56<link rel='stylesheet' id='th-theme-template-styles-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/css/template.min.css?ver=4.26.0' media='all' />
57<link rel='stylesheet' id='zion-frontend-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/framework/zion-builder/assets/css/znb_frontend.css?ver=1.4.0' media='all' />
58<link rel='stylesheet' id='5002-layout.css-css' href='https://www.openfabrics.org/wp-content/uploads/zion-builder/cache/5002-layout.css?ver=59674a12652cfb8d3063c5dd6045f57f' media='all' />
59<link rel='stylesheet' id='kallyas-child-css' href='https://www.openfabrics.org/wp-content/themes/kallyas-child/style.css?ver=4.26.0' media='all' />
60<link rel='stylesheet' id='th-theme-print-stylesheet-css' href='https://www.openfabrics.org/wp-content/themes/kallyas/css/print.css?ver=4.26.0' media='print' />
61<link rel='stylesheet' id='th-theme-options-styles-css' href='//www.openfabrics.org/wp-content/uploads/zn_dynamic.css?ver=1790433495' media='all' />
62<link rel='stylesheet' id='buttons-css' href='https://www.openfabrics.org/wp-includes/css/buttons.min.css?ver=7.1.2' media='all' />
63<link rel='stylesheet' id='dashicons-css' href='https://www.openfabrics.org/wp-includes/css/dashicons.min.css?ver=7.1.2' media='all' />
64<link rel='stylesheet' id='mediaelement-css' href='https://www.openfabrics.org/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css?ver=4.2.17' media='all' />
65<link rel='stylesheet' id='wp-mediaelement-css' href='https://www.openfabrics.org/wp-includes/js/mediaelement/wp-mediaelement.min.css?ver=7.1.2' media='all' />
66<link rel='stylesheet' id='media-views-css' href='https://www.openfabrics.org/wp-includes/css/media-views.min.css?ver=7.1.2' media='all' />
67<link rel='stylesheet' id='imgareaselect-css' href='https://www.openfabrics.org/wp-includes/js/imgareaselect/imgareaselect.css?ver=0.9.8' media='all' />
68<script async data-wp-strategy="async" id="tp-tools-js" src="//www.openfabrics.org/wp-content/plugins/revslider/public/js/libs/tptools.js?ver=1790435102"></script>
vendor: 1 bytes, line 68
68
69<script async data-wp-strategy="async" id="sr7-js" src="//www.openfabrics.org/wp-content/plugins/revslider/public/js/sr7.js?ver=1790435102"></script>
vendor: 1 bytes, line 69
69
70<script id="jquery-core-js" src="https://www.openfabrics.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 70
70
71<script id="jquery-migrate-js" src="https://www.openfabrics.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 71
71
72<script id="utils-js-extra">
73var userSettings = {"url":"/","uid":"0","time":"1790850868","secure":"1"};
74//# sourceURL=utils-js-extra
75</script>
vendor: 1 bytes, line 75
75
76<script id="utils-js" src="https://www.openfabrics.org/wp-includes/js/utils.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 76
76
77<script id="moxiejs-js" src="https://www.openfabrics.org/wp-includes/js/plupload/moxie.min.js?ver=1.3.5.1"></script>
vendor: 1 bytes, line 77
77
78<script id="plupload-js" src="https://www.openfabrics.org/wp-includes/js/plupload/plupload.min.js?ver=2.1.9"></script>
78
79<link rel="https://api.w.org/" href="https://www.openfabrics.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.openfabrics.org/wp-json/wp/v2/pages/5002" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.openfabrics.org/xmlrpc.php?rsd" />
80<meta name="generator" content="WordPress 7.1.2" />
81<link rel="canonical" href="https://www.openfabrics.org/ofmf-getting-started/" />
82<link rel='shortlink' href='https://www.openfabrics.org/?p=5002' />
83<!-- Analytics by WP Statistics - https://wp-statistics.com -->
84		<meta name="theme-color"
85				content="#00588c">
86				<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
87		
88		<!--[if lte IE 8]>
89		
89<script type="text/javascript">
90			var $buoop = {
91				vs: {i: 10, f: 25, o: 12.1, s: 7, n: 9}
92			};
93
94			$buoop.ol = window.onload;
95
96			window.onload = function () {
97				try {
98					if ($buoop.ol) {
99						$buoop.ol()
100					}
101				}
102				catch (e) {
103				}
104
105				var e = document.createElement("script");
106				e.setAttribute("type", "text/javascript");
107				e.setAttribute("src", "https://browser-update.org/update.js");
108				document.body.appendChild(e);
109			};
110		</script>
110
111		<![endif]-->
112
113		<!-- for IE6-8 support of HTML5 elements -->
114		<!--[if lt IE 9]>
115		
115<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
115
116		<![endif]-->
117		
118	<!-- Fallback for animating in viewport -->
119	<noscript>
120		<style type="text/css" media="screen">
121			.zn-animateInViewport {visibility: visible;}
122		</style>
123	</noscript>
124	<style>
125        #wpadminbar #wp-admin-bar-amelia-menu > .ab-item svg {
126            color: #a7aaad;
127        }
128
129        #wpadminbar #wp-admin-bar-amelia-menu:hover > .ab-item svg {
130            color: #72aee6;
131        }
132
133        #wpadminbar #wp-admin-bar-amelia-menu > .ab-item .ab-icon img {
134            width: 20px;
135            height: 20px;
136            padding: 0;
137            object-fit: contain;
138        }
139        </style><link rel="preconnect" href="https://fonts.googleapis.com">
140<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
141<meta name="generator" content="Powered by Slider Revolution 7.2.0 - responsive, Mobile-Friendly Slider Plugin for WordPress with comfortable drag and drop interface." />
142<script>
143	window._tpt			??= {};
144	window.SR7			??= {};
145	_tpt.R				??= {};
146	_tpt.R.fonts		??= {};
147	_tpt.R.fonts.customFonts??= {};
148	SR7.devMode			=  false;
149	SR7.F 				??= {};
150	SR7.G				??= {};
151	SR7.LIB				??= {};
152	SR7.E				??= {};
153	SR7.E.gAddons		??= {};
154	SR7.E.php 			??= {};
155	SR7.E.php["home_url"] = "https:\/\/www.openfabrics.org\/";
156	SR7.E.php["current_page_link"] = "https:\/\/www.openfabrics.org\/ofmf-getting-started\/";
157	SR7.E.basicMetas	= ["home_url","current_page_link"];
158	SR7.E.nonce			= 'd994b1e648';
159	SR7.E.ajaxurl		= 'https://www.openfabrics.org/wp-admin/admin-ajax.php';
160	SR7.E.resturl		= 'https://www.openfabrics.org/wp-json/';
161	SR7.E.slug_path		= 'revslider/revslider.php';
162	SR7.E.slug			= 'revslider';
163	SR7.E.plugin_url	= 'https://www.openfabrics.org/wp-content/plugins/revslider/';
164	SR7.E.wp_plugin_url = 'https://www.openfabrics.org/wp-content/plugins/';
165	SR7.E.revision		= '7.2.0';
166	SR7.E.latest_revision = '7.2.1';
167	SR7.E.fontBaseUrl	= '';
168	SR7.G.breakPoints 	= [1240,1024,778,480];
169	SR7.G.fSUVW 		= false;
170	SR7.E.modules 		= ['module','page','slide','layer','layerix','draw','animate','transitions','srtools','canvas','defaults','carousel','navigation','media','modifiers','story','bgpattern','counter','glow','surface','migration'];
171	SR7.E.libs 			= ['THREE','WEBGL','EFFECTS'];
172	SR7.E.css 			= ['csslp','cssbtns','cssfilters','cssnav','cssmedia'];
173	SR7.E.resources		??= {};
174	SR7.E.resources["module"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
175	SR7.E.resources["slide"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
176	SR7.E.resources["layer"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
177	SR7.E.resources["draw"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
178	SR7.E.resources["animate"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
179	SR7.E.resources["transitions"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
180	SR7.E.resources["srtools"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
181	SR7.E.resources["canvas"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
182	SR7.E.resources["carousel"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
183	SR7.E.resources["navigation"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
184	SR7.E.resources["media"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
185	SR7.E.resources["modifiers"] ??= "\/\/www.openfabrics.org\/wp-content\/plugins\/revslider\/public\/js\/sr7.js";
186	SR7.E.ytnc			= false;
187	SR7.JSON			??= {};
188/*! Slider Revolution 7.0 - Page Processor */
189!function(){"use strict";window.SR7??={},window._tpt??={},SR7.F??={},SR7.F.getModuleSticky??=t=>t?"top"===t.sticky||"bottom"===t.sticky?t.sticky:!0===t.fixed||"top"===t.fixed?"top":"none":"none",SR7.F.isStickyTop??=t=>"top"===SR7.F.getModuleSticky(t?.settings),SR7.F.isStickyBottom??=t=>"bottom"===SR7.F.getModuleSticky(t?.settings),_tpt.pickSrc??=t=>(window.devicePixelRatio||1)>=2&&t.n2||t.n1,_tpt.vpHUnits??=new Set(["vh","lvh","svh","dvh"]),_tpt.vpHUnit??=t=>{const e=(String(t).match(/[a-z]+$/i)||[""])[0];return!(!_tpt.vpHUnits.has(e)||isNaN(parseFloat(t)))&&e},_tpt.vpH??=(t="lvh")=>{const e=window.innerWidth+"x"+window.innerHeight;if(_tpt.__vpH?.key!==e){if(!document.body)return window.innerHeight;const t=document.createElement("div");t.style.cssText="position:absolute;left:-9999px;top:0;width:0;visibility:hidden;pointer-events:none",document.body.appendChild(t);const s={key:e};for(const e of["vh","lvh","svh","dvh"])t.style.height="",t.style.height="100"+e,s[e]=t.getBoundingClientRect().height||window.innerHeight;t.remove(),_tpt.__vpH=s}return _tpt.__vpH[t]??window.innerHeight},_tpt.toPxH??=t=>{const e=_tpt.vpHUnit(t);return e?Math.round(parseFloat(t)/100*_tpt.vpH(e)):parseFloat(t)},SR7.version="Slider Revolution 7.1.0",_tpt.getMobileZoom=()=>_tpt.is_mobile?document.documentElement.clientWidth/window.innerWidth:1,_tpt.getWinDim=function(t){let e=SR7.F?.modal?.visible&&SR7.M[SR7.F.module.getIdByAlias(SR7.F.modal.requested)];_tpt.scrollBar=window.innerWidth!==document.documentElement.clientWidth||e&&window.innerWidth!==e.c.module.clientWidth,_tpt.winW=_tpt.getMobileZoom()*window.innerWidth-(_tpt.scrollBar||"prepare"===t?_tpt.scrollBarW??_tpt.mesureScrollBar():0),_tpt.win
189H=_tpt.getMobileZoom()*window.innerHeight,_tpt.winWAll=document.documentElement.clientWidth},SR7.F.isCarousel=t=>!SR7.E.backend&&"carousel"===SR7.M[t].settings.type,SR7.F.moduleType=t=>SR7.E.backend&&"carousel"===SR7.M[t].settings.type?"standard":SR7.M[t].settings.type,SR7.F.getAutoSlideStep=t=>"carousel"===SR7.M[t]?.settings?.type&&"reverse"===SR7.M[t]?.settings?.carousel?.aDir?"-1":"+1",SR7.F.navDirFlipped=t=>!!SR7.F.getRTLMode?.(t)!=("-1"===SR7.F.getAutoSlideStep(t)),_tpt.getResponsiveLevel=function(t){return SR7.G.fSUVW?_tpt.closestGE(t,window.innerWidth):_tpt.closestGE(t,_tpt.winWAll)},_tpt.mesureScrollBar=function(){let t=document.createElement("div");return t.className="RSscrollbar-measure",t.style.width="100px",t.style.height="100px",t.style.overflow="scroll",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t),_tpt.scrollBarW=t.offsetWidth-t.clientWidth,document.body.removeChild(t),_tpt.scrollBarW},_tpt.loadCSS??=async function(t,e,s){return s?_tpt.R.fonts.required[e].status=1:(_tpt.R[e]??={},_tpt.R[e].status=1),new Promise((i,o)=>
189{if(_tpt.isStylesheetLoaded(t))s?_tpt.R.fonts.required[e].status=2:_tpt.R[e].status=2,i();else{const n=document.createElement("link");n.rel="stylesheet";let l="text",r="css";n["type"]=l+"/"+r,n.href=t,n.onload=()=>{s?_tpt.R.fonts.required[e].status=2:_tpt.R[e].status=2,i()},n.onerror=()=>{s?_tpt.R.fonts.required[e].status=3:_tpt.R[e].status=3,o(new Error(`Failed to load CSS: ${t}`))},document.head.appendChild(n)}})},_tpt.addContainer??=function(t){const{tag:e="div",id:s,class:i,datas:o,textContent:n,iHTML:l}=t,r=document.createElement(e);if(s&&""!==s&&(r.id=s),i&&""!==i&&(r.className=i),o)for(const[t,e]of Object.entries(o))"style"==t?r.style.cssText=e:r.setAttribute(`data-${t}`,e);return n&&(r.textContent=n),l&&(r.innerHTML=l),r},_tpt.collector??=function(){return{fragment:new DocumentFragment,add(t){var e=_tpt.addContainer(t);return this.fragment.appendChild(e),e},append(t){t.appendChild(this.fragment)}}},_tpt.isStylesheetLoaded??=function(t){let e=t.split("?")[0];return Array.from(document.querySelectorAll('link[rel="stylesheet"], link[rel="preload"]')).some(t=>t.href.split("?")[0]===e)},_tpt.preloader??={spans:[10,0,4,2,5,9,0,4,4,2,6,3,4,1,2,1,1,12,3,3,5,9,2,3,3,4],requests:new Map,preloaderTemplates:new Map,show:function(t,e){if(!e||!t)return;const{type:s,color:i}=e;if(s<0||"off"===s)return;const o=`preloader_${s}`;let n=this.preloaderTemplates.get(o);n||(n=this.build(s,i),this.preloaderTemplates.set(o,n)),this.requests.has(t)||this.requests.set(t,{count:0});const l=this.requests.get(t);clearTimeout(l.timer),l.count++,1===l.count&&(l.timer=setTimeout(()=>{l.preloaderClone=n.cloneNode(!0),l.anim&&l.anim.kill(),void 0!==_tpt.gsap?l.anim=_tpt.gsap.fromTo(l.preloaderClone,1,{opacity:0},{opacity:1}):l.preloaderClone.classList.add("sr7-fade-in"),t.appendChild(l.preloaderClone)},150))},hide:function(t){if(!this.requests.has(t))return;const e=this.requests.get(t);e.count--,e.count<0&&(e.count=0),e.anim&&e.anim.kill(),0===e.count&&(clearTimeout(e.timer),e.preloaderClone&&(e.preloaderClone.classList.remove("sr7-fade-in"),e.anim=_tpt.gsap.to(e.preloaderClone,.3,{opacity:0,onComplete:function(){e.preloaderClone.remove()}})))},state:function(t){if(!this.requests.has(t))return!1;return this.requests.get(t).count>0},build:(t,e="#ffffff",s="")=>{if(t<0||"off"===t)return null;let i=parseInt(t);if(isNaN(i))return null;if(0!==i&&5!==i||(i=6),t="prlt"+i,_tpt.loadCSS(SR7.E.plugin_url+"public/css/preloaders/t"+i+".css","preloader_"+t),isNaN(i)||i<6){const o=`background-color:${e}`,n=1===i||2==i?o:"",l=3===i||4==i?o:"",r=_tpt.collector();["dot1","dot2","bounce1","bounce2","bounce3"].forEach(t=>r.add({tag:"div",class:t,datas:{style:l}}));const d=_tpt.addContainer({tag:"sr7-prl",class:`${t} ${s}`,datas:{style:n}});return r.append(d),d}{let o={};if(7===i){let t;e.startsWith("#")?(t=e.replace("#",""),t=`rgba(${parseInt(t.substring(0,2),16)}, ${parseInt(t.substring(2,4),16)}, ${parseInt(t.substring(4,6),16)}, `):e.startsWith("rgb")&&(t=e.slice(e.indexOf("(")+1,e.lastIndexOf(")")).split(",").map(t=>t.trim()),t=`rgba(${t[0]}, ${t[1]}, ${t[2]}, `),t&&(o.style=`border-top-color: ${t}0.65); border-bottom-color: ${t}0.15); border-left-color: ${t}0.65); border-right-color: ${t}0.15)`)}else 12===i&&(o.style=`background:${e}`);const n=_tpt.preloader.spans[i-6],l=_tpt.collector(),r=l.add({tag:"div",class:"sr7-prl-inner",datas:o});Array.from({length:n}).forEach(()=>r.appendChild(l.add({tag:"span",datas:{style:`background:${e}`}})));const d=_tpt.addContainer({tag:"sr7-prl",class:`${t} ${s}`});return l.append(d),d}}},SR7.preLoader={show:(t,e)=>{"off"!==(SR7.M[t]?.settings?.pLoader?.type??"off")&&_tpt.preloader.show(e||SR7.M[t].c.module,SR7.M[t]?.settings?.pLoader??{color:"#fff",type:10})},hide:(t,e)=>{"off"!==(SR7.M[t]?.settings?.pLoader?.type??"off")&&_tpt.preloader.hide(e||SR7.M[t].c.module)},state:(t,e)=>_tpt.preloader.state(e||SR7.M[t].c.module)},_tpt.prepareModuleHeight=function(t){window.SR7.M??={},window.SR7.M[t.id]??={},"ignore"==t.googleFont&&(SR7.E.ignoreGoogleFont=!0);let e=window.SR7.M[t.id];if(null==_tpt.scrollBarW&&_tpt.mesureScrollBar(),e.c??={},e.states??={},e.settings??={},e.settings.size??={},"top"===t.sticky||"bottom"===t.sticky?e.settings.sticky=t.sticky:t.fixed&&(e.settings.sticky="top"),"top"===e.settings.sticky&&(e.settings.fixed=!0),t.stickyReserve&&(e.settings.size.stickyReserve=!0),e.c.module=document.querySelector('sr7-module[id="'+t.id+'"]'),e.c.adjuster=e.c.module.getElementsByTagName("sr7-adjuster")[0],e.c.content=e.c.module.getElementsByTagName("sr7-content")[0],SR7.E.backend||"carousel"!==t.type||(e.c.carousel=e.c.content.getElementsByTagName("sr7-carousel")[0]),null==e.c.module||null==e.c.module)return;t.plType&&t.plColor&&(e.settings.pLoader={type:t.plType,color:t.plColor}),"string"==typeof t.mh&&t.mh.includes(",")&&(t.mh=t.mh.split(",")),void 0===t.plType||"off"===t.plType||SR7.preLo
189ader.state(t.id)&&SR7.preLoader.state(t.id,e.c.module)||SR7.preLoader.show(t.id,e.c.module),_tpt.winW||_tpt.getWinDim("prepare"),_tpt.getWinDim();let s=""+e.c.module.dataset?.modal;"modal"==s||"true"==s||"undefined"!==s&&"false"!==s||(e.settings.size.fullHeight=t.size.fullHeight,e.settings.size.fullWidth=t.size.fullWidth,e.LEV??=_tpt.getResponsiveLevel(window.SR7.G.breakPoints,t.id),t.vpt=_tpt.fillArray(t.vpt,5),e.settings.vPort=t.vpt[e.LEV],void 0!==t.el&&"720"==t.el[4]&&t.gh[4]!==t.el[4]&&"960"==t.el[3]&&t.gh[3]!==t.el[3]&&"768"==t.el[2]&&t.gh[2]!==t.el[2]&&delete t.el,e.settings.size.height=null==t.el||null==t.el[e.LEV]||0==t.el[e.LEV]||"auto"==t.el[e.LEV]?_tpt.fillArray(t.gh,5,-1):_tpt.fillArray(t.el,5,-1),e.settings.size.width=_tpt.fillArray(t.gw,5,-1),e.settings.size.minHeight=_tpt.fillArray(t.mh??[0],5,-1),e.cacheSize={fullWidth:e.settings.size?.fullWidth,fullHeight:e.settings.size?.fullHeight},void 0!==t.off&&(t.off?.t&&(e.settings.size.m??={})&&(e.settings.size.m.t=t.off.t),t.off?.b&&(e.settings.size.m??={})&&(e.settings.size.m.b=t.off.b),t.off?.l&&(e.settings.size.p??={})&&(e.settings.size.p.l=t.off.l),t.off?.r&&(e.settings.size.p??={})&&(e.settings.size.p.r=t.off.r),e.offsetPrepared=!0),_tpt.updatePMHeight(t.id,t,!0))},_tpt.updatePMHeight=(t,e,s)=>{let i=SR7.M[t];if(null==i.settings)return _tpt.prepareModuleHeight(e);var o=i.settings.size.fullWidth?_tpt.winW:i.c.module.parentNode.offsetWidth;o=0===o||isNaN(o)?_tpt.winW:o;let n=i.settings.size.width[i.LEV]||i.settings.size.width[i.LEV++]||i.settings.size.width[i.LEV--]||o,l=i.settings.size.height[i.LEV]||i.settings.size.height[i.LEV++]||i.settings.size.height[i.LEV--]||0,r=i.settings.size.minHeight[i.LEV]||i.settings.size.minHeight[i.LEV++]||i.settings.size.minHeight[i.LEV--]||0;if(l="auto"==l?0:l,l=Math.floor(_tpt.toPxH(l)),"carousel"!==e.type&&(o-=parseInt(e.onw??0)||0),i.MP=!i.settings.size.fullWidth&&o<n||_tpt.winW<n?Math.min(1,o/n):1,e.size.fullScreen||e.size.fullHeight){let t=parseInt(e.fho)||0,s=(""+e.fho).indexOf("%")>-1;e.newh=_tpt.winH-(s?_tpt.winH*t/100:t)}else e.newh=i.MP*Math.max(l,r);if(e.newh+=(parseInt(e.onh??0)||0)+(parseInt(e.carousel?.pt)||0)+(parseInt(e.carousel?.pb)||0),void 0!==e.slideduration&&(e.newh=Math.max(e.newh,parseInt(e.slideduration)/3)),e.shdw&&_tpt.buildShadow(e.id,e),void 0!==i.c.adjuster&&(i.c.adjuster.style.height=e.newh+"px"),i.c.module.style.height=e.newh+"px",i.c.content.style.height=e.newh+"px",i.states.heightPrepared=!0,i.dims??={},i.dims.moduleRect=i.c.module.getBoundingClientRect(),i.c.content.style.left="-"+i.dims.moduleRect.left+"px",_tpt.updateStickyReserve(t,e.newh),!i.settings.size.fullWidth)return s&&requestAnimationFrame(()=>{o!==i.c.module.parentNode.offsetWidth&&_tpt.updatePMHeight(e.id,e)}),void _tpt.bgStyle(e.id,e,window.innerWidth==_tpt.winW,!0);_tpt.bgStyle(e.id,e,window.innerWidth==_tpt.winW,!0),requestAnimationFrame(function(){s&&requestAnimationFrame(()=>{o!==i.c.module.parentNode.offsetWidth&&_tpt.updatePMHeight(e.id,e)})}),i.earlyResizerFunction||(i.earlyResizerFunction=function(){requestAnimationFrame(function(){_tpt.getWinDim(),_tpt.moduleDefaults(e.id,e),_tpt.updateSlideBg(t,!0)})},window.addEventListener("resize",i.earlyResizerFunction))},_tpt.buildShadow=function(t,e){let s=SR7.M[t];null==s.c.shadow&&(s.c.shadow=document.createElement("sr7-module-shadow"),s.c.shadow.classList.add("sr7-shdw-"+e.shdw,"sr7-shdw-wait"),s.c.content.appendChild(s.c.shadow))},_tpt.showShadow=t=>SR7.M[t]?.c?.shadow?.classList.remove("sr7-shdw-wait"),_tpt.tf??=t=>"false"!=t&&0!=t&&("true"==t||1==t||t);const t=function(t){return"/"==(t=t.toLowerCase())[t.length-1]&&(t=t.slice(0,-1)),"http://"==t.slice(0,7)?t=t.slice(7):"https://"==t.slice(0,8)&&(t=t.slice(8)),t},e=function(t,e){return"/"==(""+t)[0]&&"/"==(""+t)[1]?(e?"https:":window.location.protocol)+t:(""+t).includes("://")?(e||t.includes("https")?"https:":window.location.protocol)+"//"+t.split("://").slice(1).join("://"):t},s=function(s,i){return!(!s||!i)&&(s==i||(s=e(s),i=e(i),s=t(s),i=t(i),(s=String(s))==(i=String(i))||"undefined"!==s&&"undefined"!==i&&(-1!==i.indexOf(s)||-1!==s.indexOf(i))))};_tpt.updateStickyBodyPad=()=>
189{if(SR7.E?.backend)return;let t=0;for(const e in SR7.M){const s=SR7.M[e];s?.settings&&"bottom"===SR7.F.getModuleSticky(s.settings)&&_tpt.tf(s.settings?.size?.stickyReserve)&&(t=Math.max(t,parseInt(s.states?.stickyReserveH)||parseInt(s.dims?.module?.h)||0))}document.body.style.paddingBottom=t>0?t+"px":""},_tpt.updateStickyReserve=(t,e)=>{const s=SR7.M[t];if(!s?.c?.module||SR7.E?.backend)return;const i=SR7.F.getModuleSticky(s.settings),o=_tpt.tf(s.settings?.size?.stickyReserve);e=parseInt(e)||parseInt(s.dims?.module?.h)||parseInt(s.c.content?.offsetHeight)||0,s.states.stickyReserveH="none"!==i&&o&&e>0?e:0,"top"===i&&o&&e>0?(s.c.stickySpacer??=document.createElement("sr7-sticky-spacer"),s.c.stickySpacer.isConnected||s.c.module.parentNode?.insertBefore(s.c.stickySpacer,s.c.module),s.c.stickySpacer.style.height=e+"px"):s.c.stickySpacer&&(s.c.stickySpacer.remove(),s.c.stickySpacer=null),_tpt.updateStickyBodyPad()},_tpt.bgStyle=async(t,e,i,o,n)=>{const l=SR7.M[t];e=e??l.settings;const r=SR7.F.getModuleSticky(e);if(!SR7.E.backend){if(l.c.module.classList.remove("sr7-top-fixed","sr7-bottom-sticky"),l.c.module.style.position="",l.c.module.style.width="",l.c.module.style.top="",l.c.module.style.left="",l.c.module.style.bottom="",l.c.module.style.pointerEvents="",l.c.module.style.zIndex="","carousel"===e.type&&(e.size?.fullWidth??l.settings?.size?.fullWidth)||(l.c.module.style.overflowY=""),l.c.content.style.pointerEvents="",l.c.content.style.overflow="","none"!==r){const t="true"===String(e.size?.overflow??l.settings?.size?.overflow);l.c.module.style.width="100%",l.c.module.style.left="0px",l.c.module.style.zIndex="5000",l.c.content.style.overflow=t?"visible":"hidden","top"===r?(l.c.module.classList.add("sr7-top-fixed"),l.c.module.style.position="fixed",l.c.module.style.top="0px",l.c.module.style.pointerEvents="none",l.c.content.style.pointerEvents="none"):"bottom"===r&&(l.c.module.classList.add("sr7-bottom-sticky"),l.c.module.style.position="fixed",l.c.module.style.bottom="0px",l.c.module.style.top="auto")}_tpt.updateStickyReserve(t,e.newh??(parseInt(l.c.content?.offsetHeight)||0))}if(null==l.c.bgcanvas){let t=document.createElement("sr7-module-bg"),r=!1;if("string"==typeof e?.bg?.color&&e?.bg?.color.includes("{"))if(_tpt.gradient&&_tpt.gsap)e.bg.color=_tpt.gradient.convert(e.bg.color);else try{let t=JSON.parse(e.bg.color);(t?.orig||t?.string)&&(e.bg.color=JSON.parse(e.bg.color))}catch{return}let d="string"==typeof e?.bg?.color?e?.bg?.color||"transparent":e?.bg?.color?.string??e?.bg?.color?.orig??e?.bg?.color?.color??"transparent";if(t.style["background"+(String(d).includes("grad")?"":"Color")]=d,("transparent"!==d||n)&&(r=!0),l.offsetPrepared&&(t.style.visibility="hidden"),e?.bg?.image?.src&&!Array.isArray(e.bg.image.srcs)&&"false"!==String(e?.bg?.image?.u)&&(e.bg.image.src=((t,e)=>{let i;const o=t.c.module.getElementsByTagName("image_lists");if(void 0!==o[0]){const t=o[0].getElementsByTagName("img");if(void 0!==t[0])for(let o in t)if(!i&&Object.prototype.hasOwnProperty.call(t,o)){let n=t[o].dataset.src||t[o].getAttribute("src")||t[o].getAttribute("data -src"),l=t[o].dataset.src2||t[o].getAttribute("src2")||t[o].getAttribute("data -src2");n&&s(atob(t[o].dataset.dbsrc),e)&&(i=_tpt.pickSrc({n1:n,n2:l}))}}return i??e})(l,e?.bg?.image?.src),t.style.backgroundImage=`url(${e?.bg?.image.src})`,t.style.backgroundSize=""==(e.bg.image?.size??"")?"cover":e.bg.image.size,t.style.backgroundPosition=e.bg.image.position??parseInt(e.bg.image.pos?.x??0)+"% "+parseInt(e.bg.image.pos?.y??0)+"%",""==e.bg.image.repeat&&(e.bg.image.repeat="no-repeat"),t.style.backgroundRepeat=_tpt.tf(e.bg.image.rx)&&_tpt.tf(e.bg.image.ry)?"repeat":_tpt.tf(e.bg.image.rx)?"repeat-x":_tpt.tf(e.bg.image.ry)?"repeat-y":e.bg.image.repeat??"no-repeat",r=!0),("none"!==(e?.bg?.mesh?.k??"none")||(e?.bg?.mesh?.gr??0)>0||"none"!==(e?.bg?.mot?.a??"none"))&&(r=!0),!r)return;if(l.c.bgcanvas=t,e.size.fullWidth?t.style.width=_tpt.winW-(i&&_tpt.winH<document.body.offsetHeight?_tpt.scrollBarW:0)+"px":o&&(t.style.width=l.c.module.offsetWidth+"px"),e.sbt?.use)l.c.content.appendChild(l.c.bgcanvas);else{const t=l.c.module.querySelector(":scope > img.sr7-lcpimg");t?l.c.module.insertBefore(l.c.bgcanvas,t):l.c.module.appendChild(l.c.bgcanvas)}}l.c.bgcanvas.style.height=void 0!==e.newh?e.newh+"px":(SR7.E.backend||"carousel"!==e.type?l.dims.content.h:l.dims.module.h)+"px",l.c.bgcanvas.style.left=!i&&e.sbt?.use||l.c.bgcanvas.closest("SR7-CONTENT")?"0px":"-"+(l?.dims?.moduleRect?.left??0)+"px"},_tpt.updateSlideBg=function(t,e,s=!1,i=0){const o=SR7.M[t];if(void 0===o){if(i>=5)return;return setTimeout(()=>_tpt.updateSlideBg(t,e,s,i+1),100)}const n=o.settings;(o?.c?.bgcanvas||!0===s)&&n.size.fullWidth&&(o.c.bgcanvas.style.width=_tpt.winW-(e&&_tpt.win
189H<document.body.offsetHeight?_tpt.scrollBarW:0)+"px")},_tpt.moduleDefaults=(t,e)=>{let s=SR7.M[t];null!=s&&null!=s.c&&null!=s.c.module&&(s.dims??={},s.dims.moduleRect=s.c.module.getBoundingClientRect(),s.c.content.style.left="-"+s.dims.moduleRect.left+"px",s.c.content.style.width=_tpt.winW-_tpt.scrollBarW+"px",_tpt.bgStyle(t,e,window.innerWidth==_tpt.winW),SR7.E.backend||"carousel"!==e.type||(s.c.module.style.overflow=s.settings?.size?.fullWidth?"hidden":"visible"))},_tpt.getOffset=t=>{var e=t.getBoundingClientRect(),s=window.pageXOffset||document.documentElement.scrollLeft,i=window.pageYOffset||document.documentElement.scrollTop;return{top:e.top+i,left:e.left+s}},_tpt.fillArray=function(t,e){let s,i;t=Array.isArray(t)?t:[t];let o=Array(e),n=t.length;for(i=0;i<t.length;i++)o[i+(e-n)]=t[i],null==s&&"#"!==t[i]&&(s=t[i]);for(let t=0;t<e;t++)void 0!==o[t]&&"#"!=o[t]||(o[t]=s),s=o[t];return o},_tpt.closestGE=function(t,e){let s=Number.MAX_VALUE,i=-1;for(let o=0;o<t.length;o++)t[o]-1>=e&&t[o]-1-e<s&&(s=t[o]-1-e,i=o);return++i},_tpt.R??={},_tpt.R.page=_tpt.extend?_tpt.extend(_tpt.R.page,{status:2,version:"7.1.0"}):{status:2,version:"7.1.0"}}();</script>
189
190<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 190-191
190
191<script async src="https://www.googletagmanager.com/gtag/js?id=
191G-Q5WJ6JHWDJ
vendor: 12 bytes, line 191
191"></script>
192<script>
193  
vendor: 134 bytes, lines 193-197
193window.dataLayer = window.dataLayer || [];
194  function gtag(){dataLayer.push(arguments);}
195  gtag('js', new Date());
196
197  gtag('config', '
197G-Q5WJ6JHWDJ
vendor: 4 bytes, line 197
197');
198</script>
198</head>
199
200<body  class="wp-singular page-template-default page page-id-5002 wp-theme-kallyas wp-child-theme-kallyas-child locale-en-us res1170 kl-skin--light" itemscope="itemscope" itemtype="https://schema.org/WebPage" >
201
202
203<div class="login_register_stuff">		<!-- Login/Register Modal forms - hidden by default to be opened through modal -->
204			<div id="login_panel" class="loginbox-popup auth-popup mfp-hide">
205				<div class="inner-container login-panel auth-popup-panel">
206					<h3 class="m_title_ext auth-popup-title" itemprop="alternativeHeadline" >SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES</h3>
207					<form id="login_form" name="login_form" method="post" class="zn_form_login znhg-ajax-login-form" action="https://www.openfabrics.org/fzpl/">
208
209						<div class="zn_form_login-result"></div>
210
211						<div class="form-group kl-fancy-form">
212							<input type="text" id="kl-username" name="log" class="form-control inputbox kl-fancy-form-input kl-fw-input"
213									placeholder="eg: james_smith"/>
214							<label class="kl-font-alt kl-fancy-form-label">USERNAME</label>
215						</div>
216
217						<div class="form-group kl-fancy-form">
218							<input type="password" id="kl-password" name="pwd" class="form-control inputbox kl-fancy-form-input kl-fw-input"
219									placeholder="type password"/>
220							<label class="kl-font-alt kl-fancy-form-label">PASSWORD</label>
221						</div>
222
223						
224						<label class="zn_remember auth-popup-remember" for="kl-rememberme">
225							<input type="checkbox" name="rememberme" id="kl-rememberme" value="forever" class="auth-popup-remember-chb"/>
226							 Remember Me						</label>
227
228						<input type="submit" id="login" name="submit_button" class="btn zn_sub_button btn-fullcolor btn-md"
229								value="LOG IN"/>
230
231						<input type="hidden" value="login" class="" name="zn_form_action"/>
232						<input type="hidden" value="zn_do_login" class="" name="action"/>
233
234						<div class="links auth-popup-links">
235														<a href="#forgot_panel" class="kl-login-box auth-popup-link">FORGOT YOUR PASSWORD?</a>
236						</div>
237					</form>
238				</div>
239			</div>
240		<!-- end login panel -->
241				<div id="forgot_panel" class="loginbox-popup auth-popup forgot-popup mfp-hide">
242			<div class="inner-container forgot-panel auth-popup-panel">
243				<h3 class="m_title m_title_ext text-custom auth-popup-title" itemprop="alternativeHeadline" >FORGOT YOUR DETAILS?</h3>
244				<form id="forgot_form" name="login_form" method="post" class="zn_form_lost_pass" action="https://www.openfabrics.org/fzpl/?action=lostpassword">
245					<div class="zn_form_login-result"></div>
246					<div class="form-group kl-fancy-form">
247						<input type="text" id="forgot-email" name="user_login" class="form-control inputbox kl-fancy-form-input kl-fw-input" placeholder="..."/>
248						<label class="kl-font-alt kl-fancy-form-label">USERNAME OR EMAIL</label>
249					</div>
250					<input type="hidden" name="wc_reset_password" value="true">
251					<input type="hidden" id="_wpnonce" name="_wpnonce" value="7313042df3" /><input type="hidden" name="_wp_http_referer" value="/ofmf-getting-started/" />					<div class="form-group">
252						<input type="submit" id="recover" name="submit" class="btn btn-block zn_sub_button btn-fullcolor btn-md" value="SEND MY DETAILS!"/>
253					</div>
254					<div class="links auth-popup-links">
255						<a href="#login_panel" class="kl-login-box auth-popup-link">AAH, WAIT, I REMEMBER NOW!</a>
256					</div>
257				</form>
258			</div>
259		</div><!-- end forgot pwd. panel -->
260		</div><!-- end login register stuff -->		<div id="fb-root"></div>
261		
261<script>(function (d, s, id) {
262			var js, fjs = d.getElementsByTagName(s)[0];
263			if (d.getElementById(id)) {return;}
264			js = d.createElement(s); js.id = id;
265			js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0";
266			fjs.parentNode.insertBefore(js, fjs);
267		}(document, 'script', 'facebook-jssdk'));</script>
267
268		
269
270<div id="page_wrapper">
271
272<header id="header" class="site-header  style7 cta_button   header--fixed  headerstyle-xs--image_color  sticky-resize headerstyle--image_color site-header--relative nav-th--light sheader-sh--default"  data-original-sticky-textscheme="sh--default"  role="banner" itemscope="itemscope" itemtype="https://schema.org/WPHeader" >
273	<div class="kl-header-bg "></div>	<div class="site-header-wrapper sticky-top-area">
274
275		<div class="site-header-top-wrapper topbar-style--default  sh--default">
276
277			<div class="siteheader-container container">
278
279				
280
281	
282	<div class="fxb-row site-header-row site-header-top ">
283
284		<div class='fxb-col fxb fxb-start-x fxb-center-y fxb-basis-auto site-header-col-left site-header-top-left'>
285								</div>
286
287		<div class='fxb-col fxb fxb-end-x fxb-center-y fxb-basis-auto site-header-col-right site-header-top-right'>
288						
289		<div id="search" class="sh-component header-search headsearch--def">
290
291			<a href="#" class="searchBtn header-search-button">
292				<span class="glyphicon glyphicon-search kl-icon-white"></span>
293			</a>
294
295			<div class="search-container header-search-container">
296				
297<form id="searchform" class="gensearch__form" action="https://www.openfabrics.org/" method="get">
298	<input id="s" name="s" value="" class="inputbox gensearch__input" type="text" placeholder="SEARCH ..." />
299	<button type="submit" id="searchsubmit" value="go" class="gensearch__submit glyphicon glyphicon-search"></button>
300	</form>			</div>
301		</div>
302
303					</div>
304
305	</div><!-- /.site-header-top -->
306
307	<div class="separator site-header-separator "></div>
308
309			</div>
310		</div><!-- /.site-header-top-wrapper -->
311
312		<div class="kl-top-header site-header-main-wrapper clearfix   header-no-bottom  sh--default">
313
314			<div class="container siteheader-container ">
315
316				<div class='fxb-col fxb-basis-auto'>
317
318					
319
320<div class="fxb-row site-header-row site-header-main ">
321
322	<div class='fxb-col fxb fxb-start-x fxb-center-y fxb-basis-auto fxb-grow-0 fxb-sm-full site-header-col-left site-header-main-left'>
323				<div id="logo-container" class="logo-container   logosize--contain zn-original-logo">
324			<!-- Logo -->
325			<h3 class='site-logo logo ' id='logo'><a href='https://www.openfabrics.org/' class='site-logo-anch'><img class="logo-img site-logo-img" src="https://www.openfabrics.org/wp-content/uploads/logo-gallery/logo-gallery_OpenFabric_Horizontal_Logo-shadow.jpg"  alt="OpenFabrics Alliance" title="Innovation in High Speed Fabrics" data-mobile-logo="https://www.openfabrics.org/wp-content/uploads/logo-gallery/logo-gallery_OpenFabricLogo.jpg" /></a></h3>			<!-- InfoCard -->
326					</div>
327
328		<div class="separator site-header-separator visible-xs"></div>	</div>
329
330	<div class='fxb-col fxb fxb-center-x fxb-center-y fxb-basis-auto fxb-sm-half site-header-col-center site-header-main-center'>
331				<div class="sh-component main-menu-wrapper" role="navigation" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement" >
332
333					<div class="zn-res-menuwrapper">
334			<a href="#" class="zn-res-trigger zn-menuBurger zn-menuBurger--3--s zn-menuBurger--anim1 " id="zn-res-trigger">
335				<span></span>
336				<span></span>
337				<span></span>
338			</a>
339		</div><!-- end responsive menu -->
340		<div id="main-menu" class="main-nav mainnav--sidepanel mainnav--active-text mainnav--pointer-dash nav-mm--light zn_mega_wrapper "><ul id="menu-main-menu" class="main-menu main-menu-nav zn_mega_menu "><li id="menu-item-150" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-150  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/" class=" main-menu-link main-menu-link-top"><span>Home</span></a></li>
341<li id="menu-item-393" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor menu-item-has-children menu-item-393 active  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="#" class=" main-menu-link main-menu-link-top"><span>Projects</span></a>
342<ul class="sub-menu clearfix">
343	<li id="menu-item-4185" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-4185 active  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/openfabrics-management-framework/" class=" main-menu-link main-menu-link-sub"><span>
343Sunfish™</span></a>
344	<ul class="sub-menu clearfix">
345		<li id="menu-item-5041" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5041  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/why-create-an-abstract-fabric-management-system/" class=" main-menu-link main-menu-link-sub"><span>Why Create an Abstract Fabric Management System</span></a></li>
346		<li id="menu-item-5040" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-5002 current_page_item menu-item-5040 active  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofmf-getting-started/" class=" main-menu-link main-menu-link-sub"><span>Sunfish: Getting Started</span></a></li>
347		<li id="menu-item-5053" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5053  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofmf-use-cases/" class=" main-menu-link main-menu-link-sub"><span>Sunfish Use Cases</span></a></li>
348		<li id="menu-item-5039" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5039  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/redfish-and-the-ofmf/" class=" main-menu-link main-menu-link-sub"><span>Redfish and Sunfish</span></a></li>
349		<li id="menu-item-5038" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5038  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/snia-and-the-ofmf/" class=" main-menu-link main-menu-link-sub"><span>SNIA and Sunfish</span></a></li>
350	</ul>
351</li>
352	<li id="menu-item-4204" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4204  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/openfabrics-interfaces/" class=" main-menu-link main-menu-link-sub"><span>OpenFabrics Interfaces (OFI)</span></a></li>
353	<li id="menu-item-748" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-748  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/advanced-network-software/" class=" main-menu-link main-menu-link-sub"><span>Advanced Networks Software</span></a>
354	<ul class="sub-menu clearfix">
355		<li id="menu-item-381" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-381  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofed-for-linux/" class=" main-menu-link main-menu-link-sub"><span>OFED for Linux (Legacy)</span></a>
356		<ul class="sub-menu clearfix">
357			<li id="menu-item-6021" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-6021  main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://www.openfabrics.org/wp-content/uploads/mediawiki/OpenFabrics-OFED-MediaWiki.pdf" class=" main-menu-link main-menu-link-sub"><span>OFED MediaWiki Pages</span></a></li>
358			<li id="menu-item-394" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-394  main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://downloads.openfabrics.org" class=" main-menu-link main-menu-link-sub"><span>Download OFED Components</span></a></li>
359			<li id="menu-item-395" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-395  main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://downloads.openfabrics.org/OFED" class=" main-menu-link main-menu-link-sub"><span>Download OFED Releases</span></a></li>
360			<li id="menu-item-396" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-396  main-menu-item-sub main-menu-item-sub-sub menu-item-odd menu-item-depth-3"><a href="https://bugs.openfabrics.org" class=" main-menu-link main-menu-link-sub"><span>Search OFED Bugs</span></a></li>
361		</ul>
362</li>
363	</ul>
364</li>
365	<li id="menu-item-387" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-387  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/active-project-mailing-lists/" class=" main-menu-link main-menu-link-sub"><span>Project Mailing Lists</span></a></li>
366	<li id="menu-item-4230" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4230  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/working-groups-2/" class=" main-menu-link main-menu-link-sub"><span>Completed Projects</span></a></li>
367	<li id="menu-item-647" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-647  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/ofa-mailing-lists/" class=" main-menu-link main-menu-link-sub"><span>Mailing Lists</span></a></li>
368</ul>
369</li>
370<li id="menu-item-791" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-791  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="http://www.openfabrics.org/openfabrics-business-calendar" class=" main-menu-link main-menu-link-top"><span>Calendar</span></a></li>
371<li id="menu-item-4253" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-4253  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/blogs" class=" main-menu-link main-menu-link-top"><span>Blogs</span></a></li>
372<li id="menu-item-468" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-468  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/earlier-developer-and-user-workshops/" class=" main-menu-link main-menu-link-top"><span>Workshops</span></a>
373<ul class="sub-menu clearfix">
374	<li id="menu-item-5727" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-5727  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>2025/2026 Webinar Series</span></a>
375	<ul class="sub-menu clearfix">
376		<li id="menu-item-5692" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5692  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-1/" class=" main-menu-link main-menu-link-sub"><span>Webinar #1: Getting Started with UltraEthernet</span></a></li>
377		<li id="menu-item-5806" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5806  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-2/" class=" main-menu-link main-menu-link-sub"><span>Webinar #2: Coding for Libfabric</span></a></li>
378		<li id="menu-item-5877" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5877  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-3/" class=" main-menu-link main-menu-link-sub"><span>Webinar #3: Exploring OFA Sunfish</span></a></li>
379		<li id="menu-item-5932" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5932  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-ofa-webinar-series-webinar-4/" class=" main-menu-link main-menu-link-sub"><span>Webinar #4: From Slingshot to Ultra Ethernet &#8211; Building a Transport Standard for Libfabric</span></a></li>
380		<li id="menu-item-6009" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-6009  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/2025-2026-ofa-webinar-series-webinar-5/" class=" main-menu-link main-menu-link-sub"><span>Webinar #5: The Flux Framework: Modern, Hierarchical Resource Management for Managing HPC Workloads</span></a></li>
381	</ul>
382</li>
383	<li id="menu-item-5807" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5807  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/workshops-and-webinars-calendar/" class=" main-menu-link main-menu-link-sub"><span>Workshops and Webinars Calendar</span></a></li>
384</ul>
385</li>
386<li id="menu-item-4198" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4198  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="https://www.openfabrics.org/membership-benefits-2/" class=" main-menu-link main-menu-link-top"><span>Membership</span></a></li>
387<li id="menu-item-389" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-389  main-menu-item-top  menu-item-even menu-item-depth-0"><a href="#" class=" main-menu-link main-menu-link-top"><span>About</span></a>
388<ul class="sub-menu clearfix">
389	<li id="menu-item-359" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-359  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/ofa-overview/" class=" main-menu-link main-menu-link-sub"><span>OFA Overview</span></a></li>
390	<li id="menu-item-5394" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5394  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/ofa-bylaws-and-policies/" class=" main-menu-link main-menu-link-sub"><span>OFA Bylaws and Policies</span></a></li>
391	<li id="menu-item-374" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-374  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/leadership-team/" class=" main-menu-link main-menu-link-sub"><span>Leadership Team</span></a>
392	<ul class="sub-menu clearfix">
393		<li id="menu-item-5085" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5085  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/emeritus-leadership/" class=" main-menu-link main-menu-link-sub"><span>Leadership Emeritus</span></a></li>
394	</ul>
395</li>
396	<li id="menu-item-693" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-693  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>Multimedia and Training</span></a>
397	<ul class="sub-menu clearfix">
398		<li id="menu-item-694" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-694  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/multimedia/" class=" main-menu-link main-menu-link-sub"><span>Multimedia</span></a></li>
399		<li id="menu-item-384" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-384  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/training/" class=" main-menu-link main-menu-link-sub"><span>Training</span></a></li>
400	</ul>
401</li>
402	<li id="menu-item-4704" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4704  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>Industry Alliance Program</span></a>
403	<ul class="sub-menu clearfix">
404		<li id="menu-item-1032" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-1032  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/industry-alliance-program-overview/" class=" main-menu-link main-menu-link-sub"><span>Industry Alliance Program Overview</span></a></li>
405		<li id="menu-item-2757" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-2757  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/become-industry-alliance-partner/" class=" main-menu-link main-menu-link-sub"><span>Become an Industry Alliance Partner</span></a></li>
406	</ul>
407</li>
408	<li id="menu-item-695" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-695  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="#" class=" main-menu-link main-menu-link-sub"><span>Press Room</span></a>
409	<ul class="sub-menu clearfix">
410		<li id="menu-item-843" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-843  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/press-releases-2/" class=" main-menu-link main-menu-link-sub"><span>Press Releases</span></a></li>
411		<li id="menu-item-4806" class="main-menu-item menu-item menu-item-type-custom menu-item-object-custom menu-item-4806  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/ofa-newsletter/" class=" main-menu-link main-menu-link-sub"><span>Subscribe to OFA Announcements</span></a></li>
412		<li id="menu-item-375" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-375  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/media-kit/" class=" main-menu-link main-menu-link-sub"><span>Media Kit</span></a></li>
413		<li id="menu-item-702" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-702  main-menu-item-sub main-menu-item-sub-sub menu-item-even menu-item-depth-2"><a href="https://www.openfabrics.org/contact-the-press-room/" class=" main-menu-link main-menu-link-sub"><span>Contact Press</span></a></li>
414	</ul>
415</li>
416	<li id="menu-item-383" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-383  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/privacy-statement/" class=" main-menu-link main-menu-link-sub"><span>Privacy Statement</span></a></li>
417	<li id="menu-item-4225" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4225  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/organization-mailing-lists/" class=" main-menu-link main-menu-link-sub"><span>Organization Mailing Lists</span></a></li>
418	<li id="menu-item-4209" class="main-menu-item menu-item menu-item-type-post_type menu-item-object-page menu-item-4209  main-menu-item-sub  menu-item-odd menu-item-depth-1"><a href="https://www.openfabrics.org/contact-the-press-room-2/" class=" main-menu-link main-menu-link-sub"><span>Contact the OFA</span></a></li>
419</ul>
420</li>
421</ul></div>		</div>
422		<!-- end main_menu -->
423			</div>
424
425	<div class='fxb-col fxb fxb-end-x fxb-center-y fxb-basis-auto fxb-sm-half site-header-col-right site-header-main-right'>
426
427		<div class='fxb-col fxb fxb-end-x fxb-center-y fxb-basis-auto fxb-sm-half site-header-main-right-top'>
428						<div style="display: flex;padding-top: 10px;"><a href="https://www.openfabrics.org/?page_id=4186"  class="sh-component ctabutton cta-button-0 kl-cta-custom btn btn-fullcolor btn-custom-color  hidden-xs cta-icon--before btn--rounded"  target="_self"  itemprop="url" ><span>JOIN NOW</span></a></div>		</div>
429
430		
431	</div>
432
433</div><!-- /.site-header-main -->
434
435
436				</div>
437
438							</div><!-- /.siteheader-container -->
439
440		</div><!-- /.site-header-main-wrapper -->
441
442		
443
444	</div><!-- /.site-header-wrapper -->
445	</header>
446<div class="zn_pb_wrapper clearfix zn_sortable_content" data-droplevel="0">		<section class="zn_section eluid4e1d932b     section-sidemargins    section--no " id="eluid4e1d932b"  >
447
448			
449			<div class="zn_section_size container zn-section-height--auto z
449n-section-content_algn--top ">
450
451				<div class="row ">
452					
453		<div class="eluid4b291789            col-md-9 col-sm-9   znColumnElement"  id="eluid4b291789" >
454
455			
456			<div class="znColumnElement-innerWrapper-eluid4b291789 znColumnElement-innerWrapper znColumnElement-innerWrapper--valign-top znColumnElement-innerWrapper--halign-left " >
457
458				<div class="znColumnElement-innerContent">					<div class="zn_text_box eluidb727750d  zn_text_box-light element-scheme--light" ><h4 class="zn_text_box-title zn_text_box-title--style2 ">Sunfish: Getting Started</h4><p><em><strong>This HOW-TO guide assumes that the installer is both familiar with Linux and Linux servers with network connectivity running.</strong></em></p>
459<p>In this how-to, a <a href="https://rockylinux.org/download" target="_self">Rocky Linux server</a> installation is used as a guide.</p>
460<p style="padding-left: 40px;"><span style="color: #231f20;">#&gt; systemctl set-default multi-user.target</span></p>
461<p style="padding-left: 40px;"><span style="color: #231f20;">#&gt; yum update</span></p>
462<p style="padding-left: 40px;"><span style="color: #231f20;">#&gt; yum install screen git.</span></p>
463<p style="padding-left: 40px;"><span style="color: #231f20;">#&gt; sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config</span></p>
464<p style="padding-left: 40px;"><span style="color: #231f20;">#&gt; reboot</span></p>
465<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; mkdir Swordfish</span></p>
466<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; python3 -m venv ~/Swordfish; cd ~Swordfish</span></p>
467<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; source Swordfish/bin/activate</span></p>
468<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; echo 'source Swordfish/bin/activate' &gt;&gt; ~/.bash_profile</span></p>
469<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; pip install flask flask_restful flask_httpauth</span></p>
470<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; pip install requests aniso8601 markupsafe pytz</span></p>
471<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; pip install itsdangerous StringGenerator urllib3</span></p>
472<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; pip install --upgrade pip</span></p>
473<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git clone https://github.com/DMTF/Redfish-Interface-Emulator.git</span></p>
474<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; cd Redfish-Interface-Emulator</span></p>
475<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git log</span></p>
476<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git remote add Swordfish-API https://github.com/SNIA/Swordfish-API-Emulator.git</span></p>
477<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git log ; # Note where the HEAD is</span></p>
478<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git remote; # Note the remote list contains 2 remotes</span></p>
479<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git log</span></p>
480<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git branch swordfish ; #&gt; New branch at the HEAD to build up Swordfish from</span></p>
481<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git checkout swordfish ; #&gt; move to new branch before a fetch</span></p>
482<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git fetch Swordfish-API</span></p>
483<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git log ; # Check all of the Swordfish commits</span></p>
484<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; git diff be770566 swordfish</span></p>
485<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; ls ; # look for g.py</span></p>
486<p style="padding-left: 40px;"><span style="color: #231f20;">$&gt; python emulator.py</span></p>
487</div>				</div>
488			</div>
489
490			
491		</div>
492	
493				</div>
494			</div>
495
496					</section>
497
498
499		</div><div class="znpb-footer-smart-area" >
499		<section class="zn_section eluid7de3c6d2     section-sidemargins    section--no " id="eluid7de3c6d2"  >
500
501			
502			<div class="zn_section_size container custom_width_perc zn-section-height--custom_height zn-section-content_algn--top ">
503
504				<div class="row gutter-0">
505					
506		<div class="eluide4056018            col-md-12 col-sm-12   znColumnElement"  id="eluide4056018" >
507
508			
509			<div class="znColumnElement-innerWrapper-eluide4056018 znColumnElement-innerWrapper znColumnElement-innerWrapper--valign-top znColumnElement-innerWrapper--halign-center " >
510
511				<div class="znColumnElement-innerContent">					
512        <div class="zn_custom_container eluide0d98004  smart-cnt--default   clearfix" >
513						
514			<div class="row zn_col_container-smart_container ">
515			
516		<div class="eluidba8ad95e            col-md-12 col-sm-12   znColumnElement"  id="eluidba8ad95e" >
517
518			
519			<div class="znColumnElement-innerWrapper-eluidba8ad95e znColumnElement-innerWrapper znColumnElement-innerWrapper--valign-top znColumnElement-innerWrapper--halign-center " >
520
521				<div class="znColumnElement-innerContent">					<div class="th-spacer clearfix eluid14057a33     "></div><div class="image-boxes imgbox-simple eluid2ddb0267 " ><div class="image-boxes-holder imgboxes-wrapper u-mb-0  "><div class="image-boxes-img-wrapper img-align-center"><img class="image-boxes-img img-responsive " src="https://www.openfabrics.org/wp-content/uploads/logo-gallery/logo-gallery_OpenFabricLogo-100x100_c.jpg"   alt=""  title="logo-gallery_OpenFabricLogo" /></div></div></div><div class="elm-socialicons eluidc51cf655  text-center sc-icon--center elm-socialicons--light element-scheme--light" ><ul class="elm-social-icons sc--clean sh--rounded sc-lay--normal clearfix"><li class="elm-social-icons-item"><a href="https://www.linkedin.com/groups/2417201"  class="elm-sc-link elm-sc-icon-0"  target="_blank" rel="noopener" itemprop="url" ><span class="elm-sc-icon " data-zniconfam="kl-social-icons" data-zn_icon=""></span></a><div class="clearfix"></div></li><li class="elm-social-icons-item"><a href="https://twitter.com/openfabrics?lang=en"  class="elm-sc-link elm-sc-icon-1"  target="_blank" rel="noopener" itemprop="url" ><span class="elm-sc-icon " data-zniconfam="kl-social-icons" data-zn_icon=""></span></a><div class="clearfix"></div></li></ul></div><div class="zn_text_box eluid694aa5d8  zn_text_box-light element-scheme--light" ><p style="text-align: center;"><span style="color: #ffffff;"><strong><a style="color: #ffffff;" href="https://www.openfabrics.org/privacy-statement/">Privacy Statement</a>       <a style="color: #ffffff;" href="https://www.openfabrics.org/membership-benefits-2/">Membership Information </a>      </strong><strong><a style="color: #ffffff;" href="https://www.openfabrics.org/contact-the-press-room-2/">Contact</a></strong></span></p>
522</div><div class="zn_text_box eluid5fd2106d  zn_text_box-light element-scheme--light" ><p style="text-align: center;"><span style="color: #ffffff; font-size: 13px;">Copyright © 2004-2026 OpenFabrics Alliance. All rights reserved.</span></p>
523</div>				</div>
524			</div>
525
526			
527		</div>
528	        </div>
529				        </div><!-- /.zn_custom_container -->
530
531
532						</div>
533			</div>
534
535			
536		</div>
537	
538				</div>
539			</div>
540
541					</section>
542
543
544		</div></div><!-- end page_wrapper -->
545
546<a href="#" id="totop" class="u-trans-all-2s js-scroll-event" data-forch="300" data-visibleclass="on--totop">TOP</a>
547
548<script type="speculationrules">
549{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/kallyas-child/*","/wp-content/themes/kallyas/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
550</script>
550
551
552		
552<script type="text/html" id="tmpl-media-frame">
553		<div class="media-frame-title" id="media-frame-title"></div>
554		<h2 class="media-frame-menu-heading">Actions</h2>
555		<button type="button" class="button button-link media-frame-menu-toggle" aria-expanded="false">
556			Menu			<span class="dashicons dashicons-arrow-down" aria-hidden="true"></span>
557		</button>
558		<div class="media-frame-menu"></div>
559		<div class="media-frame-tab-panel">
560			<div class="media-frame-router"></div>
561			<div class="media-frame-content"></div>
562		</div>
563		<h2 class="media-frame-actions-heading screen-reader-text">
564		Selected media actions		</h2>
565		<div class="media-frame-toolbar"></div>
566		<div class="media-frame-uploader"></div>
567	</script>
567
568
569		
569<script type="text/html" id="tmpl-media-modal">
570		<div id="wp-media-modal" tabindex="0" class="media-modal wp-core-ui" role="dialog" aria-labelledby="media-frame-title">
571			<# if ( data.hasCloseButton ) { #>
572				<button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">
573					Close dialog				</span></button>
574			<# } #>
575			<div class="media-modal-content" role="document"></div>
576		</div>
577		<div class="media-modal-backdrop"></div>
578	</script>
578
579
580		
580<script type="text/html" id="tmpl-uploader-window">
581		<div class="uploader-window-content">
582			<div class="uploader-editor-title">Drop files to upload</div>
583		</div>
584	</script>
584
585
586		
586<script type="text/html" id="tmpl-uploader-editor">
587		<div class="uploader-editor-content">
588			<div class="uploader-editor-title">Drop files to upload</div>
589		</div>
590	</script>
590
591
592		
592<script type="text/html" id="tmpl-uploader-inline">
593		<# var messageClass = data.message ? 'has-upload-message' : 'no-upload-message'; #>
594		<# if ( data.canClose ) { #>
595		<button class="close dashicons dashicons-no"><span class="screen-reader-text">
596			Close uploader		</span></button>
597		<# } #>
598		<div class="uploader-inline-content {{ messageClass }}">
599		<# if ( data.message ) { #>
600			<h2 class="upload-message">{{ data.message }}</h2>
601		<# } #>
602					<div class="upload-ui">
603				<h2 class="upload-instructions drop-instructions">Drop files to upload</h2>
604				<p class="upload-instructions drop-instructions">or</p>
605				<button type="button" class="browser button button-hero" aria-describedby="post-upload-info">Select Files</button>
606			</div>
607
608			<div class="upload-inline-status"></div>
609
610			<div class="post-upload-ui" id="post-upload-info">
611				
612				<p class="max-upload-size">
613				Maximum upload file size: 8 MB.				</p>
614
615				<# if ( data.suggestedWidth && data.suggestedHeight ) { #>
616					<p class="suggested-dimensions">
617						Suggested image dimensions: {{data.suggestedWidth}} by {{data.suggestedHeight}} pixels.					</p>
618				<# } #>
619
620							</div>
621				</div>
622	</script>
622
623
624		
624<script type="text/html" id="tmpl-media-library-view-switcher">
625		<a href="https://www.openfabrics.org/wp-admin/upload.php?mode=list" class="view-list">
626			<span class="screen-reader-text">
627				List view			</span>
628		</a>
629		<a href="https://www.openfabrics.org/wp-admin/upload.php?mode=grid" class="view-grid current" aria-current="page">
630			<span class="screen-reader-text">
631				Grid view			</span>
632		</a>
633	</script>
633
634
635		
635<script type="text/html" id="tmpl-uploader-status">
636		<h2>Uploading</h2>
637
638		<div class="media-progress-bar"><div></div></div>
639		<div class="upload-details">
640			<span class="upload-count">
641				<span class="upload-index"></span> / <span class="upload-total"></span>
642			</span>
643			<span class="upload-detail-separator">&ndash;</span>
644			<span class="upload-filename"></span>
645		</div>
646		<div class="upload-errors"></div>
647		<button type="button" class="button upload-dismiss-errors">Dismiss errors</button>
648	</script>
648
649
650		
650<script type="text/html" id="tmpl-uploader-status-error">
651		<span class="upload-error-filename word-wrap-break-word">{{{ data.filename }}}</span>
652		<span class="upload-error-message">{{ data.message }}</span>
653	</script>
653
654
655		
655<script type="text/html" id="tmpl-edit-attachment-frame">
656		<div class="edit-media-header">
657			<button class="left dashicons"<# if ( ! data.hasPrevious ) { #> disabled<# } #>><span class="screen-reader-text">Edit previous media item</span></button>
658			<button class="right dashicons"<# if ( ! data.hasNext ) { #> disabled<# } #>><span class="screen-reader-text">Edit next media item</span></button>
659			<button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">Close dialog</span></button>
660		</div>
661		<div class="media-frame-title"></div>
662		<div class="media-frame-content"></div>
663	</script>
663
664
665		
665<script type="text/html" id="tmpl-attachment-details-two-column">
666		<div class="attachment-media-view {{ data.orientation }}">
667						<h2 class="screen-reader-text">Attachment Preview</h2>
668			<div class="thumbnail thumbnail-{{ data.type }}">
669				<# if ( data.uploading ) { #>
670					<div class="media-progress-bar"><div></div></div>
671				<# } else if ( data.sizes && data.sizes.full ) { #>
672					<img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" />
673				<# } else if ( data.sizes && data.sizes.large ) { #>
674					<img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" />
675				<# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #>
676					<img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" />
677				<# } #>
678
679				<# if ( 'audio' === data.type ) { #>
680				<div class="wp-media-wrapper wp-audio">
681					<audio crossorigin="anonymous" style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
682						<source type="{{ data.mime }}" src="{{ data.url }}" />
683					</audio>
684				</div>
685				<# } else if ( 'video' === data.type ) {
686					var w_rule = '';
687					if ( data.width ) {
688						w_rule = 'width: ' + data.width + 'px;';
689					} else if ( wp.media.view.settings.contentWidth ) {
690						w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;';
691					}
692				#>
693				<div style="{{ w_rule }}" class="wp-media-wrapper wp-video">
694					<video crossorigin="anonymous" controls="controls" class="wp-video-shortcode" preload="metadata"
695						<# if ( data.width ) { #>width="{{ data.width }}"<# } #>
696						<# if ( data.height ) { #>height="{{ data.height }}"<# } #>
697						<# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>>
698						<source type="{{ data.mime }}" src="{{ data.url }}" />
699					</video>
700				</div>
701				<# } #>
702
703				<div class="attachment-actions">
704					<# if ( 'image' === data.type && ! data.uploading && data.sizes && data.can.save ) { #>
705					<button type="button" class="button edit-attachment">Edit Image</button>
706					<# } else if ( 'pdf' === data.subtype && data.sizes ) { #>
707					<p>Document Preview</p>
708					<# } #>
709				</div>
710			</div>
711		</div>
712		<div class="attachment-info">
713			<span class="settings-save-status" role="status">
714				<span class="spinner"></span>
715				<span class="saved">Saved.</span>
716			</span>
717			<div class="details">
718				<h2 class="screen-reader-text">
719					Details				</h2>
720				<div class="uploaded"><strong>Uploaded on:</strong> {{ data.dateFormatted }}</div>
721				<div class="uploaded-by word-wrap-break-word">
722					<strong>Uploaded by:</strong>
723						<# if ( data.authorLink ) { #>
724							<a href="{{ data.authorLink }}">{{ data.authorName }}</a>
725						<# } else { #>
726							{{ data.authorName }}
727						<# } #>
728				</div>
729				<# if ( data.uploadedToTitle ) { #>
730					<div class="uploaded-to">
731						<strong>Uploaded to:</strong>
732						<# if ( data.uploadedToLink ) { #>
733							<a href="{{ data.uploadedToLink }}">{{ data.uploadedToTitle }}</a>
734						<# } else { #>
735							{{ data.uploadedToTitle }}
736						<# } #>
737					</div>
738				<# } #>
739				<div class="filename"><strong>File name:</strong> {{ data.filename }}</div>
740				<div class="file-type"><strong>File type:</strong> {{ data.mime }}</div>
741				<div class="file-size"><strong>File size:</strong> {{ data.filesizeHumanReadable }}</div>
742				<# if ( 'image' === data.type && ! data.uploading ) { #>
743					<# if ( data.width && data.height ) { #>
744						<div class="dimensions"><strong>Dimensions:</strong>
745							{{ data.width }} by {{ data.height }} pixels						</div>
746					<# } #>
747
748					<# if ( data.originalImageURL && data.originalImageName ) { #>
749						<div class="word-wrap-break-word">
750							<strong>Original image:</strong>
751							<a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a>
752						</div>
753					<# } #>
754				<# } #>
755
756				<# if ( data.fileLength && data.fileLengthHumanReadable ) { #>
757					<div class="file-length"><strong>Length:</strong>
758						<span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span>
759						<span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span>
760					</div>
761				<# } #>
762
763				<# if ( 'audio' === data.type && data.meta.bitrate ) { #>
764					<div class="bitrate">
765						<strong>Bitrate:</strong> {{ Math.round( data.meta.bitrate / 1000 ) }}kb/s
766						<# if ( data.meta.bitrate_mode ) { #>
767						{{ ' ' + data.meta.bitrate_mode.toUpperCase() }}
768						<# } #>
769					</div>
770				<# } #>
771
772				<# if ( data.mediaStates ) { #>
773					<div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div>
774				<# } #>
775
776				<div class="compat-meta">
777					<# if ( data.compat && data.compat.meta ) { #>
778						{{{ data.compat.meta }}}
779					<# } #>
780				</div>
781			</div>
782
783			<div class="settings">
784				<# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #>
785				<# if ( 'image' === data.type ) { #>
786					<span class="setting alt-text has-description" data-setting="alt">
787						<label for="attachment-details-two-column-alt-text" class="name">Alternative Text</label>
788						<textarea id="attachment-details-two-column-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea>
789					</span>
790					<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
791				<# } #>
792								<span class="setting" data-setting="title">
793					<label for="attachment-details-two-column-title" class="name">Title</label>
794					<input type="text" id="attachment-details-two-column-title" value="{{ data.title }}" {{ maybeReadOnly }} />
795				</span>
796								<# if ( 'audio' === data.type ) { #>
797								<span class="setting" data-setting="artist">
798					<label for="attachment-details-two-column-artist" class="name">Artist</label>
799					<input type="text" id="attachment-details-two-column-artist" value="{{ data.artist || data.meta.artist || '' }}" />
800				</span>
801								<span class="setting" data-setting="album">
802					<label for="attachment-details-two-column-album" class="name">Album</label>
803					<input type="text" id="attachment-details-two-column-album" value="{{ data.album || data.meta.album || '' }}" />
804				</span>
805								<# } #>
806				<span class="setting" data-setting="caption">
807					<# if ( 'image' === data.type ) { #>
808					<label for="attachment-details-two-column-caption" class="name">Image Caption</label>
809					<# } else { #>
810					<label for="attachment-details-two-column-caption" class="name">Short Description</label>
811					<# } #>
812					<textarea id="attachment-details-two-column-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea>
813				</span>
814				<span class="setting" data-setting="description">
815					<label for="attachment-details-two-column-description" class="name">Description</label>
816					<textarea id="attachment-details-two-column-description" {{ maybeReadOnly }}>{{ data.description }}</textarea>
817				</span>
818				<span class="setting" data-setting="url">
819					<label for="attachment-details-two-column-copy-link" class="name">File URL:</label>
820					<input type="text" class="attachment-details-copy-link ltr" id="attachment-details-two-column-copy-link" value="{{ data.url }}" readonly />
821					<span class="copy-to-clipboard-container">
822						<button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-two-column-copy-link">Copy URL to clipboard</button>
823						<span class="success hidden" aria-hidden="true">Copied!</span>
824					</span>
825				</span>
826				<div class="attachment-compat"></div>
827			</div>
828
829			<div class="actions">
830				<# if ( data.link ) { #>
831										<a class="view-attachment" href="{{ data.link }}">View attachment page</a>
832				<# } #>
833				<# if ( data.can.save ) { #>
834					<# if ( data.link ) { #>
835						<span class="links-separator">|</span>
836					<# } #>
837					<a href="{{ data.editLink }}">Edit more details</a>
838				<# } #>
839				<# if ( data.can.save && data.link ) { #>
840					<span class="links-separator">|</span>
841					<a href="{{ data.url }}" download>Download file</a>
842				<# } #>
843				<# if ( ! data.uploading && data.can.remove ) { #>
844					<# if ( data.link || data.can.save ) { #>
845						<span class="links-separator">|</span>
846					<# } #>
847											<button type="button" class="button-link delete-attachment">Delete permanently</button>
848									<# } #>
849			</div>
850		</div>
851	</script>
851
852
853		
853<script type="text/html" id="tmpl-attachment">
854		<div class="attachment-preview js--select-attachment type-{{ data.type }} subtype-{{ data.subtype }} {{ data.orientation }}">
855			<div class="thumbnail">
856				<# if ( data.uploading ) { #>
857					<div class="media-progress-bar"><div style="width: {{ data.percent }}%"></div></div>
858				<# } else if ( 'image' === data.type && data.size && data.size.url ) { #>
859					<div class="centered">
860						<img src="{{ data.size.url }}" draggable="false" alt="" />
861					</div>
862				<# } else { #>
863					<div class="centered">
864						<# if ( data.image && data.image.src && data.image.src !== data.icon ) { #>
865							<img src="{{ data.image.src }}" class="thumbnail" draggable="false" alt="" />
866						<# } else if ( data.sizes ) {
867								if ( data.sizes.medium ) { #>
868									<img src="{{ data.sizes.medium.url }}" class="thumbnail" draggable="false" alt="" />
869								<# } else { #>
870									<img src="{{ data.sizes.full.url }}" class="thumbnail" draggable="false" alt="" />
871								<# } #>
872						<# } else { #>
873							<img src="{{ data.icon }}" class="icon" draggable="false" alt="" />
874						<# } #>
875					</div>
876					<div class="filename">
877						<div>{{ data.filename }}</div>
878					</div>
879				<# } #>
880			</div>
881			<# if ( data.buttons.close ) { #>
882				<button type="button" class="button-link attachment-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">
883					Remove				</span></button>
884			<# } #>
885		</div>
886		<# if ( data.buttons.check ) { #>
887			<button type="button" class="check" tabindex="-1"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">
888				Deselect			</span></button>
889		<# } #>
890		<#
891		var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly';
892		if ( data.describe ) {
893			if ( 'image' === data.type ) { #>
894				<input type="text" value="{{ data.caption }}" class="describe" data-setting="caption"
895					aria-label="Caption"
896					placeholder="Caption&hellip;" {{ maybeReadOnly }} />
897			<# } else { #>
898				<input type="text" value="{{ data.title }}" class="describe" data-setting="title"
899					<# if ( 'video' === data.type ) { #>
900						aria-label="Video title"
901						placeholder="Video title&hellip;"
902					<# } else if ( 'audio' === data.type ) { #>
903						aria-label="Audio title"
904						placeholder="Audio title&hellip;"
905					<# } else { #>
906						aria-label="Media title"
907						placeholder="Media title&hellip;"
908					<# } #> {{ maybeReadOnly }} />
909			<# }
910		} #>
911	</script>
911
912
913		
913<script type="text/html" id="tmpl-attachment-details">
914		<h2>
915			Attachment Details			<span class="settings-save-status" role="status">
916				<span class="spinner"></span>
917				<span class="saved">Saved.</span>
918			</span>
919		</h2>
920		<div class="attachment-info">
921
922			<# if ( 'audio' === data.type ) { #>
923				<div class="wp-media-wrapper wp-audio">
924					<audio crossorigin="anonymous" style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
925						<source type="{{ data.mime }}" src="{{ data.url }}" />
926					</audio>
927				</div>
928			<# } else if ( 'video' === data.type ) {
929				var w_rule = '';
930				if ( data.width ) {
931					w_rule = 'width: ' + data.width + 'px;';
932				} else if ( wp.media.view.settings.contentWidth ) {
933					w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;';
934				}
935			#>
936				<div style="{{ w_rule }}" class="wp-media-wrapper wp-video">
937					<video crossorigin="anonymous" controls="controls" class="wp-video-shortcode" preload="metadata"
938						<# if ( data.width ) { #>width="{{ data.width }}"<# } #>
939						<# if ( data.height ) { #>height="{{ data.height }}"<# } #>
940						<# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>>
941						<source type="{{ data.mime }}" src="{{ data.url }}" />
942					</video>
943				</div>
944			<# } else { #>
945				<div class="thumbnail thumbnail-{{ data.type }}">
946					<# if ( data.uploading ) { #>
947						<div class="media-progress-bar"><div></div></div>
948					<# } else if ( 'image' === data.type && data.size && data.size.url ) { #>
949						<img src="{{ data.size.url }}" draggable="false" alt="" />
950					<# } else { #>
951						<img src="{{ data.icon }}" class="icon" draggable="false" alt="" />
952					<# } #>
953				</div>
954			<# } #>
955
956			<div class="details">
957				<div class="filename">{{ data.filename }}</div>
958				<div class="uploaded">{{ data.dateFormatted }}</div>
959
960				<div class="file-size">{{ data.filesizeHumanReadable }}</div>
961				<# if ( 'image' === data.type && ! data.uploading ) { #>
962					<# if ( data.width && data.height ) { #>
963						<div class="dimensions">
964							{{ data.width }} by {{ data.height }} pixels						</div>
965					<# } #>
966
967					<# if ( data.originalImageURL && data.originalImageName ) { #>
968						<div class="word-wrap-break-word">
969							Original image:							<a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a>
970						</div>
971					<# } #>
972
973					<# if ( data.can.save && data.sizes ) { #>
974						<a class="edit-attachment" href="{{ data.editLink }}&amp;image-editor" target="_blank">Edit Image</a>
975					<# } #>
976				<# } #>
977
978				<# if ( data.fileLength && data.fileLengthHumanReadable ) { #>
979					<div class="file-length">Length:						<span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span>
980						<span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span>
981					</div>
982				<# } #>
983
984				<# if ( data.mediaStates ) { #>
985					<div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div>
986				<# } #>
987
988				<# if ( ! data.uploading && data.can.remove ) { #>
989											<button type="button" class="button-link delete-attachment">Delete permanently</button>
990									<# } #>
991
992				<div class="compat-meta">
993					<# if ( data.compat && data.compat.meta ) { #>
994						{{{ data.compat.meta }}}
995					<# } #>
996				</div>
997			</div>
998		</div>
999		<# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #>
1000		<# if ( 'image' === data.type ) { #>
1001			<span class="setting alt-text has-description" data-setting="alt">
1002				<label for="attachment-details-alt-text" class="name">Alt Text</label>
1003				<textarea id="attachment-details-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea>
1004			</span>
1005			<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1006		<# } #>
1007				<span class="setting" data-setting="title">
1008			<label for="attachment-details-title" class="name">Title</label>
1009			<input type="text" id="attachment-details-title" value="{{ data.title }}" {{ maybeReadOnly }} />
1010		</span>
1011				<# if ( 'audio' === data.type ) { #>
1012				<span class="setting" data-setting="artist">
1013			<label for="attachment-details-artist" class="name">Artist</label>
1014			<input type="text" id="attachment-details-artist" value="{{ data.artist || data.meta.artist || '' }}" />
1015		</span>
1016				<span class="setting" data-setting="album">
1017			<label for="attachment-details-album" class="name">Album</label>
1018			<input type="text" id="attachment-details-album" value="{{ data.album || data.meta.album || '' }}" />
1019		</span>
1020				<# } #>
1021		<span class="setting" data-setting="caption">
1022			<# if ( 'image' === data.type ) { #>
1023			<label for="attachment-details-caption" class="name">Image Caption</label>
1024			<# } else { #>
1025			<label for="attachment-details-caption" class="name">Short Description</label>
1026			<# } #>
1027			<textarea id="attachment-details-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea>
1028		</span>
1029		<span class="setting" data-setting="description">
1030			<label for="attachment-details-description" class="name">Description</label>
1031			<textarea id="attachment-details-description" {{ maybeReadOnly }}>{{ data.description }}</textarea>
1032		</span>
1033		<span class="setting" data-setting="url">
1034			<label for="attachment-details-copy-link" class="name">File URL:</label>
1035			<input type="text" class="attachment-details-copy-link ltr" id="attachment-details-copy-link" value="{{ data.url }}" readonly />
1036			<div class="copy-to-clipboard-container">
1037				<button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-copy-link">Copy URL to clipboard</button>
1038				<span class="success hidden" aria-hidden="true">Copied!</span>
1039			</div>
1040		</span>
1041	</script>
1041
1042
1043		
1043<script type="text/html" id="tmpl-media-selection">
1044		<div class="selection-info">
1045			<span class="count"></span>
1046			<# if ( data.editable ) { #>
1047				<button type="button" class="button-link edit-selection">Edit Selection</button>
1048			<# } #>
1049			<# if ( data.clearable ) { #>
1050				<button type="button" class="button-link clear-selection">Clear</button>
1051			<# } #>
1052		</div>
1053		<div class="selection-view"></div>
1054	</script>
1054
1055
1056		
1056<script type="text/html" id="tmpl-attachment-display-settings">
1057		<h2>Attachment Display Settings</h2>
1058
1059		<# if ( 'image' === data.type ) { #>
1060			<span class="setting align">
1061				<label for="attachment-display-settings-alignment" class="name">Alignment</label>
1062				<select id="attachment-display-settings-alignment" class="alignment"
1063					data-setting="align"
1064					<# if ( data.userSettings ) { #>
1065						data-user-setting="align"
1066					<# } #>>
1067
1068					<option value="left">
1069						Left					</option>
1070					<option value="center">
1071						Center					</option>
1072					<option value="right">
1073						Right					</option>
1074					<option value="none" selected>
1075						None					</option>
1076				</select>
1077			</span>
1078		<# } #>
1079
1080		<span class="setting">
1081			<label for="attachment-display-settings-link-to" class="name">
1082				<# if ( data.model.canEmbed ) { #>
1083					Embed or Link				<# } else { #>
1084					Link To				<# } #>
1085			</label>
1086			<select id="attachment-display-settings-link-to" class="link-to"
1087				data-setting="link"
1088				<# if ( data.userSettings && ! data.model.canEmbed ) { #>
1089					data-user-setting="urlbutton"
1090				<# } #>>
1091
1092			<# if ( data.model.canEmbed ) { #>
1093				<option value="embed" selected>
1094					Embed Media Player				</option>
1095				<option value="file">
1096			<# } else { #>
1097				<option value="none" selected>
1098					None				</option>
1099				<option value="file">
1100			<# } #>
1101				<# if ( data.model.canEmbed ) { #>
1102					Link to Media File				<# } else { #>
1103					Media File				<# } #>
1104				</option>
1105				<option value="post">
1106				<# if ( data.model.canEmbed ) { #>
1107					Link to Attachment Page				<# } else { #>
1108					Attachment Page				<# } #>
1109				</option>
1110			<# if ( 'image' === data.type ) { #>
1111				<option value="custom">
1112					Custom URL				</option>
1113			<# } #>
1114			</select>
1115		</span>
1116		<span class="setting">
1117			<label for="attachment-display-settings-link-to-custom" class="name">URL</label>
1118			<input type="text" id="attachment-display-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" />
1119		</span>
1120
1121		<# if ( 'undefined' !== typeof data.sizes ) { #>
1122			<span class="setting">
1123				<label for="attachment-display-settings-size" class="name">Size</label>
1124				<select id="attachment-display-settings-size" class="size" name="size"
1125					data-setting="size"
1126					<# if ( data.userSettings ) { #>
1127						data-user-setting="imgsize"
1128					<# } #>>
1129											<#
1130						var size = data.sizes['thumbnail'];
1131						if ( size ) { #>
1132							<option value="thumbnail" >
1133								Thumbnail &ndash; {{ size.width }} &times; {{ size.height }}
1134							</option>
1135						<# } #>
1136											<#
1137						var size = data.sizes['medium'];
1138						if ( size ) { #>
1139							<option value="medium" >
1140								Medium &ndash; {{ size.width }} &times; {{ size.height }}
1141							</option>
1142						<# } #>
1143											<#
1144						var size = data.sizes['large'];
1145						if ( size ) { #>
1146							<option value="large" >
1147								Large &ndash; {{ size.width }} &times; {{ size.height }}
1148							</option>
1149						<# } #>
1150											<#
1151						var size = data.sizes['full'];
1152						if ( size ) { #>
1153							<option value="full"  selected='selected'>
1154								Full Size &ndash; {{ size.width }} &times; {{ size.height }}
1155							</option>
1156						<# } #>
1157									</select>
1158			</span>
1159		<# } #>
1160	</script>
1160
1161
1162		
1162<script type="text/html" id="tmpl-gallery-settings">
1163		<h2>Gallery Settings</h2>
1164
1165		<span class="setting">
1166			<label for="gallery-settings-link-to" class="name">Link To</label>
1167			<select id="gallery-settings-link-to" class="link-to"
1168				data-setting="link"
1169				<# if ( data.userSettings ) { #>
1170					data-user-setting="urlbutton"
1171				<# } #>>
1172
1173				<option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' === wp.media.galleryDefaults.link ) {
1174					#>selected="selected"<# }
1175				#>>
1176					Attachment Page				</option>
1177				<option value="file" <# if ( 'file' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
1178					Media File				</option>
1179				<option value="none" <# if ( 'none' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
1180					None				</option>
1181			</select>
1182		</span>
1183
1184		<span class="setting">
1185			<label for="gallery-settings-columns" class="name select-label-inline">Columns</label>
1186			<select id="gallery-settings-columns" class="columns" name="columns"
1187				data-setting="columns">
1188									<option value="1" <#
1189						if ( 1 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1190					#>>
1191						1					</option>
1192									<option value="2" <#
1193						if ( 2 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1194					#>>
1195						2					</option>
1196									<option value="3" <#
1197						if ( 3 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1198					#>>
1199						3					</option>
1200									<option value="4" <#
1201						if ( 4 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1202					#>>
1203						4					</option>
1204									<option value="5" <#
1205						if ( 5 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1206					#>>
1207						5					</option>
1208									<option value="6" <#
1209						if ( 6 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1210					#>>
1211						6					</option>
1212									<option value="7" <#
1213						if ( 7 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1214					#>>
1215						7					</option>
1216									<option value="8" <#
1217						if ( 8 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1218					#>>
1219						8					</option>
1220									<option value="9" <#
1221						if ( 9 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1222					#>>
1223						9					</option>
1224							</select>
1225		</span>
1226
1227		<span class="setting">
1228			<input type="checkbox" id="gallery-settings-random-order" data-setting="_orderbyRandom" />
1229			<label for="gallery-settings-random-order" class="checkbox-label-inline">Random Order</label>
1230		</span>
1231
1232		<span class="setting size">
1233			<label for="gallery-settings-size" class="name">Size</label>
1234			<select id="gallery-settings-size" class="size" name="size"
1235				data-setting="size"
1236				<# if ( data.userSettings ) { #>
1237					data-user-setting="imgsize"
1238				<# } #>
1239				>
1240									<option value="thumbnail">
1241						Thumbnail					</option>
1242									<option value="medium">
1243						Medium					</option>
1244									<option value="large">
1245						Large					</option>
1246									<option value="full">
1247						Full Size					</option>
1248							</select>
1249		</span>
1250	</script>
1250
1251
1252		
1252<script type="text/html" id="tmpl-playlist-settings">
1253		<h2>Playlist Settings</h2>
1254
1255		<# var emptyModel = _.isEmpty( data.model ),
1256			isVideo = 'video' === data.controller.get('library').props.get('type'); #>
1257
1258		<span class="setting">
1259			<input type="checkbox" id="playlist-settings-show-list" data-setting="tracklist" <# if ( emptyModel ) { #>
1260				checked="checked"
1261			<# } #> />
1262			<label for="playlist-settings-show-list" class="checkbox-label-inline">
1263				<# if ( isVideo ) { #>
1264				Show Video List				<# } else { #>
1265				Show Tracklist				<# } #>
1266			</label>
1267		</span>
1268
1269		<# if ( ! isVideo ) { #>
1270		<span class="setting">
1271			<input type="checkbox" id="playlist-settings-show-artist" data-setting="artists" <# if ( emptyModel ) { #>
1272				checked="checked"
1273			<# } #> />
1274			<label for="playlist-settings-show-artist" class="checkbox-label-inline">
1275				Show Artist Name in Tracklist			</label>
1276		</span>
1277		<# } #>
1278
1279		<span class="setting">
1280			<input type="checkbox" id="playlist-settings-show-images" data-setting="images" <# if ( emptyModel ) { #>
1281				checked="checked"
1282			<# } #> />
1283			<label for="playlist-settings-show-images" class="checkbox-label-inline">
1284				Show Images			</label>
1285		</span>
1286	</script>
1286
1287
1288		
1288<script type="text/html" id="tmpl-embed-link-settings">
1289		<span class="setting link-text">
1290			<label for="embed-link-settings-link-text" class="name">Link Text</label>
1291			<input type="text" id="embed-link-settings-link-text" class="alignment" data-setting="linkText" />
1292		</span>
1293		<div class="embed-container" style="display: none;">
1294			<div class="embed-preview"></div>
1295		</div>
1296	</script>
1296
1297
1298		
1298<script type="text/html" id="tmpl-embed-image-settings">
1299		<div class="wp-clearfix">
1300			<div class="thumbnail">
1301				<img src="{{ data.model.url }}" draggable="false" alt="" />
1302			</div>
1303		</div>
1304
1305		<span class="setting alt-text has-description">
1306			<label for="embed-image-settings-alt-text" class="name">Alternative Text</label>
1307			<textarea id="embed-image-settings-alt-text" data-setting="alt" aria-describedby="alt-text-description"></textarea>
1308		</span>
1309		<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1310
1311					<span class="setting caption">
1312				<label for="embed-image-settings-caption" class="name">Caption</label>
1313				<textarea id="embed-image-settings-caption" data-setting="caption"></textarea>
1314			</span>
1315		
1316		<fieldset class="setting-group">
1317			<legend class="name">Align</legend>
1318			<span class="setting align">
1319				<span class="button-group button-large" data-setting="align">
1320					<button class="button" value="left">
1321						Left					</button>
1322					<button class="button" value="center">
1323						Center					</button>
1324					<button class="button" value="right">
1325						Right					</button>
1326					<button class="button active" value="none">
1327						None					</button>
1328				</span>
1329			</span>
1330		</fieldset>
1331
1332		<fieldset class="setting-group">
1333			<legend class="name">Link To</legend>
1334			<span class="setting link-to">
1335				<span class="button-group button-large" data-setting="link">
1336					<button class="button" value="file">
1337						Image URL					</button>
1338					<button class="button" value="custom">
1339						Custom URL					</button>
1340					<button class="button active" value="none">
1341						None					</button>
1342				</span>
1343			</span>
1344			<span class="setting">
1345				<label for="embed-image-settings-link-to-custom" class="name">URL</label>
1346				<input type="text" id="embed-image-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" />
1347			</span>
1348		</fieldset>
1349	</script>
1349
1350
1351		
1351<script type="text/html" id="tmpl-image-details">
1352		<div class="media-embed">
1353			<div class="embed-media-settings">
1354				<div class="column-settings">
1355					<span class="setting alt-text has-description">
1356						<label for="image-details-alt-text" class="name">Alternative Text</label>
1357						<textarea id="image-details-alt-text" data-setting="alt" aria-describedby="alt-text-description">{{ data.model.alt }}</textarea>
1358					</span>
1359					<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1360
1361											<span class="setting caption">
1362							<label for="image-details-caption" class="name">Caption</label>
1363							<textarea id="image-details-caption" data-setting="caption">{{ data.model.caption }}</textarea>
1364						</span>
1365					
1366					<h2>Display Settings</h2>
1367					<fieldset class="setting-group">
1368						<legend class="legend-inline">Align</legend>
1369						<span class="setting align">
1370							<span class="button-group button-large" data-setting="align">
1371								<button class="button" value="left">
1372									Left								</button>
1373								<button class="button" value="center">
1374									Center								</button>
1375								<button class="button" value="right">
1376									Right								</button>
1377								<button class="button active" value="none">
1378									None								</button>
1379							</span>
1380						</span>
1381					</fieldset>
1382
1383					<# if ( data.attachment ) { #>
1384						<# if ( 'undefined' !== typeof data.attachment.sizes ) { #>
1385							<span class="setting size">
1386								<label for="image-details-size" class="name">Size</label>
1387								<select id="image-details-size" class="size" name="size"
1388									data-setting="size"
1389									<# if ( data.userSettings ) { #>
1390										data-user-setting="imgsize"
1391									<# } #>>
1392																			<#
1393										var size = data.sizes['thumbnail'];
1394										if ( size ) { #>
1395											<option value="thumbnail">
1396												Thumbnail &ndash; {{ size.width }} &times; {{ size.height }}
1397											</option>
1398										<# } #>
1399																			<#
1400										var size = data.sizes['medium'];
1401										if ( size ) { #>
1402											<option value="medium">
1403												Medium &ndash; {{ size.width }} &times; {{ size.height }}
1404											</option>
1405										<# } #>
1406																			<#
1407										var size = data.sizes['large'];
1408										if ( size ) { #>
1409											<option value="large">
1410												Large &ndash; {{ size.width }} &times; {{ size.height }}
1411											</option>
1412										<# } #>
1413																			<#
1414										var size = data.sizes['full'];
1415										if ( size ) { #>
1416											<option value="full">
1417												Full Size &ndash; {{ size.width }} &times; {{ size.height }}
1418											</option>
1419										<# } #>
1420																		<option value="custom">
1421										Custom Size									</option>
1422								</select>
1423							</span>
1424						<# } #>
1425							<div class="custom-size wp-clearfix<# if ( data.model.size !== 'custom' ) { #> hidden<# } #>">
1426								<span class="custom-size-setting">
1427									<label for="image-details-size-width">Width</label>
1428									<input type="number" id="image-details-size-width" aria-describedby="image-size-desc" data-setting="customWidth" step="1" value="{{ data.model.customWidth }}" />
1429								</span>
1430								<span class="sep" aria-hidden="true">&times;</span>
1431								<span class="custom-size-setting">
1432									<label for="image-details-size-height">Height</label>
1433									<input type="number" id="image-details-size-height" aria-describedby="image-size-desc" data-setting="customHeight" step="1" value="{{ data.model.customHeight }}" />
1434								</span>
1435								<p id="image-size-desc" class="description">Image size in pixels</p>
1436							</div>
1437					<# } #>
1438
1439					<span class="setting link-to">
1440						<label for="image-details-link-to" class="name">Link To</label>
1441						<select id="image-details-link-to" data-setting="link">
1442						<# if ( data.attachment ) { #>
1443							<option value="file">
1444								Media File							</option>
1445							<option value="post">
1446								Attachment Page							</option>
1447						<# } else { #>
1448							<option value="file">
1449								Image URL							</option>
1450						<# } #>
1451							<option value="custom">
1452								Custom URL							</option>
1453							<option value="none">
1454								None							</option>
1455						</select>
1456					</span>
1457					<span class="setting">
1458						<label for="image-details-link-to-custom" class="name">URL</label>
1459						<input type="text" id="image-details-link-to-custom" class="link-to-custom" data-setting="linkUrl" />
1460					</span>
1461
1462					<div class="advanced-section">
1463						<h2><button type="button" class="button-link advanced-toggle">Advanced Options</button></h2>
1464						<div class="advanced-settings hidden">
1465							<div class="advanced-image">
1466								<span class="setting title-text">
1467									<label for="image-details-title-attribute" class="name">Image Title Attribute</label>
1468									<input type="text" id="image-details-title-attribute" data-setting="title" value="{{ data.model.title }}" />
1469								</span>
1470								<span class="setting extra-classes">
1471									<label for="image-details-css-class" class="name">Image CSS Class</label>
1472									<input type="text" id="image-details-css-class" data-setting="extraClasse
1472s" value="{{ data.model.extraClasses }}" />
1473								</span>
1474							</div>
1475							<div class="advanced-link">
1476								<span class="setting link-target">
1477									<input type="checkbox" id="image-details-link-target" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>>
1478									<label for="image-details-link-target" class="checkbox-label">Open link in a new tab</label>
1479								</span>
1480								<span class="setting link-rel">
1481									<label for="image-details-link-rel" class="name">Link Rel</label>
1482									<input type="text" id="image-details-link-rel" data-setting="linkRel" value="{{ data.model.linkRel }}" />
1483								</span>
1484								<span class="setting link-class-name">
1485									<label for="image-details-link-css-class" class="name">Link CSS Class</label>
1486									<input type="text" id="image-details-link-css-class" data-setting="linkClassName" value="{{ data.model.linkClassName }}" />
1487								</span>
1488							</div>
1489						</div>
1490					</div>
1491				</div>
1492				<div class="column-image">
1493					<div class="image">
1494						<img src="{{ data.model.url }}" draggable="false" alt="" />
1495						<# if ( data.attachment && window.imageEdit ) { #>
1496							<div class="actions">
1497								<input type="button" class="edit-attachment button" value="Edit Original" />
1498								<input type="button" class="replace-attachment button" value="Replace" />
1499							</div>
1500						<# } #>
1501					</div>
1502				</div>
1503			</div>
1504		</div>
1505	</script>
1505
1506
1507		
1507<script type="text/html" id="tmpl-image-editor">
1508		<div id="media-head-{{ data.id }}"></div>
1509		<div id="image-editor-{{ data.id }}"></div>
1510	</script>
1510
1511
1512		
1512<script type="text/html" id="tmpl-audio-details">
1513		<# var ext, html5types = {
1514			mp3: wp.media.view.settings.embedMimes.mp3,
1515			ogg: wp.media.view.settings.embedMimes.ogg
1516		}; #>
1517
1518				<div class="media-embed media-embed-details">
1519			<div class="embed-media-settings embed-audio-settings">
1520				<audio crossorigin="anonymous" style="visibility: hidden"
1521	controls
1522	class="wp-audio-shortcode"
1523	width="{{ _.isUndefined( data.model.width ) ? 400 : data.model.width }}"
1524	preload="{{ _.isUndefined( data.model.preload ) ? 'none' : data.model.preload }}"
1525	<#
1526		if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) {
1527		#> autoplay<#
1528	}
1529		if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) {
1530		#> loop<#
1531	}
1532	#>
1533>
1534	<# if ( ! _.isEmpty( data.model.src ) ) { #>
1535	<source src="{{ data.model.src }}" type="{{ wp.media.view.settings.embedMimes[ data.model.src.split('.').pop() ] }}" />
1536	<# } #>
1537
1538		<# if ( ! _.isEmpty( data.model.mp3 ) ) { #>
1539	<source src="{{ data.model.mp3 }}" type="{{ wp.media.view.settings.embedMimes[ 'mp3' ] }}" />
1540	<# } #>
1541			<# if ( ! _.isEmpty( data.model.ogg ) ) { #>
1542	<source src="{{ data.model.ogg }}" type="{{ wp.media.view.settings.embedMimes[ 'ogg' ] }}" />
1543	<# } #>
1544			<# if ( ! _.isEmpty( data.model.flac ) ) { #>
1545	<source src="{{ data.model.flac }}" type="{{ wp.media.view.settings.embedMimes[ 'flac' ] }}" />
1546	<# } #>
1547			<# if ( ! _.isEmpty( data.model.m4a ) ) { #>
1548	<source src="{{ data.model.m4a }}" type="{{ wp.media.view.settings.embedMimes[ 'm4a' ] }}" />
1549	<# } #>
1550			<# if ( ! _.isEmpty( data.model.wav ) ) { #>
1551	<source src="{{ data.model.wav }}" type="{{ wp.media.view.settings.embedMimes[ 'wav' ] }}" />
1552	<# } #>
1553		</audio>
1554	
1555				<# if ( ! _.isEmpty( data.model.src ) ) {
1556					ext = data.model.src.split('.').pop();
1557					if ( html5types[ ext ] ) {
1558						delete html5types[ ext ];
1559					}
1560				#>
1561				<span class="setting">
1562					<label for="audio-details-source" class="name">URL</label>
1563					<input type="text" id="audio-details-source" readonly data-setting="src" value="{{ data.model.src }}" />
1564					<button type="button" class="button-link remove-setting">Remove audio source</button>
1565				</span>
1566				<# } #>
1567								<# if ( ! _.isEmpty( data.model.mp3 ) ) {
1568					if ( ! _.isUndefined( html5types.mp3 ) ) {
1569						delete html5types.mp3;
1570					}
1571				#>
1572				<span class="setting">
1573					<label for="audio-details-mp3-source" class="name">MP3</label>
1574					<input type="text" id="audio-details-mp3-source" readonly data-setting="mp3" value="{{ data.model.mp3 }}" />
1575					<button type="button" class="button-link remove-setting">Remove audio source</button>
1576				</span>
1577				<# } #>
1578								<# if ( ! _.isEmpty( data.model.ogg ) ) {
1579					if ( ! _.isUndefined( html5types.ogg ) ) {
1580						delete html5types.ogg;
1581					}
1582				#>
1583				<span class="setting">
1584					<label for="audio-details-ogg-source" class="name">OGG</label>
1585					<input type="text" id="audio-details-ogg-source" readonly data-setting="ogg" value="{{ data.model.ogg }}" />
1586					<button type="button" class="button-link remove-setting">Remove audio source</button>
1587				</span>
1588				<# } #>
1589								<# if ( ! _.isEmpty( data.model.flac ) ) {
1590					if ( ! _.isUndefined( html5types.flac ) ) {
1591						delete html5types.flac;
1592					}
1593				#>
1594				<span class="setting">
1595					<label for="audio-details-flac-source" class="name">FLAC</label>
1596					<input type="text" id="audio-details-flac-source" readonly data-setting="flac" value="{{ data.model.flac }}" />
1597					<button type="button" class="button-link remove-setting">Remove audio source</button>
1598				</span>
1599				<# } #>
1600								<# if ( ! _.isEmpty( data.model.m4a ) ) {
1601					if ( ! _.isUndefined( html5types.m4a ) ) {
1602						delete html5types.m4a;
1603					}
1604				#>
1605				<span class="setting">
1606					<label for="audio-details-m4a-source" class="name">M4A</label>
1607					<input type="text" id="audio-details-m4a-source" readonly data-setting="m4a" value="{{ data.model.m4a }}" />
1608					<button type="button" class="button-link remove-setting">Remove audio source</button>
1609				</span>
1610				<# } #>
1611								<# if ( ! _.isEmpty( data.model.wav ) ) {
1612					if ( ! _.isUndefined( html5types.wav ) ) {
1613						delete html5types.wav;
1614					}
1615				#>
1616				<span class="setting">
1617					<label for="audio-details-wav-source" class="name">WAV</label>
1618					<input type="text" id="audio-details-wav-source" readonly data-setting="wav" value="{{ data.model.wav }}" />
1619					<button type="button" class="button-link remove-setting">Remove audio source</button>
1620				</span>
1621				<# } #>
1622				
1623				<# if ( ! _.isEmpty( html5types ) ) { #>
1624				<fieldset class="setting-group">
1625					<legend class="name">Add alternate sources for maximum HTML5 playback</legend>
1626					<span class="setting">
1627						<span class="button-large">
1628						<# _.each( html5types, function (mime, type) { #>
1629							<button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button>
1630						<# } ) #>
1631						</span>
1632					</span>
1633				</fieldset>
1634				<# } #>
1635
1636				<fieldset class="setting-group">
1637					<legend class="name">Preload</legend>
1638					<span class="setting preload">
1639						<span class="button-group button-large" data-setting="preload">
1640							<button class="button" value="auto">Auto</button>
1641							<button class="button" value="metadata">Metadata</button>
1642							<button class="button active" value="none">None</button>
1643						</span>
1644					</span>
1645				</fieldset>
1646
1647				<span class="setting-group">
1648					<span class="setting checkbox-setting autoplay">
1649						<input type="checkbox" id="audio-details-autoplay" data-setting="autoplay" />
1650						<label for="audio-details-autoplay" class="checkbox-label">Autoplay</label>
1651					</span>
1652
1653					<span class="setting checkbox-setting">
1654						<input type="checkbox" id="audio-details-loop" data-setting="loop" />
1655						<label for="audio-details-loop" class="checkbox-label">Loop</label>
1656					</span>
1657				</span>
1658			</div>
1659		</div>
1660	</script>
1660
1661
1662		
1662<script type="text/html" id="tmpl-video-details">
1663		<# var ext, html5types = {
1664			mp4: wp.media.view.settings.embedMimes.mp4,
1665			ogv: wp.media.view.settings.embedMimes.ogv,
1666			webm: wp.media.view.settings.embedMimes.webm
1667		}; #>
1668
1669				<div class="media-embed media-embed-details">
1670			<div class="embed-media-settings embed-video-settings">
1671				<div class="wp-video-holder">
1672				<#
1673				var w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width,
1674					h = ! data.model.height ? 360 : data.model.height;
1675
1676				if ( data.model.width && w !== data.model.width ) {
1677					h = Math.ceil( ( h * w ) / data.model.width );
1678				}
1679				#>
1680
1681				<#  var w_rule = '', classes = [],
1682		w, h, settings = wp.media.view.settings,
1683		isYouTube = isVimeo = false;
1684
1685	if ( ! _.isEmpty( data.model.src ) ) {
1686		isYouTube = data.model.src.match(/youtube|youtu\.be/);
1687		isVimeo = -1 !== data.model.src.indexOf('vimeo');
1688	}
1689
1690	if ( settings.contentWidth && data.model.width >= settings.contentWidth ) {
1691		w = settings.contentWidth;
1692	} else {
1693		w = data.model.width;
1694	}
1695
1696	if ( w !== data.model.width ) {
1697		h = Math.ceil( ( data.model.height * w ) / data.model.width );
1698	} else {
1699		h = data.model.height;
1700	}
1701
1702	if ( w ) {
1703		w_rule = 'width: ' + w + 'px; ';
1704	}
1705
1706	if ( isYouTube ) {
1707		classes.push( 'youtube-video' );
1708	}
1709
1710	if ( isVimeo ) {
1711		classes.push( 'vimeo-video' );
1712	}
1713
1714#>
1715<div style="{{ w_rule }}" class="wp-video">
1716<video crossorigin="anonymous" controls
1717	class="wp-video-shortcode {{ classes.join( ' ' ) }}"
1718	<# if ( w ) { #>width="{{ w }}"<# } #>
1719	<# if ( h ) { #>height="{{ h }}"<# } #>
1720			<#
1721		if ( ! _.isUndefined( data.model.poster ) && data.model.poster ) {
1722			#> poster="{{ data.model.poster }}"<#
1723		} #>
1724			preload			="{{ _.isUndefined( data.model.preload ) ? 'metadata' : data.model.preload }}"
1725				<#
1726		if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) {
1727		#> autoplay<#
1728	}
1729		if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) {
1730		#> loop<#
1731	}
1732	#>
1733>
1734	<# if ( ! _.isEmpty( data.model.src ) ) {
1735		if ( isYouTube ) { #>
1736		<source src="{{ data.model.src }}" type="video/youtube" />
1737		<# } else if ( isVimeo ) { #>
1738		<source src="{{ data.model.src }}" type="video/vimeo" />
1739		<# } else { #>
1740		<source src="{{ data.model.src }}" type="{{ settings.embedMimes[ data.model.src.split('.').pop() ] }}" />
1741		<# }
1742	} #>
1743
1744		<# if ( data.model.mp4 ) { #>
1745	<source src="{{ data.model.mp4 }}" type="{{ settings.embedMimes[ 'mp4' ] }}" />
1746	<# } #>
1747		<# if ( data.model.m4v ) { #>
1748	<source src="{{ data.model.m4v }}" type="{{ settings.embedMimes[ 'm4v' ] }}" />
1749	<# } #>
1750		<# if ( data.model.webm ) { #>
1751	<source src="{{ data.model.webm }}" type="{{ settings.embedMimes[ 'webm' ] }}" />
1752	<# } #>
1753		<# if ( data.model.ogv ) { #>
1754	<source src="{{ data.model.ogv }}" type="{{ settings.embedMimes[ 'ogv' ] }}" />
1755	<# } #>
1756		<# if ( data.model.flv ) { #>
1757	<source src="{{ data.model.flv }}" type="{{ settings.embedMimes[ 'flv' ] }}" />
1758	<# } #>
1759		{{{ data.model.content }}}
1760</video>
1761</div>
1762	
1763				<# if ( ! _.isEmpty( data.model.src ) ) {
1764					ext = data.model.src.split('.').pop();
1765					if ( html5types[ ext ] ) {
1766						delete html5types[ ext ];
1767					}
1768				#>
1769				<span class="setting">
1770					<label for="video-details-source" class="name">URL</label>
1771					<input type="text" id="video-details-source" readonly data-setting="src" value="{{ data.model.src }}" />
1772					<button type="button" class="button-link remove-setting">Remove video source</button>
1773				</span>
1774				<# } #>
1775								<# if ( ! _.isEmpty( data.model.mp4 ) ) {
1776					if ( ! _.isUndefined( html5types.mp4 ) ) {
1777						delete html5types.mp4;
1778					}
1779				#>
1780				<span class="setting">
1781					<label for="video-details-mp4-source" class="name">MP4</label>
1782					<input type="text" id="video-details-mp4-source" readonly data-setting="mp4" value="{{ data.model.mp4 }}" />
1783					<button type="button" class="button-link remove-setting">Remove video source</button>
1784				</span>
1785				<# } #>
1786								<# if ( ! _.isEmpty( data.model.m4v ) ) {
1787					if ( ! _.isUndefined( html5types.m4v ) ) {
1788						delete html5types.m4v;
1789					}
1790				#>
1791				<span class="setting">
1792					<label for="video-details-m4v-source" class="name">M4V</label>
1793					<input type="text" id="video-details-m4v-source" readonly data-setting="m4v" value="{{ data.model.m4v }}" />
1794					<button type="button" class="button-link remove-setting">Remove video source</button>
1795				</span>
1796				<# } #>
1797								<# if ( ! _.isEmpty( data.model.webm ) ) {
1798					if ( ! _.isUndefined( html5types.webm ) ) {
1799						delete html5types.webm;
1800					}
1801				#>
1802				<span class="setting">
1803					<label for="video-details-webm-source" class="name">WEBM</label>
1804					<input type="text" id="video-details-webm-source" readonly data-setting="webm" value="{{ data.model.webm }}" />
1805					<button type="button" class="button-link remove-setting">Remove video source</button>
1806				</span>
1807				<# } #>
1808								<# if ( ! _.isEmpty( data.model.ogv ) ) {
1809					if ( ! _.isUndefined( html5types.ogv ) ) {
1810						delete html5types.ogv;
1811					}
1812				#>
1813				<span class="setting">
1814					<label for="video-details-ogv-source" class="name">OGV</label>
1815					<input type="text" id="video-details-ogv-source" readonly data-setting="ogv" value="{{ data.model.ogv }}" />
1816					<button type="button" class="button-link remove-setting">Remove video source</button>
1817				</span>
1818				<# } #>
1819								<# if ( ! _.isEmpty( data.model.flv ) ) {
1820					if ( ! _.isUndefined( html5types.flv ) ) {
1821						delete html5types.flv;
1822					}
1823				#>
1824				<span class="setting">
1825					<label for="video-details-flv-source" class="name">FLV</label>
1826					<input type="text" id="video-details-flv-source" readonly data-setting="flv" value="{{ data.model.flv }}" />
1827					<button type="button" class="button-link remove-setting">Remove video source</button>
1828				</span>
1829				<# } #>
1830								</div>
1831
1832				<# if ( ! _.isEmpty( html5types ) ) { #>
1833				<fieldset class="setting-group">
1834					<legend class="name">Add alternate sources for maximum HTML5 playback</legend>
1835					<span class="setting">
1836						<span class="button-large">
1837						<# _.each( html5types, function (mime, type) { #>
1838							<button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button>
1839						<# } ) #>
1840						</span>
1841					</span>
1842				</fieldset>
1843				<# } #>
1844
1845				<# if ( ! _.isEmpty( data.model.poster ) ) { #>
1846				<span class="setting">
1847					<label for="video-details-poster-image" class="name">Poster Image</label>
1848					<input type="text" id="video-details-poster-image" readonly data-setting="poster" value="{{ data.model.poster }}" />
1849					<button type="button" class="button-link remove-setting">Remove poster image</button>
1850				</span>
1851				<# } #>
1852
1853				<fieldset class="setting-group">
1854					<legend class="name">Preload</legend>
1855					<span class="setting preload">
1856						<span class="button-group button-large" data-setting="preload">
1857							<button class="button" value="auto">Auto</button>
1858							<button class="button" value="metadata">Metadata</button>
1859							<button class="button active" value="none">None</button>
1860						</span>
1861					</span>
1862				</fieldset>
1863
1864				<span class="setting-group">
1865					<span class="setting checkbox-setting autoplay">
1866						<input type="checkbox" id="video-details-autoplay" data-setting="autoplay" />
1867						<label for="video-details-autoplay" class="checkbox-label">Autoplay</label>
1868					</span>
1869
1870					<span class="setting checkbox-setting">
1871						<input type="checkbox" id="video-details-loop" data-setting="loop" />
1872						<label for="video-details-loop" class="checkbox-label">Loop</label>
1873					</span>
1874				</span>
1875
1876				<span class="setting" data-setting="content">
1877					<#
1878					var content = '';
1879					if ( ! _.isEmpty( data.model.content ) ) {
1880						var tracks = jQuery( data.model.content ).filter( 'track' );
1881						_.each( tracks.toArray(), function( track, index ) {
1882							content += track.outerHTML; #>
1883						<label for="video-details-track-{{ index }}" class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</label>
1884						<input class="content-track" type="text" id="video-details-track-{{ index }}" aria-describedby="video-details-track-desc-{{ index }}" value="{{ track.outerHTML }}" />
1885						<span class="description" id="video-details-track-desc-{{ index }}">
1886						The srclang, label, and kind values can be edited to set the video track language and kind.						</span>
1887						<button type="button" class="button-link remove-setting remove-track">Remove video track</button><br />
1888						<# } ); #>
1889					<# } else { #>
1890					<span class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</span><br />
1891					<em>There are no associated subtitles.</em>
1892					<# } #>
1893					<textarea class="hidden content-setting">{{ content }}</textarea>
1894				</span>
1895			</div>
1896		</div>
1897	</script>
1897
1898
1899		
1899<script type="text/html" id="tmpl-editor-gallery">
1900		<# if ( data.attachments.length ) { #>
1901			<div class="gallery gallery-columns-{{ data.columns }}">
1902				<# _.each( data.attachments, function( attachment, index ) { #>
1903					<dl class="gallery-item">
1904						<dt class="gallery-icon">
1905							<# if ( attachment.thumbnail ) { #>
1906								<img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" alt="{{ attachment.alt }}" />
1907							<# } else { #>
1908								<img src="{{ attachment.url }}" alt="{{ attachment.alt }}" />
1909							<# } #>
1910						</dt>
1911						<# if ( attachment.caption ) { #>
1912							<dd class="wp-caption-text gallery-caption">
1913								{{{ data.verifyHTML( attachment.caption ) }}}
1914							</dd>
1915						<# } #>
1916					</dl>
1917					<# if ( index % data.columns === data.columns - 1 ) { #>
1918						<br style="clear: both;" />
1919					<# } #>
1920				<# } ); #>
1921			</div>
1922		<# } else { #>
1923			<div class="wpview-error">
1924				<div class="dashicons dashicons-format-gallery"></div><p>No items found.</p>
1925			</div>
1926		<# } #>
1927	</script>
1927
1928
1929		
1929<script type="text/html" id="tmpl-crop-content">
1930		<img class="crop-image" src="{{ data.url }}" alt="Image crop area preview. Requires mouse interaction." />
1931		<div class="upload-errors"></div>
1932	</script>
1932
1933
1934		
1934<script type="text/html" id="tmpl-site-icon-preview-crop">
1935		<style>
1936			:root{
1937				--site-icon-url: url( "{{ data.url }}" );
1938			}
1939		</style>
1940		<h2>Site Icon Preview</h2>
1941		<p>As an app icon and a browser icon.</p>
1942		<div class="site-icon-preview crop">
1943			<div class="image-preview-wrap app-icon-preview">
1944				<img id="preview-app-icon" src="{{ data.url }}" class="app-icon-preview" alt="Preview as an app icon" />
1945			</div>
1946			<div class="site-icon-preview-browser">
1947				<svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="browser-buttons"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 20a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm18 0a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm24-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12Z" /></svg>
1948				<div class="site-icon-preview-tab">
1949					<div class="image-preview-wrap browser">
1950						<img id="preview-favicon" src="{{ data.url }}" class="browser-icon-preview" alt="Preview as a browser icon" />
1951					</div>
1952					<div class="site-icon-preview-site-title" aria-hidden="true"><# print( 'OpenFabrics Alliance' ) #></div>
1953						<svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="close-button">
1954							<path d="M12 13.0607L15.7123 16.773L16.773 15.7123L13.0607 12L16.773 8.28772L15.7123 7.22706L12 10.9394L8.28771 7.22705L7.22705 8.28771L10.9394 12L7.22706 15.7123L8.28772 16.773L12 13.0607Z" />
1955						</svg>
1956					</div>
1957				</div>
1958			</div>
1959		</div>
1960	</script>
1960
1961
1962	
1962<script id="dlm-xhr-js-extra">
1963var dlmXHRtranslations = {"error":"An error occurred while trying to download the file. Please try again.","not_found":"Download does not exist.","no_file_path":"No file path defined.","no_file_paths":"No file paths defined.","filetype":"Download is not allowed for this file type.","file_access_denied":"Access denied to this file.","access_denied":"Access denied. You do not have permission to download this file.","security_error":"Something is wrong with the file path.","file_not_found":"File not found."};
1964//# sourceURL=dlm-xhr-js-extra
1965</script>
vendor: 1 bytes, line 1965
1965
1966<script id="dlm-xhr-js-before">
1967const dlmXHR = {"xhr_links":{"class":["download-link","download-button"]},"prevent_duplicates":true,"ajaxUrl":"https:\/\/www.openfabrics.org\/wp-admin\/admin-ajax.php","countExcluded":false}; dlmXHRinstance = {}; const dlmXHRGlobalLinks = "https://www.openfabrics.org/training-content/"; const dlmNonXHRGlobalLinks = []; dlmXHRgif = "https://www.openfabrics.org/wp-content/plugins/download-monitor/assets/images/dlm-spinner.svg"; const dlmXHRProgress = "1"; const dlmXHRInlineSpinner = true
1968//# sourceURL=dlm-xhr-js-before
1969</script>
vendor: 1 bytes, line 1969
1969
1970<script id="dlm-xhr-js" src="https://www.openfabrics.org/wp-content/plugins/download-monitor/assets/js/dlm-xhr.min.js?ver=5.3.1"></script>
vendor: 1 bytes, line 1970
1970
1971<script id="kallyas_vendors-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/js/plugins.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1971
1971
1972<script id="scrollmagic-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/addons/scrollmagic/scrollmagic.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1972
1972
1973<script id="zn-script-js-extra">
1974var zn_do_login = {"ajaxurl":"/wp-admin/admin-ajax.php","add_to_cart_text":"Item Added to cart!"};
1975var ZnThemeAjax = {"ajaxurl":"/wp-admin/admin-ajax.php","zn_back_text":"Back","zn_color_theme":"light","res_menu_trigger":"1160","top_offset_tolerance":"","logout_url":"https://www.openfabrics.org/fzpl/?action=logout&redirect_to=https%3A%2F%2Fwww.openfabrics.org&_wpnonce=061a15b1e2"};
1976var ZnSmoothScroll = {"type":"yes","touchpadSupport":"yes"};
1977//# sourceURL=zn-script-js-extra
1978</script>
vendor: 1 bytes, line 1978
1978
1979<script id="zn-script-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/js/znscript.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1979
1979
1980<script id="smooth_scroll-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/addons/smooth_scroll/SmoothScroll.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1980
1980
1981<script id="zn_animated_text_typed-js" src="https://www.openfabrics.org/wp-content/plugins/animated-text-element//assets/js/typed.min.js?ver=1.0.0"></script>
vendor: 1 bytes, line 1981
1981
1982<script id="zn_animated_text_script-js" src="https://www.openfabrics.org/wp-content/plugins/animated-text-element//assets/js/script.js?ver=1.0.0"></script>
vendor: 1 bytes, line 1982
1982
1983<script id="slick-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/addons/slick/slick.min.js?ver=4.26.0"></script>
vendor: 1 bytes, line 1983
1983
1984<script id="zion-frontend-js-js-extra">
1985var ZionBuilderFrontend = {"allow_video_on_mobile":""};
1986//# sourceURL=zion-frontend-js-js-extra
1987</script>
vendor: 1 bytes, line 1987
1987
1988<script id="zion-frontend-js-js" src="https://www.openfabrics.org/wp-content/themes/kallyas/framework/zion-builder/dist/znpb_frontend.js?ver=1.4.0"></script>
vendor: 1 bytes, line 1988
1988
1989<script id="wp-statistics-tracker-js-extra">
1990var WP_Statistics_Tracker_Object = {"requestUrl":"https://www.openfabrics.org/wp-json/wp-statistics/v2","ajaxUrl":"https://www.openfabrics.org/wp-admin/admin-ajax.php","hitParams":{"wp_statistics_hit":1,"source_type":"page","source_id":5002,"search_query":"","signature":"d09647f1cf9f89d853190a42026bf780","endpoint":"hit"},"option":{"dntEnabled":false,"bypassAdBlockers":false,"consentIntegration":{"name":null,"status":[]},"isPreview":false,"userOnline":false,"isWpConsentApiActive":false},"isLegacyEventLoaded":"","customEventAjaxUrl":"https://www.openfabrics.org/wp-admin/admin-ajax.php?action=wp_statistics_custom_event&nonce=6750649f83","onlineParams":{"wp_statistics_hit":1,"source_type":"page","source_id":5002,"search_query":"","signature":"d09647f1cf9f89d853190a42026bf780","action":"wp_statistics_online_check"},"jsCheckTime":"60000"};
1991//# sourceURL=wp-statistics-tracker-js-extra
1992</script>
vendor: 1 bytes, line 1992
1992
1993<script id="wp-statistics-tracker-js" src="https://www.openfabrics.org/wp-content/plugins/wp-statistics/assets/js/tracker.js?ver=14.16.14"></script>
vendor: 1 bytes, line 1993
1993
1994<script id="underscore-js" src="https://www.openfabrics.org/wp-includes/js/underscore.min.js?ver=1.13.8"></script>
vendor: 1 bytes, line 1994
1994
1995<script id="shortcode-js" src="https://www.openfabrics.org/wp-includes/js/shortcode.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 1995
1995
1996<script id="backbone-js" src="https://www.openfabrics.org/wp-includes/js/backbone.min.js?ver=1.6.1"></script>
vendor: 1 bytes, line 1996
1996
1997<script id="wp-util-js-extra">
1998var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}};
1999//# sourceURL=wp-util-js-extra
2000</script>
vendor: 1 bytes, line 2000
2000
2001<script id="wp-util-js" src="https://www.openfabrics.org/wp-includes/js/wp-util.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2001
2001
2002<script id="wp-backbone-js" src="https://www.openfabrics.org/wp-includes/js/wp-backbone.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2002
2002
2003<script id="media-models-js-extra">
2004var _wpMediaModelsL10n = {"settings":{"ajaxurl":"/wp-admin/admin-ajax.php","post":{"id":0}}};
2005//# sourceURL=media-models-js-extra
2006</script>
vendor: 1 bytes, line 2006
2006
2007<script id="media-models-js" src="https://www.openfabrics.org/wp-includes/js/media-models.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2007
2007
2008<script id="wp-plupload-js-extra">
2009var pluploadL10n = {"queue_limit_exceeded":"You have attempted to queue too many files.","file_exceeds_size_limit":"%s exceeds the maximum upload size for this site.","zero_byte_file":"This file is empty. Please try another.","invalid_filetype":"This file cannot be processed by the web server.","not_an_image":"This file is not an image. Please try another.","image_memory_exceeded":"Memory exceeded. Please try another smaller file.","image_dimensions_exceeded":"This is larger than the maximum size. Please try another.","default_error":"An error occurred in the upload. Please try again later.","missing_upload_url":"There was a configuration error. Please contact the server administrator.","upload_limit_exceeded":"You may only upload 1 file.","http_error":"Unexpected response from the server. The file may have been uploaded successfully. Check in the Media Library or reload the page.","http_error_image":"The server cannot process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.","upload_failed":"Upload failed.","big_upload_failed":"Please try uploading this file with the %1$sbrowser uploader%2$s.","big_upload_queued":"%s exceeds the maximum upload size for the multi-file uploader when used in your browser.","io_error":"IO error.","security_error":"Security error.","file_cancelled":"File canceled.","upload_stopped":"Upload stopped.","dismiss":"Dismiss","crunching":"Crunching\u2026","deleted":"moved to the Trash.","error_uploading":"\u201c%s\u201d has failed to upload.","unsupported_image":"The server cannot process HEIC images. Convert it to JPEG before uploading.","noneditable_image":"The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.","file_url_copied":"The file URL has been copied to your clipboard"};
2010var _wpPluploadSettings = {"defaults":{"file_data_name":"async-upload","url":"/wp-admin/async-upload.php","filters":{"max_file_size":"8388608b","mime_types":[{"extensions":"jpg,jpeg,jpe,gif,png,bmp,tiff,tif,webp,avif,ico,heic,heif,heics,heifs,asf,asx,wmv,wmx,wm,avi,divx,flv,mov,qt,mpeg,mpg,mpe,mp4,m4v,ogv,webm,mkv,3gp,3gpp,3g2,3gp2,txt,asc,c,cc,h,srt,csv,tsv,ics,rtx,css,vtt,dfxp,mp3,m4a,m4b,aac,ra,ram,wav,x-wav,ogg,oga,flac,mid,midi,wma,wax,mka,rtf,pdf,class,tar,zip,gz,gzip,rar,7z,psd,xcf,doc,pot,pps,ppt,wri,xla,xls,xlt,xlw,mdb,mpp,docx,docm,dotx,dotm,xlsx,xlsm,xlsb,xltx,xltm,xlam,pptx,pptm,ppsx,ppsm,potx,potm,ppam,sldx,sldm,onetoc,onetoc2,onetmp,onepkg,oxps,xps,odt,odp,ods,odg,odc,odb,odf,wp,wpd,key,numbers,pages,svg,ttf,woff,eot,woff2"}]},"avif_upload_error":true,"heic_upload_error":true,"multipart_params":{"action":"upload-attachment","_wpnonce":"39304ab441"}},"browser":{"mobile":false,"supported":true},"limitExceeded":false};
2011//# sourceURL=wp-plupload-js-extra
2012</script>
vendor: 1 bytes, line 2012
2012
2013<script id="wp-plupload-js" src="https://www.openfabrics.org/wp-includes/js/plupload/wp-plupload.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2013
2013
2014<script id="jquery-ui-core-js-before">
2015jQuery.uiBackCompat = true;
2016//# sourceURL=jquery-ui-core-js-before
2017</script>
vendor: 1 bytes, line 2017
2017
2018<script id="jquery-ui-core-js" src="https://www.openfabrics.org/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2018
2018
2019<script id="jquery-ui-mouse-js" src="https://www.openfabrics.org/wp-includes/js/jquery/ui/mouse.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2019
2019
2020<script id="jquery-ui-sortable-js" src="https://www.openfabrics.org/wp-includes/js/jquery/ui/sortable.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2020
2020
2021<script id="mediaelement-core-js-before">
2022var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}};
2023//# sourceURL=mediaelement-core-js-before
2024</script>
vendor: 1 bytes, line 2024
2024
2025<script id="mediaelement-core-js" src="https://www.openfabrics.org/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.17"></script>
vendor: 1 bytes, line 2025
2025
2026<script id="mediaelement-migrate-js" src="https://www.openfabrics.org/wp-includes/js/mediaelement/mediaelement-migrate.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2026
2026
2027<script id="mediaelement-js-extra">
2028var _wpmejsSettings = {"pluginPath":"/wp-includes/js/mediaelement/","classPrefix":"mejs-","stretching":"responsive","audioShortcodeLibrary":"mediaelement","videoShortcodeLibrary":"mediaelement"};
2029//# sourceURL=mediaelement-js-extra
2030</script>
vendor: 1 bytes, line 2030
2030
2031<script id="wp-mediaelement-js" src="https://www.openfabrics.org/wp-includes/js/mediaelement/wp-mediaelement.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2031
2031
2032<script id="wp-api-request-js-extra">
2033var wpApiSettings = {"root":"https://www.openfabrics.org/wp-json/","nonce":"4cbfc7c609","versionString":"wp/v2/"};
2034//# sourceURL=wp-api-request-js-extra
2035</script>
vendor: 1 bytes, line 2035
2035
2036<script id="wp-api-request-js" src="https://www.openfabrics.org/wp-includes/js/api-request.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2036
2036
2037<script id="wp-dom-ready-js" src="https://www.openfabrics.org/wp-includes/js/dist/dom-ready.min.js?ver=3fe927cab37bf38d6a23"></script>
vendor: 1 bytes, line 2037
2037
2038<script id="wp-hooks-js" src="https://www.openfabrics.org/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 2038
2038
2039<script id="wp-i18n-js" src="https://www.openfabrics.org/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 2039
2039
2040<script id="wp-i18n-js-after">
2041wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
2042//# sourceURL=wp-i18n-js-after
2043</script>
vendor: 1 bytes, line 2043
2043
2044<script id="wp-a11y-js" src="https://www.openfabrics.org/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 2044
2044
2045<script id="clipboard-js" src="https://www.openfabrics.org/wp-includes/js/clipboard.min.js?ver=2.0.11"></script>
vendor: 1 bytes, line 2045
2045
2046<script id="media-views-js-extra">
2047var _wpMediaViewsL10n = {"mediaFrameDefaultTitle":"Media","url":"URL","addMedia":"Add media","search":"Search","select":"Select","cancel":"Cancel","update":"Update","replace":"Replace","remove":"Remove","back":"Back","selected":"%d selected","dragInfo":"Drag and drop to reorder media files.","uploadFilesTitle":"Upload files","uploadImagesTitle":"Upload images","mediaLibraryTitle":"Media Library","insertMediaTitle":"Add media","createNewGallery":"Create a new gallery","createNewPlaylist":"Create a new playlist","createNewVideoPlaylist":"Create a new video playlist","returnToLibrary":"\u2190 Go to library","allMediaItems":"All media items","allDates":"All dates","noItemsFound":"No items found.","insertIntoPost":"Insert into post","unattached":"Unattached","mine":"Mine","trash":"Trash","uploadedToThisPost":"Uploaded to this post","warnDelete":"You are about to permanently delete this item from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkDelete":"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkTrash":"You are about to trash these items.\n  'Cancel' to stop, 'OK' to delete.","bulkSelect":"Bulk select","trashSelected":"Move to Trash","restoreSelected":"Restore from Trash","deletePermanently":"Delete permanently","errorDeleting":"Error in deleting the attachment.","apply":"Apply","filterByDate":"Filter by date","filterByType":"Filter by type","searchLabel":"Search media","searchMediaLabel":"Search media","searchMediaPlaceholder":"Search media items...","mediaFound":"Number of media items found: %d","noMedia":"No media items found.","noMediaTryNewSearch":"No media items found. Try a different search.","mediaItemViewed":"Viewing media item: %s","attachmentDetails":"Attachment details","insertFromUrlTitle":"Insert from URL","setFeaturedImageTitle":"Featured image","setFeaturedImage":"Set featured image","createGalleryTitle":"Create gallery","editGalleryTitle":"Edit gallery","cancelGalleryTitle":"\u2190 Cancel gallery","insertGallery":"Insert gallery","updateGallery":"Update gallery","addToGallery":"Add to gallery","addToGalleryTitle":"Add to gallery","reverseOrder":"Reverse order","imageDetailsTitle":"Image details","imageReplaceTitle":"Replace image","imageDetailsCancel":"Cancel edit","editImage":"Edit image","chooseImage":"Choose image","selectAndCrop":"Select and crop","skipCropping":"Skip cropping","cropImage":"Crop image","cropYourImage":"Crop your image","cropping":"Cropping\u2026","suggestedDimensions":"Suggested image dimensions: %1$s by %2$s pixels.","cropError":"There has been an error cropping your image.","audioDetailsTitle":"Audio details","audioReplaceTitle":"Replace audio","audioAddSourceTitle":"Add audio source","audioDetailsCancel":"Cancel edit","videoDetailsTitle":"Video details","videoReplaceTitle":"Replace video","videoAddSourceTitle":"Add video source","videoDetailsCancel":"Cancel edit","videoSelectPosterImageTitle":"Select poster image","videoAddTrackTitle":"Add subtitles","playlistDragInfo":"Drag and drop to reorder tracks.","createPlaylistTitle":"Create audio playlist","editPlaylistTitle":"Edit audio playlist","cancelPlaylistTitle":"\u2190 Cancel audio playlist","insertPlaylist":"Insert audio playlist","updatePlaylist":"Update audio playlist","addToPlaylist":"Add to audio playlist","addToPlaylistTitle":"Add to Audio Playlist","videoPlaylistDragInfo":"Drag and drop to reorder videos.","createVideoPlaylistTitle":"Create video playlist","editVideoPlaylistTitle":"Edit video playlist","cancelVideoPlaylistTitle":"\u2190 Cancel video playlist","insertVideoPlaylist":"Insert video playlist","updateVideoPlaylist":"Update video playlist","addToVideoPlaylist":"Add to video playlist","addToVideoPlaylistTitle":"Add to video Playlist","filterAttachments":"Filter media","attachmentsList":"Media list","settings":{"tabs":[],"tabUrl":"https://www.openfabrics.org/wp-admin/media-upload.php?chromeless=1","mimeTypes":{"image":"Images","audio":"Audio","video":"Video","application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,application/vnd.ms-word.template.macroEnabled.12,application/vnd.oasis.opendocument.text,application/vnd.apple.pages,application/pdf,application/vnd.ms-xpsdocument,application/oxps,application/rtf,application/wordperfect,application/octet-stream":"Documents","application/vnd.apple.numbers,application/vnd.oasis.opendocument.spreadsheet,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/vnd.ms-excel.sheet.binary.macroEnabled.12":"Spreadsheets","application/x-gzip,application/rar,a
2047pplication/x-tar,application/zip,application/x-7z-compressed":"Archives"},"captions":true,"nonce":{"sendToEditor":"c4d20bd21d","setAttachmentThumbnail":"a098482017"},"post":{"id":0},"defaultProps":{"link":"","align":"","size":""},"attachmentCounts":{"audio":1,"video":1},"oEmbedProxyUrl":"https://www.openfabrics.org/wp-json/oembed/1.0/proxy","embedExts":["mp3","ogg","flac","m4a","wav","mp4","m4v","webm","ogv","flv"],"embedMimes":{"mp3":"audio/mpeg","ogg":"audio/ogg","flac":"audio/flac","m4a":"audio/mpeg","wav":"audio/wav","mp4":"video/mp4","m4v":"video/mp4","webm":"video/webm","ogv":"video/ogg","flv":"video/x-flv"},"contentWidth":"1170","months":[{"year":"2026","month":"8","text":"August 2026"},{"year":"2026","month":"4","text":"April 2026"},{"year":"2026","month":"2","text":"February 2026"},{"year":"2025","month":"11","text":"November 2025"},{"year":"2025","month":"10","text":"October 2025"},{"year":"2025","month":"8","text":"August 2025"},{"year":"2025","month":"7","text":"July 2025"},{"year":"2025","month":"5","text":"May 2025"},{"year":"2025","month":"3","text":"March 2025"},{"year":"2024","month":"4","text":"April 2024"},{"year":"2023","month":"9","text":"September 2023"},{"year":"2023","month":"8","text":"August 2023"},{"year":"2023","month":"4","text":"April 2023"},{"year":"2023","month":"3","text":"March 2023"},{"year":"2023","month":"1","text":"January 2023"},{"year":"2022","month":"12","text":"December 2022"},{"year":"2022","month":"11","text":"November 2022"},{"year":"2022","month":"6","text":"June 2022"},{"year":"2022","month":"4","text":"April 2022"},{"year":"2022","month":"3","text":"March 2022"},{"year":"2022","month":"2","text":"February 2022"},{"year":"2022","month":"1","text":"January 2022"},{"year":"2021","month":"11","text":"November 2021"},{"year":"2021","month":"10","text":"October 2021"},{"year":"2021","month":"8","text":"August 2021"},{"year":"2021","month":"7","text":"July 2021"},{"year":"2021","month":"4","text":"April 2021"},{"year":"2021","month":"3","text":"March 2021"},{"year":"2021","month":"2","text":"February 2021"},{"year":"2021","month":"1","text":"January 2021"},{"year":"2020","month":"12","text":"December 2020"},{"year":"2020","month":"11","text":"November 2020"},{"year":"2020","month":"10","text":"October 2020"},{"year":"2020","month":"8","text":"August 2020"},{"year":"2020","month":"7","text":"July 2020"},{"year":"2020","month":"6","text":"June 2020"},{"year":"2020","month":"5","text":"May 2020"},{"year":"2020","month":"4","text":"April 2020"},{"year":"2020","month":"2","text":"February 2020"},{"year":"2020","month":"1","text":"January 2020"},{"year":"2019","month":"11","text":"November 2019"},{"year":"2019","month":"9","text":"September 2019"},{"year":"2019","month":"6","text":"June 2019"},{"year":"2019","month":"4","text":"April 2019"},{"year":"2019","month":"3","text":"March 2019"},{"year":"2019","month":"2","text":"February 2019"},{"year":"2019","month":"1","text":"January 2019"},{"year":"2018","month":"12","text":"December 2018"},{"year":"2018","month":"11","text":"November 2018"},{"year":"2018","month":"9","text":"September 2018"},{"year":"2018","month":"8","text":"August 2018"},{"year":"2018","month":"7","text":"July 2018"},{"year":"2018","month":"6","text":"June 2018"}],"mediaTrash":0,"infiniteScrolling":1}};
2048//# sourceURL=media-views-js-extra
2049</script>
vendor: 1 bytes, line 2049
2049
2050<script id="media-views-js" src="https://www.openfabrics.org/wp-includes/js/media-views.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2050
2050
2051<script id="media-editor-js" src="https://www.openfabrics.org/wp-includes/js/media-editor.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2051
2051
2052<script id="media-audiovideo-js" src="https://www.openfabrics.org/wp-includes/js/media-audiovideo.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2052
2052
2053<script id="wp-emoji-settings" type="application/json">
2054{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.openfabrics.org/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
2055</script>
vendor: 1 bytes, line 2055
2055
2056<script type="module">
2057/*! This file is auto-generated */
2058var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
2059//# sourceURL=https://www.openfabrics.org/wp-includes/js/wp-emoji-loader.min.js
2060</script>
2060
2061<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2062 <defs>
2063
2064  <symbol id="icon-znb_close-thin" viewBox="0 0 100 100">
2065   <path d="m87.801 12.801c-1-1-2.6016-1-3.5 0l-33.801 33.699-34.699-34.801c-1-1-2.6016-1-3.5 0-1 1-1 2.6016 0 3.5l34.699 34.801-34.801 34.801c-1 1-1 2.6016 0 3.5 0.5 0.5 1.1016 0.69922 1.8008 0.69922s1.3008-0.19922 1.8008-0.69922l34.801-34.801 33.699 33.699c0.5 0.5 1.1016 0.69922 1.8008 0.69922 0.69922 0 1.3008-0.19922 1.8008-0.69922 1-1 1-2.6016 0-3.5l-33.801-33.699 33.699-33.699c0.89844-1 0.89844-2.6016 0-3.5z"/>
2066  </symbol>
2067
2068
2069  <symbol id="icon-znb_play" viewBox="0 0 22 28">
2070   <path d="M21.625 14.484l-20.75 11.531c-0.484 0.266-0.875 0.031-0.875-0.516v-23c0-0.547 0.391-0.781 0.875-0.516l20.75 11.531c0.484 0.266 0.484 0.703 0 0.969z"></path>
2071  </symbol>
2072
2073 </defs>
2074</svg>
2075</body>
2076</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.