PageRenderTime 200ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 2ms

/utils/MathJax/2.1/config/KAthJax-da9a7f53e588f3837b045a600e1dc439.js

https://github.com/lhannon/khan-exercises
JavaScript | 7668 lines | 7668 code | 0 blank | 0 comment | 1806 complexity | da9a7f53e588f3837b045a600e1dc439 MD5 | raw file
  1. MathJax.Hub.Config({
  2. messageStyle: "none",
  3. skipStartupTypeset: !0,
  4. jax: [ "input/TeX", "output/HTML-CSS" ],
  5. extensions: [ "tex2jax.js", "MathZoom.js" ],
  6. TeX: {
  7. extensions: [ "AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js", "newcommand.js", "boldsymbol.js" ],
  8. Macros: {
  9. RR: "\\mathbb{R}",
  10. blue: "\\color{#6495ED}",
  11. orange: "\\color{#FFA500}",
  12. pink: "\\color{#FF00AF}",
  13. red: "\\color{#DF0030}",
  14. green: "\\color{#28AE7B}",
  15. gray: "\\color{gray}",
  16. purple: "\\color{#9D38BD}"
  17. },
  18. Augment: {
  19. Definitions: {
  20. macros: {
  21. lrsplit: "LRSplit",
  22. cancel: "Cancel",
  23. lcm: [ "NamedOp", 0 ]
  24. }
  25. },
  26. Parse: {
  27. prototype: {
  28. LRSplit: function(e) {
  29. var t = this.GetArgument(e), n = this.GetArgument(e), r = MathJax.ElementJax.mml.mfrac(MathJax.InputJax.TeX.Parse("\\strut\\textstyle{" + t + "\\qquad}", this.stack.env).mml(), MathJax.InputJax.TeX.Parse("\\strut\\textstyle{\\qquad " + n + "}", this.stack.env).mml());
  30. r.numalign = MathJax.ElementJax.mml.ALIGN.LEFT, r.denomalign = MathJax.ElementJax.mml.ALIGN.RIGHT, r.linethickness = "0em", this.Push(r);
  31. },
  32. Cancel: function(e) {
  33. this.Push(MathJax.ElementJax.mml.menclose(this.ParseArg(e)).With({
  34. notation: MathJax.ElementJax.mml.NOTATION.UPDIAGONALSTRIKE
  35. }));
  36. }
  37. }
  38. }
  39. }
  40. },
  41. "HTML-CSS": {
  42. scale: 100,
  43. showMathMenu: !1,
  44. availableFonts: [ "TeX" ],
  45. imageFont: null
  46. }
  47. }), MathJax.Ajax.timeout = 6e4, MathJax.Ajax.loadError = function(e) {
  48. return function(t) {
  49. Khan.warnTimeout(), MathJax.Ajax.loadComplete = function(e) {}, e.call(this, t);
  50. };
  51. }(MathJax.Ajax.loadError), MathJax.Hub.Register.StartupHook("HTML-CSS Jax - disable web fonts", function() {
  52. Khan.warnFont();
  53. }), MathJax.Message.Init = function(e) {
  54. return function(t) {
  55. if (this.div && this.div.parentNode == null) {
  56. var n = document.getElementById("MathJax_Message");
  57. if (n && n.firstChild == null) {
  58. var r = n.parentNode;
  59. r && r.removeChild(n);
  60. }
  61. }
  62. e.call(this, t);
  63. };
  64. }(MathJax.Message.Init), MathJax.Hub.Startup.onload(), MathJax.Ajax.Preloading("[MathJax]/extensions/MathEvents.js", "[MathJax]/extensions/MathMenu.js", "[MathJax]/extensions/MathZoom.js", "[MathJax]/extensions/TeX/AMSmath.js", "[MathJax]/extensions/TeX/AMSsymbols.js", "[MathJax]/extensions/TeX/noErrors.js", "[MathJax]/extensions/TeX/noUndefined.js", "[MathJax]/extensions/TeX/newcommand.js", "[MathJax]/extensions/TeX/boldsymbol.js", "[MathJax]/extensions/tex2jax.js", "[MathJax]/jax/element/mml/jax.js", "[MathJax]/jax/input/TeX/config.js", "[MathJax]/jax/input/TeX/jax.js", "[MathJax]/jax/output/HTML-CSS/config.js", "[MathJax]/jax/output/HTML-CSS/jax.js"), MathJax.Hub.Config({
  65. "v1.0-compatible": !1
  66. }), function(e, t, n, r, i, s) {
  67. var o = "2.1", u = MathJax.Extension, a = u.MathEvents = {
  68. version: o
  69. }, f = e.config.menuSettings, l = {
  70. hover: 500,
  71. frame: {
  72. x: 3.5,
  73. y: 5,
  74. bwidth: 1,
  75. bcolor: "#A6D",
  76. hwidth: "15px",
  77. hcolor: "#83A"
  78. },
  79. button: {
  80. x: -4,
  81. y: -3,
  82. wx: -2,
  83. src: n.fileURL(i.imageDir + "/MenuArrow-15.png")
  84. },
  85. fadeinInc: .2,
  86. fadeoutInc: .05,
  87. fadeDelay: 50,
  88. fadeoutStart: 400,
  89. fadeoutDelay: 15e3,
  90. styles: {
  91. ".MathJax_Hover_Frame": {
  92. "border-radius": ".25em",
  93. "-webkit-border-radius": ".25em",
  94. "-moz-border-radius": ".25em",
  95. "-khtml-border-radius": ".25em",
  96. "box-shadow": "0px 0px 15px #83A",
  97. "-webkit-box-shadow": "0px 0px 15px #83A",
  98. "-moz-box-shadow": "0px 0px 15px #83A",
  99. "-khtml-box-shadow": "0px 0px 15px #83A",
  100. border: "1px solid #A6D ! important",
  101. display: "inline-block",
  102. position: "absolute"
  103. },
  104. ".MathJax_Hover_Arrow": {
  105. position: "absolute",
  106. width: "15px",
  107. height: "11px",
  108. cursor: "pointer"
  109. }
  110. }
  111. }, c = a.Event = {
  112. LEFTBUTTON: 0,
  113. RIGHTBUTTON: 2,
  114. MENUKEY: "altKey",
  115. Mousedown: function(e) {
  116. return c.Handler(e, "Mousedown", this);
  117. },
  118. Mouseup: function(e) {
  119. return c.Handler(e, "Mouseup", this);
  120. },
  121. Mousemove: function(e) {
  122. return c.Handler(e, "Mousemove", this);
  123. },
  124. Mouseover: function(e) {
  125. return c.Handler(e, "Mouseover", this);
  126. },
  127. Mouseout: function(e) {
  128. return c.Handler(e, "Mouseout", this);
  129. },
  130. Click: function(e) {
  131. return c.Handler(e, "Click", this);
  132. },
  133. DblClick: function(e) {
  134. return c.Handler(e, "DblClick", this);
  135. },
  136. Menu: function(e) {
  137. return c.Handler(e, "ContextMenu", this);
  138. },
  139. Handler: function(e, t, r) {
  140. if (n.loadingMathMenu) return c.False(e);
  141. var s = i[r.jaxID];
  142. e || (e = window.event), e.isContextMenu = t === "ContextMenu";
  143. if (s[t]) return s[t](e, r);
  144. if (u.MathZoom) return u.MathZoom.HandleEvent(e, t, r);
  145. },
  146. False: function(e) {
  147. return e || (e = window.event), e && (e.preventDefault && e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0, e.returnValue = !1), !1;
  148. },
  149. ContextMenu: function(t, o, u) {
  150. var l = i[o.jaxID], p = l.getJaxFromMath(o), d = (l.config.showMathMenu != null ? l : e).config.showMathMenu;
  151. if (!d || f.context !== "MathJax" && !u) return;
  152. a.msieEventBug && (t = window.event || t), c.ClearSelection(), h.ClearHoverTimer(), p.hover && (p.hover.remove && (clearTimeout(p.hover.remove), delete p.hover.remove), p.hover.nofade = !0);
  153. var v = MathJax.Menu;
  154. if (v) {
  155. v.jax = p;
  156. var y = v.menu.Find("Show Math As").menu;
  157. y.items[1].name = s[p.inputJax].sourceMenuTitle || "Original Form", y.items[0].hidden = p.inputJax === "Error";
  158. var w = v.menu.Find("Math Settings", "MathPlayer");
  159. return w.hidden = p.outputJax !== "NativeMML" || !e.Browser.hasMathPlayer, v.menu.Post(t);
  160. }
  161. if (!n.loadingMathMenu) {
  162. n.loadingMathMenu = !0;
  163. var E = {
  164. pageX: t.pageX,
  165. pageY: t.pageY,
  166. clientX: t.clientX,
  167. clientY: t.clientY
  168. };
  169. r.Queue(n.Require("[MathJax]/extensions/MathMenu.js"), function() {
  170. delete n.loadingMathMenu, MathJax.Menu || (MathJax.Menu = {});
  171. }, [ "ContextMenu", this, E, o, u ]);
  172. }
  173. return c.False(t);
  174. },
  175. AltContextMenu: function(t, n) {
  176. var r = i[n.jaxID], s = (r.config.showMathMenu != null ? r : e).config.showMathMenu;
  177. if (s) {
  178. s = (r.config.showMathMenuMSIE != null ? r : e).config.showMathMenuMSIE;
  179. if (f.context === "MathJax" && !f.mpContext && s) {
  180. if (!a.noContextMenuBug || t.button !== c.RIGHTBUTTON) return;
  181. } else if (!t[c.MENUKEY] || t.button !== c.LEFTBUTTON) return;
  182. return r.ContextMenu(t, n, !0);
  183. }
  184. },
  185. ClearSelection: function() {
  186. a.safariContextMenuBug && setTimeout("window.getSelection().empty()", 0), document.selection && setTimeout("document.selection.empty()", 0);
  187. },
  188. getBBox: function(e) {
  189. e.appendChild(a.topImg);
  190. var t = a.topImg.offsetTop, n = e.offsetHeight - t, r = e.offsetWidth;
  191. return e.removeChild(a.topImg), {
  192. w: r,
  193. h: t,
  194. d: n
  195. };
  196. }
  197. }, h = a.Hover = {
  198. Mouseover: function(t, n) {
  199. if (f.discoverable || f.zoom === "Hover") {
  200. var r = t.fromElement || t.relatedTarget, i = t.toElement || t.target;
  201. if (r && i && (r.isMathJax != i.isMathJax || e.getJaxFor(r) !== e.getJaxFor(i))) {
  202. var s = this.getJaxFromMath(n);
  203. return s.hover ? h.ReHover(s) : h.HoverTimer(s, n), c.False(t);
  204. }
  205. }
  206. },
  207. Mouseout: function(t, n) {
  208. if (f.discoverable || f.zoom === "Hover") {
  209. var r = t.fromElement || t.relatedTarget, i = t.toElement || t.target;
  210. if (r && i && (r.isMathJax != i.isMathJax || e.getJaxFor(r) !== e.getJaxFor(i))) {
  211. var s = this.getJaxFromMath(n);
  212. return s.hover ? h.UnHover(s) : h.ClearHoverTimer(), c.False(t);
  213. }
  214. }
  215. },
  216. Mousemove: function(e, t) {
  217. if (f.discoverable || f.zoom === "Hover") {
  218. var n = this.getJaxFromMath(t);
  219. if (n.hover) return;
  220. if (h.lastX == e.clientX && h.lastY == e.clientY) return;
  221. return h.lastX = e.clientX, h.lastY = e.clientY, h.HoverTimer(n, t), c.False(e);
  222. }
  223. },
  224. HoverTimer: function(e, t) {
  225. this.ClearHoverTimer(), this.hoverTimer = setTimeout(r([ "Hover", this, e, t ]), l.hover);
  226. },
  227. ClearHoverTimer: function() {
  228. this.hoverTimer && (clearTimeout(this.hoverTimer), delete this.hoverTimer);
  229. },
  230. Hover: function(n, r) {
  231. if (u.MathZoom && u.MathZoom.Hover({}, r)) return;
  232. var s = i[n.outputJax], o = s.getHoverSpan(n, r), f = s.getHoverBBox(n, o, r), c = (s.config.showMathMenu != null ? s : e).config.showMathMenu, h = l.frame.x, p = l.frame.y, d = l.frame.bwidth;
  233. a.msieBorderWidthBug && (d = 0), n.hover = {
  234. opacity: 0,
  235. id: n.inputID + "-Hover"
  236. };
  237. var v = t.Element("span", {
  238. id: n.hover.id,
  239. isMathJax: !0,
  240. style: {
  241. display: "inline-block",
  242. width: 0,
  243. height: 0,
  244. position: "relative"
  245. }
  246. }, [ [ "span", {
  247. className: "MathJax_Hover_Frame",
  248. isMathJax: !0,
  249. style: {
  250. display: "inline-block",
  251. position: "absolute",
  252. top: this.Px(-f.h - p - d - (f.y || 0)),
  253. left: this.Px(-h - d + (f.x || 0)),
  254. width: this.Px(f.w + 2 * h),
  255. height: this.Px(f.h + f.d + 2 * p),
  256. opacity: 0,
  257. filter: "alpha(opacity=0)"
  258. }
  259. } ] ]), m = t.Element("span", {
  260. isMathJax: !0,
  261. id: n.hover.id + "Menu",
  262. style: {
  263. display: "inline-block",
  264. "z-index": 1,
  265. width: 0,
  266. height: 0,
  267. position: "relative"
  268. }
  269. }, [ [ "img", {
  270. className: "MathJax_Hover_Arrow",
  271. isMathJax: !0,
  272. math: r,
  273. src: l.button.src,
  274. onclick: this.HoverMenu,
  275. jax: s.id,
  276. style: {
  277. left: this.Px(f.w + h + d + (f.x || 0) + l.button.x),
  278. top: this.Px(-f.h - p - d - (f.y || 0) - l.button.y),
  279. opacity: 0,
  280. filter: "alpha(opacity=0)"
  281. }
  282. } ] ]);
  283. f.width && (v.style.width = m.style.width = f.width, v.style.marginRight = m.style.marginRight = "-" + f.width, v.firstChild.style.width = f.width, m.firstChild.style.left = "", m.firstChild.style.right = this.Px(l.button.wx)), o.parentNode.insertBefore(v, o), c && o.parentNode.insertBefore(m, o), o.style && (o.style.position = "relative"), this.ReHover(n);
  284. },
  285. ReHover: function(e) {
  286. e.hover.remove && clearTimeout(e.hover.remove), e.hover.remove = setTimeout(r([ "UnHover", this, e ]), l.fadeoutDelay), this.HoverFadeTimer(e, l.fadeinInc);
  287. },
  288. UnHover: function(e) {
  289. e.hover.nofade || this.HoverFadeTimer(e, -l.fadeoutInc, l.fadeoutStart);
  290. },
  291. HoverFade: function(e) {
  292. delete e.hover.timer, e.hover.opacity = Math.max(0, Math.min(1, e.hover.opacity + e.hover.inc)), e.hover.opacity = Math.floor(1e3 * e.hover.opacity) / 1e3;
  293. var t = document.getElementById(e.hover.id), n = document.getElementById(e.hover.id + "Menu");
  294. t.firstChild.style.opacity = e.hover.opacity, t.firstChild.style.filter = "alpha(opacity=" + Math.floor(100 * e.hover.opacity) + ")", n && (n.firstChild.style.opacity = e.hover.opacity, n.firstChild.style.filter = t.style.filter);
  295. if (e.hover.opacity === 1) return;
  296. if (e.hover.opacity > 0) {
  297. this.HoverFadeTimer(e, e.hover.inc);
  298. return;
  299. }
  300. t.parentNode.removeChild(t), n && n.parentNode.removeChild(n), e.hover.remove && clearTimeout(e.hover.remove), delete e.hover;
  301. },
  302. HoverFadeTimer: function(e, t, n) {
  303. e.hover.inc = t, e.hover.timer || (e.hover.timer = setTimeout(r([ "HoverFade", this, e ]), n || l.fadeDelay));
  304. },
  305. HoverMenu: function(e) {
  306. return e || (e = window.event), i[this.jax].ContextMenu(e, this.math, !0);
  307. },
  308. ClearHover: function(e) {
  309. e.hover.remove && clearTimeout(e.hover.remove), e.hover.timer && clearTimeout(e.hover.timer), h.ClearHoverTimer(), delete e.hover;
  310. },
  311. Px: function(e) {
  312. return Math.abs(e) < .006 ? "0px" : e.toFixed(2).replace(/\.?0+$/, "") + "px";
  313. },
  314. getImages: function() {
  315. var e = new Image;
  316. e.src = l.button.src;
  317. }
  318. }, p = a.Touch = {
  319. last: 0,
  320. delay: 500,
  321. start: function(e) {
  322. var t = (new Date).getTime(), n = t - p.last < p.delay && p.up;
  323. p.last = t, p.up = !1, n && (p.timeout = setTimeout(p.menu, p.delay, e, this), e.preventDefault());
  324. },
  325. end: function(e) {
  326. var t = (new Date).getTime();
  327. p.up = t - p.last < p.delay;
  328. if (p.timeout) return clearTimeout(p.timeout), delete p.timeout, p.last = 0, p.up = !1, e.preventDefault(), c.Handler(e.touches[0] || e.touch, "DblClick", this);
  329. },
  330. menu: function(e, t) {
  331. return delete p.timeout, p.last = 0, p.up = !1, c.Handler(e.touches[0] || e.touch, "ContextMenu", t);
  332. }
  333. };
  334. if (e.Browser.isMobile) {
  335. var d = l.styles[".MathJax_Hover_Arrow"];
  336. d.width = "25px", d.height = "18px", l.button.x = -6;
  337. }
  338. e.Browser.Select({
  339. MSIE: function(e) {
  340. var t = document.documentMode || 0, n = e.versionAtLeast("8.0");
  341. a.msieBorderWidthBug = document.compatMode === "BackCompat", a.msieEventBug = e.isIE9, a.msieAlignBug = !n || t < 8, t < 9 && (c.LEFTBUTTON = 1);
  342. },
  343. Safari: function(e) {
  344. a.safariContextMenuBug = !0;
  345. },
  346. Opera: function(e) {
  347. a.operaPositionBug = !0;
  348. },
  349. Konqueror: function(e) {
  350. a.noContextMenuBug = !0;
  351. }
  352. }), a.topImg = a.msieAlignBug ? t.Element("img", {
  353. style: {
  354. width: 0,
  355. height: 0,
  356. position: "relative"
  357. },
  358. src: "about:blank"
  359. }) : t.Element("span", {
  360. style: {
  361. width: 0,
  362. height: 0,
  363. display: "inline-block"
  364. }
  365. }), a.operaPositionBug && (a.topImg.style.border = "1px solid"), a.config = l = e.CombineConfig("MathEvents", l);
  366. var v = function() {
  367. var e = l.styles[".MathJax_Hover_Frame"];
  368. e.border = l.frame.bwidth + "px solid " + l.frame.bcolor + " ! important", e["box-shadow"] = e["-webkit-box-shadow"] = e["-moz-box-shadow"] = e["-khtml-box-shadow"] = "0px 0px " + l.frame.hwidth + " " + l.frame.hcolor;
  369. };
  370. r.Queue(e.Register.StartupHook("End Config", {}), [ v ], [ "getImages", h ], [ "Styles", n, l.styles ], [ "Post", e.Startup.signal, "MathEvents Ready" ], [ "loadComplete", n, "[MathJax]/extensions/MathEvents.js" ]);
  371. }(MathJax.Hub, MathJax.HTML, MathJax.Ajax, MathJax.Callback, MathJax.OutputJax, MathJax.InputJax), function(e, t, n, r, i) {
  372. var s = "2.1", o = MathJax.Callback.Signal("menu");
  373. MathJax.Extension.MathMenu = {
  374. version: s,
  375. signal: o
  376. };
  377. var u = e.Browser.isPC, a = e.Browser.isMSIE, f = (document.documentMode || 0) > 8, l = u ? null : "5px", c = e.CombineConfig("MathMenu", {
  378. delay: 150,
  379. helpURL: "http://www.mathjax.org/help-v2/user/",
  380. closeImg: n.fileURL(i.imageDir + "/CloseX-31.png"),
  381. showRenderer: !0,
  382. showMathPlayer: !0,
  383. showFontMenu: !1,
  384. showContext: !1,
  385. showDiscoverable: !1,
  386. windowSettings: {
  387. status: "no",
  388. toolbar: "no",
  389. locationbar: "no",
  390. menubar: "no",
  391. directories: "no",
  392. personalbar: "no",
  393. resizable: "yes",
  394. scrollbars: "yes",
  395. width: 400,
  396. height: 300,
  397. left: Math.round((screen.width - 400) / 2),
  398. top: Math.round((screen.height - 300) / 3)
  399. },
  400. styles: {
  401. "#MathJax_About": {
  402. position: "fixed",
  403. left: "50%",
  404. width: "auto",
  405. "text-align": "center",
  406. border: "3px outset",
  407. padding: "1em 2em",
  408. "background-color": "#DDDDDD",
  409. color: "black",
  410. cursor: "default",
  411. "font-family": "message-box",
  412. "font-size": "120%",
  413. "font-style": "normal",
  414. "text-indent": 0,
  415. "text-transform": "none",
  416. "line-height": "normal",
  417. "letter-spacing": "normal",
  418. "word-spacing": "normal",
  419. "word-wrap": "normal",
  420. "white-space": "nowrap",
  421. "float": "none",
  422. "z-index": 201,
  423. "border-radius": "15px",
  424. "-webkit-border-radius": "15px",
  425. "-moz-border-radius": "15px",
  426. "-khtml-border-radius": "15px",
  427. "box-shadow": "0px 10px 20px #808080",
  428. "-webkit-box-shadow": "0px 10px 20px #808080",
  429. "-moz-box-shadow": "0px 10px 20px #808080",
  430. "-khtml-box-shadow": "0px 10px 20px #808080",
  431. filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"
  432. },
  433. ".MathJax_Menu": {
  434. position: "absolute",
  435. "background-color": "white",
  436. color: "black",
  437. width: "auto",
  438. padding: u ? "2px" : "5px 0px",
  439. border: "1px solid #CCCCCC",
  440. margin: 0,
  441. cursor: "default",
  442. font: "menu",
  443. "text-align": "left",
  444. "text-indent": 0,
  445. "text-transform": "none",
  446. "line-height": "normal",
  447. "letter-spacing": "normal",
  448. "word-spacing": "normal",
  449. "word-wrap": "normal",
  450. "white-space": "nowrap",
  451. "float": "none",
  452. "z-index": 201,
  453. "border-radius": l,
  454. "-webkit-border-radius": l,
  455. "-moz-border-radius": l,
  456. "-khtml-border-radius": l,
  457. "box-shadow": "0px 10px 20px #808080",
  458. "-webkit-box-shadow": "0px 10px 20px #808080",
  459. "-moz-box-shadow": "0px 10px 20px #808080",
  460. "-khtml-box-shadow": "0px 10px 20px #808080",
  461. filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"
  462. },
  463. ".MathJax_MenuItem": {
  464. padding: u ? "2px 2em" : "1px 2em",
  465. background: "transparent"
  466. },
  467. ".MathJax_MenuTitle": {
  468. "background-color": "#CCCCCC",
  469. margin: u ? "-1px -1px 1px -1px" : "-5px 0 0 0",
  470. "text-align": "center",
  471. "font-style": "italic",
  472. "font-size": "80%",
  473. color: "#444444",
  474. padding: "2px 0",
  475. overflow: "hidden"
  476. },
  477. ".MathJax_MenuArrow": {
  478. position: "absolute",
  479. right: ".5em",
  480. color: "#666666",
  481. "font-family": a ? "'Arial unicode MS'" : null
  482. },
  483. ".MathJax_MenuActive .MathJax_MenuArrow": {
  484. color: "white"
  485. },
  486. ".MathJax_MenuCheck": {
  487. position: "absolute",
  488. left: ".7em",
  489. "font-family": a ? "'Arial unicode MS'" : null
  490. },
  491. ".MathJax_MenuRadioCheck": {
  492. position: "absolute",
  493. left: u ? "1em" : ".7em"
  494. },
  495. ".MathJax_MenuLabel": {
  496. padding: u ? "2px 2em 4px 1.33em" : "1px 2em 3px 1.33em",
  497. "font-style": "italic"
  498. },
  499. ".MathJax_MenuRule": {
  500. "border-top": u ? "1px solid #CCCCCC" : "1px solid #DDDDDD",
  501. margin: u ? "4px 1px 0px" : "4px 3px"
  502. },
  503. ".MathJax_MenuDisabled": {
  504. color: "GrayText"
  505. },
  506. ".MathJax_MenuActive": {
  507. "background-color": u ? "Highlight" : "#606872",
  508. color: u ? "HighlightText" : "white"
  509. },
  510. ".MathJax_Menu_Close": {
  511. position: "absolute",
  512. width: "31px",
  513. height: "31px",
  514. top: "-15px",
  515. left: "-15px"
  516. }
  517. }
  518. }), h, p;
  519. e.Register.StartupHook("MathEvents Ready", function() {
  520. h = MathJax.Extension.MathEvents.Event.False, p = MathJax.Extension.MathEvents.Hover;
  521. });
  522. var d = MathJax.Menu = MathJax.Object.Subclass({
  523. version: s,
  524. items: [],
  525. posted: !1,
  526. title: null,
  527. margin: 5,
  528. Init: function(e) {
  529. this.items = [].slice.call(arguments, 0);
  530. },
  531. With: function(t) {
  532. return t && e.Insert(this, t), this;
  533. },
  534. Post: function(e, n) {
  535. e || (e = window.event);
  536. var r = this.title ? [ [ "div", {
  537. className: "MathJax_MenuTitle"
  538. }, [ this.title ] ] ] : null, i = document.getElementById("MathJax_MenuFrame");
  539. i || (i = d.Background(this), delete v.lastItem, delete v.lastMenu, delete d.skipUp, o.Post([ "post", d.jax ]));
  540. var s = t.addElement(i, "div", {
  541. onmouseup: d.Mouseup,
  542. ondblclick: h,
  543. ondragstart: h,
  544. onselectstart: h,
  545. oncontextmenu: h,
  546. menuItem: this,
  547. className: "MathJax_Menu"
  548. }, r);
  549. for (var a = 0, f = this.items.length; a < f; a++) this.items[a].Create(s);
  550. d.isMobile && t.addElement(s, "span", {
  551. className: "MathJax_Menu_Close",
  552. menu: n,
  553. ontouchstart: d.Close,
  554. ontouchend: h,
  555. onmousedown: d.Close,
  556. onmouseup: h
  557. }, [ [ "img", {
  558. src: c.closeImg,
  559. style: {
  560. width: "100%",
  561. height: "100%"
  562. }
  563. } ] ]), this.posted = !0, s.style.width = s.offsetWidth + 2 + "px";
  564. var l = e.pageX, p = e.pageY;
  565. !l && !p && (l = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft, p = e.clientY + document.body.scrollTop + document.documentElement.scrollTop);
  566. if (!n) l + s.offsetWidth > document.body.offsetWidth - this.margin && (l = document.body.offsetWidth - s.offsetWidth - this.margin), d.isMobile && (l = Math.max(5, l - Math.floor(s.offsetWidth / 2)), p -= 20), d.skipUp = e.isContextMenu; else {
  567. var y = "left", b = n.offsetWidth;
  568. l = d.isMobile ? 30 : b - 2, p = 0;
  569. while (n && n !== i) l += n.offsetLeft, p += n.offsetTop, n = n.parentNode;
  570. l + s.offsetWidth > document.body.offsetWidth - this.margin && !d.isMobile && (y = "right", l = Math.max(this.margin, l - b - s.offsetWidth + 6)), u || (s.style["borderRadiusTop" + y] = 0, s.style["WebkitBorderRadiusTop" + y] = 0, s.style["MozBorderRadiusTop" + y] = 0, s.style["KhtmlBorderRadiusTop" + y] = 0);
  571. }
  572. return s.style.left = l + "px", s.style.top = p + "px", document.selection && document.selection.empty && document.selection.empty(), h(e);
  573. },
  574. Remove: function(e, t) {
  575. o.Post([ "unpost", d.jax ]);
  576. var n = document.getElementById("MathJax_MenuFrame");
  577. return n && (n.parentNode.removeChild(n), this.msieFixedPositionBug && detachEvent("onresize", d.Resize)), d.jax.hover && (delete d.jax.hover.nofade, p.UnHover(d.jax)), h(e);
  578. },
  579. Find: function(e) {
  580. var t = [].slice.call(arguments, 1);
  581. for (var n = 0, r = this.items.length; n < r; n++) if (this.items[n].name === e) return t.length ? this.items[n].menu ? this.items[n].menu.Find.apply(this.items[n].menu, t) : null : this.items[n];
  582. return null;
  583. },
  584. IndexOf: function(e) {
  585. for (var t = 0, n = this.items.length; t < n; t++) if (this.items[t].name === e) return t;
  586. return null;
  587. }
  588. }, {
  589. config: c,
  590. div: null,
  591. Close: function(e) {
  592. return d.Event(e, this.menu || this.parentNode, this.menu ? "Touchend" : "Remove");
  593. },
  594. Remove: function(e) {
  595. return d.Event(e, this, "Remove");
  596. },
  597. Mouseover: function(e) {
  598. return d.Event(e, this, "Mouseover");
  599. },
  600. Mouseout: function(e) {
  601. return d.Event(e, this, "Mouseout");
  602. },
  603. Mousedown: function(e) {
  604. return d.Event(e, this, "Mousedown");
  605. },
  606. Mouseup: function(e) {
  607. return d.Event(e, this, "Mouseup");
  608. },
  609. Touchstart: function(e) {
  610. return d.Event(e, this, "Touchstart");
  611. },
  612. Touchend: function(e) {
  613. return d.Event(e, this, "Touchend");
  614. },
  615. Event: function(e, t, n, r) {
  616. if (d.skipMouseover && n === "Mouseover" && !r) return h(e);
  617. if (d.skipUp) {
  618. if (n.match(/Mouseup|Touchend/)) return delete d.skipUp, h(e);
  619. (n === "Touchstart" || n === "Mousedown" && !d.skipMousedown) && delete d.skipUp;
  620. }
  621. e || (e = window.event);
  622. var i = t.menuItem;
  623. return i && i[n] ? i[n](e, t) : null;
  624. },
  625. BGSTYLE: {
  626. position: "absolute",
  627. left: 0,
  628. top: 0,
  629. "z-index": 200,
  630. width: "100%",
  631. height: "100%",
  632. border: 0,
  633. padding: 0,
  634. margin: 0
  635. },
  636. Background: function(e) {
  637. var n = t.addElement(document.body, "div", {
  638. style: this.BGSTYLE,
  639. id: "MathJax_MenuFrame"
  640. }, [ [ "div", {
  641. style: this.BGSTYLE,
  642. menuItem: e,
  643. onmousedown: this.Remove
  644. } ] ]), r = n.firstChild;
  645. return e.msieBackgroundBug && (r.style.backgroundColor = "white", r.style.filter = "alpha(opacity=0)"), e.msieFixedPositionBug ? (n.width = n.height = 0, this.Resize(), attachEvent("onresize", this.Resize)) : r.style.position = "fixed", n;
  646. },
  647. Resize: function() {
  648. setTimeout(d.SetWH, 0);
  649. },
  650. SetWH: function() {
  651. var e = document.getElementById("MathJax_MenuFrame");
  652. e && (e = e.firstChild, e.style.width = e.style.height = "1px", e.style.width = document.body.scrollWidth + "px", e.style.height = document.body.scrollHeight + "px");
  653. },
  654. saveCookie: function() {
  655. t.Cookie.Set("menu", this.cookie);
  656. },
  657. getCookie: function() {
  658. this.cookie = t.Cookie.Get("menu");
  659. },
  660. getImages: function() {
  661. if (d.isMobile) {
  662. var e = new Image;
  663. e.src = c.closeImg;
  664. }
  665. }
  666. }), v = d.ITEM = MathJax.Object.Subclass({
  667. name: "",
  668. Create: function(e) {
  669. if (!this.hidden) {
  670. var n = {
  671. onmouseover: d.Mouseover,
  672. onmouseout: d.Mouseout,
  673. onmouseup: d.Mouseup,
  674. onmousedown: d.Mousedown,
  675. ondragstart: h,
  676. onselectstart: h,
  677. onselectend: h,
  678. ontouchstart: d.Touchstart,
  679. ontouchend: d.Touchend,
  680. className: "MathJax_MenuItem",
  681. menuItem: this
  682. };
  683. this.disabled && (n.className += " MathJax_MenuDisabled"), t.addElement(e, "div", n, this.Label(n, e));
  684. }
  685. },
  686. Mouseover: function(e, t) {
  687. this.disabled || this.Activate(t);
  688. if (!this.menu || !this.menu.posted) {
  689. var n = document.getElementById("MathJax_MenuFrame").childNodes, r = t.parentNode.childNodes;
  690. for (var i = 0, s = r.length; i < s; i++) {
  691. var o = r[i].menuItem;
  692. o && o.menu && o.menu.posted && o.Deactivate(r[i]);
  693. }
  694. s = n.length - 1;
  695. while (s >= 0 && t.parentNode.menuItem !== n[s].menuItem) n[s].menuItem.posted = !1, n[s].parentNode.removeChild(n[s]), s--;
  696. this.Timer && !d.isMobile && this.Timer(e, t);
  697. }
  698. },
  699. Mouseout: function(e, t) {
  700. (!this.menu || !this.menu.posted) && this.Deactivate(t), this.timer && (clearTimeout(this.timer), delete this.timer);
  701. },
  702. Mouseup: function(e, t) {
  703. return this.Remove(e, t);
  704. },
  705. Touchstart: function(e, t) {
  706. return this.TouchEvent(e, t, "Mousedown");
  707. },
  708. Touchend: function(e, t) {
  709. return this.TouchEvent(e, t, "Mouseup");
  710. },
  711. TouchEvent: function(e, t, n) {
  712. return this !== v.lastItem && (v.lastMenu && d.Event(e, v.lastMenu, "Mouseout"), d.Event(e, t, "Mouseover", !0), v.lastItem = this, v.lastMenu = t), this.nativeTouch ? null : (d.Event(e, t, n), !1);
  713. },
  714. Remove: function(e, t) {
  715. return t = t.parentNode.menuItem, t.Remove(e, t);
  716. },
  717. Activate: function(e) {
  718. this.Deactivate(e), e.className += " MathJax_MenuActive";
  719. },
  720. Deactivate: function(e) {
  721. e.className = e.className.replace(/ MathJax_MenuActive/, "");
  722. },
  723. With: function(t) {
  724. return t && e.Insert(this, t), this;
  725. }
  726. });
  727. d.ITEM.COMMAND = d.ITEM.Subclass({
  728. action: function() {},
  729. Init: function(e, t, n) {
  730. this.name = e, this.action = t, this.With(n);
  731. },
  732. Label: function(e, t) {
  733. return [ this.name ];
  734. },
  735. Mouseup: function(e, t) {
  736. return this.disabled || (this.Remove(e, t), o.Post([ "command", this ]), this.action.call(this, e)), h(e);
  737. }
  738. }), d.ITEM.SUBMENU = d.ITEM.Subclass({
  739. menu: null,
  740. marker: u && !e.Browser.isSafari ? "\u25b6" : "\u25b8",
  741. Init: function(e, t) {
  742. this.name = e;
  743. var n = 1;
  744. t instanceof d.ITEM || (this.With(t), n++), this.menu = d.apply(d, [].slice.call(arguments, n));
  745. },
  746. Label: function(e, t) {
  747. return this.menu.posted = !1, [ this.name + " ", [ "span", {
  748. className: "MathJax_MenuArrow"
  749. }, [ this.marker ] ] ];
  750. },
  751. Timer: function(e, t) {
  752. this.timer && clearTimeout(this.timer), e = {
  753. clientX: e.clientX,
  754. clientY: e.clientY
  755. }, this.timer = setTimeout(r([ "Mouseup", this, e, t ]), c.delay);
  756. },
  757. Touchend: function(e, t) {
  758. var n = this.menu.posted, r = this.SUPER(arguments).Touchend.apply(this, arguments);
  759. return n && (this.Deactivate(t), delete v.lastItem, delete v.lastMenu), r;
  760. },
  761. Mouseup: function(e, t) {
  762. if (!this.disabled) if (!this.menu.posted) this.timer && (clearTimeout(this.timer), delete this.timer), this.menu.Post(e, t); else {
  763. var n = document.getElementById("MathJax_MenuFrame").childNodes, r = n.length - 1;
  764. while (r >= 0) {
  765. var i = n[r];
  766. i.menuItem.posted = !1, i.parentNode.removeChild(i);
  767. if (i.menuItem === this.menu) break;
  768. r--;
  769. }
  770. }
  771. return h(e);
  772. }
  773. }), d.ITEM.RADIO = d.ITEM.Subclass({
  774. variable: null,
  775. marker: u ? "\u25cf" : "\u2713",
  776. Init: function(e, t, n) {
  777. this.name = e, this.variable = t, this.With(n), this.value == null && (this.value = this.name);
  778. },
  779. Label: function(e, t) {
  780. var n = {
  781. className: "MathJax_MenuRadioCheck"
  782. };
  783. return c.settings[this.variable] !== this.value && (n = {
  784. style: {
  785. display: "none"
  786. }
  787. }), [ [ "span", n, [ this.marker ] ], " " + this.name ];
  788. },
  789. Mouseup: function(e, t) {
  790. if (!this.disabled) {
  791. var n = t.parentNode.childNodes;
  792. for (var r = 0, i = n.length; r < i; r++) {
  793. var s = n[r].menuItem;
  794. s && s.variable === this.variable && (n[r].firstChild.style.display = "none");
  795. }
  796. t.firstChild.display = "", c.settings[this.variable] = this.value, d.cookie[this.variable] = c.settings[this.variable], d.saveCookie(), o.Post([ "radio button", this ]);
  797. }
  798. return this.Remove(e, t), this.action && !this.disabled && this.action.call(d, this), h(e);
  799. }
  800. }), d.ITEM.CHECKBOX = d.ITEM.Subclass({
  801. variable: null,
  802. marker: "\u2713",
  803. Init: function(e, t, n) {
  804. this.name = e, this.variable = t, this.With(n);
  805. },
  806. Label: function(e, t) {
  807. var n = {
  808. className: "MathJax_MenuCheck"
  809. };
  810. return c.settings[this.variable] || (n = {
  811. style: {
  812. display: "none"
  813. }
  814. }), [ [ "span", n, [ this.marker ] ], " " + this.name ];
  815. },
  816. Mouseup: function(e, t) {
  817. return this.disabled || (t.firstChild.display = c.settings[this.variable] ? "none" : "", c.settings[this.variable] = !c.settings[this.variable], d.cookie[this.variable] = c.settings[this.variable], d.saveCookie(), o.Post([ "checkbox", this ])), this.Remove(e, t), this.action && !this.disabled && this.action.call(d, this), h(e);
  818. }
  819. }), d.ITEM.LABEL = d.ITEM.Subclass({
  820. Init: function(e, t) {
  821. this.name = e, this.With(t);
  822. },
  823. Label: function(e, t) {
  824. return delete e.onmouseover, delete e.onmouseout, delete e.onmousedown, e.className += " MathJax_MenuLabel", [ this.name ];
  825. }
  826. }), d.ITEM.RULE = d.ITEM.Subclass({
  827. Label: function(e, t) {
  828. return delete e.onmouseover, delete e.onmouseout, delete e.onmousedown, e.className += " MathJax_MenuRule", null;
  829. }
  830. }), d.About = function() {
  831. var n = i["HTML-CSS"] || {
  832. fontInUse: ""
  833. }, r = n.webFonts ? "" : "local ", s = n.webFonts ? " web" : "", o = (n.imgFonts ? "Image" : r + n.fontInUse + s) + " fonts";
  834. o === "local fonts" && i.SVG && (o = "web SVG fonts");
  835. var u = [ "MathJax.js v" + MathJax.fileversion, [ "br" ] ];
  836. u.push([ "div", {
  837. style: {
  838. "border-top": "groove 2px",
  839. margin: ".25em 0"
  840. }
  841. } ]), d.About.GetJax(u, MathJax.InputJax, "Input Jax"), d.About.GetJax(u, MathJax.OutputJax, "Output Jax"), d.About.GetJax(u, MathJax.ElementJax, "Element Jax"), u.push([ "div", {
  842. style: {
  843. "border-top": "groove 2px",
  844. margin: ".25em 0"
  845. }
  846. } ]), d.About.GetJax(u, MathJax.Extension, "Extension", !0), u.push([ "div", {
  847. style: {
  848. "border-top": "groove 2px",
  849. margin: ".25em 0"
  850. }
  851. } ], [ "center", {}, [ e.Browser + " v" + e.Browser.version + (n.webFonts && !n.imgFonts ? " \u2014 " + n.allowWebFonts.replace(/otf/, "woff or otf") + " fonts" : "") ] ]), d.About.div = d.Background(d.About);
  852. var a = t.addElement(d.About.div, "div", {
  853. id: "MathJax_About"
  854. }, [ [ "b", {
  855. style: {
  856. fontSize: "120%"
  857. }
  858. }, [ "MathJax" ] ], " v" + MathJax.version, [ "br" ], "using " + o, [ "br" ], [ "br" ], [ "span", {
  859. style: {
  860. display: "inline-block",
  861. "text-align": "left",
  862. "font-size": "80%",
  863. "max-height": "20em",
  864. overflow: "auto",
  865. "background-color": "#E4E4E4",
  866. padding: ".4em .6em",
  867. border: "1px inset"
  868. }
  869. }, u ], [ "br" ], [ "br" ], [ "a", {
  870. href: "http://www.mathjax.org/"
  871. }, [ "www.mathjax.org" ] ], [ "img", {
  872. src: c.closeImg,
  873. style: {
  874. width: "21px",
  875. height: "21px",
  876. position: "absolute",
  877. top: ".2em",
  878. right: ".2em"
  879. },
  880. onclick: d.About.Remove
  881. } ] ]), f = document.documentElement || {}, l = window.innerHeight || f.clientHeight || f.scrollHeight || 0;
  882. d.prototype.msieAboutBug ? (a.style.width = "20em", a.style.position = "absolute", a.style.left = Math.floor((document.documentElement.scrollWidth - a.offsetWidth) / 2) + "px", a.style.top = Math.floor((l - a.offsetHeight) / 3) + document.body.scrollTop + "px") : (a.style.marginLeft = Math.floor(-a.offsetWidth / 2) + "px", a.style.top = Math.floor((l - a.offsetHeight) / 3) + "px");
  883. }, d.About.Remove = function(e) {
  884. d.About.div && (document.body.removeChild(d.About.div), delete d.About.div);
  885. }, d.About.GetJax = function(e, t, n, r) {
  886. var i = [];
  887. for (var s in t) t.hasOwnProperty(s) && t[s] && (r && t[s].version || t[s].isa && t[s].isa(t)) && i.push((t[s].id || s) + " " + n + " v" + t[s].version);
  888. i.sort();
  889. for (var o = 0, u = i.length; o < u; o++) e.push(i[o], [ "br" ]);
  890. return e;
  891. }, d.Help = function() {
  892. window.open(c.helpURL, "MathJaxHelp");
  893. }, d.ShowSource = function(e) {
  894. e || (e = window.event);
  895. var t = {
  896. screenX: e.screenX,
  897. screenY: e.screenY
  898. };
  899. if (!d.jax) return;
  900. if (this.format === "MathML") {
  901. var i = MathJax.ElementJax.mml;
  902. if (i && typeof i.mbase.prototype.toMathML != "undefined") try {
  903. d.ShowSource.Text(d.jax.root.toMathML(), e);
  904. } catch (s) {
  905. if (!s.restart) throw s;
  906. r.After([ this, d.ShowSource, t ], s.restart);
  907. } else if (!n.loadingToMathML) {
  908. n.loadingToMathML = !0, d.ShowSource.Window(e), r.Queue(n.Require("[MathJax]/extensions/toMathML.js"), function() {
  909. delete n.loadingToMathML, i.mbase.prototype.toMathML || (i.mbase.prototype.toMathML = function() {});
  910. }, [ this, d.ShowSource, t ]);
  911. return;
  912. }
  913. } else {
  914. if (d.jax.originalText == null) {
  915. alert("No original form available");
  916. return;
  917. }
  918. d.ShowSource.Text(d.jax.originalText, e);
  919. }
  920. }, d.ShowSource.Window = function(e) {
  921. if (!d.ShowSource.w) {
  922. var t = [], n = c.windowSettings;
  923. for (var r in n) n.hasOwnProperty(r) && t.push(r + "=" + n[r]);
  924. d.ShowSource.w = window.open("", "_blank", t.join(","));
  925. }
  926. return d.ShowSource.w;
  927. }, d.ShowSource.Text = function(e, t) {
  928. var n = d.ShowSource.Window(t);
  929. delete d.ShowSource.w, e = e.replace(/^\s*/, "").replace(/\s*$/, ""), e = e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
  930. if (d.isMobile) n.document.open(), n.document.write("<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>MathJax Equation Source</title></head><body style='font-size:85%'>"), n.document.write("<pre>" + e + "</pre>"), n.document.write("<hr><input type='button' value='Close' onclick='window.close()' />"), n.document.write("</body></html>"), n.document.close(); else {
  931. n.document.open(), n.document.write("<html><head><title>MathJax Equation Source</title></head><body style='font-size:85%'>"), n.document.write("<table><tr><td><pre>" + e + "</pre></td></tr></table>"), n.document.write("</body></html>"), n.document.close();
  932. var r = n.document.body.firstChild;
  933. setTimeout(function() {
  934. var e = n.outerHeight - n.innerHeight || 30, i = n.outerWidth - n.innerWidth || 30, s, o;
  935. i = Math.max(100, Math.min(Math.floor(.5 * screen.width), r.offsetWidth + i + 25)), e = Math.max(40, Math.min(Math.floor(.5 * screen.height), r.offsetHeight + e + 25)), n.resizeTo(i, e), t && t.screenX != null && (s = Math.max(0, Math.min(t.screenX - Math.floor(i / 2), screen.width - i - 20)), o = Math.max(0, Math.min(t.screenY - Math.floor(e / 2), screen.height - e - 20)), n.moveTo(s, o));
  936. }, 50);
  937. }
  938. }, d.Scale = function() {
  939. var t = i["HTML-CSS"], n = i.NativeMML, r = i.SVG, s = (t || n || r || {
  940. config: {
  941. scale: 100
  942. }
  943. }).config.scale, o = prompt("Scale all mathematics (compared to surrounding text) by", s + "%");
  944. o && (o.match(/^\s*\d+(\.\d*)?\s*%?\s*$/) ? (o = parseFloat(o), o ? o !== s && (t && (t.config.scale = o), n && (n.config.scale = o), r && (r.config.scale = o), d.cookie.scale = o, d.saveCookie(), e.Reprocess()) : alert("The scale should not be zero")) : alert("The scale should be a percentage (e.g., 120%)"));
  945. }, d.Zoom = function() {
  946. MathJax.Extension.MathZoom || n.Require("[MathJax]/extensions/MathZoom.js");
  947. }, d.Renderer = function() {
  948. var t = e.outputJax["jax/mml"];
  949. if (t[0] !== c.settings.renderer) {
  950. var n = e.Browser, r, i = d.Renderer.Messages, s;
  951. switch (c.settings.renderer) {
  952. case "NativeMML":
  953. c.settings.warnedMML || (n.isChrome || n.isSafari && !n.versionAtLeast("5.0") ? r = i.MML.WebKit : n.isMSIE ? n.hasMathPlayer || (r = i.MML.MSIE) : r = i.MML[n], s = "warnedMML");
  954. break;
  955. case "SVG":
  956. c.settings.warnedSVG || n.isMSIE && !f && (r = i.SVG.MSIE);
  957. }
  958. if (r) {
  959. r += "\n\nSwitch the renderer anyway?\n\n(Press OK to switch, CANCEL to continue with the current renderer)", d.cookie.renderer = t[0].id, d.saveCookie();
  960. if (!confirm(r)) return;
  961. s && (d.cookie[s] = c.settings[s] = !0), d.cookie.renderer = c.settings.renderer, d.saveCookie();
  962. }
  963. e.Queue([ "setRenderer", e, c.settings.renderer, "jax/mml" ], [ "Rerender", e ]);
  964. }
  965. }, d.Renderer.Messages = {
  966. MML: {
  967. WebKit: "Your browser doesn't seem to support MathML natively, so switching to MathML output may cause the mathematics on the page to become unreadable.",
  968. MSIE: "Internet Explorer requires the MathPlayer plugin in order to process MathML output.",
  969. Opera: "Opera's support for MathML is limited, so switching to MathML output may cause some expressions to render poorly.",
  970. Safari: "Your browser's native MathML does not implement all the features used by MathJax, so some expressions may not render properly.",
  971. Firefox: "Your browser's native MathML does not implement all the features used by MathJax, so some expressions may not render properly."
  972. },
  973. SVG: {
  974. MSIE: "SVG is not implemented in Internet Explorer prior to IE9, or when the browser is emulating IE8 or below. Switching to SVG output will cause the mathemtics to not display properly."
  975. }
  976. }, d.Font = function() {
  977. var e = i["HTML-CSS"];
  978. if (!e) return;
  979. document.location.reload();
  980. }, d.MPEvents = function(e) {
  981. var t = c.settings.discoverable, n = d.MPEvents.Messages;
  982. if (!f) {
  983. if (c.settings.mpMouse && !confirm(n.IE8warning)) {
  984. delete d.cookie.mpContext, delete c.settings.mpContext, delete d.cookie.mpMouse, delete c.settings.mpMouse, d.saveCookie();
  985. return;
  986. }
  987. c.settings.mpContext = c.settings.mpMouse, d.cookie.mpContext = d.cookie.mpMouse = c.settings.mpMouse, d.saveCookie(), MathJax.Hub.Queue([ "Rerender", MathJax.Hub ]);
  988. } else !t && e.name === "Menu Events" && c.settings.mpContext && alert(n.IE9warning);
  989. }, d.MPEvents.Messages = {
  990. IE8warning: "This will disable the MathJax menu and zoom features, but you can Alt-Click on an expression to obtain the MathJax menu instead.\n\nReally change the MathPlayer settings?",
  991. IE9warning: "The MathJax contextual menu will be disabled, but you can Alt-Click on an expression to obtain the MathJax menu instead."
  992. }, e.Browser.Select({
  993. MSIE: function(e) {
  994. var t = document.compatMode === "BackCompat", n = e.versionAtLeast("8.0") && document.documentMode > 7;
  995. d.Augment({
  996. margin: 20,
  997. msieBackgroundBug: document.documentMode < 9,
  998. msieFixedPositionBug: t || !n,
  999. msieAboutBug: t
  1000. }), f && (delete c.styles["#MathJax_About"].filter, delete c.styles[".MathJax_Menu"].filter);
  1001. },
  1002. Firefox: function(e) {
  1003. d.skipMouseover = e.isMobile && e.versionAtLeast("6.0"), d.skipMousedown = e.isMobile;
  1004. }
  1005. }), d.isMobile = e.Browser.isMobile, d.noContextMenu = e.Browser.noContextMenu, e.Register.StartupHook("End Config", function() {
  1006. c.settings = e.config.menuSettings, typeof c.settings.showRenderer != "undefined" && (c.showRenderer = c.settings.showRenderer), typeof c.settings.showFontMenu != "undefined" && (c.showFontMenu = c.settings.showFontMenu), typeof c.settings.showContext != "undefined" && (c.showContext = c.settings.showContext), d.getCookie(), d.menu = d(v.SUBMENU("Show Math As", v.COMMAND("MathML Code", d.ShowSource, {
  1007. nativeTouch: !0,
  1008. format: "MathML"
  1009. }), v.COMMAND("Original Form", d.ShowSource, {
  1010. nativeTouch: !0
  1011. }), v.RULE(), v.CHECKBOX("Show TeX hints in MathML", "texHints")), v.RULE(), v.SUBMENU("Math Settings", v.SUBMENU("Zoom Trigger", v.RADIO("Hover", "zoom", {
  1012. action: d.Zoom
  1013. }), v.RADIO("Click", "zoom", {
  1014. action: d.Zoom
  1015. }), v.RADIO("Double-Click", "zoom", {
  1016. action: d.Zoom
  1017. }), v.RADIO("No Zoom", "zoom", {
  1018. value: "None"
  1019. }), v.RULE(), v.LABEL("Trigger Requires:"), v.CHECKBOX(e.Browser.isMac ? "Option" : "Alt", "ALT"), v.CHECKBOX("Command", "CMD", {
  1020. hidden: !e.Browser.isMac
  1021. }), v.CHECKBOX("Control", "CTRL", {
  1022. hidden: e.Browser.isMac
  1023. }), v.CHECKBOX("Shift", "Shift")), v.SUBMENU("Zoom Factor", v.RADIO("125%", "zscale"), v.RADIO("133%", "zscale"), v.RADIO("150%", "zscale"), v.RADIO("175%", "zscale"), v.RADIO("200%", "zscale"), v.RADIO("250%", "zscale"), v.RADIO("300%", "zscale"), v.RADIO("400%", "zscale")), v.RULE(), v.SUBMENU("Math Renderer", {
  1024. hidden: !c.showRenderer
  1025. }, v.RADIO("HTML-CSS", "renderer", {
  1026. action: d.Renderer
  1027. }), v.RADIO("MathML", "renderer", {
  1028. action: d.Renderer,
  1029. value: "NativeMML"
  1030. }), v.RADIO("SVG", "renderer", {
  1031. action: d.Renderer
  1032. })), v.SUBMENU("MathPlayer", {
  1033. hidden: !e.Browser.isMSIE || !c.showMathPlayer,
  1034. disabled: !e.Browser.hasMathPlayer
  1035. }, v.LABEL("Let MathPlayer Handle:"), v.CHECKBOX("Menu Events", "mpContext", {
  1036. action: d.MPEvents,
  1037. hidden: !f
  1038. }), v.CHECKBOX("Mouse Events", "mpMouse", {
  1039. action: d.MPEvents,
  1040. hidden: !f
  1041. }), v.CHECKBOX("Mouse and Menu Events", "mpMouse", {
  1042. action: d.MPEvents,
  1043. hidden: f
  1044. })), v.SUBMENU("Font Preference", {
  1045. hidden: !c.showFontMenu
  1046. }, v.LABEL("For HTML-CSS:"), v.RADIO("Auto", "font", {
  1047. action: d.Font
  1048. }), v.RULE(), v.RADIO("TeX (local)", "font", {
  1049. action: d.Font
  1050. }), v.RADIO("TeX (web)", "font", {
  1051. action: d.Font
  1052. }), v.RADIO("TeX (image)", "font", {
  1053. action: d.Font
  1054. }), v.RULE(), v.RADIO("STIX (local)", "font", {
  1055. action: d.Font
  1056. })), v.SUBMENU("Contextual Menu", {
  1057. hidden: !c.showContext
  1058. }, v.RADIO("MathJax", "context"), v.RADIO("Browser", "context")), v.COMMAND("Scale All Math ...", d.Scale), v.RULE().With({
  1059. hidden: !c.showDiscoverable,
  1060. name: "discover_rule"
  1061. }), v.CHECKBOX("Highlight on Hover", "discoverable", {
  1062. hidden: !c.showDiscoverable
  1063. })), v.RULE(), v.COMMAND("About MathJax", d.About), v.COMMAND("MathJax Help", d.Help)), d.isMobile && function() {
  1064. var e = c.settings, t = d.menu.Find("Math Settings", "Zoom Trigger").menu;
  1065. t.items[0].disabled = t.items[1].disabled = !0;
  1066. if (e.zoom === "Hover" || e.zoom == "Click") e.zoom = "None";
  1067. t.items = t.items.slice(0, 4), navigator.appVersion.match(/[ (]Android[) ]/) && d.ITEM.SUBMENU.Augment({
  1068. marker: "\u00bb"
  1069. });
  1070. }();
  1071. }), d.showRenderer = function(e) {
  1072. d.cookie.showRenderer = c.showRenderer = e, d.saveCookie(), d.menu.Find("Math Settings", "Math Renderer").hidden = !e;
  1073. }, d.showMathPlayer = function(e) {
  1074. d.cookie.showMathPlayer = c.showMathPlayer = e, d.saveCookie(), d.menu.Find("Math Settings", "MathPlayer").hidden = !e;
  1075. }, d.showFontMenu = function(e) {
  1076. d.cookie.showFontMenu = c.showFontMenu = e, d.saveCookie(), d.menu.Find("Math Settings", "Font Preference").hidden = !e;
  1077. }, d.showContext = function(e) {
  1078. d.cookie.showContext = c.showContext = e, d.saveCookie(), d.menu.Find("Math Settings", "Contextual Menu").hidden = !e;
  1079. }, d.showDiscoverable = function(e) {
  1080. d.cookie.showContext = c.showContext = e, d.saveCookie(), d.menu.Find("Math Settings", "Highlight on Hover").hidden = !e, d.menu.Find("Math Settings", "discover_rule").hidden = !e;
  1081. }, MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready", function() {
  1082. MathJax.OutputJax["HTML-CSS"].config.imageFont || (d.menu.Find("Math Settings", "Font Preference", "TeX (image)").disabled = !0);
  1083. }), r.Queue(e.Register.StartupHook("End Config", {}), [ "getImages", d ], [ "Styles", n, c.styles ], [ "Post", e.Startup.signal, "MathMenu Ready" ], [ "loadComplete", n, "[MathJax]/extensions/MathMenu.js" ]);
  1084. }(MathJax.Hub, MathJax.HTML, MathJax.Ajax, MathJax.CallBack, MathJax.OutputJax), function(e, t, n, r, i) {
  1085. var s = "2.1", o = e.CombineConfig("MathZoom", {
  1086. styles: {
  1087. "#MathJax_Zoom": {
  1088. position: "absolute",
  1089. "background-color": "#F0F0F0",
  1090. overflow: "auto",
  1091. display: "block",
  1092. "z-index": 301,
  1093. padding: ".5em",
  1094. border: "1px solid black",
  1095. margin: 0,
  1096. "font-weight": "normal",
  1097. "font-style": "normal",
  1098. "text-align": "left",
  1099. "text-indent": 0,
  1100. "text-transform": "none",
  1101. "line-height": "normal",
  1102. "letter-spacing": "normal",
  1103. "word-spacing": "normal",
  1104. "word-wrap": "normal",
  1105. "white-space": "nowrap",
  1106. "float": "none",
  1107. "box-shadow": "5px 5px 15px #AAAAAA",
  1108. "-webkit-box-shadow": "5px 5px 15px #AAAAAA",
  1109. "-moz-box-shadow": "5px 5px 15px #AAAAAA",
  1110. "-khtml-box-shadow": "5px 5px 15px #AAAAAA",
  1111. filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"
  1112. },
  1113. "#MathJax_ZoomOverlay": {
  1114. position: "absolute",
  1115. left: 0,
  1116. top: 0,
  1117. "z-index": 300,
  1118. display: "inline-block",
  1119. width: "100%",
  1120. height: "100%",
  1121. border: 0,
  1122. padding: 0,
  1123. margin: 0,
  1124. "background-color": "white",
  1125. opacity: 0,
  1126. filter: "alpha(opacity=0)"
  1127. },
  1128. "#MathJax_ZoomEventTrap": {
  1129. position: "absolute",
  1130. left: 0,
  1131. top: 0,
  1132. "z-index": 302,
  1133. display: "inline-block",
  1134. border: 0,
  1135. padding: 0,
  1136. margin: 0,
  1137. "background-color": "white",
  1138. opacity: 0,
  1139. filter: "alpha(opacity=0)"
  1140. }
  1141. }
  1142. }), u, a, f;
  1143. MathJax.Hub.Register.StartupHook("MathEvents Ready", function() {
  1144. f = MathJax.Extension.MathEvents.Event, u = MathJax.Extension.MathEvents.Event.False, a = MathJax.Extension.MathEvents.Hover;
  1145. });
  1146. var l = MathJax.Extension.MathZoom = {
  1147. version: s,
  1148. settings: e.config.menuSettings,
  1149. scrollSize: 18,
  1150. HandleEvent: function(e, t, n) {
  1151. return l.settings.CTRL && !e.ctrlKey ? !0 : l.settings.ALT && !e.altKey ? !0 : l.settings.CMD && !e.metaKey ? !0 : l.settings.Shift && !e.shiftKey ? !0 : l[t] ? l[t](e, n) : !0;
  1152. },
  1153. Click: function(e, t) {
  1154. if (this.settings.zoom === "Click") return this.Zoom(e, t);
  1155. },
  1156. DblClick: function(e, t) {
  1157. if (this.settings.zoom === "Double-Click") return this.Zoom(e, t);
  1158. },
  1159. Hover: function(e, t) {
  1160. return this.settings.zoom === "Hover" ? (this.Zoom(e, t), !0) : !1;
  1161. },
  1162. Zoom: function(n, r) {
  1163. this.Remove(), a.ClearHoverTimer(), f.ClearSelection();
  1164. var i = MathJax.OutputJax[r.jaxID], s = i.getJaxFromMath(r);
  1165. s.hover && a.UnHover(s);
  1166. var l = Math.floor(.85 * document.body.clientWidth), c = Math.floor(.85 * Math.max(document.body.clientHeight, document.documentElement.clientHeight)), h = t.Element("span", {
  1167. style: {
  1168. position: "relative",
  1169. display: "inline-block",
  1170. height: 0,
  1171. width: 0
  1172. },
  1173. id: "MathJax_ZoomFrame"
  1174. }, [ [ "span", {
  1175. id: "MathJax_ZoomOverlay",
  1176. onmousedown: this.Remove
  1177. } ], [ "span", {
  1178. id: "MathJax_Zoom",
  1179. onclick: this.Remove,
  1180. style: {
  1181. visibility: "hidden",
  1182. fontSize: this.settings.zscale,
  1183. "max-width": l + "px",
  1184. "max-height": c + "px"
  1185. }
  1186. }, [ [ "span", {
  1187. style: {
  1188. display: "inline-block",
  1189. "white-space": "nowrap"
  1190. }
  1191. } ] ] ] ]), p = h.lastChild, v = p.firstChild, m = h.firstChild;
  1192. r.parentNode.insertBefore(h, r), r.parentNode.insertBefore(r, h), v.addEventListener && v.addEventListener("mousedown", this.Remove, !0);
  1193. if (this.msieTrapEventBug) {
  1194. var y = t.Element("span", {
  1195. id: "MathJax_ZoomEventTrap",
  1196. onmousedown: this.Remove
  1197. });
  1198. h.insertBefore(y, p);
  1199. }
  1200. if (this.msieZIndexBug) {
  1201. var w = t.addElement(document.body, "img", {
  1202. src: "about:blank",
  1203. id: "MathJax_ZoomTracker",
  1204. width: 0,
  1205. height: 0,
  1206. style: {
  1207. width: 0,
  1208. height: 0,
  1209. position: "relative"
  1210. }
  1211. });
  1212. h.style.position = "relative", h.style.zIndex = o.styles["#MathJax_ZoomOverlay"]["z-index"], h = w;
  1213. }
  1214. var E = i.Zoom(s, v, r, l, c);
  1215. return this.msiePositionBug && (this.msieSizeBug && (p.style.height = E.zH + "px", p.style.width = E.zW + "px"), p.offsetHeight > c && (p.style.height = c + "px", p.style.width = E.zW + this.scrollSize + "px"), p.offsetWidth > l && (p.style.width = l + "px", p.style.height = E.zH + this.scrollSize + "px")), this.operaPositionBug && (p.style.width = Math.min(l, E.zW) + "px"), p.offsetWidth < l && p.offsetHeight < c && (p.style.overflow = "visible"), this.Position(p, E), this.msieTrapEventBug && (y.style.height = p.clientHeight + "px", y.style.width = p.clientWidth + "px", y.style.left = parseFloat(p.style.left) + p.clientLeft + "px", y.style.top = parseFloat(p.style.top) + p.clientTop + "px"), p.style.visibility = "", this.settings.zoom === "Hover" && (m.onmouseover = this.Remove), window.addEventListener ? addEventListener("resize", this.Resize, !1) : window.attachEvent ? attachEvent("onresize", this.Resize) : (this.onresize = window.onresize, window.onresize = this.Resize), e.signal.Post([ "math zoomed", s ]), u(n);
  1216. },
  1217. Position: function(e, t) {
  1218. var n = this.Resize(), r = n.x, i = n.y, s = t.mW, o = -s - Math.floor((e.offsetWidth - s) / 2), u = t.Y;
  1219. e.style.left = Math.max(o, 10 - r) + "px", e.style.top = Math.max(u, 10 - i) + "px", l.msiePositionBug || l.SetWH();
  1220. },
  1221. Resize: function(e) {
  1222. l.onresize && l.onresize(e);
  1223. var t = 0, n = 0, r, i = document.getElementById("MathJax_ZoomFrame"), s = document.getElementById("MathJax_ZoomOverlay");
  1224. r = i;
  1225. while (r.offsetParent) t += r.offsetLeft, r = r.offsetParent;
  1226. l.operaPositionBug && (i.style.border = "1px solid"), r = i;
  1227. while (r.offsetParent) n += r.offsetTop, r = r.offsetParent;
  1228. return l.operaPositionBug && (i.style.border = ""), s.style.left = -t + "px", s.style.top = -n + "px", l.msiePositionBug ? setTimeout(l.SetWH, 0) : l.SetWH(), {
  1229. x: t,
  1230. y: n
  1231. };
  1232. },
  1233. SetWH: function() {
  1234. var e = document.getElementById("MathJax_ZoomOverlay");
  1235. e.style.width = e.style.height = "1px";
  1236. var t = document.documentElement || document.body;
  1237. e.style.width = t.scrollWidth + "px", e.style.height = Math.max(t.clientHeight, t.scrollHeight) + "px";
  1238. },
  1239. Remove: function(n) {
  1240. var r = document.getElementById("MathJax_ZoomFrame");
  1241. if (r) {
  1242. var i = MathJax.OutputJax[r.previousSibling.jaxID], s = i.getJaxFromMath(r.previousSibling);
  1243. e.signal.Post([ "math unzoomed", s ]), r.parentNode.removeChild(r), r = document.getElementById("MathJax_ZoomTracker"), r && r.parentNode.removeChild(r);
  1244. if (l.operaRefreshBug) {
  1245. var o = t.addElement(document.body, "div", {
  1246. style: {
  1247. position: "fixed",
  1248. left: 0,
  1249. top: 0,
  1250. width: "100%",
  1251. height: "100%",
  1252. backgroundColor: "white",
  1253. opacity: 0
  1254. },
  1255. id: "MathJax_OperaDiv"
  1256. });
  1257. document.body.removeChild(o);
  1258. }
  1259. window.removeEventListener ? removeEventListener("resize", l.Resize, !1) : window.detachEvent ? detachEvent("onresize", l.Resize) : (window.onresize = l.onresize, delete l.onresize);
  1260. }
  1261. return u(n);
  1262. }
  1263. };
  1264. e.Browser.Select({
  1265. MSIE: function(e) {
  1266. var t = document.documentMode || 0, n = t >= 9;
  1267. l.msiePositionBug = !n, l.msieSizeBug = e.versionAtLeast("7.0") && (!document.documentMode || t === 7 || t === 8), l.msieZIndexBug = t <= 7, l.msieInlineBlockAlignBug = t <= 7, l.msieTrapEventBug = !window.addEventListener, document.compatMode === "BackCompat" && (l.scrollSize = 52), n && delete o.styles["#MathJax_Zoom"].filter;
  1268. },
  1269. Opera: function(e) {
  1270. l.operaPositionBug = !0, l.operaRefreshBug = !0;
  1271. }
  1272. }), l.topImg = l.msieInlineBlockAlignBug ? t.Element("img", {
  1273. style: {
  1274. width: 0,
  1275. height: 0,
  1276. position: "relative"
  1277. },
  1278. src: "about:blank"
  1279. }) : t.Element("span", {
  1280. style: {
  1281. width: 0,
  1282. height: 0,
  1283. display: "inline-block"
  1284. }
  1285. });
  1286. if (l.operaPositionBug || l.msieTopBug) l.topImg.style.border = "1px solid";
  1287. MathJax.Callback.Queue([ "StartupHook", MathJax.Hub.Register, "Begin Styles", {} ], [ "Styles", n, o.styles ], [ "Post", e.Startup.signal, "MathZoom Ready" ], [ "loadComplete", n, "[MathJax]/extensions/MathZoom.js" ]);
  1288. }(MathJax.Hub, MathJax.HTML, MathJax.Ajax, MathJax.OutputJax["HTML-CSS"], MathJax.OutputJax.NativeMML), MathJax.Extension["TeX/AMSmath"] = {
  1289. version: "2.1",
  1290. number: 0,
  1291. startNumber: 0,
  1292. labels: {},
  1293. eqlabels: {},
  1294. refs: []
  1295. }, MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() {
  1296. var e = MathJax.ElementJax.mml, t = MathJax.InputJax.TeX, n = MathJax.Extension["TeX/AMSmath"], r = t.Definitions, i = t.Stack.Item, s = t.config.equationNumbers, o = function(e) {
  1297. var n = [];
  1298. for (var r = 0, i = e.length; r < i; r++) n[r] = t.Parse.prototype.Em(e[r]);
  1299. return n.join(" ");
  1300. };
  1301. r.Add({
  1302. mathchar0mo: {
  1303. iiiint: [ "2A0C", {
  1304. texClass: e.TEXCLASS.OP
  1305. } ]
  1306. },
  1307. macros: {
  1308. mathring: [ "Accent", "2DA" ],
  1309. nobreakspace: "Tilde",
  1310. negmedspace: [ "Spacer", e.LENGTH.NEGATIVEMEDIUMMATHSPACE ],
  1311. negthickspace: [ "Spacer", e.LENGTH.NEGATIVETHICKMATHSPACE ],
  1312. idotsint: [ "MultiIntegral", "\\int\\cdots\\int" ],
  1313. dddot: [ "Accent", "20DB" ],
  1314. ddddot: [ "Accent", "20DC" ],
  1315. sideset: [ "Macro", "\\mathop{\\mathop{\\rlap{\\phantom{#3}}}\\nolimits#1\\!\\mathop{#3}\\nolimits#2}", 3 ],
  1316. boxed: [ "Macro", "\\fbox{$\\displaystyle{#1}$}", 1 ],
  1317. tag: "HandleTag",
  1318. notag: "HandleNoTag",
  1319. label: "HandleLabel",
  1320. ref: "HandleRef",
  1321. eqref: [ "HandleRef", !0 ],
  1322. substack: [ "Macro", "\\begin{subarray}{c}#1\\end{subarray}", 1 ],
  1323. injlim: [ "NamedOp", "inj&thinsp;lim" ],
  1324. projlim: [ "NamedOp", "proj&thinsp;lim" ],
  1325. varliminf: [ "Macro", "\\mathop{\\underline{\\mmlToken{mi}{lim}}}" ],
  1326. varlimsup: [ "Macro", "\\mathop{\\overline{\\mmlToken{mi}{lim}}}" ],
  1327. varinjlim: [ "Macro", "\\mathop{\\underrightarrow{\\mmlToken{mi}{lim}\\Rule{-1pt}{0pt}{1pt}}\\Rule{0pt}{0pt}{.45em}}" ],
  1328. varprojlim: [ "Macro", "\\mathop{\\underleftarrow{\\mmlToken{mi}{lim}\\Rule{-1pt}{0pt}{1pt}}\\Rule{0pt}{0pt}{.45em}}" ],
  1329. DeclareMathOperator: "HandleDeclareOp",
  1330. operatorname: "HandleOperatorName",
  1331. genfrac: "Genfrac",
  1332. frac: [ "Genfrac", "", "", "", "" ],
  1333. tfrac: [ "Genfrac", "", "", "", 1 ],
  1334. dfrac: [ "Genfrac", "", "", "", 0 ],
  1335. binom: [ "Genfrac", "(", ")", "0em", "" ],
  1336. tbinom: [ "Genfrac", "(", ")", "0em", 1 ],
  1337. dbinom: [ "Genfrac", "(", ")", "0em", 0 ],
  1338. cfrac: "CFrac",
  1339. shoveleft: [ "HandleShove", e.ALIGN.LEFT ],
  1340. shoveright: [ "HandleShove", e.ALIGN.RIGHT ],
  1341. xrightarrow: [ "xArrow", 8594, 5, 6 ],
  1342. xleftarrow: [ "xArrow", 8592, 7, 3 ]
  1343. },
  1344. environment: {
  1345. align: [ "AMSarray", null, !0, !0, "rlrlrlrlrlrl", o([ 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18 ]) ],
  1346. "align*": [ "AMSarray", null, !1, !0, "rlrlrlrlrlrl", o([ 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18 ]) ],
  1347. multline: [ "Multline", null, !0 ],
  1348. "multline*": [ "Multline", null, !1 ],
  1349. split: [ "AMSarray", null, !1, !1, "rl", o([ 5 / 18 ]) ],
  1350. gather: [ "AMSarray", null, !0, !0, "c" ],
  1351. "gather*": [ "AMSarray", null, !1, !0, "c" ],
  1352. alignat: [ "AlignAt", null, !0, !0 ],
  1353. "alignat*": [ "AlignAt", null, !1, !0 ],
  1354. alignedat: [ "AlignAt", null, !1, !1 ],
  1355. aligned: [ "AlignedArray", null, null, null, "rlrlrlrlrlrl", o([ 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18, 2, 5 / 18 ]), ".5em", "D" ],
  1356. gathered: [ "AlignedArray", null, null, null, "c", null, ".5em", "D" ],
  1357. subarray: [ "Array", null, null, null, null, o([ 0, 0, 0, 0 ]), "0.1em", "S", 1 ],
  1358. smallmatrix: [ "Array", null, null, null, "c", o([ 1 / 3 ]), ".2em", "S", 1 ],
  1359. equation: [ "EquationBegin", "Equation", !0 ],
  1360. "equation*": [ "EquationBegin", "EquationStar", !1 ],
  1361. eqnarray: [ "AMSarray", null, !0, !0, "rcl", e.LENGTH.THICKMATHSPACE, ".5em" ],
  1362. "eqnarray*": [ "AMSarray", null, !1, !0, "rcl", e.LENGTH.THICKMATHSPACE, ".5em" ]
  1363. },
  1364. delimiter: {
  1365. "\\lvert": [ "2223", {
  1366. texClass: e.TEXCLASS.OPEN
  1367. } ],
  1368. "\\rvert": [ "2223", {
  1369. texClass: e.TEXCLASS.CLOSE
  1370. } ],
  1371. "\\lVert": [ "2225", {
  1372. texClass: e.TEXCLASS.OPEN
  1373. } ],
  1374. "\\rVert": [ "2225", {
  1375. texClass: e.TEXCLASS.CLOSE
  1376. } ]
  1377. }
  1378. }, null, !0), t.Parse.Augment({
  1379. HandleTag: function(n) {
  1380. var r = this.GetStar(), i = this.trimSpaces(this.GetArgument(n)), o = i;
  1381. r || (i = s.formatTag(i));
  1382. var u = this.stack.global;
  1383. u.tagID = o, u.notags && t.Error(n + " not allowed in " + u.notags + " environment"), u.tag && t.Error("Multiple " + n), u.tag = e.mtd.apply(e, this.InternalMath(i)).With({
  1384. id: s.formatID(o)
  1385. });
  1386. },
  1387. HandleNoTag: function(e) {
  1388. this.stack.global.tag && delete this.stack.global.tag, this.stack.global.notag = !0;
  1389. },
  1390. HandleLabel: function(e) {
  1391. var r = this.stack.global, i = this.GetArgument(e);
  1392. if (i === "") return;
  1393. n.refUpdate || (r.label && t.Error("Multiple " + e + "'s"), r.label = i, (n.labels[i] || n.eqlabels[i]) && t.Error("Label '" + i + "' mutiply defined"), n.eqlabels[i] = "???");
  1394. },
  1395. HandleRef: function(t, r) {
  1396. var i = this.GetArgument(t), o = n.labels[i] || n.eqlabels[i];
  1397. o || (o = "??", n.badref = !n.refUpdate);
  1398. var u = o;
  1399. r && (u = s.formatTag(u)), s.useLabelIds && (o = i), this.Push(e.mrow.apply(e, this.InternalMath(u)).With({
  1400. href: s.formatURL(s.formatID(o)),
  1401. "class": "MathJax_ref"
  1402. }));
  1403. },
  1404. HandleDeclareOp: function(e) {
  1405. var n = this.GetStar() ? "\\limits" : "", r = this.trimSpaces(this.GetArgument(e));
  1406. r.charAt(0) == "\\" && (r = r.substr(1));
  1407. var i = this.GetArgument(e);
  1408. i = i.replace(/\*/g, "\\text{*}").replace(/-/g, "\\text{-}"), t.Definitions.macros[r] = [ "Macro", "\\mathop{\\rm " + i + "}" + n ];
  1409. },
  1410. HandleOperatorName: function(e) {
  1411. var t = this.GetStar() ? "\\limits" : "\\nolimits", n = this.trimSpaces(this.GetArgument(e));
  1412. n = n.replace(/\*/g, "\\text{*}").replace(/-/g, "\\text{-}"), this.string = "\\mathop{\\rm " + n + "}" + t + " " + this.string.slice(this.i), this.i = 0;
  1413. },
  1414. HandleShove: function(e, n) {
  1415. var r = this.stack.Top();
  1416. (r.type !== "multline" || r.data.length) && t.Error(e + " must come at the beginning of the line"), r.data.shove = n;
  1417. },
  1418. CFrac: function(n) {
  1419. var r = this.trimSpaces(this.GetBrackets(n, "")), i = this.GetArgument(n), s = this.GetArgument(n), o = e.mfrac(t.Parse("\\strut\\textstyle{" + i + "}", this.stack.env).mml(), t.Parse("\\strut\\textstyle{" + s + "}", this.stack.env).mml());
  1420. r = {
  1421. l: e.ALIGN.LEFT,
  1422. r: e.ALIGN.RIGHT,
  1423. "": ""
  1424. }[r], r == null && t.Error("Illegal alignment specified in " + n), r && (o.numalign = o.denomalign = r), this.Push(o);
  1425. },
  1426. Genfrac: function(n, r, i, s, o) {
  1427. r == null ? r = this.GetDelimiterArg(n) : r = this.convertDelimiter(r), i == null ? i = this.GetDelimiterArg(n) : i = this.convertDelimiter(i), s == null && (s = this.GetArgument(n)), o == null && (o = this.trimSpaces(this.GetArgument(n)));
  1428. var u = this.ParseArg(n), a = this.ParseArg(n), f = e.mfrac(u, a);
  1429. s !== "" && (f.linethickness = s);
  1430. if (r || i) f = e.mfenced(f).With({
  1431. open: r,
  1432. close: i
  1433. });
  1434. if (o !== "") {
  1435. var l = [ "D", "T", "S", "SS" ][o];
  1436. l == null && t.Error("Bad math style for " + n), f = e.mstyle(f), l === "D" ? (f.displaystyle = !0, f.scriptlevel = 0) : (f.displaystyle = !1, f.scriptlevel = o - 1);
  1437. }
  1438. this.Push(f);
  1439. },
  1440. Multline: function(e, n) {
  1441. return this.Push(e), this.checkEqnEnv(), i.multline(n, this.stack).With({
  1442. arraydef: {
  1443. displaystyle: !0,
  1444. rowspacing: ".5em",
  1445. width: t.config.MultLineWidth,
  1446. columnwidth: "100%",
  1447. side: t.config.TagSide,
  1448. minlabelspacing: t.config.TagIndent
  1449. }
  1450. });
  1451. },
  1452. AMSarray: function(e, n, r, s, o) {
  1453. return this.Push(e), r && this.checkEqnEnv(), s = s.replace(/[^clr]/g, "").split("").join(" "), s = s.replace(/l/g, "left").replace(/r/g, "right").replace(/c/g, "center"), i.AMSarray(e.name, n, r, this.stack).With({
  1454. arraydef: {
  1455. displaystyle: !0,
  1456. rowspacing: ".5em",
  1457. columnalign: s,
  1458. columnspacing: o || "1em",
  1459. rowspacing: "3pt",
  1460. side: t.config.TagSide,
  1461. minlabelspacing: t.config.TagIndent
  1462. }
  1463. });
  1464. },
  1465. AlignAt: function(e, n, r) {
  1466. var i, s, o = "", u = [];
  1467. r || (s = this.GetBrackets("\\begin{" + e.name + "}")), i = this.GetArgument("\\begin{" + e.name + "}"), i.match(/[^0-9]/) && t.Error("Argument to \\begin{" + e.name + "} must me a positive integer");
  1468. while (i > 0) o += "rl", u.push("0em 0em"), i--;
  1469. u = u.join(" ");
  1470. if (r) return this.AMSarray(e, n, r, o, u);
  1471. var a = this.Array.call(this, e, null, null, o, u, ".5em", "D");
  1472. return this.setArrayAlign(a, s);
  1473. },
  1474. EquationBegin: function(e, t) {
  1475. return this.checkEqnEnv(), this.stack.global.forcetag = t && s.autoNumber !== "none", e;
  1476. },
  1477. EquationStar: function(e, t) {
  1478. return this.stack.global.tagged = !0, t;
  1479. },
  1480. checkEqnEnv: function() {
  1481. this.stack.global.eqnenv && t.Error("Erroneous nesting of equation structures"), this.stack.global.eqnenv = !0;
  1482. },
  1483. MultiIntegral: function(e, t) {
  1484. var n = this.GetNext();
  1485. if (n === "\\") {
  1486. var r = this.i;
  1487. n = this.GetArgument(e), this.i = r, n === "\\limits" && (e === "\\idotsint" ? t = "\\!\\!\\mathop{\\,\\," + t + "}" : t = "\\!\\!\\!\\mathop{\\,\\,\\," + t + "}");
  1488. }
  1489. this.string = t + " " + this.string.slice(this.i), this.i = 0;
  1490. },
  1491. xArrow: function(n, r, i, s) {
  1492. var o = {
  1493. width: "+" + (i + s) + "mu",
  1494. lspace: i + "mu"
  1495. }, u = this.GetBrackets(n), a = this.ParseArg(n), f = e.mo(e.chars(String.fromCharCode(r))).With({
  1496. stretchy: !0,
  1497. texClass: e.TEXCLASS.REL
  1498. }), l = e.munderover(f);
  1499. l.SetData(l.over, e.mpadded(a).With(o).With({
  1500. voffset: ".15em"
  1501. })), u && (u = t.Parse(u, this.stack.env).mml(), l.SetData(l.under, e.mpadded(u).With(o).With({
  1502. voffset: "-.24em"
  1503. }))), this.Push(l);
  1504. },
  1505. GetDelimiterArg: function(e) {
  1506. var n = this.trimSpaces(this.GetArgument(e));
  1507. return n == "" ? null : (r.delimiter[n] == null && t.Error("Missing or unrecognized delimiter for " + e), this.convertDelimiter(n));
  1508. },
  1509. GetStar: function() {
  1510. var e = this.GetNext() === "*";
  1511. return e && this.i++, e;
  1512. }
  1513. }), i.Augment({
  1514. autoTag: function() {
  1515. var r = this.global;
  1516. if (!r.notag) {
  1517. n.number++, r.tagID = s.formatNumber(n.number.toString());
  1518. var i = t.Parse("\\text{" + s.formatTag(r.tagID) + "}", {}).mml();
  1519. r.tag = e.mtd(i.With({
  1520. id: s.formatID(r.tagID)
  1521. }));
  1522. }
  1523. },
  1524. getTag: function() {
  1525. var e = this.global, t = e.tag;
  1526. return e.tagged = !0, e.label && (n.eqlabels[e.label] = e.tagID, s.useLabelIds && (t.id = s.formatID(e.label))), delete e.tag, delete e.tagID, delete e.label, t;
  1527. }
  1528. }), i.multline = i.array.Subclass({
  1529. type: "multline",
  1530. Init: function(e, t) {
  1531. this.SUPER(arguments).Init.apply(this), this.numbered = e && s.autoNumber !== "none", this.save = {
  1532. notag: t.global.notag
  1533. }, t.global.tagged = !e && !t.global.forcetag;
  1534. },
  1535. EndEntry: function() {
  1536. var t = e.mtd.apply(e, this.data);
  1537. this.data.shove && (t.columnalign = this.data.shove), this.row.push(t), this.data = [];
  1538. },
  1539. EndRow: function() {
  1540. this.row.length != 1 && t.Error("multline rows must have exactly one column"), this.table.push(this.row), this.row = [];
  1541. },
  1542. EndTable: function() {
  1543. this.SUPER(arguments).EndTable.call(this);
  1544. if (this.table.length) {
  1545. var t = this.table.length - 1, n, r = -1;
  1546. this.table[0][0].columnalign || (this.table[0][0].columnalign = e.ALIGN.LEFT), this.table[t][0].columnalign || (this.table[t][0].columnalign = e.ALIGN.RIGHT), !this.global.tag && this.numbered && this.autoTag(), this.global.tag && !this.global.notags && (r = this.arraydef.side === "left" ? 0 : this.table.length - 1, this.table[r] = [ this.getTag() ].concat(this.table[r]));
  1547. for (n = 0, t = this.table.length; n < t; n++) {
  1548. var i = n === r ? e.mlabeledtr : e.mtr;
  1549. this.table[n] = i.apply(e, this.table[n]);
  1550. }
  1551. }
  1552. this.global.notag = this.save.notag;
  1553. }
  1554. }), i.AMSarray = i.array.Subclass({
  1555. type: "AMSarray",
  1556. Init: function(e, t, n, r) {
  1557. this.SUPER(arguments).Init.apply(this), this.numbered = t && s.autoNumber !== "none", this.save = {
  1558. notags: r.global.notags,
  1559. notag: r.global.notag
  1560. }, r.global.notags = n ? null : e, r.global.tagged = !t && !r.global.forcetag;
  1561. },
  1562. EndRow: function() {
  1563. var t = e.mtr;
  1564. !this.global.tag && this.numbered && this.autoTag(), this.global.tag && !this.global.notags && (this.row = [ this.getTag() ].concat(this.row), t = e.mlabeledtr), this.numbered && delete this.global.notag, this.table.push(t.apply(e, this.row)), this.row = [];
  1565. },
  1566. EndTable: function() {
  1567. this.SUPER(arguments).EndTable.call(this), this.global.notags = this.save.notags, this.global.notag = this.save.notag;
  1568. }
  1569. }), i.start.Augment({
  1570. oldCheckItem: i.start.prototype.checkItem,
  1571. checkItem: function(r) {
  1572. if (r.type === "stop") {
  1573. var o = this.mmlData(), u = this.global;
  1574. n.display && !u.tag && !u.tagged && !u.isInner && (s.autoNumber === "all" || u.forcetag) && this.autoTag();
  1575. if (u.tag) {
  1576. var l = [ this.getTag(), e.mtd(o) ], c = {
  1577. side: t.config.TagSide,
  1578. minlabelspacing: t.config.TagIndent,
  1579. columnalign: o.displayAlign
  1580. };
  1581. o.displayAlign === e.INDENTALIGN.LEFT ? (c.width = "100%", o.displayIndent && !String(o.displayIndent).match(/^0+(\.0*)?($|[a-z%])/) && (c.columnwidth = o.displayIndent + " fit", c.columnspacing = "0", l = [ l[0], e.mtd(), l[1] ])) : o.displayAlign === e.INDENTALIGN.RIGHT && (c.width = "100%", o.displayIndent && !String(o.displayIndent).match(/^0+(\.0*)?($|[a-z%])/) && (c.columnwidth = "fit " + o.displayIndent, c.columnspacing = "0", l[2] = e.mtd())), o = e.mtable(e.mlabeledtr.apply(e, l)).With(c);
  1582. }
  1583. return i.mml(o);
  1584. }
  1585. return this.oldCheckItem.call(this, r);
  1586. }
  1587. }), t.prefilterHooks.Add(function(e) {
  1588. n.display = e.display, n.number = n.startNumber, n.eqlabels = {}, n.badref = !1, n.refUpdate && (n.number = e.script.MathJax.startNumber);
  1589. }), t.postfilterHooks.Add(function(e) {
  1590. e.script.MathJax.startNumber = n.startNumber, n.startNumber = n.number, MathJax.Hub.Insert(n.labels, n.eqlabels), n.badref && !e.math.texError && n.refs.push(e.script);
  1591. }), MathJax.Hub.Register.MessageHook("Begin Math Input", function() {
  1592. n.refs = [], n.refUpdate = !1;
  1593. }), MathJax.Hub.Register.MessageHook("End Math Input", function(e) {
  1594. if (n.refs.length) {
  1595. n.refUpdate = !0;
  1596. for (var t = 0, r = n.refs.length; t < r; t++) n.refs[t].MathJax.state = MathJax.ElementJax.STATE.UPDATE;
  1597. return MathJax.Hub.processInput({
  1598. scripts: n.refs,
  1599. start: (new Date).getTime(),
  1600. i: 0,
  1601. j: 0,
  1602. jax: {},
  1603. jaxIDs: []
  1604. });
  1605. }
  1606. return null;
  1607. }), t.resetEquationNumbers = function(e, t) {
  1608. n.startNumber = e || 0, t || (n.labels = {});
  1609. }, MathJax.Hub.Startup.signal.Post("TeX AMSmath Ready");
  1610. }), MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMSmath.js"), MathJax.Extension["TeX/AMSsymbols"] = {
  1611. version: "2.1"
  1612. }, MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() {
  1613. var e = MathJax.ElementJax.mml, t = MathJax.InputJax.TeX.Definitions;
  1614. t.Add({
  1615. mathchar0mi: {
  1616. digamma: "03DD",
  1617. varkappa: "03F0",
  1618. varGamma: [ "0393", {
  1619. mathvariant: e.VARIANT.ITALIC
  1620. } ],
  1621. varDelta: [ "0394", {
  1622. mathvariant: e.VARIANT.ITALIC
  1623. } ],
  1624. varTheta: [ "0398", {
  1625. mathvariant: e.VARIANT.ITALIC
  1626. } ],
  1627. varLambda: [ "039B", {
  1628. mathvariant: e.VARIANT.ITALIC
  1629. } ],
  1630. varXi: [ "039E", {
  1631. mathvariant: e.VARIANT.ITALIC
  1632. } ],
  1633. varPi: [ "03A0", {
  1634. mathvariant: e.VARIANT.ITALIC
  1635. } ],
  1636. varSigma: [ "03A3", {
  1637. mathvariant: e.VARIANT.ITALIC
  1638. } ],
  1639. varUpsilon: [ "03A5", {
  1640. mathvariant: e.VARIANT.ITALIC
  1641. } ],
  1642. varPhi: [ "03A6", {
  1643. mathvariant: e.VARIANT.ITALIC
  1644. } ],
  1645. varPsi: [ "03A8", {
  1646. mathvariant: e.VARIANT.ITALIC
  1647. } ],
  1648. varOmega: [ "03A9", {
  1649. mathvariant: e.VARIANT.ITALIC
  1650. } ],
  1651. beth: "2136",
  1652. gimel: "2137",
  1653. daleth: "2138",
  1654. backprime: [ "2035", {
  1655. variantForm: !0
  1656. } ],
  1657. hslash: "210F",
  1658. varnothing: [ "2205", {
  1659. variantForm: !0
  1660. } ],
  1661. blacktriangle: "25B4",
  1662. triangledown: [ "25BD", {
  1663. variantForm: !0
  1664. } ],
  1665. blacktriangledown: "25BE",
  1666. square: "25FB",
  1667. Box: "25FB",
  1668. blacksquare: "25FC",
  1669. lozenge: "25CA",
  1670. Diamond: "25CA",
  1671. blacklozenge: "29EB",
  1672. circledS: [ "24C8", {
  1673. mathvariant: e.VARIANT.NORMAL
  1674. } ],
  1675. bigstar: "2605",
  1676. sphericalangle: "2222",
  1677. measuredangle: "2221",
  1678. nexists: "2204",
  1679. complement: "2201",
  1680. mho: "2127",
  1681. eth: [ "00F0", {
  1682. mathvariant: e.VARIANT.NORMAL
  1683. } ],
  1684. Finv: "2132",
  1685. diagup: "2571",
  1686. Game: "2141",
  1687. diagdown: "2572",
  1688. Bbbk: [ "006B", {
  1689. mathvariant: e.VARIANT.DOUBLESTRUCK
  1690. } ],
  1691. yen: "00A5",
  1692. circledR: "00AE",
  1693. checkmark: "2713",
  1694. maltese: "2720"
  1695. },
  1696. mathchar0mo: {
  1697. dotplus: "2214",
  1698. ltimes: "22C9",
  1699. smallsetminus: "2216",
  1700. rtimes: "22CA",
  1701. Cap: "22D2",
  1702. doublecap: "22D2",
  1703. leftthreetimes: "22CB",
  1704. Cup: "22D3",
  1705. doublecup: "22D3",
  1706. rightthreetimes: "22CC",
  1707. barwedge: "22BC",
  1708. curlywedge: "22CF",
  1709. veebar: "22BB",
  1710. curlyvee: "22CE",
  1711. doublebarwedge: "2A5E",
  1712. boxminus: "229F",
  1713. circleddash: "229D",
  1714. boxtimes: "22A0",
  1715. circledast: "229B",
  1716. boxdot: "22A1",
  1717. circledcirc: "229A",
  1718. boxplus: "229E",
  1719. centerdot: "22C5",
  1720. divideontimes: "22C7",
  1721. intercal: "22BA",
  1722. leqq: "2266",
  1723. geqq: "2267",
  1724. leqslant: "2A7D",
  1725. geqslant: "2A7E",
  1726. eqslantless: "2A95",
  1727. eqslantgtr: "2A96",
  1728. lesssim: "2272",
  1729. gtrsim: "2273",
  1730. lessapprox: "2A85",
  1731. gtrapprox: "2A86",
  1732. approxeq: "224A",
  1733. lessdot: "22D6",
  1734. gtrdot: "22D7",
  1735. lll: "22D8",
  1736. llless: "22D8",
  1737. ggg: "22D9",
  1738. gggtr: "22D9",
  1739. lessgtr: "2276",
  1740. gtrless: "2277",
  1741. lesseqgtr: "22DA",
  1742. gtreqless: "22DB",
  1743. lesseqqgtr: "2A8B",
  1744. gtreqqless: "2A8C",
  1745. doteqdot: "2251",
  1746. Doteq: "2251",
  1747. eqcirc: "2256",
  1748. risingdotseq: "2253",
  1749. circeq: "2257",
  1750. fallingdotseq: "2252",
  1751. triangleq: "225C",
  1752. backsim: "223D",
  1753. thicksim: [ "223C", {
  1754. variantForm: !0
  1755. } ],
  1756. backsimeq: "22CD",
  1757. thickapprox: [ "2248", {
  1758. variantForm: !0
  1759. } ],
  1760. subseteqq: "2AC5",
  1761. supseteqq: "2AC6",
  1762. Subset: "22D0",
  1763. Supset: "22D1",
  1764. sqsubset: "228F",
  1765. sqsupset: "2290",
  1766. preccurlyeq: "227C",
  1767. succcurlyeq: "227D",
  1768. curlyeqprec: "22DE",
  1769. curlyeqsucc: "22DF",
  1770. precsim: "227E",
  1771. succsim: "227F",
  1772. precapprox: "2AB7",
  1773. succapprox: "2AB8",
  1774. vartriangleleft: "22B2",
  1775. lhd: "22B2",
  1776. vartriangleright: "22B3",
  1777. rhd: "22B3",
  1778. trianglelefteq: "22B4",
  1779. unlhd: "22B4",
  1780. trianglerighteq: "22B5",
  1781. unrhd: "22B5",
  1782. vDash: "22A8",
  1783. Vdash: "22A9",
  1784. Vvdash: "22AA",
  1785. smallsmile: "2323",
  1786. shortmid: [ "2223", {
  1787. variantForm: !0
  1788. } ],
  1789. smallfrown: "2322",
  1790. shortparallel: [ "2225", {
  1791. variantForm: !0
  1792. } ],
  1793. bumpeq: "224F",
  1794. between: "226C",
  1795. Bumpeq: "224E",
  1796. pitchfork: "22D4",
  1797. varpropto: "221D",
  1798. backepsilon: "220D",
  1799. blacktriangleleft: "25C2",
  1800. blacktriangleright: "25B8",
  1801. therefore: "2234",
  1802. because: "2235",
  1803. eqsim: "2242",
  1804. vartriangle: [ "25B3", {
  1805. variantForm: !0
  1806. } ],
  1807. Join: "22C8",
  1808. nless: "226E",
  1809. ngtr: "226F",
  1810. nleq: "2270",
  1811. ngeq: "2271",
  1812. nleqslant: [ "2A87", {
  1813. variantForm: !0
  1814. } ],
  1815. ngeqslant: [ "2A88", {
  1816. variantForm: !0
  1817. } ],
  1818. nleqq: [ "2270", {
  1819. variantForm: !0
  1820. } ],
  1821. ngeqq: [ "2271", {
  1822. variantForm: !0
  1823. } ],
  1824. lneq: "2A87",
  1825. gneq: "2A88",
  1826. lneqq: "2268",
  1827. gneqq: "2269",
  1828. lvertneqq: [ "2268", {
  1829. variantForm: !0
  1830. } ],
  1831. gvertneqq: [ "2269", {
  1832. variantForm: !0
  1833. } ],
  1834. lnsim: "22E6",
  1835. gnsim: "22E7",
  1836. lnapprox: "2A89",
  1837. gnapprox: "2A8A",
  1838. nprec: "2280",
  1839. nsucc: "2281",
  1840. npreceq: [ "22E0", {
  1841. variantForm: !0
  1842. } ],
  1843. nsucceq: [ "22E1", {
  1844. variantForm: !0
  1845. } ],
  1846. precneqq: "2AB5",
  1847. succneqq: "2AB6",
  1848. precnsim: "22E8",
  1849. succnsim: "22E9",
  1850. precnapprox: "2AB9",
  1851. succnapprox: "2ABA",
  1852. nsim: "2241",
  1853. ncong: "2246",
  1854. nshortmid: [ "2224", {
  1855. variantForm: !0
  1856. } ],
  1857. nshortparallel: [ "2226", {
  1858. variantForm: !0
  1859. } ],
  1860. nmid: "2224",
  1861. nparallel: "2226",
  1862. nvdash: "22AC",
  1863. nvDash: "22AD",
  1864. nVdash: "22AE",
  1865. nVDash: "22AF",
  1866. ntriangleleft: "22EA",
  1867. ntriangleright: "22EB",
  1868. ntrianglelefteq: "22EC",
  1869. ntrianglerighteq: "22ED",
  1870. nsubseteq: "2288",
  1871. nsupseteq: "2289",
  1872. nsubseteqq: [ "2288", {
  1873. variantForm: !0
  1874. } ],
  1875. nsupseteqq: [ "2289", {
  1876. variantForm: !0
  1877. } ],
  1878. subsetneq: "228A",
  1879. supsetneq: "228B",
  1880. varsubsetneq: [ "228A", {
  1881. variantForm: !0
  1882. } ],
  1883. varsupsetneq: [ "228B", {
  1884. variantForm: !0
  1885. } ],
  1886. subsetneqq: "2ACB",
  1887. supsetneqq: "2ACC",
  1888. varsubsetneqq: [ "2ACB", {
  1889. variantForm: !0
  1890. } ],
  1891. varsupsetneqq: [ "2ACC", {
  1892. variantForm: !0
  1893. } ],
  1894. leftleftarrows: "21C7",
  1895. rightrightarrows: "21C9",
  1896. leftrightarrows: "21C6",
  1897. rightleftarrows: "21C4",
  1898. Lleftarrow: "21DA",
  1899. Rrightarrow: "21DB",
  1900. twoheadleftarrow: "219E",
  1901. twoheadrightarrow: "21A0",
  1902. leftarrowtail: "21A2",
  1903. rightarrowtail: "21A3",
  1904. looparrowleft: "21AB",
  1905. looparrowright: "21AC",
  1906. leftrightharpoons: "21CB",
  1907. rightleftharpoons: [ "21CC", {
  1908. variantForm: !0
  1909. } ],
  1910. curvearrowleft: "21B6",
  1911. curvearrowright: "21B7",
  1912. circlearrowleft: "21BA",
  1913. circlearrowright: "21BB",
  1914. Lsh: "21B0",
  1915. Rsh: "21B1",
  1916. upuparrows: "21C8",
  1917. downdownarrows: "21CA",
  1918. upharpoonleft: "21BF",
  1919. upharpoonright: "21BE",
  1920. downharpoonleft: "21C3",
  1921. restriction: "21BE",
  1922. multimap: "22B8",
  1923. downharpoonright: "21C2",
  1924. leftrightsquigarrow: "21AD",
  1925. rightsquigarrow: "21DD",
  1926. leadsto: "21DD",
  1927. dashrightarrow: "21E2",
  1928. dashleftarrow: "21E0",
  1929. nleftarrow: "219A",
  1930. nrightarrow: "219B",
  1931. nLeftarrow: "21CD",
  1932. nRightarrow: "21CF",
  1933. nleftrightarrow: "21AE",
  1934. nLeftrightarrow: "21CE"
  1935. },
  1936. delimiter: {
  1937. "\\ulcorner": "231C",
  1938. "\\urcorner": "231D",
  1939. "\\llcorner": "231E",
  1940. "\\lrcorner": "231F"
  1941. },
  1942. macros: {
  1943. implies: [ "Macro", "\\;\\Longrightarrow\\;" ],
  1944. impliedby: [ "Macro", "\\;\\Longleftarrow\\;" ]
  1945. }
  1946. }, null, !0);
  1947. var n = e.mo.OPTYPES.REL;
  1948. MathJax.Hub.Insert(e.mo.prototype, {
  1949. OPTABLE: {
  1950. infix: {
  1951. "\u2322": n,
  1952. "\u2323": n,
  1953. "\u25b3": n,
  1954. "\ue006": n,
  1955. "\ue007": n,
  1956. "\ue00c": n,
  1957. "\ue00d": n,
  1958. "\ue00e": n,
  1959. "\ue00f": n,
  1960. "\ue010": n,
  1961. "\ue011": n,
  1962. "\ue016": n,
  1963. "\ue017": n,
  1964. "\ue018": n,
  1965. "\ue019": n,
  1966. "\ue01a": n,
  1967. "\ue01b": n,
  1968. "\ue04b": n,
  1969. "\ue04f": n
  1970. }
  1971. }
  1972. }), MathJax.Hub.Startup.signal.Post("TeX AMSsymbols Ready");
  1973. }), MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMSsymbols.js"), function(e, t) {
  1974. var n = "2.1", r = e.CombineConfig("TeX.noErrors", {
  1975. disabled: !1,
  1976. multiLine: !0,
  1977. inlineDelimiters: [ "", "" ],
  1978. style: {
  1979. "font-size": "90%",
  1980. "text-align": "left",
  1981. color: "black",
  1982. padding: "1px 3px",
  1983. border: "1px solid"
  1984. }
  1985. }), i = "\u00a0";
  1986. MathJax.Extension["TeX/noErrors"] = {
  1987. version: n,
  1988. config: r
  1989. }, e.Register.StartupHook("TeX Jax Ready", function() {
  1990. var t = MathJax.InputJax.TeX.formatError;
  1991. MathJax.InputJax.TeX.Augment({
  1992. formatError: function(n, s, o, u) {
  1993. if (r.disabled) return t.apply(this, arguments);
  1994. var l = n.message.replace(/\n.*/, "");
  1995. e.signal.Post([ "TeX Jax - parse error", l, s, o, u ]);
  1996. var h = r.inlineDelimiters, p = o || r.multiLine;
  1997. return o || (s = h[0] + s + h[1]), p ? s = s.replace(/ /g, i) : s = s.replace(/\n/g, " "), MathJax.ElementJax.mml.merror(s).With({
  1998. isError: !0,
  1999. multiLine: p
  2000. });
  2001. }
  2002. });
  2003. }), e.Register.StartupHook("HTML-CSS Jax Config", function() {
  2004. e.Config({
  2005. "HTML-CSS": {
  2006. styles: {
  2007. ".MathJax .noError": e.Insert({
  2008. "vertical-align": e.Browser.isMSIE && r.multiLine ? "-2px" : ""
  2009. }, r.style)
  2010. }
  2011. }
  2012. });
  2013. }), e.Register.StartupHook("HTML-CSS Jax Ready", function() {
  2014. var e = MathJax.ElementJax.mml, t = MathJax.OutputJax["HTML-CSS"], n = e.math.prototype.toHTML, r = e.merror.prototype.toHTML;
  2015. e.math.Augment({
  2016. toHTML: function(e, t) {
  2017. var r = this.data[0];
  2018. return r && r.data[0] && r.data[0].isError ? (e.style.fontSize = "", e = this.HTMLcreateSpan(e), e.bbox = r.data[0].toHTML(e).bbox) : e = n.call(this, e, t), e;
  2019. }
  2020. }), e.merror.Augment({
  2021. toHTML: function(e) {
  2022. if (!this.isError) return r.call(this, e);
  2023. e = this.HTMLcreateSpan(e), e.className = "noError", this.multiLine && (e.style.display = "inline-block");
  2024. var n = this.data[0].data[0].data.join("").split(/\n/);
  2025. for (var i = 0, s = n.length; i < s; i++) t.addText(e, n[i]), i !== s - 1 && t.addElement(e, "br", {
  2026. isMathJax: !0
  2027. });
  2028. var o = t.getHD(e.parentNode), u = t.getW(e.parentNode);
  2029. if (s > 1) {
  2030. var a = (o.h + o.d) / 2, f = t.TeX.x_height / 2;
  2031. e.parentNode.style.verticalAlign = t.Em(o.d + (f - a)), o.h = f + a, o.d = a - f;
  2032. }
  2033. return e.bbox = {
  2034. h: o.h,
  2035. d: o.d,
  2036. w: u,
  2037. lw: 0,
  2038. rw: u
  2039. }, e;
  2040. }
  2041. });
  2042. }), e.Register.StartupHook("SVG Jax Config", function() {
  2043. e.Config({
  2044. SVG: {
  2045. styles: {
  2046. ".MathJax_SVG .noError": e.Insert({
  2047. "vertical-align": e.Browser.isMSIE && r.multiLine ? "-2px" : ""
  2048. }, r.style)
  2049. }
  2050. }
  2051. });
  2052. }), e.Register.StartupHook("SVG Jax Ready", function() {
  2053. var e = MathJax.ElementJax.mml, n = e.math.prototype.toSVG, r = e.merror.prototype.toSVG;
  2054. e.math.Augment({
  2055. toSVG: function(e, t) {
  2056. var r = this.data[0];
  2057. return r && r.data[0] && r.data[0].isError ? e = r.data[0].toSVG(e) : e = n.call(this, e, t), e;
  2058. }
  2059. }), e.merror.Augment({
  2060. toSVG: function(e) {
  2061. if (!this.isError || this.Parent().type !== "math") return r.call(this, e);
  2062. e = t.addElement(e, "span", {
  2063. className: "noError",
  2064. isMathJax: !0
  2065. }), this.multiLine && (e.style.display = "inline-block");
  2066. var n = this.data[0].data[0].data.join("").split(/\n/);
  2067. for (var i = 0, s = n.length; i < s; i++) t.addText(e, n[i]), i !== s - 1 && t.addElement(e, "br", {
  2068. isMathJax: !0
  2069. });
  2070. if (s > 1) {
  2071. var o = e.offsetHeight / 2;
  2072. e.style.verticalAlign = -o + o / s + "px";
  2073. }
  2074. return e;
  2075. }
  2076. });
  2077. }), e.Register.StartupHook("NativeMML Jax Ready", function() {
  2078. var e = MathJax.ElementJax.mml, t = MathJax.Extension["TeX/noErrors"].config, n = e.math.prototype.toNativeMML, r = e.merror.prototype.toNativeMML;
  2079. e.math.Augment({
  2080. toNativeMML: function(e) {
  2081. var t = this.data[0];
  2082. return t && t.data[0] && t.data[0].isError ? e = t.data[0].toNativeMML(e) : e = n.call(this, e), e;
  2083. }
  2084. }), e.merror.Augment({
  2085. toNativeMML: function(e) {
  2086. if (!this.isError) return r.call(this, e);
  2087. e = e.appendChild(document.createElement("span"));
  2088. var n = this.data[0].data[0].data.join("").split(/\n/);
  2089. for (var i = 0, s = n.length; i < s; i++) e.appendChild(document.createTextNode(n[i])), i !== s - 1 && e.appendChild(document.createElement("br"));
  2090. this.multiLine && (e.style.display = "inline-block", s > 1 && (e.style.verticalAlign = "middle"));
  2091. for (var o in t.style) if (t.style.hasOwnProperty(o)) {
  2092. var u = o.replace(/-./g, function(e) {
  2093. return e.charAt(1).toUpperCase();
  2094. });
  2095. e.style[u] = t.style[o];
  2096. }
  2097. return e;
  2098. }
  2099. });
  2100. }), e.Startup.signal.Post("TeX noErrors Ready");
  2101. }(MathJax.Hub, MathJax.HTML), MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noErrors.js"), MathJax.Extension["TeX/noUndefined"] = {
  2102. version: "2.1",
  2103. config: MathJax.Hub.CombineConfig("TeX.noUndefined", {
  2104. disabled: !1,
  2105. attributes: {
  2106. mathcolor: "red"
  2107. }
  2108. })
  2109. }, MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() {
  2110. var e = MathJax.Extension["TeX/noUndefined"].config, t = MathJax.ElementJax.mml, n = MathJax.InputJax.TeX.Parse.prototype.csUndefined;
  2111. MathJax.InputJax.TeX.Parse.Augment({
  2112. csUndefined: function(r) {
  2113. if (e.disabled) return n.apply(this, arguments);
  2114. MathJax.Hub.signal.Post([ "TeX Jax - undefined control sequence", r ]), this.Push(t.mtext(r).With(e.attributes));
  2115. }
  2116. }), MathJax.Hub.Startup.signal.Post("TeX noUndefined Ready");
  2117. }), MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noUndefined.js"), MathJax.Extension["TeX/newcommand"] = {
  2118. version: "2.1"
  2119. }, MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() {
  2120. var e = MathJax.InputJax.TeX, t = e.Definitions;
  2121. t.Add({
  2122. macros: {
  2123. newcommand: "NewCommand",
  2124. renewcommand: "NewCommand",
  2125. newenvironment: "NewEnvironment",
  2126. renewenvironment: "NewEnvironment",
  2127. def: "MacroDef",
  2128. let: "Let"
  2129. }
  2130. }, null, !0), e.Parse.Augment({
  2131. NewCommand: function(t) {
  2132. var n = this.trimSpaces(this.GetArgument(t)), r = this.GetBrackets(t), i = this.GetBrackets(t), s = this.GetArgument(t);
  2133. n.charAt(0) === "\\" && (n = n.substr(1)), n.match(/^(.|[a-z]+)$/i) || e.Error("Illegal control sequence name for " + t), r && (r = this.trimSpaces(r), r.match(/^[0-9]+$/) || e.Error("Illegal number of parameters specified in " + t)), this.setDef(n, [ "Macro", s, r, i ]);
  2134. },
  2135. NewEnvironment: function(t) {
  2136. var n = this.trimSpaces(this.GetArgument(t)), r = this.GetBrackets(t), i = this.GetArgument(t), s = this.GetArgument(t);
  2137. r && (r = this.trimSpaces(r), r.match(/^[0-9]+$/) || e.Error("Illegal number of parameters specified in " + t)), this.setEnv(n, [ "BeginEnv", "EndEnv", i, s, r ]);
  2138. },
  2139. MacroDef: function(e) {
  2140. var t = this.GetCSname(e), n = this.GetTemplate(e, "\\" + t), r = this.GetArgument(e);
  2141. n instanceof Array ? this.setDef(t, [ "MacroWithTemplate", r ].concat(n)) : this.setDef(t, [ "Macro", r, n ]);
  2142. },
  2143. Let: function(e) {
  2144. var n = this.GetCSname(e), r, i = this.GetNext();
  2145. i === "=" && (this.i++, i = this.GetNext()), i === "\\" ? (e = this.GetCSname(e), r = this.csFindMacro(e), r || (t.mathchar0mi[e] ? r = [ "csMathchar0mi", t.mathchar0mi[e] ] : t.mathchar0mo[e] ? r = [ "csMathchar0mo", t.mathchar0mo[e] ] : t.mathchar7[e] ? r = [ "csMathchar7", t.mathchar7[e] ] : t.delimiter["\\" + e] != null && (r = [ "csDelimiter", t.delimiter["\\" + e] ]))) : (r = [ "Macro", i ], this.i++), this.setDef(n, r);
  2146. },
  2147. setDef: function(e, n) {
  2148. n.isUser = !0, t.macros[e] = n;
  2149. },
  2150. setEnv: function(e, n) {
  2151. n.isUser = !0, t.environment[e] = n;
  2152. },
  2153. GetCSname: function(t) {
  2154. var n = this.GetNext();
  2155. n !== "\\" && e.Error("\\ must be followed by a control sequence");
  2156. var r = this.trimSpaces(this.GetArgument(t));
  2157. return r.substr(1);
  2158. },
  2159. GetTemplate: function(t, n) {
  2160. var r, i = [], s = 0;
  2161. r = this.GetNext();
  2162. var o = this.i;
  2163. while (this.i < this.string.length) {
  2164. r = this.GetNext();
  2165. if (r === "#") o !== this.i && (i[s] = this.string.substr(o, this.i - o)), r = this.string.charAt(++this.i), r.match(/^[1-9]$/) || e.Error("Illegal use of # in template for " + n), parseInt(r) != ++s && e.Error("Parameters for " + n + " must be numbered sequentially"), o = this.i + 1; else if (r === "{") return o !== this.i && (i[s] = this.string.substr(o, this.i - o)), i.length > 0 ? [ s, i ] : s;
  2166. this.i++;
  2167. }
  2168. e.Error("Missing replacement string for definition of " + t);
  2169. },
  2170. MacroWithTemplate: function(t, n, r, i) {
  2171. if (r) {
  2172. var s = [];
  2173. this.GetNext(), i[0] && !this.MatchParam(i[0]) && e.Error("Use of " + t + " doesn't match its definition");
  2174. for (var o = 0; o < r; o++) s.push(this.GetParameter(t, i[o + 1]));
  2175. n = this.SubstituteArgs(s, n);
  2176. }
  2177. this.string = this.AddArgs(n, this.string.slice(this.i)), this.i = 0, ++this.macroCount > e.config.MAXMACROS && e.Error("MathJax maximum macro substitution count exceeded; is there a recursive macro call?");
  2178. },
  2179. BeginEnv: function(e, t, n, r) {
  2180. if (r) {
  2181. var i = [];
  2182. for (var s = 0; s < r; s++) i.push(this.GetArgument("\\begin{" + name + "}"));
  2183. t = this.SubstituteArgs(i, t), n = this.SubstituteArgs(i, n);
  2184. }
  2185. return e.edef = n, this.string = this.AddArgs(t, this.string.slice(this.i)), this.i = 0, e;
  2186. },
  2187. EndEnv: function(e, t) {
  2188. return this.string = this.AddArgs(e.edef, this.string.slice(this.i)), this.i = 0, t;
  2189. },
  2190. GetParameter: function(t, n) {
  2191. if (n == null) return this.GetArgument(t);
  2192. var r = this.i, i = 0, s = 0;
  2193. while (this.i < this.string.length) if (this.string.charAt(this.i) === "{") this.i === r && (s = 1), this.GetArgument(t), i = this.i - r; else {
  2194. if (this.MatchParam(n)) return s && (r++, i -= 2), this.string.substr(r, i);
  2195. this.i++, i++, s = 0;
  2196. }
  2197. e.Error("Runaway argument for " + t + "?");
  2198. },
  2199. MatchParam: function(e) {
  2200. return this.string.substr(this.i, e.length) !== e ? 0 : (this.i += e.length, 1);
  2201. }
  2202. }), e.Environment = function(e) {
  2203. t.environment[e] = [ "BeginEnv", "EndEnv" ].concat([].slice.call(arguments, 1)), t.environment[e].isUser = !0;
  2204. }, MathJax.Hub.Startup.signal.Post("TeX newcommand Ready");
  2205. }), MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/newcommand.js"), MathJax.Extension["TeX/boldsymbol"] = {
  2206. version: "2.1"
  2207. }, MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() {
  2208. var e = MathJax.ElementJax.mml, t = MathJax.InputJax.TeX, n = t.Definitions, r = {};
  2209. r[e.VARIANT.NORMAL] = e.VARIANT.BOLD, r[e.VARIANT.ITALIC] = e.VARIANT.BOLDITALIC, r[e.VARIANT.FRAKTUR] = e.VARIANT.BOLDFRAKTUR, r[e.VARIANT.SCRIPT] = e.VARIANT.BOLDSCRIPT, r[e.VARIANT.SANSSERIF] = e.VARIANT.BOLDSANSSERIF, r["-tex-caligraphic"] = "-tex-caligraphic-bold", r["-tex-oldstyle"] = "-tex-oldstyle-bold", n.Add({
  2210. macros: {
  2211. boldsymbol: "Boldsymbol"
  2212. }
  2213. }, null, !0), t.Parse.Augment({
  2214. mmlToken: function(t) {
  2215. if (this.stack.env.boldsymbol) {
  2216. var n = t.Get("mathvariant");
  2217. n == null ? t.mathvariant = e.VARIANT.BOLD : t.mathvariant = r[n] || n;
  2218. }
  2219. return t;
  2220. },
  2221. Boldsymbol: function(e) {
  2222. var t = this.stack.env.boldsymbol, n = this.stack.env.font;
  2223. this.stack.env.boldsymbol = !0, this.stack.env.font = null;
  2224. var r = this.ParseArg(e);
  2225. this.stack.env.font = n, this.stack.env.boldsymbol = t, this.Push(r);
  2226. }
  2227. }), MathJax.Hub.Startup.signal.Post("TeX boldsymbol Ready");
  2228. }), MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready", function() {
  2229. var e = MathJax.OutputJax["HTML-CSS"], t = e.FONTDATA.FONTS, n = e.FONTDATA.VARIANT;
  2230. e.fontInUse === "TeX" ? (t["MathJax_Caligraphic-bold"] = "Caligraphic/Bold/Main.js", n["-tex-caligraphic-bold"] = {
  2231. fonts: [ "MathJax_Caligraphic-bold", "MathJax_Main-bold", "MathJax_Main", "MathJax_Math", "MathJax_Size1" ],
  2232. offsetA: 65,
  2233. variantA: "bold-italic"
  2234. }, n["-tex-oldstyle-bold"] = {
  2235. fonts: [ "MathJax_Caligraphic-bold", "MathJax_Main-bold", "MathJax_Main", "MathJax_Math", "MathJax_Size1" ]
  2236. }, e.msieCheckGreek && e.Font.testFont({
  2237. family: "MathJax_Greek",
  2238. weight: "bold",
  2239. style: "italic",
  2240. testString: e.msieCheckGreek
  2241. }) && (n["bold-italic"].offsetG = 913, n["bold-italic"].variantG = "-Greek-Bold-Italic", n["-Greek-Bold-Italic"] = {
  2242. fonts: [ "MathJax_Greek-bold-italic" ]
  2243. }, t["MathJax_Greek-bold-italic"] = "Greek/BoldItalic/Main.js"), MathJax.Hub.Browser.isChrome && !MathJax.Hub.Browser.versionAtLeast("5.0") && (n["-tex-caligraphic-bold"].remap = {
  2244. 84: [ 58096, "-WinChrome" ]
  2245. })) : e.fontInUse === "STIX" && (n["-tex-caligraphic-bold"] = {
  2246. fonts: [ "STIXGeneral-bold-italic", "STIXNonUnicode-bold-italic", "STIXNonUnicode", "STIXGeneral", "STIXSizeOneSym" ],
  2247. offsetA: 57927,
  2248. noLowerCase: 1
  2249. }, n["-tex-oldstyle-bold"] = {
  2250. fonts: [ "STIXGeneral-bold", "STIXNonUnicode-bold", "STIXGeneral", "STIXSizeOneSym" ],
  2251. offsetN: 57955,
  2252. remap: {
  2253. 57956: 57959,
  2254. 57957: 57963,
  2255. 57958: 57967,
  2256. 57959: 57971,
  2257. 57960: 57975,
  2258. 57961: 57979,
  2259. 57962: 57983,
  2260. 57963: 57987,
  2261. 57964: 57991
  2262. }
  2263. });
  2264. }), MathJax.Hub.Register.StartupHook("SVG Jax Ready", function() {
  2265. var e = MathJax.OutputJax.SVG, t = e.FONTDATA.FONTS, n = e.FONTDATA.VARIANT;
  2266. t["MathJax_Caligraphic-bold"] = "Caligraphic/Bold/Main.js", n["-tex-caligraphic-bold"] = {
  2267. fonts: [ "MathJax_Caligraphic-bold", "MathJax_Main-bold", "MathJax_Main", "MathJax_Math", "MathJax_Size1" ],
  2268. offsetA: 65,
  2269. variantA: "bold-italic"
  2270. }, n["-tex-oldstyle-bold"] = {
  2271. fonts: [ "MathJax_Caligraphic-bold", "MathJax_Main-bold", "MathJax_Main", "MathJax_Math", "MathJax_Size1" ]
  2272. };
  2273. }), MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/boldsymbol.js"), MathJax.Extension.tex2jax = {
  2274. version: "2.1",
  2275. config: {
  2276. inlineMath: [ [ "\\(", "\\)" ] ],
  2277. displayMath: [ [ "$$", "$$" ], [ "\\[", "\\]" ] ],
  2278. balanceBraces: !0,
  2279. skipTags: [ "script", "noscript", "style", "textarea", "pre", "code" ],
  2280. ignoreClass: "tex2jax_ignore",
  2281. processClass: "tex2jax_process",
  2282. processEscapes: !1,
  2283. processEnvironments: !0,
  2284. processRefs: !0,
  2285. preview: "TeX"
  2286. },
  2287. PreProcess: function(e) {
  2288. this.configured || (this.config = MathJax.Hub.CombineConfig("tex2jax", this.config), this.config.Augment && MathJax.Hub.Insert(this, this.config.Augment), typeof this.config.previewTeX != "undefined" && !this.config.previewTeX && (this.config.preview = "none"), this.configured = !0), typeof e == "string" && (e = document.getElementById(e)), e || (e = document.body), this.createPatterns() && this.scanElement(e, e.nextSibling);
  2289. },
  2290. createPatterns: function() {
  2291. var e = [], t = [], n, r, i = this.config;
  2292. this.match = {};
  2293. for (n = 0, r = i.inlineMath.length; n < r; n++) e.push(this.patternQuote(i.inlineMath[n][0])), this.match[i.inlineMath[n][0]] = {
  2294. mode: "",
  2295. end: i.inlineMath[n][1],
  2296. pattern: this.endPattern(i.inlineMath[n][1])
  2297. };
  2298. for (n = 0, r = i.displayMath.length; n < r; n++) e.push(this.patternQuote(i.displayMath[n][0])), this.match[i.displayMath[n][0]] = {
  2299. mode: "; mode=display",
  2300. end: i.displayMath[n][1],
  2301. pattern: this.endPattern(i.displayMath[n][1])
  2302. };
  2303. return e.length && t.push(e.sort(this.sortLength).join("|")), i.processEnvironments && t.push("\\\\begin\\{([^}]*)\\}"), i.processEscapes && t.push("\\\\*\\\\\\$"), i.processRefs && t.push("\\\\(eq)?ref\\{[^}]*\\}"), this.start = new RegExp(t.join("|"), "g"), this.skipTags = new RegExp("^(" + i.skipTags.join("|") + ")$", "i"), this.ignoreClass = new RegExp("(^| )(" + i.ignoreClass + ")( |$)"), this.processClass = new RegExp("(^| )(" + i.processClass + ")( |$)"), t.length > 0;
  2304. },
  2305. patternQuote: function(e) {
  2306. return e.replace(/([\^$(){}+*?\-|\[\]\:\\])/g, "\\$1");
  2307. },
  2308. endPattern: function(e) {
  2309. return new RegExp(this.patternQuote(e) + "|\\\\.|[{}]", "g");
  2310. },
  2311. sortLength: function(e, t) {
  2312. return e.length !== t.length ? t.length - e.length : e == t ? 0 : e < t ? -1 : 1;
  2313. },
  2314. scanElement: function(e, t, n) {
  2315. var r, i, s, o;
  2316. while (e && e != t) e.nodeName.toLowerCase() === "#text" ? n || (e = this.scanText(e)) : (r = typeof e.className == "undefined" ? "" : e.className, i = typeof e.tagName == "undefined" ? "" : e.tagName, typeof r != "string" && (r = String(r)), o = this.processClass.exec(r), e.firstChild && !r.match(/(^| )MathJax/) && (o || !this.skipTags.exec(i)) && (s = (n || this.ignoreClass.exec(r)) && !o, this.scanElement(e.firstChild, t, s))), e && (e = e.nextSibling);
  2317. },
  2318. scanText: function(e) {
  2319. if (e.nodeValue.replace(/\s+/, "") == "") return e;
  2320. var t, n;
  2321. this.search = {
  2322. start: !0
  2323. }, this.pattern = this.start;
  2324. while (e) {
  2325. this.pattern.lastIndex = 0;
  2326. while (e && e.nodeName.toLowerCase() === "#text" && (t = this.pattern.exec(e.nodeValue))) this.search.start ? e = this.startMatch(t, e) : e = this.endMatch(t, e);
  2327. this.search.matched && (e = this.encloseMath(e));
  2328. if (e) {
  2329. do n = e, e = e.nextSibling; while (e && (e.nodeName.toLowerCase() === "br" || e.nodeName.toLowerCase() === "#comment"));
  2330. if (!e || e.nodeName !== "#text") return this.search.close ? this.prevEndMatch() : n;
  2331. }
  2332. }
  2333. return e;
  2334. },
  2335. startMatch: function(e, t) {
  2336. var n = this.match[e[0]];
  2337. if (n != null) this.search = {
  2338. end: n.end,
  2339. mode: n.mode,
  2340. pcount: 0,
  2341. open: t,
  2342. olen: e[0].length,
  2343. opos: this.pattern.lastIndex - e[0].length
  2344. }, this.switchPattern(n.pattern); else if (e[0].substr(0, 6) === "\\begin") this.search = {
  2345. end: "\\end{" + e[1] + "}",
  2346. mode: "; mode=display",
  2347. pcount: 0,
  2348. open: t,
  2349. olen: 0,
  2350. opos: this.pattern.lastIndex - e[0].length,
  2351. isBeginEnd: !0
  2352. }, this.switchPattern(this.endPattern(this.search.end)); else {
  2353. if (e[0].substr(0, 4) === "\\ref" || e[0].substr(0, 6) === "\\eqref") return this.search = {
  2354. mode: "",
  2355. end: "",
  2356. open: t,
  2357. pcount: 0,
  2358. olen: 0,
  2359. opos: this.pattern.lastIndex - e[0].length
  2360. }, this.endMatch([ "" ], t);
  2361. var r = e[0].substr(0, e[0].length - 1), i, s;
  2362. r.length % 2 === 0 ? (s = [ r.replace(/\\\\/g, "\\") ], i = 1) : (s = [ r.substr(1).replace(/\\\\/g, "\\"), "$" ], i = 0), s = MathJax.HTML.Element("span", null, s);
  2363. var o = MathJax.HTML.TextNode(t.nodeValue.substr(0, e.index));
  2364. t.nodeValue = t.nodeValue.substr(e.index + e[0].length - i), t.parentNode.insertBefore(s, t), t.parentNode.insertBefore(o, s), this.pattern.lastIndex = i;
  2365. }
  2366. return t;
  2367. },
  2368. endMatch: function(e, t) {
  2369. var n = this.search;
  2370. if (e[0] == n.end) {
  2371. if (!n.close || n.pcount === 0) n.close = t, n.cpos = this.pattern.lastIndex, n.clen = n.isBeginEnd ? 0 : e[0].length;
  2372. n.pcount === 0 && (n.matched = !0, t = this.encloseMath(t), this.switchPattern(this.start));
  2373. } else e[0] === "{" ? n.pcount++ : e[0] === "}" && n.pcount && n.pcount--;
  2374. return t;
  2375. },
  2376. prevEndMatch: function() {
  2377. this.search.matched = !0;
  2378. var e = this.encloseMath(this.search.close);
  2379. return this.switchPattern(this.start), e;
  2380. },
  2381. switchPattern: function(e) {
  2382. e.lastIndex = this.pattern.lastIndex, this.pattern = e, this.search.start = e === this.start;
  2383. },
  2384. encloseMath: function(e) {
  2385. var t = this.search, n = t.close, r, i;
  2386. t.cpos === n.length ? n = n.nextSibling : n = n.splitText(t.cpos), n || (r = n = MathJax.HTML.addText(t.close.parentNode, "")), t.close = n, i = t.opos ? t.open.splitText(t.opos) : t.open;
  2387. while (i.nextSibling && i.nextSibling !== n) i.nextSibling.nodeValue !== null ? i.nextSibling.nodeName === "#comment" ? i.nodeValue += i.nextSibling.nodeValue.replace(/^\[CDATA\[((.|\n|\r)*)\]\]$/, "$1") : i.nodeValue += i.nextSibling.nodeValue : this.msieNewlineBug ? i.nodeValue += i.nextSibling.nodeName.toLowerCase() === "br" ? "\n" : " " : i.nodeValue += " ", i.parentNode.removeChild(i.nextSibling);
  2388. var s = i.nodeValue.substr(t.olen, i.nodeValue.length - t.olen - t.clen);
  2389. return i.parentNode.removeChild(i), this.config.preview !== "none" && this.createPreview(t.mode, s), i = this.createMathTag(t.mode, s), this.search = {}, this.pattern.lastIndex = 0, r && r.parentNode.removeChild(r), i;
  2390. },
  2391. insertNode: function(e) {
  2392. var t = this.search;
  2393. t.close.parentNode.insertBefore(e, t.close);
  2394. },
  2395. createPreview: function(e, t) {
  2396. var n;
  2397. this.config.preview === "TeX" ? n = [ this.filterPreview(t) ] : this.config.preview instanceof Array && (n = this.config.preview), n && (n = MathJax.HTML.Element("span", {
  2398. className: MathJax.Hub.config.preRemoveClass
  2399. }, n), this.insertNode(n));
  2400. },
  2401. createMathTag: function(e, t) {
  2402. var n = document.createElement("script");
  2403. return n.type = "math/tex" + e, MathJax.HTML.setScript(n, t), this.insertNode(n), n;
  2404. },
  2405. filterPreview: function(e) {
  2406. return e;
  2407. },
  2408. msieNewlineBug: MathJax.Hub.Browser.isMSIE && document.documentMode < 9
  2409. }, MathJax.Hub.Register.PreProcessor([ "PreProcess", MathJax.Extension.tex2jax ]), MathJax.Ajax.loadComplete("[MathJax]/extensions/tex2jax.js"), MathJax.ElementJax.mml = MathJax.ElementJax({
  2410. mimeType: "jax/mml"
  2411. }, {
  2412. id: "mml",
  2413. version: "2.1",
  2414. directory: MathJax.ElementJax.directory + "/mml",
  2415. extensionDir: MathJax.ElementJax.extensionDir + "/mml",
  2416. optableDir: MathJax.ElementJax.directory + "/mml/optable"
  2417. }), MathJax.ElementJax.mml.Augment({
  2418. Init: function() {
  2419. arguments.length === 1 && arguments[0].type === "math" ? this.root = arguments[0] : this.root = MathJax.ElementJax.mml.math.apply(this, arguments);
  2420. if (this.root.attr && this.root.attr.mode) {
  2421. !this.root.display && this.root.attr.mode === "display" && (this.root.display = "block", this.root.attrNames.push("display")), delete this.root.attr.mode;
  2422. for (var e = 0, t = this.root.attrNames.length; e < t; e++) if (this.root.attrNames[e] === "mode") {
  2423. this.root.attrNames.splice(e, 1);
  2424. break;
  2425. }
  2426. }
  2427. }
  2428. }, {
  2429. INHERIT: "_inherit_",
  2430. AUTO: "_auto_",
  2431. SIZE: {
  2432. INFINITY: "infinity",
  2433. SMALL: "small",
  2434. NORMAL: "normal",
  2435. BIG: "big"
  2436. },
  2437. COLOR: {
  2438. TRANSPARENT: "transparent"
  2439. },
  2440. VARIANT: {
  2441. NORMAL: "normal",
  2442. BOLD: "bold",
  2443. ITALIC: "italic",
  2444. BOLDITALIC: "bold-italic",
  2445. DOUBLESTRUCK: "double-struck",
  2446. FRAKTUR: "fraktur",
  2447. BOLDFRAKTUR: "bold-fraktur",
  2448. SCRIPT: "script",
  2449. BOLDSCRIPT: "bold-script",
  2450. SANSSERIF: "sans-serif",
  2451. BOLDSANSSERIF: "bold-sans-serif",
  2452. SANSSERIFITALIC: "sans-serif-italic",
  2453. SANSSERIFBOLDITALIC: "sans-serif-bold-italic",
  2454. MONOSPACE: "monospace",
  2455. INITIAL: "inital",
  2456. TAILED: "tailed",
  2457. LOOPED: "looped",
  2458. STRETCHED: "stretched",
  2459. CALIGRAPHIC: "-tex-caligraphic",
  2460. OLDSTYLE: "-tex-oldstyle"
  2461. },
  2462. FORM: {
  2463. PREFIX: "prefix",
  2464. INFIX: "infix",
  2465. POSTFIX: "postfix"
  2466. },
  2467. LINEBREAK: {
  2468. AUTO: "auto",
  2469. NEWLINE: "newline",
  2470. NOBREAK: "nobreak",
  2471. GOODBREAK: "goodbreak",
  2472. BADBREAK: "badbreak"
  2473. },
  2474. LINEBREAKSTYLE: {
  2475. BEFORE: "before",
  2476. AFTER: "after",
  2477. DUPLICATE: "duplicate",
  2478. INFIXLINBREAKSTYLE: "infixlinebreakstyle"
  2479. },
  2480. INDENTALIGN: {
  2481. LEFT: "left",
  2482. CENTER: "center",
  2483. RIGHT: "right",
  2484. AUTO: "auto",
  2485. ID: "id",
  2486. INDENTALIGN: "indentalign"
  2487. },
  2488. INDENTSHIFT: {
  2489. INDENTSHIFT: "indentshift"
  2490. },
  2491. LINETHICKNESS: {
  2492. THIN: "thin",
  2493. MEDIUM: "medium",
  2494. THICK: "thick"
  2495. },
  2496. NOTATION: {
  2497. LONGDIV: "longdiv",
  2498. ACTUARIAL: "actuarial",
  2499. RADICAL: "radical",
  2500. BOX: "box",
  2501. ROUNDEDBOX: "roundedbox",
  2502. CIRCLE: "circle",
  2503. LEFT: "left",
  2504. RIGHT: "right",
  2505. TOP: "top",
  2506. BOTTOM: "bottom",
  2507. UPDIAGONALSTRIKE: "updiagonalstrike",
  2508. DOWNDIAGONALSTRIKE: "downdiagonalstrike",
  2509. VERTICALSTRIKE: "verticalstrike",
  2510. HORIZONTALSTRIKE: "horizontalstrike",
  2511. MADRUWB: "madruwb"
  2512. },
  2513. ALIGN: {
  2514. TOP: "top",
  2515. BOTTOM: "bottom",
  2516. CENTER: "center",
  2517. BASELINE: "baseline",
  2518. AXIS: "axis",
  2519. LEFT: "left",
  2520. RIGHT: "right"
  2521. },
  2522. LINES: {
  2523. NONE: "none",
  2524. SOLID: "solid",
  2525. DASHED: "dashed"
  2526. },
  2527. SIDE: {
  2528. LEFT: "left",
  2529. RIGHT: "right",
  2530. LEFTOVERLAP: "leftoverlap",
  2531. RIGHTOVERLAP: "rightoverlap"
  2532. },
  2533. WIDTH: {
  2534. AUTO: "auto",
  2535. FIT: "fit"
  2536. },
  2537. ACTIONTYPE: {
  2538. TOGGLE: "toggle",
  2539. STATUSLINE: "statusline",
  2540. TOOLTIP: "tooltip",
  2541. INPUT: "input"
  2542. },
  2543. LENGTH: {
  2544. VERYVERYTHINMATHSPACE: "veryverythinmathspace",
  2545. VERYTHINMATHSPACE: "verythinmathspace",
  2546. THINMATHSPACE: "thinmathspace",
  2547. MEDIUMMATHSPACE: "mediummathspace",
  2548. THICKMATHSPACE: "thickmathspace",
  2549. VERYTHICKMATHSPACE: "verythickmathspace",
  2550. VERYVERYTHICKMATHSPACE: "veryverythickmathspace",
  2551. NEGATIVEVERYVERYTHINMATHSPACE: "negativeveryverythinmathspace",
  2552. NEGATIVEVERYTHINMATHSPACE: "negativeverythinmathspace",
  2553. NEGATIVETHINMATHSPACE: "negativethinmathspace",
  2554. NEGATIVEMEDIUMMATHSPACE: "negativemediummathspace",
  2555. NEGATIVETHICKMATHSPACE: "negativethickmathspace",
  2556. NEGATIVEVERYTHICKMATHSPACE: "negativeverythickmathspace",
  2557. NEGATIVEVERYVERYTHICKMATHSPACE: "negativeveryverythickmathspace"
  2558. },
  2559. OVERFLOW: {
  2560. LINBREAK: "linebreak",
  2561. SCROLL: "scroll",
  2562. ELIDE: "elide",
  2563. TRUNCATE: "truncate",
  2564. SCALE: "scale"
  2565. },
  2566. UNIT: {
  2567. EM: "em",
  2568. EX: "ex",
  2569. PX: "px",
  2570. IN: "in",
  2571. CM: "cm",
  2572. MM: "mm",
  2573. PT: "pt",
  2574. PC: "pc"
  2575. },
  2576. TEXCLASS: {
  2577. ORD: 0,
  2578. OP: 1,
  2579. BIN: 2,
  2580. REL: 3,
  2581. OPEN: 4,
  2582. CLOSE: 5,
  2583. PUNCT: 6,
  2584. INNER: 7,
  2585. VCENTER: 8,
  2586. NONE: -1
  2587. },
  2588. TEXCLASSNAMES: [ "ORD", "OP", "BIN", "REL", "OPEN", "CLOSE", "PUNCT", "INNER", "VCENTER" ],
  2589. copyAttributes: {
  2590. fontfamily: !0,
  2591. fontsize: !0,
  2592. fontweight: !0,
  2593. fontstyle: !0,
  2594. color: !0,
  2595. background: !0,
  2596. id: !0,
  2597. "class": !0,
  2598. href: !0,
  2599. style: !0
  2600. },
  2601. skipAttributes: {
  2602. texClass: !0,
  2603. useHeight: !0,
  2604. texprimestyle: !0
  2605. },
  2606. copyAttributeNames: [ "fontfamily", "fontsize", "fontweight", "fontstyle", "color", "background", "id", "class", "href", "style" ]
  2607. }), function(e) {
  2608. e.mbase = MathJax.Object.Subclass({
  2609. type: "base",
  2610. isToken: !1,
  2611. defaults: {
  2612. mathbackground: e.INHERIT,
  2613. mathcolor: e.INHERIT
  2614. },
  2615. noInherit: {},
  2616. noInheritAttribute: {
  2617. texClass: !0
  2618. },
  2619. linebreakContainer: !1,
  2620. Init: function() {
  2621. this.data = [], this.inferRow && (arguments.length !== 1 || !arguments[0].inferred) && this.Append(e.mrow().With({
  2622. inferred: !0
  2623. })), this.Append.apply(this, arguments);
  2624. },
  2625. With: function(e) {
  2626. for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]);
  2627. return this;
  2628. },
  2629. Append: function() {
  2630. if (this.inferRow && this.data.length) this.data[0].Append.apply(this.data[0], arguments); else for (var e = 0, t = arguments.length; e < t; e++) this.SetData(this.data.length, arguments[e]);
  2631. },
  2632. SetData: function(t, n) {
  2633. n != null && (n instanceof e.mbase || (n = this.isToken ? e.chars(n) : e.mtext(n)), n.parent = this, n.setInherit(this.inheritFromMe ? this : this.inherit)), this.data[t] = n;
  2634. },
  2635. Parent: function() {
  2636. var e = this.parent;
  2637. while (e && e.inferred) e = e.parent;
  2638. return e;
  2639. },
  2640. Get: function(t, n) {
  2641. if (this[t] != null) return this[t];
  2642. if (this.attr && this.attr[t] != null) return this.attr[t];
  2643. var r = this.Parent();
  2644. if (r && r["adjustChild_" + t] != null) return r["adjustChild_" + t](r.childPosition(this));
  2645. var i = this.inherit, s = i;
  2646. while (i) {
  2647. var o = i[t];
  2648. o == null && i.attr && (o = i.attr[t]);
  2649. if (o != null && !i.noInheritAttribute[t]) {
  2650. var u = i.noInherit[this.type];
  2651. if (!u || !u[t]) return o;
  2652. }
  2653. s = i, i = i.inherit;
  2654. }
  2655. if (!n) {
  2656. if (this.defaults[t] === e.AUTO) return this.autoDefault(t);
  2657. if (this.defaults[t] !== e.INHERIT && this.defaults[t] != null) return this.defaults[t];
  2658. if (s) return s.defaults[t];
  2659. }
  2660. return null;
  2661. },
  2662. hasValue: function(e) {
  2663. return this.Get(e, true) != null;
  2664. },
  2665. getValues: function() {
  2666. var e = {};
  2667. for (var t = 0, n = arguments.length; t < n; t++) e[arguments[t]] = this.Get(arguments[t]);
  2668. return e;
  2669. },
  2670. adjustChild_scriptlevel: function(e) {
  2671. return this.Get("scriptlevel");
  2672. },
  2673. adjustChild_displaystyle: function(e) {
  2674. return this.Get("displaystyle");
  2675. },
  2676. adjustChild_texprimestyle: function(e) {
  2677. return this.Get("texprimestyle");
  2678. },
  2679. childPosition: function(e) {
  2680. e.parent.inferred && (e = e.parent);
  2681. for (var t = 0, n = this.data.length; t < n; t++) if (this.data[t] === e) return t;
  2682. return null;
  2683. },
  2684. setInherit: function(e) {
  2685. if (e !== this.inherit && this.inherit == null) {
  2686. this.inherit = e;
  2687. for (var t = 0, n = this.data.length; t < n; t++) this.data[t] && this.data[t].setInherit && this.data[t].setInherit(e);
  2688. }
  2689. },
  2690. setTeXclass: function(e) {
  2691. return this.getPrevClass(e), typeof this.texClass != "undefined" ? this : e;
  2692. },
  2693. getPrevClass: function(e) {
  2694. e && (this.prevClass = e.Get("texClass"), this.prevLevel = e.Get("scriptlevel"));
  2695. },
  2696. updateTeXclass: function(e) {
  2697. e && (this.prevClass = e.prevClass, delete e.prevClass, this.prevLevel = e.prevLevel, delete e.prevLevel, this.texClass = e.Get("texClass"));
  2698. },
  2699. texSpacing: function() {
  2700. var t = this.prevClass != null ? this.prevClass : e.TEXCLASS.NONE, n = this.Get("texClass") || e.TEXCLASS.ORD;
  2701. if (t === e.TEXCLASS.NONE || n === e.TEXCLASS.NONE) return "";
  2702. t === e.TEXCLASS.VCENTER && (t = e.TEXCLASS.ORD), n === e.TEXCLASS.VCENTER && (n = e.TEXCLASS.ORD);
  2703. var r = this.TEXSPACE[t][n];
  2704. return this.prevLevel > 0 && this.Get("scriptlevel") > 0 && r >= 0 ? "" : this.TEXSPACELENGTH[Math.abs(r)];
  2705. },
  2706. TEXSPACELENGTH: [ "", e.LENGTH.THINMATHSPACE, e.LENGTH.MEDIUMMATHSPACE, e.LENGTH.THICKMATHSPACE ],
  2707. TEXSPACE: [ [ 0, -1, 2, 3, 0, 0, 0, 1 ], [ -1, -1, 0, 3, 0, 0, 0, 1 ], [ 2, 2, 0, 0, 2, 0, 0, 2 ], [ 3, 3, 0, 0, 3, 0, 0, 3 ], [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, -1, 2, 3, 0, 0, 0, 1 ], [ 1, 1, 0, 1, 1, 1, 1, 1 ], [ 1, -1, 2, 3, 1, 0, 1, 1 ] ],
  2708. autoDefault: function(e) {
  2709. return "";
  2710. },
  2711. isSpacelike: function() {
  2712. return !1;
  2713. },
  2714. isEmbellished: function() {
  2715. return !1;
  2716. },
  2717. Core: function() {
  2718. return this;
  2719. },
  2720. CoreMO: function() {
  2721. return this;
  2722. },
  2723. hasNewline: function() {
  2724. if (this.isEmbellished()) return this.CoreMO().hasNewline();
  2725. if (this.isToken || this.linebreakContainer) return !1;
  2726. for (var e = 0, t = this.data.length; e < t; e++) if (this.data[e] && this.data[e].hasNewline()) return !0;
  2727. return !1;
  2728. },
  2729. array: function() {
  2730. return this.inferred ? this.data : [ this ];
  2731. },
  2732. toString: function() {
  2733. return this.type + "(" + this.data.join(",") + ")";
  2734. }
  2735. }, {
  2736. childrenSpacelike: function() {
  2737. for (var e = 0, t = this.data.length; e < t; e++) if (!this.data[e].isSpacelike()) return !1;
  2738. return !0;
  2739. },
  2740. childEmbellished: function() {
  2741. return this.data[0] && this.data[0].isEmbellished();
  2742. },
  2743. childCore: function() {
  2744. return this.data[0];
  2745. },
  2746. childCoreMO: function() {
  2747. return this.data[0] ? this.data[0].CoreMO() : null;
  2748. },
  2749. setChildTeXclass: function(e) {
  2750. return this.data[0] && (e = this.data[0].setTeXclass(e), this.updateTeXclass(this.data[0])), e;
  2751. },
  2752. setBaseTeXclasses: function(t) {
  2753. this.getPrevClass(t), this.texClass = null, this.isEmbellished() || this.data[0].isa(e.mi) ? (t = this.data[0].setTeXclass(t), this.updateTeXclass(this.Core())) : (this.data[0] && this.data[0].setTeXclass(), t = this);
  2754. for (var n = 1, r = this.data.length; n < r; n++) this.data[n] && this.data[n].setTeXclass();
  2755. return t;
  2756. },
  2757. setSeparateTeXclasses: function(e) {
  2758. this.getPrevClass(e);
  2759. for (var t = 0, n = this.data.length; t < n; t++) this.data[t] && this.data[t].setTeXclass();
  2760. return this.isEmbellished() && this.updateTeXclass(this.Core()), this;
  2761. }
  2762. }), e.mi = e.mbase.Subclass({
  2763. type: "mi",
  2764. isToken: !0,
  2765. texClass: e.TEXCLASS.ORD,
  2766. defaults: {
  2767. mathvariant: e.AUTO,
  2768. mathsize: e.INHERIT,
  2769. mathbackground: e.INHERIT,
  2770. mathcolor: e.INHERIT
  2771. },
  2772. autoDefault: function(t) {
  2773. if (t === "mathvariant") {
  2774. var n = (this.data[0] || "").toString();
  2775. return n.length === 1 || n.length === 2 && n.charCodeAt(0) >= 55296 && n.charCodeAt(0) < 56320 ? e.VARIANT.ITALIC : e.VARIANT.NORMAL;
  2776. }
  2777. return "";
  2778. },
  2779. setTeXclass: function(t) {
  2780. this.getPrevClass(t);
  2781. var n = this.data.join("");
  2782. return n.length > 1 && n.match(/^[a-z][a-z0-9]*$/i) && this.texClass === e.TEXCLASS.ORD && (this.texClass = e.TEXCLASS.OP, this.autoOP = !0), this;
  2783. }
  2784. }), e.mn = e.mbase.Subclass({
  2785. type: "mn",
  2786. isToken: !0,
  2787. texClass: e.TEXCLASS.ORD,
  2788. defaults: {
  2789. mathvariant: e.INHERIT,
  2790. mathsize: e.INHERIT,
  2791. mathbackground: e.INHERIT,
  2792. mathcolor: e.INHERIT
  2793. }
  2794. }), e.mo = e.mbase.Subclass({
  2795. type: "mo",
  2796. isToken: !0,
  2797. defaults: {
  2798. mathvariant: e.INHERIT,
  2799. mathsize: e.INHERIT,
  2800. mathbackground: e.INHERIT,
  2801. mathcolor: e.INHERIT,
  2802. form: e.AUTO,
  2803. fence: e.AUTO,
  2804. separator: e.AUTO,
  2805. lspace: e.AUTO,
  2806. rspace: e.AUTO,
  2807. stretchy: e.AUTO,
  2808. symmetric: e.AUTO,
  2809. maxsize: e.AUTO,
  2810. minsize: e.AUTO,
  2811. largeop: e.AUTO,
  2812. movablelimits: e.AUTO,
  2813. accent: e.AUTO,
  2814. linebreak: e.LINEBREAK.AUTO,
  2815. lineleading: e.INHERIT,
  2816. linebreakstyle: e.AUTO,
  2817. linebreakmultchar: e.INHERIT,
  2818. indentalign: e.INHERIT,
  2819. indentshift: e.INHERIT,
  2820. indenttarget: e.INHERIT,
  2821. indentalignfirst: e.INHERIT,
  2822. indentshiftfirst: e.INHERIT,
  2823. indentalignlast: e.INHERIT,
  2824. indentshiftlast: e.INHERIT,
  2825. texClass: e.AUTO
  2826. },
  2827. defaultDef: {
  2828. form: e.FORM.INFIX,
  2829. fence: !1,
  2830. separator: !1,
  2831. lspace: e.LENGTH.THICKMATHSPACE,
  2832. rspace: e.LENGTH.THICKMATHSPACE,
  2833. stretchy: !1,
  2834. symmetric: !0,
  2835. maxsize: e.SIZE.INFINITY,
  2836. minsize: "0em",
  2837. largeop: !1,
  2838. movablelimits: !1,
  2839. accent: !1,
  2840. linebreak: e.LINEBREAK.AUTO,
  2841. lineleading: "1ex",
  2842. linebreakstyle: "before",
  2843. indentalign: e.INDENTALIGN.AUTO,
  2844. indentshift: "0",
  2845. indenttarget: "",
  2846. indentalignfirst: e.INDENTALIGN.INDENTALIGN,
  2847. indentshiftfirst: e.INDENTSHIFT.INDENTSHIFT,
  2848. indentalignlast: e.INDENTALIGN.INDENTALIGN,
  2849. indentshiftlast: e.INDENTSHIFT.INDENTSHIFT,
  2850. texClass: e.TEXCLASS.REL
  2851. },
  2852. SPACE_ATTR: {
  2853. lspace: 1,
  2854. rspace: 2,
  2855. form: 4
  2856. },
  2857. useMMLspacing: 7,
  2858. autoDefault: function(t, n) {
  2859. var r = this.def;
  2860. if (!r) {
  2861. if (t === "form") return this.useMMLspacing &= ~this.SPACE_ATTR.form, this.getForm();
  2862. var i = this.data.join(""), s = [ this.Get("form"), e.FORM.INFIX, e.FORM.POSTFIX, e.FORM.PREFIX ];
  2863. for (var o = 0, u = s.length; o < u; o++) {
  2864. var f = this.OPTABLE[s[o]][i];
  2865. if (f) {
  2866. r = this.makeDef(f);
  2867. break;
  2868. }
  2869. }
  2870. r || (r = this.CheckRange(i)), !r && n ? r = {} : (r || (r = MathJax.Hub.Insert({}, this.defaultDef)), r.form = s[0], this.def = r);
  2871. }
  2872. return this.useMMLspacing &= ~(this.SPACE_ATTR[t] || 0), r[t] != null ? r[t] : n ? "" : this.defaultDef[t];
  2873. },
  2874. CheckRange: function(t) {
  2875. var n = t.charCodeAt(0);
  2876. n >= 55296 && n < 56320 && (n = (n - 55296 << 10) + (t.charCodeAt(1) - 56320) + 65536);
  2877. for (var r = 0, i = this.RANGES.length; r < i && this.RANGES[r][0] <= n; r++) if (n <= this.RANGES[r][1]) {
  2878. if (this.RANGES[r][3]) {
  2879. var s = e.optableDir + "/" + this.RANGES[r][3] + ".js";
  2880. this.RANGES[r][3] = null, MathJax.Hub.RestartAfter(MathJax.Ajax.Require(s));
  2881. }
  2882. var o = e.TEXCLASSNAMES[this.RANGES[r][2]];
  2883. return o = this.OPTABLE.infix[t] = e.mo.OPTYPES[o === "BIN" ? "BIN3" : o], this.makeDef(o);
  2884. }
  2885. return null;
  2886. },
  2887. makeDef: function(t) {
  2888. t[2] == null && (t[2] = this.defaultDef.texClass), t[3] || (t[3] = {});
  2889. var n = MathJax.Hub.Insert({}, t[3]);
  2890. return n.lspace = this.SPACE[t[0]], n.rspace = this.SPACE[t[1]], n.texClass = t[2], n.texClass === e.TEXCLASS.REL && (this.movablelimits || this.data.join("").match(/^[a-z]+$/i)) && (n.texClass = e.TEXCLASS.OP), n;
  2891. },
  2892. getForm: function() {
  2893. var t = this, n = this.parent, r = this.Parent();
  2894. while (r && r.isEmbellished()) t = n, n = r.parent, r = r.Parent();
  2895. if (n && n.type === "mrow" && n.NonSpaceLength() !== 1) {
  2896. if (n.FirstNonSpace() === t) return e.FORM.PREFIX;
  2897. if (n.LastNonSpace() === t) return e.FORM.POSTFIX;
  2898. }
  2899. return e.FORM.INFIX;
  2900. },
  2901. isEmbellished: function() {
  2902. return !0;
  2903. },
  2904. hasNewline: function() {
  2905. return this.Get("linebreak") === e.LINEBREAK.NEWLINE;
  2906. },
  2907. setTeXclass: function(t) {
  2908. return this.getValues("lspace", "rspace"), this.useMMLspacing ? (this.texClass = e.TEXCLASS.NONE, this) : (this.texClass = this.Get("texClass"), this.data.join("") === "\u2061" ? (t.texClass = e.TEXCLASS.OP, this.texClass = this.prevClass = e.TEXCLASS.NONE, t) : this.adjustTeXclass(t));
  2909. },
  2910. adjustTeXclass: function(t) {
  2911. return this.texClass === e.TEXCLASS.NONE ? t : (t ? (t.autoOP && (this.texClass === e.TEXCLASS.BIN || this.texClass === e.TEXCLASS.REL) && (t.texClass = e.TEXCLASS.ORD), this.prevClass = t.texClass || e.TEXCLASS.ORD, this.prevLevel = t.Get("scriptlevel")) : this.prevClass = e.TEXCLASS.NONE, this.texClass !== e.TEXCLASS.BIN || this.prevClass !== e.TEXCLASS.NONE && this.prevClass !== e.TEXCLASS.BIN && this.prevClass !== e.TEXCLASS.OP && this.prevClass !== e.TEXCLASS.REL && this.prevClass !== e.TEXCLASS.OPEN && this.prevClass !== e.TEXCLASS.PUNCT ? this.prevClass === e.TEXCLASS.BIN && (this.texClass === e.TEXCLASS.REL || this.texClass === e.TEXCLASS.CLOSE || this.texClass === e.TEXCLASS.PUNCT) && (t.texClass = this.prevClass = e.TEXCLASS.ORD) : this.texClass = e.TEXCLASS.ORD, this);
  2912. }
  2913. }), e.mtext = e.mbase.Subclass({
  2914. type: "mtext",
  2915. isToken: !0,
  2916. isSpacelike: function() {
  2917. return !0;
  2918. },
  2919. texClass: e.TEXCLASS.ORD,
  2920. defaults: {
  2921. mathvariant: e.INHERIT,
  2922. mathsize: e.INHERIT,
  2923. mathbackground: e.INHERIT,
  2924. mathcolor: e.INHERIT
  2925. }
  2926. }), e.mspace = e.mbase.Subclass({
  2927. type: "mspace",
  2928. isToken: !0,
  2929. isSpacelike: function() {
  2930. return !0;
  2931. },
  2932. defaults: {
  2933. mathbackground: e.INHERIT,
  2934. mathcolor: e.INHERIT,
  2935. width: "0em",
  2936. height: "0ex",
  2937. depth: "0ex",
  2938. linebreak: e.LINEBREAK.AUTO
  2939. },
  2940. hasNewline: function() {
  2941. return this.Get("linebreak") === e.LINEBREAK.NEWLINE;
  2942. }
  2943. }), e.ms = e.mbase.Subclass({
  2944. type: "ms",
  2945. isToken: !0,
  2946. texClass: e.TEXCLASS.ORD,
  2947. defaults: {
  2948. mathvariant: e.INHERIT,
  2949. mathsize: e.INHERIT,
  2950. mathbackground: e.INHERIT,
  2951. mathcolor: e.INHERIT,
  2952. lquote: '"',
  2953. rquote: '"'
  2954. }
  2955. }), e.mglyph = e.mbase.Subclass({
  2956. type: "mglyph",
  2957. isToken: !0,
  2958. texClass: e.TEXCLASS.ORD,
  2959. defaults: {
  2960. mathbackground: e.INHERIT,
  2961. mathcolor: e.INHERIT,
  2962. alt: "",
  2963. src: "",
  2964. width: e.AUTO,
  2965. height: e.AUTO,
  2966. valign: "0em"
  2967. }
  2968. }), e.mrow = e.mbase.Subclass({
  2969. type: "mrow",
  2970. isSpacelike: e.mbase.childrenSpacelike,
  2971. inferred: !1,
  2972. isEmbellished: function() {
  2973. var e = !1;
  2974. for (var t = 0, n = this.data.length; t < n; t++) {
  2975. if (this.data[t] == null) continue;
  2976. if (this.data[t].isEmbellished()) {
  2977. if (e) return !1;
  2978. e = !0, this.core = t;
  2979. } else if (!this.data[t].isSpacelike()) return !1;
  2980. }
  2981. return e;
  2982. },
  2983. NonSpaceLength: function() {
  2984. var e = 0;
  2985. for (var t = 0, n = this.data.length; t < n; t++) this.data[t] && !this.data[t].isSpacelike() && e++;
  2986. return e;
  2987. },
  2988. FirstNonSpace: function() {
  2989. for (var e = 0, t = this.data.length; e < t; e++) if (this.data[e] && !this.data[e].isSpacelike()) return this.data[e];
  2990. return null;
  2991. },
  2992. LastNonSpace: function() {
  2993. for (var e = this.data.length - 1; e >= 0; e--) if (this.data[0] && !this.data[e].isSpacelike()) return this.data[e];
  2994. return null;
  2995. },
  2996. Core: function() {
  2997. return !this.isEmbellished() || typeof this.core == "undefined" ? this : this.data[this.core];
  2998. },
  2999. CoreMO: function() {
  3000. return !this.isEmbellished() || typeof this.core == "undefined" ? this : this.data[this.core].CoreMO();
  3001. },
  3002. toString: function() {
  3003. return this.inferred ? "[" + this.data.join(",") + "]" : this.SUPER(arguments).toString.call(this);
  3004. },
  3005. setTeXclass: function(e) {
  3006. for (var t = 0, n = this.data.length; t < n; t++) this.data[t] && (e = this.data[t].setTeXclass(e));
  3007. return this.data[0] && this.updateTeXclass(this.data[0]), e;
  3008. }
  3009. }), e.mfrac = e.mbase.Subclass({
  3010. type: "mfrac",
  3011. num: 0,
  3012. den: 1,
  3013. linebreakContainer: !0,
  3014. texClass: e.TEXCLASS.INNER,
  3015. isEmbellished: e.mbase.childEmbellished,
  3016. Core: e.mbase.childCore,
  3017. CoreMO: e.mbase.childCoreMO,
  3018. defaults: {
  3019. mathbackground: e.INHERIT,
  3020. mathcolor: e.INHERIT,
  3021. linethickness: e.LINETHICKNESS.MEDIUM,
  3022. numalign: e.ALIGN.CENTER,
  3023. denomalign: e.ALIGN.CENTER,
  3024. bevelled: !1
  3025. },
  3026. adjustChild_displaystyle: function(e) {
  3027. return !1;
  3028. },
  3029. adjustChild_scriptlevel: function(e) {
  3030. var t = this.Get("scriptlevel");
  3031. return (!this.Get("displaystyle") || t > 0) && t++, t;
  3032. },
  3033. adjustChild_texprimestyle: function(e) {
  3034. return e == this.den ? !0 : this.Get("texprimestyle");
  3035. },
  3036. setTeXclass: e.mbase.setSeparateTeXclasses
  3037. }), e.msqrt = e.mbase.Subclass({
  3038. type: "msqrt",
  3039. inferRow: !0,
  3040. linebreakContainer: !0,
  3041. texClass: e.TEXCLASS.ORD,
  3042. setTeXclass: e.mbase.setSeparateTeXclasses,
  3043. adjustChild_texprimestyle: function(e) {
  3044. return !0;
  3045. }
  3046. }), e.mroot = e.mbase.Subclass({
  3047. type: "mroot",
  3048. linebreakContainer: !0,
  3049. texClass: e.TEXCLASS.ORD,
  3050. adjustChild_displaystyle: function(e) {
  3051. return e === 1 ? !1 : this.Get("displaystyle");
  3052. },
  3053. adjustChild_scriptlevel: function(e) {
  3054. var t = this.Get("scriptlevel");
  3055. return e === 1 && (t += 2), t;
  3056. },
  3057. adjustChild_texprimestyle: function(e) {
  3058. return e === 0 ? !0 : this.Get("texprimestyle");
  3059. },
  3060. setTeXclass: e.mbase.setSeparateTeXclasses
  3061. }), e.mstyle = e.mbase.Subclass({
  3062. type: "mstyle",
  3063. isSpacelike: e.mbase.childrenSpacelike,
  3064. isEmbellished: e.mbase.childEmbellished,
  3065. Core: e.mbase.childCore,
  3066. CoreMO: e.mbase.childCoreMO,
  3067. inferRow: !0,
  3068. defaults: {
  3069. scriptlevel: e.INHERIT,
  3070. displaystyle: e.INHERIT,
  3071. scriptsizemultiplier: Math.sqrt(.5),
  3072. scriptminsize: "8pt",
  3073. mathbackground: e.INHERIT,
  3074. mathcolor: e.INHERIT,
  3075. infixlinebreakstyle: e.LINEBREAKSTYLE.BEFORE,
  3076. decimalseparator: "."
  3077. },
  3078. adjustChild_scriptlevel: function(e) {
  3079. var t = this.scriptlevel;
  3080. if (t == null) t = this.Get("scriptlevel"); else if (String(t).match(/^ *[-+]/)) {
  3081. delete this.scriptlevel;
  3082. var n = this.Get("scriptlevel");
  3083. this.scriptlevel = t, t = n + parseInt(t);
  3084. }
  3085. return t;
  3086. },
  3087. inheritFromMe: !0,
  3088. noInherit: {
  3089. mpadded: {
  3090. width: !0,
  3091. height: !0,
  3092. depth: !0,
  3093. lspace: !0,
  3094. voffset: !0
  3095. },
  3096. mtable: {
  3097. width: !0,
  3098. height: !0,
  3099. depth: !0,
  3100. align: !0
  3101. }
  3102. },
  3103. setTeXclass: e.mbase.setChildTeXclass
  3104. }), e.merror = e.mbase.Subclass({
  3105. type: "merror",
  3106. inferRow: !0,
  3107. linebreakContainer: !0,
  3108. texClass: e.TEXCLASS.ORD
  3109. }), e.mpadded = e.mbase.Subclass({
  3110. type: "mpadded",
  3111. inferRow: !0,
  3112. isSpacelike: e.mbase.childrenSpacelike,
  3113. isEmbellished: e.mbase.childEmbellished,
  3114. Core: e.mbase.childCore,
  3115. CoreMO: e.mbase.childCoreMO,
  3116. defaults: {
  3117. mathbackground: e.INHERIT,
  3118. mathcolor: e.INHERIT,
  3119. width: "",
  3120. height: "",
  3121. depth: "",
  3122. lspace: 0,
  3123. voffset: 0
  3124. },
  3125. setTeXclass: e.mbase.setChildTeXclass
  3126. }), e.mphantom = e.mbase.Subclass({
  3127. type: "mphantom",
  3128. texClass: e.TEXCLASS.ORD,
  3129. inferRow: !0,
  3130. isSpacelike: e.mbase.childrenSpacelike,
  3131. isEmbellished: e.mbase.childEmbellished,
  3132. Core: e.mbase.childCore,
  3133. CoreMO: e.mbase.childCoreMO,
  3134. setTeXclass: e.mbase.setChildTeXclass
  3135. }), e.mfenced = e.mbase.Subclass({
  3136. type: "mfenced",
  3137. defaults: {
  3138. mathbackground: e.INHERIT,
  3139. mathcolor: e.INHERIT,
  3140. open: "(",
  3141. close: ")",
  3142. separators: ","
  3143. },
  3144. texClass: e.TEXCLASS.OPEN,
  3145. setTeXclass: function(t) {
  3146. this.getPrevClass(t);
  3147. var n = this.getValues("open", "close", "separators");
  3148. n.open = n.open.replace(/[ \t\n\r]/g, ""), n.close = n.close.replace(/[ \t\n\r]/g, ""), n.separators = n.separators.replace(/[ \t\n\r]/g, ""), n.open !== "" && (this.SetData("open", e.mo(n.open).With({
  3149. stretchy: !0,
  3150. texClass: e.TEXCLASS.OPEN
  3151. })), t = this.data.open.setTeXclass(t));
  3152. if (n.separators !== "") while (n.separators.length < this.data.length) n.separators += n.separators.charAt(n.separators.length - 1);
  3153. this.data[0] && (t = this.data[0].setTeXclass(t));
  3154. for (var r = 1, i = this.data.length; r < i; r++) this.data[r] && (n.separators !== "" && (this.SetData("sep" + r, e.mo(n.separators.charAt(r - 1))), t = this.data["sep" + r].setTeXclass(t)), t = this.data[r].setTeXclass(t));
  3155. return n.close !== "" && (this.SetData("close", e.mo(n.close).With({
  3156. stretchy: !0,
  3157. texClass: e.TEXCLASS.CLOSE
  3158. })), t = this.data.close.setTeXclass(t)), this.updateTeXclass(this.data.open), t;
  3159. }
  3160. }), e.menclose = e.mbase.Subclass({
  3161. type: "menclose",
  3162. inferRow: !0,
  3163. linebreakContainer: !0,
  3164. defaults: {
  3165. mathbackground: e.INHERIT,
  3166. mathcolor: e.INHERIT,
  3167. notation: e.NOTATION.LONGDIV,
  3168. texClass: e.TEXCLASS.ORD
  3169. },
  3170. setTeXclass: e.mbase.setSeparateTeXclasses
  3171. }), e.msubsup = e.mbase.Subclass({
  3172. type: "msubsup",
  3173. base: 0,
  3174. sub: 1,
  3175. sup: 2,
  3176. isEmbellished: e.mbase.childEmbellished,
  3177. Core: e.mbase.childCore,
  3178. CoreMO: e.mbase.childCoreMO,
  3179. defaults: {
  3180. mathbackground: e.INHERIT,
  3181. mathcolor: e.INHERIT,
  3182. subscriptshift: "",
  3183. superscriptshift: "",
  3184. texClass: e.AUTO
  3185. },
  3186. autoDefault: function(t) {
  3187. return t === "texClass" ? this.isEmbellished() ? this.CoreMO().Get(t) : e.TEXCLASS.ORD : 0;
  3188. },
  3189. adjustChild_displaystyle: function(e) {
  3190. return e > 0 ? !1 : this.Get("displaystyle");
  3191. },
  3192. adjustChild_scriptlevel: function(e) {
  3193. var t = this.Get("scriptlevel");
  3194. return e > 0 && t++, t;
  3195. },
  3196. adjustChild_texprimestyle: function(e) {
  3197. return e === this.sub ? !0 : this.Get("texprimestyle");
  3198. },
  3199. setTeXclass: e.mbase.setBaseTeXclasses
  3200. }), e.msub = e.msubsup.Subclass({
  3201. type: "msub"
  3202. }), e.msup = e.msubsup.Subclass({
  3203. type: "msup",
  3204. sub: 2,
  3205. sup: 1
  3206. }), e.mmultiscripts = e.msubsup.Subclass({
  3207. type: "mmultiscripts",
  3208. adjustChild_texprimestyle: function(e) {
  3209. return e % 2 === 1 ? !0 : this.Get("texprimestyle");
  3210. }
  3211. }), e.mprescripts = e.mbase.Subclass({
  3212. type: "mprescripts"
  3213. }), e.none = e.mbase.Subclass({
  3214. type: "none"
  3215. }), e.munderover = e.mbase.Subclass({
  3216. type: "munderover",
  3217. base: 0,
  3218. under: 1,
  3219. over: 2,
  3220. sub: 1,
  3221. sup: 2,
  3222. ACCENTS: [ "", "accentunder", "accent" ],
  3223. linebreakContainer: !0,
  3224. isEmbellished: e.mbase.childEmbellished,
  3225. Core: e.mbase.childCore,
  3226. CoreMO: e.mbase.childCoreMO,
  3227. defaults: {
  3228. mathbackground: e.INHERIT,
  3229. mathcolor: e.INHERIT,
  3230. accent: e.AUTO,
  3231. accentunder: e.AUTO,
  3232. align: e.ALIGN.CENTER,
  3233. texClass: e.AUTO,
  3234. subscriptshift: "",
  3235. superscriptshift: ""
  3236. },
  3237. autoDefault: function(t) {
  3238. return t === "texClass" ? this.isEmbellished() ? this.CoreMO().Get(t) : e.TEXCLASS.ORD : t === "accent" && this.data[this.over] ? this.data[this.over].CoreMO().Get("accent") : t === "accentunder" && this.data[this.under] ? this.data[this.under].CoreMO().Get("accent") : !1;
  3239. },
  3240. adjustChild_displaystyle: function(e) {
  3241. return e > 0 ? !1 : this.Get("displaystyle");
  3242. },
  3243. adjustChild_scriptlevel: function(e) {
  3244. var t = this.Get("scriptlevel"), n = this.data[this.base] && !this.Get("displaystyle") && this.data[this.base].CoreMO().Get("movablelimits");
  3245. return e == this.under && (n || !this.Get("accentunder")) && t++, e == this.over && (n || !this.Get("accent")) && t++, t;
  3246. },
  3247. adjustChild_texprimestyle: function(e) {
  3248. return e === this.base && this.data[this.over] ? !0 : this.Get("texprimestyle");
  3249. },
  3250. setTeXclass: e.mbase.setBaseTeXclasses
  3251. }), e.munder = e.munderover.Subclass({
  3252. type: "munder"
  3253. }), e.mover = e.munderover.Subclass({
  3254. type: "mover",
  3255. over: 1,
  3256. under: 2,
  3257. sup: 1,
  3258. sub: 2,
  3259. ACCENTS: [ "", "accent", "accentunder" ]
  3260. }), e.mtable = e.mbase.Subclass({
  3261. type: "mtable",
  3262. defaults: {
  3263. mathbackground: e.INHERIT,
  3264. mathcolor: e.INHERIT,
  3265. align: e.ALIGN.AXIS,
  3266. rowalign: e.ALIGN.BASELINE,
  3267. columnalign: e.ALIGN.CENTER,
  3268. groupalign: "{left}",
  3269. alignmentscope: !0,
  3270. columnwidth: e.WIDTH.AUTO,
  3271. width: e.WIDTH.AUTO,
  3272. rowspacing: "1ex",
  3273. columnspacing: ".8em",
  3274. rowlines: e.LINES.NONE,
  3275. columnlines: e.LINES.NONE,
  3276. frame: e.LINES.NONE,
  3277. framespacing: "0.4em 0.5ex",
  3278. equalrows: !1,
  3279. equalcolumns: !1,
  3280. displaystyle: !1,
  3281. side: e.SIDE.RIGHT,
  3282. minlabelspacing: "0.8em",
  3283. texClass: e.TEXCLASS.ORD,
  3284. useHeight: 1
  3285. },
  3286. inheritFromMe: !0,
  3287. noInherit: {
  3288. mover: {
  3289. align: !0
  3290. },
  3291. munder: {
  3292. align: !0
  3293. },
  3294. munderover: {
  3295. align: !0
  3296. },
  3297. mtable: {
  3298. align: !0,
  3299. rowalign: !0,
  3300. columnalign: !0,
  3301. groupalign: !0,
  3302. alignmentscope: !0,
  3303. columnwidth: !0,
  3304. width: !0,
  3305. rowspacing: !0,
  3306. columnspacing: !0,
  3307. rowlines: !0,
  3308. columnlines: !0,
  3309. frame: !0,
  3310. framespacing: !0,
  3311. equalrows: !0,
  3312. equalcolumns: !0,
  3313. side: !0,
  3314. minlabelspacing: !0,
  3315. texClass: !0,
  3316. useHeight: 1
  3317. }
  3318. },
  3319. linebreakContainer: !0,
  3320. Append: function() {
  3321. for (var t = 0, n = arguments.length; t < n; t++) arguments[t] instanceof e.mtr || arguments[t] instanceof e.mlabeledtr || (arguments[t] = e.mtd(arguments[t]));
  3322. this.SUPER(arguments).Append.apply(this, arguments);
  3323. },
  3324. setTeXclass: e.mbase.setSeparateTeXclasses
  3325. }), e.mtr = e.mbase.Subclass({
  3326. type: "mtr",
  3327. defaults: {
  3328. mathbackground: e.INHERIT,
  3329. mathcolor: e.INHERIT,
  3330. rowalign: e.INHERIT,
  3331. columnalign: e.INHERIT,
  3332. groupalign: e.INHERIT
  3333. },
  3334. inheritFromMe: !0,
  3335. noInherit: {
  3336. mrow: {
  3337. rowalign: !0,
  3338. columnalign: !0,
  3339. groupalign: !0
  3340. },
  3341. mtable: {
  3342. rowalign: !0,
  3343. columnalign: !0,
  3344. groupalign: !0
  3345. }
  3346. },
  3347. linebreakContainer: !0,
  3348. Append: function() {
  3349. for (var t = 0, n = arguments.length; t < n; t++) arguments[t] instanceof e.mtd || (arguments[t] = e.mtd(arguments[t]));
  3350. this.SUPER(arguments).Append.apply(this, arguments);
  3351. },
  3352. setTeXclass: e.mbase.setSeparateTeXclasses
  3353. }), e.mtd = e.mbase.Subclass({
  3354. type: "mtd",
  3355. inferRow: !0,
  3356. linebreakContainer: !0,
  3357. isEmbellished: e.mbase.childEmbellished,
  3358. Core: e.mbase.childCore,
  3359. CoreMO: e.mbase.childCoreMO,
  3360. defaults: {
  3361. mathbackground: e.INHERIT,
  3362. mathcolor: e.INHERIT,
  3363. rowspan: 1,
  3364. columnspan: 1,
  3365. rowalign: e.INHERIT,
  3366. columnalign: e.INHERIT,
  3367. groupalign: e.INHERIT
  3368. },
  3369. setTeXclass: e.mbase.setSeparateTeXclasses
  3370. }), e.maligngroup = e.mbase.Subclass({
  3371. type: "malign",
  3372. isSpacelike: function() {
  3373. return !0;
  3374. },
  3375. defaults: {
  3376. mathbackground: e.INHERIT,
  3377. mathcolor: e.INHERIT,
  3378. groupalign: e.INHERIT
  3379. },
  3380. inheritFromMe: !0,
  3381. noInherit: {
  3382. mrow: {
  3383. groupalign: !0
  3384. },
  3385. mtable: {
  3386. groupalign: !0
  3387. }
  3388. }
  3389. }), e.malignmark = e.mbase.Subclass({
  3390. type: "malignmark",
  3391. defaults: {
  3392. mathbackground: e.INHERIT,
  3393. mathcolor: e.INHERIT,
  3394. edge: e.SIDE.LEFT
  3395. },
  3396. isSpacelike: function() {
  3397. return !0;
  3398. }
  3399. }), e.mlabeledtr = e.mtr.Subclass({
  3400. type: "mlabeledtr"
  3401. }), e.maction = e.mbase.Subclass({
  3402. type: "maction",
  3403. defaults: {
  3404. mathbackground: e.INHERIT,
  3405. mathcolor: e.INHERIT,
  3406. actiontype: e.ACTIONTYPE.TOGGLE,
  3407. selection: 1
  3408. },
  3409. selected: function() {
  3410. return this.data[this.Get("selection") - 1] || e.NULL;
  3411. },
  3412. isEmbellished: function() {
  3413. return this.selected().isEmbellished();
  3414. },
  3415. isSpacelike: function() {
  3416. return this.selected().isSpacelike();
  3417. },
  3418. Core: function() {
  3419. return this.selected().Core();
  3420. },
  3421. CoreMO: function() {
  3422. return this.selected().CoreMO();
  3423. },
  3424. setTeXclass: function(e) {
  3425. return this.selected().setTeXclass(e);
  3426. }
  3427. }), e.semantics = e.mbase.Subclass({
  3428. type: "semantics",
  3429. isEmbellished: e.mbase.childEmbellished,
  3430. Core: e.mbase.childCore,
  3431. CoreMO: e.mbase.childCoreMO,
  3432. defaults: {
  3433. definitionURL: null,
  3434. encoding: null
  3435. },
  3436. setTeXclass: e.mbase.setChildTeXclass
  3437. }), e.annotation = e.mbase.Subclass({
  3438. type: "annotation",
  3439. isToken: !0,
  3440. linebreakContainer: !0,
  3441. defaults: {
  3442. definitionURL: null,
  3443. encoding: null,
  3444. cd: "mathmlkeys",
  3445. name: "",
  3446. src: null
  3447. }
  3448. }), e["annotation-xml"] = e.mbase.Subclass({
  3449. type: "annotation-xml",
  3450. linebreakContainer: !0,
  3451. defaults: {
  3452. definitionURL: null,
  3453. encoding: null,
  3454. cd: "mathmlkeys",
  3455. name: "",
  3456. src: null
  3457. }
  3458. }), e.math = e.mstyle.Subclass({
  3459. type: "math",
  3460. defaults: {
  3461. mathvariant: e.VARIANT.NORMAL,
  3462. mathsize: e.SIZE.NORMAL,
  3463. mathcolor: "",
  3464. mathbackground: e.COLOR.TRANSPARENT,
  3465. scriptlevel: 0,
  3466. displaystyle: e.AUTO,
  3467. display: "inline",
  3468. maxwidth: "",
  3469. overflow: e.OVERFLOW.LINEBREAK,
  3470. altimg: "",
  3471. "altimg-width": "",
  3472. "altimg-height": "",
  3473. "altimg-valign": "",
  3474. alttext: "",
  3475. cdgroup: "",
  3476. scriptsizemultiplier: Math.sqrt(.5),
  3477. scriptminsize: "8px",
  3478. infixlinebreakstyle: e.LINEBREAKSTYLE.BEFORE,
  3479. lineleading: "1ex",
  3480. indentshift: "auto",
  3481. indentalign: e.INDENTALIGN.AUTO,
  3482. indentalignfirst: e.INDENTALIGN.INDENTALIGN,
  3483. indentshiftfirst: e.INDENTSHIFT.INDENTSHIFT,
  3484. indentalignlast: e.INDENTALIGN.INDENTALIGN,
  3485. indentshiftlast: e.INDENTSHIFT.INDENTSHIFT,
  3486. decimalseparator: ".",
  3487. texprimestyle: !1
  3488. },
  3489. autoDefault: function(e) {
  3490. return e === "displaystyle" ? this.Get("display") === "block" : "";
  3491. },
  3492. linebreakContainer: !0,
  3493. setTeXclass: e.mbase.setChildTeXclass
  3494. }), e.chars = e.mbase.Subclass({
  3495. type: "chars",
  3496. Append: function() {
  3497. this.data.push.apply(this.data, arguments);
  3498. },
  3499. value: function() {
  3500. return this.data.join("");
  3501. },
  3502. toString: function() {
  3503. return this.data.join("");
  3504. }
  3505. }), e.entity = e.mbase.Subclass({
  3506. type: "entity",
  3507. Append: function() {
  3508. this.data.push.apply(this.data, arguments);
  3509. },
  3510. value: function() {
  3511. return this.data[0].substr(0, 2) === "#x" ? parseInt(this.data[0].substr(2), 16) : this.data[0].substr(0, 1) === "#" ? parseInt(this.data[0].substr(1)) : 0;
  3512. },
  3513. toString: function() {
  3514. var e = this.value();
  3515. return e <= 65535 ? String.fromCharCode(e) : (e -= 65536, String.fromCharCode((e >> 10) + 55296) + String.fromCharCode((e & 1023) + 56320));
  3516. }
  3517. }), e.xml = e.mbase.Subclass({
  3518. type: "xml",
  3519. Init: function() {
  3520. return this.div = document.createElement("div"), this.SUPER(arguments).Init.apply(this, arguments);
  3521. },
  3522. Append: function() {
  3523. for (var e = 0, t = arguments.length; e < t; e++) {
  3524. var n = this.Import(arguments[e]);
  3525. this.data.push(n), this.div.appendChild(n);
  3526. }
  3527. },
  3528. Import: function(e) {
  3529. if (document.importNode) return document.importNode(e, !0);
  3530. var t, n, r;
  3531. if (e.nodeType === 1) {
  3532. t = document.createElement(e.nodeName);
  3533. for (n = 0, r = e.attributes.length; n < r; n++) {
  3534. var i = e.attributes[n];
  3535. i.specified && i.nodeValue != null && i.nodeValue != "" && t.setAttribute(i.nodeName, i.nodeValue), i.nodeName === "style" && (t.style.cssText = i.nodeValue);
  3536. }
  3537. e.className && (t.className = e.className);
  3538. } else if (e.nodeType === 3 || e.nodeType === 4) t = document.createTextNode(e.nodeValue); else {
  3539. if (e.nodeType !== 8) return document.createTextNode("");
  3540. t = document.createComment(e.nodeValue);
  3541. }
  3542. for (n = 0, r = e.childNodes.length; n < r; n++) t.appendChild(this.Import(e.childNodes[n]));
  3543. return t;
  3544. },
  3545. value: function() {
  3546. return this.div;
  3547. },
  3548. toString: function() {
  3549. return this.div.innerHTML;
  3550. }
  3551. }), e.TeXAtom = e.mbase.Subclass({
  3552. type: "texatom",
  3553. inferRow: !0,
  3554. texClass: e.TEXCLASS.ORD,
  3555. Core: e.mbase.childCore,
  3556. CoreMO: e.mbase.childCoreMO,
  3557. isEmbellished: e.mbase.childEmbellished,
  3558. setTeXclass: function(e) {
  3559. return this.data[0].setTeXclass(), this.adjustTeXclass(e);
  3560. },
  3561. adjustTeXclass: e.mo.prototype.adjustTeXclass
  3562. }), e.NULL = e.mbase().With({
  3563. type: "null"
  3564. });
  3565. var t = e.TEXCLASS, n = {
  3566. ORD: [ 0, 0, t.ORD ],
  3567. ORD11: [ 1, 1, t.ORD ],
  3568. ORD21: [ 2, 1, t.ORD ],
  3569. ORD02: [ 0, 2, t.ORD ],
  3570. ORD55: [ 5, 5, t.ORD ],
  3571. OP: [ 1, 2, t.OP, {
  3572. largeop: !0,
  3573. movablelimits: !0,
  3574. symmetric: !0
  3575. } ],
  3576. OPFIXED: [ 1, 2, t.OP, {
  3577. largeop: !0,
  3578. movablelimits: !0
  3579. } ],
  3580. INTEGRAL: [ 0, 1, t.OP, {
  3581. largeop: !0,
  3582. symmetric: !0
  3583. } ],
  3584. INTEGRAL2: [ 1, 2, t.OP, {
  3585. largeop: !0,
  3586. symmetric: !0
  3587. } ],
  3588. BIN3: [ 3, 3, t.BIN ],
  3589. BIN4: [ 4, 4, t.BIN ],
  3590. BIN01: [ 0, 1, t.BIN ],
  3591. BIN5: [ 5, 5, t.BIN ],
  3592. TALLBIN: [ 4, 4, t.BIN, {
  3593. stretchy: !0
  3594. } ],
  3595. BINOP: [ 4, 4, t.BIN, {
  3596. largeop: !0,
  3597. movablelimits: !0
  3598. } ],
  3599. REL: [ 5, 5, t.REL ],
  3600. REL1: [ 1, 1, t.REL, {
  3601. stretchy: !0
  3602. } ],
  3603. REL4: [ 4, 4, t.REL ],
  3604. RELSTRETCH: [ 5, 5, t.REL, {
  3605. stretchy: !0
  3606. } ],
  3607. RELACCENT: [ 5, 5, t.REL, {
  3608. accent: !0
  3609. } ],
  3610. WIDEREL: [ 5, 5, t.REL, {
  3611. accent: !0,
  3612. stretchy: !0
  3613. } ],
  3614. OPEN: [ 0, 0, t.OPEN, {
  3615. fence: !0,
  3616. stretchy: !0,
  3617. symmetric: !0
  3618. } ],
  3619. CLOSE: [ 0, 0, t.CLOSE, {
  3620. fence: !0,
  3621. stretchy: !0,
  3622. symmetric: !0
  3623. } ],
  3624. INNER: [ 0, 0, t.INNER ],
  3625. PUNCT: [ 0, 3, t.PUNCT ],
  3626. ACCENT: [ 0, 0, t.ORD, {
  3627. accent: !0
  3628. } ],
  3629. WIDEACCENT: [ 0, 0, t.ORD, {
  3630. accent: !0,
  3631. stretchy: !0
  3632. } ]
  3633. };
  3634. e.mo.Augment({
  3635. SPACE: [ "0em", "0.1111em", "0.1667em", "0.2222em", "0.2667em", "0.3333em" ],
  3636. RANGES: [ [ 32, 127, t.REL, "BasicLatin" ], [ 160, 255, t.ORD, "Latin1Supplement" ], [ 256, 383, t.ORD ], [ 384, 591, t.ORD ], [ 688, 767, t.ORD, "SpacingModLetters" ], [ 768, 879, t.ORD, "CombDiacritMarks" ], [ 880, 1023, t.ORD, "GreekAndCoptic" ], [ 7680, 7935, t.ORD ], [ 8192, 8303, t.PUNCT, "GeneralPunctuation" ], [ 8304, 8351, t.ORD ], [ 8352, 8399, t.ORD ], [ 8400, 8447, t.ORD, "CombDiactForSymbols" ], [ 8448, 8527, t.ORD, "LetterlikeSymbols" ], [ 8528, 8591, t.ORD ], [ 8592, 8703, t.REL, "Arrows" ], [ 8704, 8959, t.BIN, "MathOperators" ], [ 8960, 9215, t.ORD, "MiscTechnical" ], [ 9312, 9471, t.ORD ], [ 9472, 9631, t.ORD ], [ 9632, 9727, t.ORD, "GeometricShapes" ], [ 9984, 10175, t.ORD, "Dingbats" ], [ 10176, 10223, t.ORD, "MiscMathSymbolsA" ], [ 10224, 10239, t.REL, "SupplementalArrowsA" ], [ 10496, 10623, t.REL, "SupplementalArrowsB" ], [ 10624, 10751, t.ORD, "MiscMathSymbolsB" ], [ 10752, 11007, t.BIN, "SuppMathOperators" ], [ 11008, 11263, t.ORD, "MiscSymbolsAndArrows" ], [ 119808, 120831, t.ORD ] ],
  3637. OPTABLE: {
  3638. prefix: {
  3639. "\u2200": n.ORD21,
  3640. "\u2202": n.ORD21,
  3641. "\u2203": n.ORD21,
  3642. "\u2207": n.ORD21,
  3643. "\u220f": n.OP,
  3644. "\u2210": n.OP,
  3645. "\u2211": n.OP,
  3646. "\u2212": n.BIN01,
  3647. "\u2213": n.BIN01,
  3648. "\u221a": [ 1, 1, t.ORD, {
  3649. stretchy: !0
  3650. } ],
  3651. "\u2220": n.ORD,
  3652. "\u222b": n.INTEGRAL,
  3653. "\u222e": n.INTEGRAL,
  3654. "\u22c0": n.OP,
  3655. "\u22c1": n.OP,
  3656. "\u22c2": n.OP,
  3657. "\u22c3": n.OP,
  3658. "\u2308": n.OPEN,
  3659. "\u230a": n.OPEN,
  3660. "\u27e8": n.OPEN,
  3661. "\u27ee": n.OPEN,
  3662. "\u2a00": n.OP,
  3663. "\u2a01": n.OP,
  3664. "\u2a02": n.OP,
  3665. "\u2a04": n.OP,
  3666. "\u2a06": n.OP,
  3667. "\u00ac": n.ORD21,
  3668. "\u00b1": n.BIN01,
  3669. "(": n.OPEN,
  3670. "+": n.BIN01,
  3671. "-": n.BIN01,
  3672. "[": n.OPEN,
  3673. "{": n.OPEN,
  3674. "|": n.OPEN
  3675. },
  3676. postfix: {
  3677. "!": [ 1, 0, t.CLOSE ],
  3678. "&": n.ORD,
  3679. "\u2032": n.ORD02,
  3680. "\u203e": n.WIDEACCENT,
  3681. "\u2309": n.CLOSE,
  3682. "\u230b": n.CLOSE,
  3683. "\u23de": n.WIDEACCENT,
  3684. "\u23df": n.WIDEACCENT,
  3685. "\u266d": n.ORD02,
  3686. "\u266e": n.ORD02,
  3687. "\u266f": n.ORD02,
  3688. "\u27e9": n.CLOSE,
  3689. "\u27ef": n.CLOSE,
  3690. "\u02c6": n.WIDEACCENT,
  3691. "\u02c7": n.WIDEACCENT,
  3692. "\u02c9": n.WIDEACCENT,
  3693. "\u02ca": n.ACCENT,
  3694. "\u02cb": n.ACCENT,
  3695. "\u02d8": n.ACCENT,
  3696. "\u02d9": n.ACCENT,
  3697. "\u02dc": n.WIDEACCENT,
  3698. "\u0302": n.WIDEACCENT,
  3699. "\u00a8": n.ACCENT,
  3700. "\u00af": n.WIDEACCENT,
  3701. ")": n.CLOSE,
  3702. "]": n.CLOSE,
  3703. "^": n.WIDEACCENT,
  3704. _: n.WIDEACCENT,
  3705. "`": n.ACCENT,
  3706. "|": n.CLOSE,
  3707. "}": n.CLOSE,
  3708. "~": n.WIDEACCENT
  3709. },
  3710. infix: {
  3711. "": n.ORD,
  3712. "%": [ 3, 3, t.ORD ],
  3713. "\u2022": n.BIN4,
  3714. "\u2026": n.INNER,
  3715. "\u2044": n.TALLBIN,
  3716. "\u2061": n.ORD,
  3717. "\u2062": n.ORD,
  3718. "\u2063": [ 0, 0, t.ORD, {
  3719. linebreakstyle: "after",
  3720. separator: !0
  3721. } ],
  3722. "\u2064": n.ORD,
  3723. "\u2190": n.WIDEREL,
  3724. "\u2191": n.RELSTRETCH,
  3725. "\u2192": n.WIDEREL,
  3726. "\u2193": n.RELSTRETCH,
  3727. "\u2194": n.WIDEREL,
  3728. "\u2195": n.RELSTRETCH,
  3729. "\u2196": n.RELSTRETCH,
  3730. "\u2197": n.RELSTRETCH,
  3731. "\u2198": n.RELSTRETCH,
  3732. "\u2199": n.RELSTRETCH,
  3733. "\u21a6": n.WIDEREL,
  3734. "\u21a9": n.WIDEREL,
  3735. "\u21aa": n.WIDEREL,
  3736. "\u21bc": n.WIDEREL,
  3737. "\u21bd": n.WIDEREL,
  3738. "\u21c0": n.WIDEREL,
  3739. "\u21c1": n.WIDEREL,
  3740. "\u21cc": n.WIDEREL,
  3741. "\u21d0": n.WIDEREL,
  3742. "\u21d1": n.RELSTRETCH,
  3743. "\u21d2": n.WIDEREL,
  3744. "\u21d3": n.RELSTRETCH,
  3745. "\u21d4": n.WIDEREL,
  3746. "\u21d5": n.RELSTRETCH,
  3747. "\u2208": n.REL,
  3748. "\u2209": n.REL,
  3749. "\u220b": n.REL,
  3750. "\u2212": n.BIN4,
  3751. "\u2213": n.BIN4,
  3752. "\u2215": n.TALLBIN,
  3753. "\u2216": n.BIN4,
  3754. "\u2217": n.BIN4,
  3755. "\u2218": n.BIN4,
  3756. "\u2219": n.BIN4,
  3757. "\u221d": n.REL,
  3758. "\u2223": n.REL,
  3759. "\u2225": n.REL,
  3760. "\u2227": n.BIN4,
  3761. "\u2228": n.BIN4,
  3762. "\u2229": n.BIN4,
  3763. "\u222a": n.BIN4,
  3764. "\u223c": n.REL,
  3765. "\u2240": n.BIN4,
  3766. "\u2243": n.REL,
  3767. "\u2245": n.REL,
  3768. "\u2248": n.REL,
  3769. "\u224d": n.REL,
  3770. "\u2250": n.REL,
  3771. "\u2260": n.REL,
  3772. "\u2261": n.REL,
  3773. "\u2264": n.REL,
  3774. "\u2265": n.REL,
  3775. "\u226a": n.REL,
  3776. "\u226b": n.REL,
  3777. "\u227a": n.REL,
  3778. "\u227b": n.REL,
  3779. "\u2282": n.REL,
  3780. "\u2283": n.REL,
  3781. "\u2286": n.REL,
  3782. "\u2287": n.REL,
  3783. "\u228e": n.BIN4,
  3784. "\u2291": n.REL,
  3785. "\u2292": n.REL,
  3786. "\u2293": n.BIN4,
  3787. "\u2294": n.BIN4,
  3788. "\u2295": n.BIN4,
  3789. "\u2296": n.BIN4,
  3790. "\u2297": n.BIN4,
  3791. "\u2298": n.BIN4,
  3792. "\u2299": n.BIN4,
  3793. "\u22a2": n.REL,
  3794. "\u22a3": n.REL,
  3795. "\u22a4": n.ORD55,
  3796. "\u22a5": n.REL,
  3797. "\u22a8": n.REL,
  3798. "\u22c4": n.BIN4,
  3799. "\u22c5": n.BIN4,
  3800. "\u22c6": n.BIN4,
  3801. "\u22c8": n.REL,
  3802. "\u22ee": n.ORD55,
  3803. "\u22ef": n.INNER,
  3804. "\u22f1": [ 5, 5, t.INNER ],
  3805. "\u25b3": n.BIN4,
  3806. "\u25b5": n.BIN4,
  3807. "\u25b9": n.BIN4,
  3808. "\u25bd": n.BIN4,
  3809. "\u25bf": n.BIN4,
  3810. "\u25c3": n.BIN4,
  3811. "\u2758": n.REL,
  3812. "\u27f5": n.WIDEREL,
  3813. "\u27f6": n.WIDEREL,
  3814. "\u27f7": n.WIDEREL,
  3815. "\u27f8": n.WIDEREL,
  3816. "\u27f9": n.WIDEREL,
  3817. "\u27fa": n.WIDEREL,
  3818. "\u27fc": n.WIDEREL,
  3819. "\u2a2f": n.BIN4,
  3820. "\u2a3f": n.BIN4,
  3821. "\u2aaf": n.REL,
  3822. "\u2ab0": n.REL,
  3823. "\u00b1": n.BIN4,
  3824. "\u00b7": n.BIN4,
  3825. "\u00d7": n.BIN4,
  3826. "\u00f7": n.BIN4,
  3827. "*": n.BIN3,
  3828. "+": n.BIN4,
  3829. ",": [ 0, 3, t.PUNCT, {
  3830. linebreakstyle: "after",
  3831. separator: !0
  3832. } ],
  3833. "-": n.BIN4,
  3834. ".": [ 3, 3, t.ORD ],
  3835. "/": n.ORD11,
  3836. ":": [ 1, 2, t.REL ],
  3837. ";": [ 0, 3, t.PUNCT, {
  3838. linebreakstyle: "after",
  3839. separator: !0
  3840. } ],
  3841. "<": n.REL,
  3842. "=": n.REL,
  3843. ">": n.REL,
  3844. "?": [ 1, 1, t.CLOSE ],
  3845. "\\": n.ORD,
  3846. "^": n.ORD11,
  3847. _: n.ORD11,
  3848. "|": [ 2, 2, t.ORD, {
  3849. fence: !0,
  3850. stretchy: !0,
  3851. symmetric: !0
  3852. } ],
  3853. "#": n.ORD,
  3854. $: n.ORD,
  3855. ".": [ 0, 3, t.PUNCT, {
  3856. separator: !0
  3857. } ],
  3858. "\u02b9": n.ORD,
  3859. "\u0300": n.ACCENT,
  3860. "\u0301": n.ACCENT,
  3861. "\u0303": n.WIDEACCENT,
  3862. "\u0304": n.ACCENT,
  3863. "\u0306": n.ACCENT,
  3864. "\u0307": n.ACCENT,
  3865. "\u0308": n.ACCENT,
  3866. "\u030c": n.ACCENT,
  3867. "\u0332": n.WIDEACCENT,
  3868. "\u0338": n.REL4,
  3869. "\u2015": [ 0, 0, t.ORD, {
  3870. stretchy: !0
  3871. } ],
  3872. "\u2017": [ 0, 0, t.ORD, {
  3873. stretchy: !0
  3874. } ],
  3875. "\u2020": n.BIN3,
  3876. "\u2021": n.BIN3,
  3877. "\u20d7": n.ACCENT,
  3878. "\u2111": n.ORD,
  3879. "\u2113": n.ORD,
  3880. "\u2118": n.ORD,
  3881. "\u211c": n.ORD,
  3882. "\u2205": n.ORD,
  3883. "\u221e": n.ORD,
  3884. "\u2305": n.BIN3,
  3885. "\u2306": n.BIN3,
  3886. "\u2322": n.REL4,
  3887. "\u2323": n.REL4,
  3888. "\u2329": n.OPEN,
  3889. "\u232a": n.CLOSE,
  3890. "\u23aa": n.ORD,
  3891. "\u23af": [ 0, 0, t.ORD, {
  3892. stretchy: !0
  3893. } ],
  3894. "\u23b0": n.OPEN,
  3895. "\u23b1": n.CLOSE,
  3896. "\u2500": n.ORD,
  3897. "\u25ef": n.BIN3,
  3898. "\u2660": n.ORD,
  3899. "\u2661": n.ORD,
  3900. "\u2662": n.ORD,
  3901. "\u2663": n.ORD,
  3902. "\u3008": n.OPEN,
  3903. "\u3009": n.CLOSE,
  3904. "\ufe37": n.WIDEACCENT,
  3905. "\ufe38": n.WIDEACCENT
  3906. }
  3907. }
  3908. }, {
  3909. OPTYPES: n
  3910. }), e.mo.prototype.OPTABLE.infix["^"] = n.WIDEREL, e.mo.prototype.OPTABLE.infix._ = n.WIDEREL;
  3911. }(MathJax.ElementJax.mml), MathJax.ElementJax.mml.loadComplete("jax.js"), MathJax.InputJax.TeX = MathJax.InputJax({
  3912. id: "TeX",
  3913. version: "2.1",
  3914. directory: MathJax.InputJax.directory + "/TeX",
  3915. extensionDir: MathJax.InputJax.extensionDir + "/TeX",
  3916. config: {
  3917. TagSide: "right",
  3918. TagIndent: "0.8em",
  3919. MultLineWidth: "85%",
  3920. equationNumbers: {
  3921. autoNumber: "none",
  3922. formatNumber: function(e) {
  3923. return e;
  3924. },
  3925. formatTag: function(e) {
  3926. return "(" + e + ")";
  3927. },
  3928. formatID: function(e) {
  3929. return "mjx-eqn-" + String(e).replace(/[:"'<>&]/g, "");
  3930. },
  3931. formatURL: function(e) {
  3932. return "#" + escape(e);
  3933. },
  3934. useLabelIds: !0
  3935. }
  3936. }
  3937. }), MathJax.InputJax.TeX.Register("math/tex"), MathJax.InputJax.TeX.loadComplete("config.js"), function(e, t, n) {
  3938. var r, i = "\u00a0", s = MathJax.Object.Subclass({
  3939. Init: function(e, t) {
  3940. this.global = {
  3941. isInner: t
  3942. }, this.data = [ o.start(this.global) ], e && (this.data[0].env = e), this.env = this.data[0].env;
  3943. },
  3944. Push: function() {
  3945. var e, t, n, i;
  3946. for (e = 0, t = arguments.length; e < t; e++) {
  3947. n = arguments[e], n instanceof r.mbase && (n = o.mml(n)), n.global = this.global, i = this.data.length ? this.Top().checkItem(n) : !0;
  3948. if (i instanceof Array) this.Pop(), this.Push.apply(this, i); else if (i instanceof o) this.Pop(), this.Push(i); else if (i) {
  3949. this.data.push(n);
  3950. if (n.env) {
  3951. for (var s in this.env) this.env.hasOwnProperty(s) && (n.env[s] = this.env[s]);
  3952. this.env = n.env;
  3953. } else n.env = this.env;
  3954. }
  3955. }
  3956. },
  3957. Pop: function() {
  3958. var e = this.data.pop();
  3959. return e.isOpen || delete e.env, this.env = this.data.length ? this.Top().env : {}, e;
  3960. },
  3961. Top: function(e) {
  3962. return e == null && (e = 1), this.data.length < e ? null : this.data[this.data.length - e];
  3963. },
  3964. Prev: function(e) {
  3965. var t = this.Top();
  3966. return e ? t.data[t.data.length - 1] : t.Pop();
  3967. },
  3968. toString: function() {
  3969. return "stack[\n " + this.data.join("\n ") + "\n]";
  3970. }
  3971. }), o = s.Item = MathJax.Object.Subclass({
  3972. type: "base",
  3973. closeError: "Extra close brace or missing open brace",
  3974. rightError: "Missing \\left or extra \\right",
  3975. Init: function() {
  3976. this.isOpen && (this.env = {}), this.data = [], this.Push.apply(this, arguments);
  3977. },
  3978. Push: function() {
  3979. this.data.push.apply(this.data, arguments);
  3980. },
  3981. Pop: function() {
  3982. return this.data.pop();
  3983. },
  3984. mmlData: function(e, t) {
  3985. return e == null && (e = !0), this.data.length === 1 && !t ? this.data[0] : r.mrow.apply(r, this.data).With(e ? {
  3986. inferred: !0
  3987. } : {});
  3988. },
  3989. checkItem: function(t) {
  3990. t.type === "over" && this.isOpen && (t.num = this.mmlData(!1), this.data = []);
  3991. if (t.type === "cell" && this.isOpen) {
  3992. if (t.linebreak) return !1;
  3993. e.Error("Misplaced " + t.name);
  3994. }
  3995. return t.isClose && this[t.type + "Error"] && e.Error(this[t.type + "Error"]), t.isNotStack ? (this.Push(t.data[0]), !1) : !0;
  3996. },
  3997. With: function(e) {
  3998. for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]);
  3999. return this;
  4000. },
  4001. toString: function() {
  4002. return this.type + "[" + this.data.join("; ") + "]";
  4003. }
  4004. });
  4005. o.start = o.Subclass({
  4006. type: "start",
  4007. isOpen: !0,
  4008. Init: function(e) {
  4009. this.SUPER(arguments).Init.call(this), this.global = e;
  4010. },
  4011. checkItem: function(e) {
  4012. return e.type === "stop" ? o.mml(this.mmlData()) : this.SUPER(arguments).checkItem.call(this, e);
  4013. }
  4014. }), o.stop = o.Subclass({
  4015. type: "stop",
  4016. isClose: !0
  4017. }), o.open = o.Subclass({
  4018. type: "open",
  4019. isOpen: !0,
  4020. stopError: "Extra open brace or missing close brace",
  4021. checkItem: function(e) {
  4022. if (e.type === "close") {
  4023. var t = this.mmlData();
  4024. return o.mml(r.TeXAtom(t));
  4025. }
  4026. return this.SUPER(arguments).checkItem.call(this, e);
  4027. }
  4028. }), o.close = o.Subclass({
  4029. type: "close",
  4030. isClose: !0
  4031. }), o.prime = o.Subclass({
  4032. type: "prime",
  4033. checkItem: function(e) {
  4034. return this.data[0].type !== "msubsup" ? [ r.msup(this.data[0], this.data[1]), e ] : (this.data[0].SetData(this.data[0].sup, this.data[1]), [ this.data[0], e ]);
  4035. }
  4036. }), o.subsup = o.Subclass({
  4037. type: "subsup",
  4038. stopError: "Missing superscript or subscript argument",
  4039. checkItem: function(t) {
  4040. var n = [ "", "subscript", "superscript" ][this.position];
  4041. if (t.type === "open" || t.type === "left") return !0;
  4042. if (t.type === "mml") return this.primes && (this.position !== 2 ? this.data[0].SetData(2, this.primes) : t.data[0] = r.mrow(this.primes.With({
  4043. variantForm: !0
  4044. }), t.data[0])), this.data[0].SetData(this.position, t.data[0]), o.mml(this.data[0]);
  4045. this.SUPER(arguments).checkItem.call(this, t) && e.Error("Missing open brace for " + n);
  4046. },
  4047. Pop: function() {}
  4048. }), o.over = o.Subclass({
  4049. type: "over",
  4050. isClose: !0,
  4051. name: "\\over",
  4052. checkItem: function(t, n) {
  4053. t.type === "over" && e.Error("Ambiguous use of " + t.name);
  4054. if (t.isClose) {
  4055. var i = r.mfrac(this.num, this.mmlData(!1));
  4056. this.thickness != null && (i.linethickness = this.thickness);
  4057. if (this.open || this.close) i.texClass = r.TEXCLASS.INNER, i.texWithDelims = !0, i = r.mfenced(i).With({
  4058. open: this.open,
  4059. close: this.close
  4060. });
  4061. return [ o.mml(i), t ];
  4062. }
  4063. return this.SUPER(arguments).checkItem.call(this, t);
  4064. },
  4065. toString: function() {
  4066. return "over[" + this.num + " / " + this.data.join("; ") + "]";
  4067. }
  4068. }), o.left = o.Subclass({
  4069. type: "left",
  4070. isOpen: !0,
  4071. delim: "(",
  4072. stopError: "Extra \\left or missing \\right",
  4073. checkItem: function(e) {
  4074. if (e.type === "right") {
  4075. var t = r.mfenced(this.data.length === 1 ? this.data[0] : r.mrow.apply(r, this.data));
  4076. return o.mml(t.With({
  4077. open: this.delim,
  4078. close: e.delim
  4079. }));
  4080. }
  4081. return this.SUPER(arguments).checkItem.call(this, e);
  4082. }
  4083. }), o.right = o.Subclass({
  4084. type: "right",
  4085. isClose: !0,
  4086. delim: ")"
  4087. }), o.begin = o.Subclass({
  4088. type: "begin",
  4089. isOpen: !0,
  4090. checkItem: function(t) {
  4091. return t.type === "end" ? (t.name !== this.name && e.Error("\\begin{" + this.name + "} ended with \\end{" + t.name + "}"), this.end ? this.parse[this.end].call(this.parse, this, this.data) : o.mml(this.mmlData())) : (t.type === "stop" && e.Error("Missing \\end{" + this.name + "}"), this.SUPER(arguments).checkItem.call(this, t));
  4092. }
  4093. }), o.end = o.Subclass({
  4094. type: "end",
  4095. isClose: !0
  4096. }), o.style = o.Subclass({
  4097. type: "style",
  4098. checkItem: function(e) {
  4099. if (!e.isClose) return this.SUPER(arguments).checkItem.call(this, e);
  4100. var t = r.mstyle.apply(r, this.data).With(this.styles);
  4101. return [ o.mml(t), e ];
  4102. }
  4103. }), o.position = o.Subclass({
  4104. type: "position",
  4105. checkItem: function(t) {
  4106. t.isClose && e.Error("Missing box for " + this.name);
  4107. if (t.isNotStack) {
  4108. var n = t.mmlData();
  4109. switch (this.move) {
  4110. case "vertical":
  4111. return n = r.mpadded(n).With({
  4112. height: this.dh,
  4113. depth: this.dd,
  4114. voffset: this.dh
  4115. }), [ o.mml(n) ];
  4116. case "horizontal":
  4117. return [ o.mml(this.left), t, o.mml(this.right) ];
  4118. }
  4119. }
  4120. return this.SUPER(arguments).checkItem.call(this, t);
  4121. }
  4122. }), o.array = o.Subclass({
  4123. type: "array",
  4124. isOpen: !0,
  4125. arraydef: {},
  4126. Init: function() {
  4127. this.table = [], this.row = [], this.env = {}, this.frame = [], this.SUPER(arguments).Init.apply(this, arguments);
  4128. },
  4129. checkItem: function(t) {
  4130. if (t.isClose && t.type !== "over") {
  4131. if (t.isEntry) return this.EndEntry(), this.clearEnv(), !1;
  4132. if (t.isCR) return this.EndEntry(), this.EndRow(), this.clearEnv(), !1;
  4133. this.EndTable(), this.clearEnv();
  4134. var n = r.mtable.apply(r, this.table).With(this.arraydef);
  4135. if (this.frame.length === 4) n.frame = this.frame.dashed ? "dashed" : "solid"; else if (this.frame.length) {
  4136. n.hasFrame = !0, this.arraydef.rowlines && (this.arraydef.rowlines = this.arraydef.rowlines.replace(/none( none)+$/, "none")), n = r.menclose(n).With({
  4137. notation: this.frame.join(" "),
  4138. isFrame: !0
  4139. });
  4140. if ((this.arraydef.columnlines || "none") != "none" || (this.arraydef.rowlines || "none") != "none") n.padding = 0;
  4141. }
  4142. if (this.open || this.close) n = r.mfenced(n).With({
  4143. open: this.open,
  4144. close: this.close
  4145. });
  4146. n = o.mml(n);
  4147. if (this.requireClose) {
  4148. if (t.type === "close") return n;
  4149. e.Error("Missing close brace");
  4150. }
  4151. return [ n, t ];
  4152. }
  4153. return this.SUPER(arguments).checkItem.call(this, t);
  4154. },
  4155. EndEntry: function() {
  4156. this.row.push(r.mtd.apply(r, this.data)), this.data = [];
  4157. },
  4158. EndRow: function() {
  4159. this.table.push(r.mtr.apply(r, this.row)), this.row = [];
  4160. },
  4161. EndTable: function() {
  4162. if (this.data.length || this.row.length) this.EndEntry(), this.EndRow();
  4163. this.checkLines();
  4164. },
  4165. checkLines: function() {
  4166. if (this.arraydef.rowlines) {
  4167. var e = this.arraydef.rowlines.split(/ /);
  4168. e.length === this.table.length ? (this.frame.push("bottom"), e.pop(), this.arraydef.rowlines = e.join(" ")) : e.length < this.table.length - 1 && (this.arraydef.rowlines += " none");
  4169. }
  4170. if (this.rowspacing) {
  4171. var t = this.arraydef.rowspacing.split(/ /);
  4172. while (t.length < this.table.length) t.push(this.rowspacing + "em");
  4173. this.arraydef.rowspacing = t.join(" ");
  4174. }
  4175. },
  4176. clearEnv: function() {
  4177. for (var e in this.env) this.env.hasOwnProperty(e) && delete this.env[e];
  4178. }
  4179. }), o.cell = o.Subclass({
  4180. type: "cell",
  4181. isClose: !0
  4182. }), o.mml = o.Subclass({
  4183. type: "mml",
  4184. isNotStack: !0,
  4185. Add: function() {
  4186. return this.data.push.apply(this.data, arguments), this;
  4187. }
  4188. }), o.fn = o.Subclass({
  4189. type: "fn",
  4190. checkItem: function(e) {
  4191. if (this.data[0]) {
  4192. if (e.type !== "mml" || !e.data[0]) return [ this.data[0], e ];
  4193. if (e.data[0].isa(r.mspace)) return [ this.data[0], e ];
  4194. var t = e.data[0];
  4195. return t.isEmbellished() && (t = t.CoreMO()), [ 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 ][t.Get("texClass")] ? [ this.data[0], e ] : [ this.data[0], r.mo(r.entity("#x2061")).With({
  4196. texClass: r.TEXCLASS.NONE
  4197. }), e ];
  4198. }
  4199. return this.SUPER(arguments).checkItem.apply(this, arguments);
  4200. }
  4201. }), o.not = o.Subclass({
  4202. type: "not",
  4203. checkItem: function(e) {
  4204. var t, n;
  4205. if (e.type === "open" || e.type === "left") return !0;
  4206. if (e.type === "mml" && e.data[0].type.match(/^(mo|mi|mtext)$/)) {
  4207. t = e.data[0], n = t.data.join("");
  4208. if (n.length === 1 && !t.movesupsub) return n = o.not.remap[n.charCodeAt(0)], n ? t.SetData(0, r.chars(String.fromCharCode(n))) : t.Append(r.chars("\u0338")), e;
  4209. }
  4210. return t = r.mpadded(r.mtext("\u29f8")).With({
  4211. width: 0
  4212. }), t = r.TeXAtom(t).With({
  4213. texClass: r.TEXCLASS.REL
  4214. }), [ t, e ];
  4215. }
  4216. }), o.not.remap = {
  4217. 8592: 8602,
  4218. 8594: 8603,
  4219. 8596: 8622,
  4220. 8656: 8653,
  4221. 8658: 8655,
  4222. 8660: 8654,
  4223. 8712: 8713,
  4224. 8715: 8716,
  4225. 8739: 8740,
  4226. 8741: 8742,
  4227. 8764: 8769,
  4228. 126: 8769,
  4229. 8771: 8772,
  4230. 8773: 8775,
  4231. 8776: 8777,
  4232. 8781: 8813,
  4233. 61: 8800,
  4234. 8801: 8802,
  4235. 60: 8814,
  4236. 62: 8815,
  4237. 8804: 8816,
  4238. 8805: 8817,
  4239. 8818: 8820,
  4240. 8819: 8821,
  4241. 8822: 8824,
  4242. 8823: 8825,
  4243. 8826: 8832,
  4244. 8827: 8833,
  4245. 8834: 8836,
  4246. 8835: 8837,
  4247. 8838: 8840,
  4248. 8839: 8841,
  4249. 8866: 8876,
  4250. 8872: 8877,
  4251. 8873: 8878,
  4252. 8875: 8879,
  4253. 8828: 8928,
  4254. 8829: 8929,
  4255. 8849: 8930,
  4256. 8850: 8931,
  4257. 8882: 8938,
  4258. 8883: 8939,
  4259. 8884: 8940,
  4260. 8885: 8941,
  4261. 8707: 8708
  4262. }, o.dots = o.Subclass({
  4263. type: "dots",
  4264. checkItem: function(e) {
  4265. if (e.type === "open" || e.type === "left") return !0;
  4266. var t = this.ldots;
  4267. if (e.type === "mml" && e.data[0].isEmbellished()) {
  4268. var n = e.data[0].CoreMO().Get("texClass");
  4269. if (n === r.TEXCLASS.BIN || n === r.TEXCLASS.REL) t = this.cdots;
  4270. }
  4271. return [ t, e ];
  4272. }
  4273. });
  4274. var u = {
  4275. Add: function(e, t, n) {
  4276. t || (t = this);
  4277. for (var r in e) if (e.hasOwnProperty(r)) if (typeof e[r] != "object" || e[r] instanceof Array || typeof t[r] != "object" && typeof t[r] != "function") {
  4278. if (!t[r] || !t[r].isUser || !n) t[r] = e[r];
  4279. } else this.Add(e[r], t[r], e[r], n);
  4280. return t;
  4281. }
  4282. }, a = function() {
  4283. r = MathJax.ElementJax.mml, t.Insert(u, {
  4284. letter: /[a-z]/i,
  4285. digit: /[0-9.]/,
  4286. number: /^(?:[0-9]+(?:\{,\}[0-9]{3})*(?:\.[0-9]*)*|\.[0-9]+)/,
  4287. special: {
  4288. "\\": "ControlSequence",
  4289. "{": "Open",
  4290. "}": "Close",
  4291. "~": "Tilde",
  4292. "^": "Superscript",
  4293. _: "Subscript",
  4294. " ": "Space",
  4295. " ": "Space",
  4296. "\r": "Space",
  4297. "\n": "Space",
  4298. "'": "Prime",
  4299. "%": "Comment",
  4300. "&": "Entry",
  4301. "#": "Hash",
  4302. "\u2019": "Prime"
  4303. },
  4304. remap: {
  4305. "-": "2212",
  4306. "*": "2217"
  4307. },
  4308. mathchar0mi: {
  4309. alpha: "03B1",
  4310. beta: "03B2",
  4311. gamma: "03B3",
  4312. delta: "03B4",
  4313. epsilon: "03F5",
  4314. zeta: "03B6",
  4315. eta: "03B7",
  4316. theta: "03B8",
  4317. iota: "03B9",
  4318. kappa: "03BA",
  4319. lambda: "03BB",
  4320. mu: "03BC",
  4321. nu: "03BD",
  4322. xi: "03BE",
  4323. omicron: "03BF",
  4324. pi: "03C0",
  4325. rho: "03C1",
  4326. sigma: "03C3",
  4327. tau: "03C4",
  4328. upsilon: "03C5",
  4329. phi: "03D5",
  4330. chi: "03C7",
  4331. psi: "03C8",
  4332. omega: "03C9",
  4333. varepsilon: "03B5",
  4334. vartheta: "03D1",
  4335. varpi: "03D6",
  4336. varrho: "03F1",
  4337. varsigma: "03C2",
  4338. varphi: "03C6",
  4339. S: [ "00A7", {
  4340. mathvariant: r.VARIANT.NORMAL
  4341. } ],
  4342. aleph: [ "2135", {
  4343. mathvariant: r.VARIANT.NORMAL
  4344. } ],
  4345. hbar: [ "210F", {
  4346. variantForm: !0
  4347. } ],
  4348. imath: "0131",
  4349. jmath: "0237",
  4350. ell: "2113",
  4351. wp: [ "2118", {
  4352. mathvariant: r.VARIANT.NORMAL
  4353. } ],
  4354. Re: [ "211C", {
  4355. mathvariant: r.VARIANT.NORMAL
  4356. } ],
  4357. Im: [ "2111", {
  4358. mathvariant: r.VARIANT.NORMAL
  4359. } ],
  4360. partial: [ "2202", {
  4361. mathvariant: r.VARIANT.NORMAL
  4362. } ],
  4363. infty: [ "221E", {
  4364. mathvariant: r.VARIANT.NORMAL
  4365. } ],
  4366. prime: [ "2032", {
  4367. mathvariant: r.VARIANT.NORMAL,
  4368. variantForm: !0
  4369. } ],
  4370. emptyset: [ "2205", {
  4371. mathvariant: r.VARIANT.NORMAL
  4372. } ],
  4373. nabla: [ "2207", {
  4374. mathvariant: r.VARIANT.NORMAL
  4375. } ],
  4376. top: [ "22A4", {
  4377. mathvariant: r.VARIANT.NORMAL
  4378. } ],
  4379. bot: [ "22A5", {
  4380. mathvariant: r.VARIANT.NORMAL
  4381. } ],
  4382. angle: [ "2220", {
  4383. mathvariant: r.VARIANT.NORMAL
  4384. } ],
  4385. triangle: [ "25B3", {
  4386. mathvariant: r.VARIANT.NORMAL
  4387. } ],
  4388. backslash: [ "2216", {
  4389. mathvariant: r.VARIANT.NORMAL,
  4390. variantForm: !0
  4391. } ],
  4392. forall: [ "2200", {
  4393. mathvariant: r.VARIANT.NORMAL
  4394. } ],
  4395. exists: [ "2203", {
  4396. mathvariant: r.VARIANT.NORMAL
  4397. } ],
  4398. neg: [ "00AC", {
  4399. mathvariant: r.VARIANT.NORMAL
  4400. } ],
  4401. lnot: [ "00AC", {
  4402. mathvariant: r.VARIANT.NORMAL
  4403. } ],
  4404. flat: [ "266D", {
  4405. mathvariant: r.VARIANT.NORMAL
  4406. } ],
  4407. natural: [ "266E", {
  4408. mathvariant: r.VARIANT.NORMAL
  4409. } ],
  4410. sharp: [ "266F", {
  4411. mathvariant: r.VARIANT.NORMAL
  4412. } ],
  4413. clubsuit: [ "2663", {
  4414. mathvariant: r.VARIANT.NORMAL
  4415. } ],
  4416. diamondsuit: [ "2662", {
  4417. mathvariant: r.VARIANT.NORMAL
  4418. } ],
  4419. heartsuit: [ "2661", {
  4420. mathvariant: r.VARIANT.NORMAL
  4421. } ],
  4422. spadesuit: [ "2660", {
  4423. mathvariant: r.VARIANT.NORMAL
  4424. } ]
  4425. },
  4426. mathchar0mo: {
  4427. surd: "221A",
  4428. coprod: [ "2210", {
  4429. texClass: r.TEXCLASS.OP,
  4430. movesupsub: !0
  4431. } ],
  4432. bigvee: [ "22C1", {
  4433. texClass: r.TEXCLASS.OP,
  4434. movesupsub: !0
  4435. } ],
  4436. bigwedge: [ "22C0", {
  4437. texClass: r.TEXCLASS.OP,
  4438. movesupsub: !0
  4439. } ],
  4440. biguplus: [ "2A04", {
  4441. texClass: r.TEXCLASS.OP,
  4442. movesupsub: !0
  4443. } ],
  4444. bigcap: [ "22C2", {
  4445. texClass: r.TEXCLASS.OP,
  4446. movesupsub: !0
  4447. } ],
  4448. bigcup: [ "22C3", {
  4449. texClass: r.TEXCLASS.OP,
  4450. movesupsub: !0
  4451. } ],
  4452. "int": [ "222B", {
  4453. texClass: r.TEXCLASS.OP
  4454. } ],
  4455. intop: [ "222B", {
  4456. texClass: r.TEXCLASS.OP,
  4457. movesupsub: !0,
  4458. movablelimits: !0
  4459. } ],
  4460. iint: [ "222C", {
  4461. texClass: r.TEXCLASS.OP
  4462. } ],
  4463. iiint: [ "222D", {
  4464. texClass: r.TEXCLASS.OP
  4465. } ],
  4466. prod: [ "220F", {
  4467. texClass: r.TEXCLASS.OP,
  4468. movesupsub: !0
  4469. } ],
  4470. sum: [ "2211", {
  4471. texClass: r.TEXCLASS.OP,
  4472. movesupsub: !0
  4473. } ],
  4474. bigotimes: [ "2A02", {
  4475. texClass: r.TEXCLASS.OP,
  4476. movesupsub: !0
  4477. } ],
  4478. bigoplus: [ "2A01", {
  4479. texClass: r.TEXCLASS.OP,
  4480. movesupsub: !0
  4481. } ],
  4482. bigodot: [ "2A00", {
  4483. texClass: r.TEXCLASS.OP,
  4484. movesupsub: !0
  4485. } ],
  4486. oint: [ "222E", {
  4487. texClass: r.TEXCLASS.OP
  4488. } ],
  4489. bigsqcup: [ "2A06", {
  4490. texClass: r.TEXCLASS.OP,
  4491. movesupsub: !0
  4492. } ],
  4493. smallint: [ "222B", {
  4494. largeop: !1
  4495. } ],
  4496. triangleleft: "25C3",
  4497. triangleright: "25B9",
  4498. bigtriangleup: "25B3",
  4499. bigtriangledown: "25BD",
  4500. wedge: "2227",
  4501. land: "2227",
  4502. vee: "2228",
  4503. lor: "2228",
  4504. cap: "2229",
  4505. cup: "222A",
  4506. ddagger: "2021",
  4507. dagger: "2020",
  4508. sqcap: "2293",
  4509. sqcup: "2294",
  4510. uplus: "228E",
  4511. amalg: "2A3F",
  4512. diamond: "22C4",
  4513. bullet: "2219",
  4514. wr: "2240",
  4515. div: "00F7",
  4516. odot: [ "2299", {
  4517. largeop: !1
  4518. } ],
  4519. oslash: [ "2298", {
  4520. largeop: !1
  4521. } ],
  4522. otimes: [ "2297", {
  4523. largeop: !1
  4524. } ],
  4525. ominus: [ "2296", {
  4526. largeop: !1
  4527. } ],
  4528. oplus: [ "2295", {
  4529. largeop: !1
  4530. } ],
  4531. mp: "2213",
  4532. pm: "00B1",
  4533. circ: "2218",
  4534. bigcirc: "25EF",
  4535. setminus: [ "2216", {
  4536. variantForm: !0
  4537. } ],
  4538. cdot: "22C5",
  4539. ast: "2217",
  4540. times: "00D7",
  4541. star: "22C6",
  4542. propto: "221D",
  4543. sqsubseteq: "2291",
  4544. sqsupseteq: "2292",
  4545. parallel: "2225",
  4546. mid: "2223",
  4547. dashv: "22A3",
  4548. vdash: "22A2",
  4549. leq: "2264",
  4550. le: "2264",
  4551. geq: "2265",
  4552. ge: "2265",
  4553. lt: "003C",
  4554. gt: "003E",
  4555. succ: "227B",
  4556. prec: "227A",
  4557. approx: "2248",
  4558. succeq: "2AB0",
  4559. preceq: "2AAF",
  4560. supset: "2283",
  4561. subset: "2282",
  4562. supseteq: "2287",
  4563. subseteq: "2286",
  4564. "in": "2208",
  4565. ni: "220B",
  4566. notin: "2209",
  4567. owns: "220B",
  4568. gg: "226B",
  4569. ll: "226A",
  4570. sim: "223C",
  4571. simeq: "2243",
  4572. perp: "22A5",
  4573. equiv: "2261",
  4574. asymp: "224D",
  4575. smile: "2323",
  4576. frown: "2322",
  4577. ne: "2260",
  4578. neq: "2260",
  4579. cong: "2245",
  4580. doteq: "2250",
  4581. bowtie: "22C8",
  4582. models: "22A8",
  4583. notChar: "29F8",
  4584. Leftrightarrow: "21D4",
  4585. Leftarrow: "21D0",
  4586. Rightarrow: "21D2",
  4587. leftrightarrow: "2194",
  4588. leftarrow: "2190",
  4589. gets: "2190",
  4590. rightarrow: "2192",
  4591. to: "2192",
  4592. mapsto: "21A6",
  4593. leftharpoonup: "21BC",
  4594. leftharpoondown: "21BD",
  4595. rightharpoonup: "21C0",
  4596. rightharpoondown: "21C1",
  4597. nearrow: "2197",
  4598. searrow: "2198",
  4599. nwarrow: "2196",
  4600. swarrow: "2199",
  4601. rightleftharpoons: "21CC",
  4602. hookrightarrow: "21AA",
  4603. hookleftarrow: "21A9",
  4604. longleftarrow: "27F5",
  4605. Longleftarrow: "27F8",
  4606. longrightarrow: "27F6",
  4607. Longrightarrow: "27F9",
  4608. Longleftrightarrow: "27FA",
  4609. longleftrightarrow: "27F7",
  4610. longmapsto: "27FC",
  4611. ldots: "2026",
  4612. cdots: "22EF",
  4613. vdots: "22EE",
  4614. ddots: "22F1",
  4615. dotsc: "2026",
  4616. dotsb: "22EF",
  4617. dotsm: "22EF",
  4618. dotsi: "22EF",
  4619. dotso: "2026",
  4620. ldotp: [ "002E", {
  4621. texClass: r.TEXCLASS.PUNCT
  4622. } ],
  4623. cdotp: [ "22C5", {
  4624. texClass: r.TEXCLASS.PUNCT
  4625. } ],
  4626. colon: [ "003A", {
  4627. texClass: r.TEXCLASS.PUNCT
  4628. } ]
  4629. },
  4630. mathchar7: {
  4631. Gamma: "0393",
  4632. Delta: "0394",
  4633. Theta: "0398",
  4634. Lambda: "039B",
  4635. Xi: "039E",
  4636. Pi: "03A0",
  4637. Sigma: "03A3",
  4638. Upsilon: "03A5",
  4639. Phi: "03A6",
  4640. Psi: "03A8",
  4641. Omega: "03A9",
  4642. _: "005F",
  4643. "#": "0023",
  4644. $: "0024",
  4645. "%": "0025",
  4646. "&": "0026",
  4647. And: "0026"
  4648. },
  4649. delimiter: {
  4650. "(": "(",
  4651. ")": ")",
  4652. "[": "[",
  4653. "]": "]",
  4654. "<": "27E8",
  4655. ">": "27E9",
  4656. "\\lt": "27E8",
  4657. "\\gt": "27E9",
  4658. "/": "/",
  4659. "|": [ "|", {
  4660. texClass: r.TEXCLASS.ORD
  4661. } ],
  4662. ".": "",
  4663. "\\\\": "\\",
  4664. "\\lmoustache": "23B0",
  4665. "\\rmoustache": "23B1",
  4666. "\\lgroup": "27EE",
  4667. "\\rgroup": "27EF",
  4668. "\\arrowvert": "23D0",
  4669. "\\Arrowvert": "2016",
  4670. "\\bracevert": "23AA",
  4671. "\\Vert": [ "2225", {
  4672. texClass: r.TEXCLASS.ORD
  4673. } ],
  4674. "\\|": [ "2225", {
  4675. texClass: r.TEXCLASS.ORD
  4676. } ],
  4677. "\\vert": [ "|", {
  4678. texClass: r.TEXCLASS.ORD
  4679. } ],
  4680. "\\uparrow": "2191",
  4681. "\\downarrow": "2193",
  4682. "\\updownarrow": "2195",
  4683. "\\Uparrow": "21D1",
  4684. "\\Downarrow": "21D3",
  4685. "\\Updownarrow": "21D5",
  4686. "\\backslash": "\\",
  4687. "\\rangle": "27E9",
  4688. "\\langle": "27E8",
  4689. "\\rbrace": "}",
  4690. "\\lbrace": "{",
  4691. "\\}": "}",
  4692. "\\{": "{",
  4693. "\\rceil": "2309",
  4694. "\\lceil": "2308",
  4695. "\\rfloor": "230B",
  4696. "\\lfloor": "230A",
  4697. "\\lbrack": "[",
  4698. "\\rbrack": "]"
  4699. },
  4700. macros: {
  4701. displaystyle: [ "SetStyle", "D", !0, 0 ],
  4702. textstyle: [ "SetStyle", "T", !1, 0 ],
  4703. scriptstyle: [ "SetStyle", "S", !1, 1 ],
  4704. scriptscriptstyle: [ "SetStyle", "SS", !1, 2 ],
  4705. rm: [ "SetFont", r.VARIANT.NORMAL ],
  4706. mit: [ "SetFont", r.VARIANT.ITALIC ],
  4707. oldstyle: [ "SetFont", r.VARIANT.OLDSTYLE ],
  4708. cal: [ "SetFont", r.VARIANT.CALIGRAPHIC ],
  4709. it: [ "SetFont", "-tex-mathit" ],
  4710. bf: [ "SetFont", r.VARIANT.BOLD ],
  4711. bbFont: [ "SetFont", r.VARIANT.DOUBLESTRUCK ],
  4712. scr: [ "SetFont", r.VARIANT.SCRIPT ],
  4713. frak: [ "SetFont", r.VARIANT.FRAKTUR ],
  4714. sf: [ "SetFont", r.VARIANT.SANSSERIF ],
  4715. tt: [ "SetFont", r.VARIANT.MONOSPACE ],
  4716. tiny: [ "SetSize", .5 ],
  4717. Tiny: [ "SetSize", .6 ],
  4718. scriptsize: [ "SetSize", .7 ],
  4719. small: [ "SetSize", .85 ],
  4720. normalsize: [ "SetSize", 1 ],
  4721. large: [ "SetSize", 1.2 ],
  4722. Large: [ "SetSize", 1.44 ],
  4723. LARGE: [ "SetSize", 1.73 ],
  4724. huge: [ "SetSize", 2.07 ],
  4725. Huge: [ "SetSize", 2.49 ],
  4726. arcsin: [ "NamedFn" ],
  4727. arccos: [ "NamedFn" ],
  4728. arctan: [ "NamedFn" ],
  4729. arg: [ "NamedFn" ],
  4730. cos: [ "NamedFn" ],
  4731. cosh: [ "NamedFn" ],
  4732. cot: [ "NamedFn" ],
  4733. coth: [ "NamedFn" ],
  4734. csc: [ "NamedFn" ],
  4735. deg: [ "NamedFn" ],
  4736. det: "NamedOp",
  4737. dim: [ "NamedFn" ],
  4738. exp: [ "NamedFn" ],
  4739. gcd: "NamedOp",
  4740. hom: [ "NamedFn" ],
  4741. inf: "NamedOp",
  4742. ker: [ "NamedFn" ],
  4743. lg: [ "NamedFn" ],
  4744. lim: "NamedOp",
  4745. liminf: [ "NamedOp", "lim&thinsp;inf" ],
  4746. limsup: [ "NamedOp", "lim&thinsp;sup" ],
  4747. ln: [ "NamedFn" ],
  4748. log: [ "NamedFn" ],
  4749. max: "NamedOp",
  4750. min: "NamedOp",
  4751. Pr: "NamedOp",
  4752. sec: [ "NamedFn" ],
  4753. sin: [ "NamedFn" ],
  4754. sinh: [ "NamedFn" ],
  4755. sup: "NamedOp",
  4756. tan: [ "NamedFn" ],
  4757. tanh: [ "NamedFn" ],
  4758. limits: [ "Limits", 1 ],
  4759. nolimits: [ "Limits", 0 ],
  4760. overline: [ "UnderOver", "00AF" ],
  4761. underline: [ "UnderOver", "005F" ],
  4762. overbrace: [ "UnderOver", "23DE", 1 ],
  4763. underbrace: [ "UnderOver", "23DF", 1 ],
  4764. overrightarrow: [ "UnderOver", "2192" ],
  4765. underrightarrow: [ "UnderOver", "2192" ],
  4766. overleftarrow: [ "UnderOver", "2190" ],
  4767. underleftarrow: [ "UnderOver", "2190" ],
  4768. overleftrightarrow: [ "UnderOver", "2194" ],
  4769. underleftrightarrow: [ "UnderOver", "2194" ],
  4770. overset: "Overset",
  4771. underset: "Underset",
  4772. stackrel: [ "Macro", "\\mathrel{\\mathop{#2}\\limits^{#1}}", 2 ],
  4773. over: "Over",
  4774. overwithdelims: "Over",
  4775. atop: "Over",
  4776. atopwithdelims: "Over",
  4777. above: "Over",
  4778. abovewithdelims: "Over",
  4779. brace: [ "Over", "{", "}" ],
  4780. brack: [ "Over", "[", "]" ],
  4781. choose: [ "Over", "(", ")" ],
  4782. frac: "Frac",
  4783. sqrt: "Sqrt",
  4784. root: "Root",
  4785. uproot: [ "MoveRoot", "upRoot" ],
  4786. leftroot: [ "MoveRoot", "leftRoot" ],
  4787. left: "LeftRight",
  4788. right: "LeftRight",
  4789. middle: "Middle",
  4790. llap: "Lap",
  4791. rlap: "Lap",
  4792. raise: "RaiseLower",
  4793. lower: "RaiseLower",
  4794. moveleft: "MoveLeftRight",
  4795. moveright: "MoveLeftRight",
  4796. ",": [ "Spacer", r.LENGTH.THINMATHSPACE ],
  4797. ":": [ "Spacer", r.LENGTH.MEDIUMMATHSPACE ],
  4798. ">": [ "Spacer", r.LENGTH.MEDIUMMATHSPACE ],
  4799. ";": [ "Spacer", r.LENGTH.THICKMATHSPACE ],
  4800. "!": [ "Spacer", r.LENGTH.NEGATIVETHINMATHSPACE ],
  4801. enspace: [ "Spacer", ".5em" ],
  4802. quad: [ "Spacer", "1em" ],
  4803. qquad: [ "Spacer", "2em" ],
  4804. thinspace: [ "Spacer", r.LENGTH.THINMATHSPACE ],
  4805. negthinspace: [ "Spacer", r.LENGTH.NEGATIVETHINMATHSPACE ],
  4806. hskip: "Hskip",
  4807. hspace: "Hskip",
  4808. kern: "Hskip",
  4809. mskip: "Hskip",
  4810. mspace: "Hskip",
  4811. mkern: "Hskip",
  4812. Rule: [ "Rule" ],
  4813. Space: [ "Rule", "blank" ],
  4814. big: [ "MakeBig", r.TEXCLASS.ORD, .85 ],
  4815. Big: [ "MakeBig", r.TEXCLASS.ORD, 1.15 ],
  4816. bigg: [ "MakeBig", r.TEXCLASS.ORD, 1.45 ],
  4817. Bigg: [ "MakeBig", r.TEXCLASS.ORD, 1.75 ],
  4818. bigl: [ "MakeBig", r.TEXCLASS.OPEN, .85 ],
  4819. Bigl: [ "MakeBig", r.TEXCLASS.OPEN, 1.15 ],
  4820. biggl: [ "MakeBig", r.TEXCLASS.OPEN, 1.45 ],
  4821. Biggl: [ "MakeBig", r.TEXCLASS.OPEN, 1.75 ],
  4822. bigr: [ "MakeBig", r.TEXCLASS.CLOSE, .85 ],
  4823. Bigr: [ "MakeBig", r.TEXCLASS.CLOSE, 1.15 ],
  4824. biggr: [ "MakeBig", r.TEXCLASS.CLOSE, 1.45 ],
  4825. Biggr: [ "MakeBig", r.TEXCLASS.CLOSE, 1.75 ],
  4826. bigm: [ "MakeBig", r.TEXCLASS.REL, .85 ],
  4827. Bigm: [ "MakeBig", r.TEXCLASS.REL, 1.15 ],
  4828. biggm: [ "MakeBig", r.TEXCLASS.REL, 1.45 ],
  4829. Biggm: [ "MakeBig", r.TEXCLASS.REL, 1.75 ],
  4830. mathord: [ "TeXAtom", r.TEXCLASS.ORD ],
  4831. mathop: [ "TeXAtom", r.TEXCLASS.OP ],
  4832. mathopen: [ "TeXAtom", r.TEXCLASS.OPEN ],
  4833. mathclose: [ "TeXAtom", r.TEXCLASS.CLOSE ],
  4834. mathbin: [ "TeXAtom", r.TEXCLASS.BIN ],
  4835. mathrel: [ "TeXAtom", r.TEXCLASS.REL ],
  4836. mathpunct: [ "TeXAtom", r.TEXCLASS.PUNCT ],
  4837. mathinner: [ "TeXAtom", r.TEXCLASS.INNER ],
  4838. vcenter: [ "TeXAtom", r.TEXCLASS.VCENTER ],
  4839. mathchoice: [ "Extension", "mathchoice" ],
  4840. buildrel: "BuildRel",
  4841. hbox: [ "HBox", 0 ],
  4842. text: "HBox",
  4843. mbox: [ "HBox", 0 ],
  4844. fbox: "FBox",
  4845. strut: "Strut",
  4846. mathstrut: [ "Macro", "\\vphantom{(}" ],
  4847. phantom: "Phantom",
  4848. vphantom: [ "Phantom", 1, 0 ],
  4849. hphantom: [ "Phantom", 0, 1 ],
  4850. smash: "Smash",
  4851. acute: [ "Accent", "00B4" ],
  4852. grave: [ "Accent", "0060" ],
  4853. ddot: [ "Accent", "00A8" ],
  4854. tilde: [ "Accent", "007E" ],
  4855. bar: [ "Accent", "00AF" ],
  4856. breve: [ "Accent", "02D8" ],
  4857. check: [ "Accent", "02C7" ],
  4858. hat: [ "Accent", "005E" ],
  4859. vec: [ "Accent", "2192" ],
  4860. dot: [ "Accent", "02D9" ],
  4861. widetilde: [ "Accent", "007E", 1 ],
  4862. widehat: [ "Accent", "005E", 1 ],
  4863. matrix: "Matrix",
  4864. array: "Matrix",
  4865. pmatrix: [ "Matrix", "(", ")" ],
  4866. cases: [ "Matrix", "{", "", "left left", null, ".1em", null, !0 ],
  4867. eqalign: [ "Matrix", null, null, "right left", r.LENGTH.THICKMATHSPACE, ".5em", "D" ],
  4868. displaylines: [ "Matrix", null, null, "center", null, ".5em", "D" ],
  4869. cr: "Cr",
  4870. "\\": "CrLaTeX",
  4871. newline: "Cr",
  4872. hline: [ "HLine", "solid" ],
  4873. hdashline: [ "HLine", "dashed" ],
  4874. eqalignno: [ "Matrix", null, null, "right left right", r.LENGTH.THICKMATHSPACE + " 3em", ".5em", "D" ],
  4875. leqalignno: [ "Matrix", null, null, "right left right", r.LENGTH.THICKMATHSPACE + " 3em", ".5em", "D" ],
  4876. bmod: [ "Macro", "\\mathbin{\\mmlToken{mo}{mod}}" ],
  4877. pmod: [ "Macro", "\\pod{\\mmlToken{mi}{mod}\\kern 6mu #1}", 1 ],
  4878. mod: [ "Macro", "\\mathchoice{\\kern18mu}{\\kern12mu}{\\kern12mu}{\\kern12mu}\\mmlToken{mi}{mod}\\,\\,#1", 1 ],
  4879. pod: [ "Macro", "\\mathchoice{\\kern18mu}{\\kern8mu}{\\kern8mu}{\\kern8mu}(#1)", 1 ],
  4880. iff: [ "Macro", "\\;\\Longleftrightarrow\\;" ],
  4881. skew: [ "Macro", "{{#2{#3\\mkern#1mu}\\mkern-#1mu}{}}", 3 ],
  4882. mathcal: [ "Macro", "{\\cal #1}", 1 ],
  4883. mathscr: [ "Macro", "{\\scr #1}", 1 ],
  4884. mathrm: [ "Macro", "{\\rm #1}", 1 ],
  4885. mathbf: [ "Macro", "{\\bf #1}", 1 ],
  4886. mathbb: [ "Macro", "{\\bbFont #1}", 1 ],
  4887. Bbb: [ "Macro", "{\\bbFont #1}", 1 ],
  4888. mathit: [ "Macro", "{\\it #1}", 1 ],
  4889. mathfrak: [ "Macro", "{\\frak #1}", 1 ],
  4890. mathsf: [ "Macro", "{\\sf #1}", 1 ],
  4891. mathtt: [ "Macro", "{\\tt #1}", 1 ],
  4892. textrm: [ "Macro", "\\mathord{\\rm\\text{#1}}", 1 ],
  4893. textit: [ "Macro", "\\mathord{\\it{\\text{#1}}}", 1 ],
  4894. textbf: [ "Macro", "\\mathord{\\bf{\\text{#1}}}", 1 ],
  4895. pmb: [ "Macro", "\\rlap{#1}\\kern1px{#1}", 1 ],
  4896. TeX: [ "Macro", "T\\kern-.14em\\lower.5ex{E}\\kern-.115em X" ],
  4897. LaTeX: [ "Macro", "L\\kern-.325em\\raise.21em{\\scriptstyle{A}}\\kern-.17em\\TeX" ],
  4898. " ": [ "Macro", "\\text{ }" ],
  4899. not: "Not",
  4900. dots: "Dots",
  4901. space: "Tilde",
  4902. begin: "Begin",
  4903. end: "End",
  4904. newcommand: [ "Extension", "newcommand" ],
  4905. renewcommand: [ "Extension", "newcommand" ],
  4906. newenvironment: [ "Extension", "newcommand" ],
  4907. renewenvironment: [ "Extension", "newcommand" ],
  4908. def: [ "Extension", "newcommand" ],
  4909. let: [ "Extension", "newcommand" ],
  4910. verb: [ "Extension", "verb" ],
  4911. boldsymbol: [ "Extension", "boldsymbol" ],
  4912. tag: [ "Extension", "AMSmath" ],
  4913. notag: [ "Extension", "AMSmath" ],
  4914. label: [ "Extension", "AMSmath" ],
  4915. ref: [ "Extension", "AMSmath" ],
  4916. eqref: [ "Extension", "AMSmath" ],
  4917. nonumber: [ "Macro", "\\notag" ],
  4918. unicode: [ "Extension", "unicode" ],
  4919. color: "Color",
  4920. href: [ "Extension", "HTML" ],
  4921. "class": [ "Extension", "HTML" ],
  4922. style: [ "Extension", "HTML" ],
  4923. cssId: [ "Extension", "HTML" ],
  4924. bbox: [ "Extension", "bbox" ],
  4925. mmlToken: "MmlToken",
  4926. require: "Require"
  4927. },
  4928. environment: {
  4929. array: [ "AlignedArray" ],
  4930. matrix: [ "Array", null, null, null, "c" ],
  4931. pmatrix: [ "Array", null, "(", ")", "c" ],
  4932. bmatrix: [ "Array", null, "[", "]", "c" ],
  4933. Bmatrix: [ "Array", null, "\\{", "\\}", "c" ],
  4934. vmatrix: [ "Array", null, "\\vert", "\\vert", "c" ],
  4935. Vmatrix: [ "Array", null, "\\Vert", "\\Vert", "c" ],
  4936. cases: [ "Array", null, "\\{", ".", "ll", null, ".1em" ],
  4937. equation: [ null, "Equation" ],
  4938. "equation*": [ null, "Equation" ],
  4939. eqnarray: [ "ExtensionEnv", null, "AMSmath" ],
  4940. "eqnarray*": [ "ExtensionEnv", null, "AMSmath" ],
  4941. align: [ "ExtensionEnv", null, "AMSmath" ],
  4942. "align*": [ "ExtensionEnv", null, "AMSmath" ],
  4943. aligned: [ "ExtensionEnv", null, "AMSmath" ],
  4944. multline: [ "ExtensionEnv", null, "AMSmath" ],
  4945. "multline*": [ "ExtensionEnv", null, "AMSmath" ],
  4946. split: [ "ExtensionEnv", null, "AMSmath" ],
  4947. gather: [ "ExtensionEnv", null, "AMSmath" ],
  4948. "gather*": [ "ExtensionEnv", null, "AMSmath" ],
  4949. gathered: [ "ExtensionEnv", null, "AMSmath" ],
  4950. alignat: [ "ExtensionEnv", null, "AMSmath" ],
  4951. "alignat*": [ "ExtensionEnv", null, "AMSmath" ],
  4952. alignedat: [ "ExtensionEnv", null, "AMSmath" ]
  4953. },
  4954. p_height: 1.2 / .85
  4955. });
  4956. if (this.config.Macros) {
  4957. var e = this.config.Macros;
  4958. for (var n in e) e.hasOwnProperty(n) && (typeof e[n] == "string" ? u.macros[n] = [ "Macro", e[n] ] : u.macros[n] = [ "Macro" ].concat(e[n]), u.macros[n].isUser = !0);
  4959. }
  4960. }, f = MathJax.Object.Subclass({
  4961. Init: function(t, n) {
  4962. this.string = t, this.i = 0, this.macroCount = 0;
  4963. var r;
  4964. if (n) {
  4965. r = {};
  4966. for (var i in n) n.hasOwnProperty(i) && (r[i] = n[i]);
  4967. }
  4968. this.stack = e.Stack(r, !!n), this.Parse(), this.Push(o.stop());
  4969. },
  4970. Parse: function() {
  4971. var e, t;
  4972. while (this.i < this.string.length) e = this.string.charAt(this.i++), t = e.charCodeAt(0), t >= 55296 && t < 56320 && (e += this.string.charAt(this.i++)), u.special[e] ? this[u.special[e]](e) : u.letter.test(e) ? this.Variable(e) : u.digit.test(e) ? this.Number(e) : this.Other(e);
  4973. },
  4974. Push: function() {
  4975. this.stack.Push.apply(this.stack, arguments);
  4976. },
  4977. mml: function() {
  4978. return this.stack.Top().type !== "mml" ? null : this.stack.Top().data[0];
  4979. },
  4980. mmlToken: function(e) {
  4981. return e;
  4982. },
  4983. ControlSequence: function(e) {
  4984. var t = this.GetCS(), n = this.csFindMacro(t);
  4985. if (n) {
  4986. n instanceof Array || (n = [ n ]);
  4987. var r = n[0];
  4988. r instanceof Function || (r = this[r]), r.apply(this, [ e + t ].concat(n.slice(1)));
  4989. } else u.mathchar0mi[t] ? this.csMathchar0mi(t, u.mathchar0mi[t]) : u.mathchar0mo[t] ? this.csMathchar0mo(t, u.mathchar0mo[t]) : u.mathchar7[t] ? this.csMathchar7(t, u.mathchar7[t]) : u.delimiter["\\" + t] != null ? this.csDelimiter(t, u.delimiter["\\" + t]) : this.csUndefined(e + t);
  4990. },
  4991. csFindMacro: function(e) {
  4992. return u.macros[e];
  4993. },
  4994. csMathchar0mi: function(e, t) {
  4995. var n = {
  4996. mathvariant: r.VARIANT.ITALIC
  4997. };
  4998. t instanceof Array && (n = t[1], t = t[0]), this.Push(this.mmlToken(r.mi(r.entity("#x" + t)).With(n)));
  4999. },
  5000. csMathchar0mo: function(e, t) {
  5001. var n = {
  5002. stretchy: !1
  5003. };
  5004. t instanceof Array && (n = t[1], n.stretchy = !1, t = t[0]), this.Push(this.mmlToken(r.mo(r.entity("#x" + t)).With(n)));
  5005. },
  5006. csMathchar7: function(e, t) {
  5007. var n = {
  5008. mathvariant: r.VARIANT.NORMAL
  5009. };
  5010. t instanceof Array && (n = t[1], t = t[0]), this.stack.env.font && (n.mathvariant = this.stack.env.font), this.Push(this.mmlToken(r.mi(r.entity("#x" + t)).With(n)));
  5011. },
  5012. csDelimiter: function(e, t) {
  5013. var n = {};
  5014. t instanceof Array && (n = t[1], t = t[0]), t.length === 4 ? t = r.entity("#x" + t) : t = r.chars(t), this.Push(this.mmlToken(r.mo(t).With({
  5015. fence: !1,
  5016. stretchy: !1
  5017. }).With(n)));
  5018. },
  5019. csUndefined: function(t) {
  5020. e.Error("Undefined control sequence " + t);
  5021. },
  5022. Variable: function(e) {
  5023. var t = {};
  5024. this.stack.env.font && (t.mathvariant = this.stack.env.font), this.Push(this.mmlToken(r.mi(r.chars(e)).With(t)));
  5025. },
  5026. Number: function(e) {
  5027. var t, n = this.string.slice(this.i - 1).match(u.number);
  5028. n ? (t = r.mn(n[0].replace(/[{}]/g, "")), this.i += n[0].length - 1) : t = r.mo(r.chars(e)), this.stack.env.font && (t.mathvariant = this.stack.env.font), this.Push(this.mmlToken(t));
  5029. },
  5030. Open: function(e) {
  5031. this.Push(o.open());
  5032. },
  5033. Close: function(e) {
  5034. this.Push(o.close());
  5035. },
  5036. Tilde: function(e) {
  5037. this.Push(r.mtext(r.chars(i)));
  5038. },
  5039. Space: function(e) {},
  5040. Superscript: function(t) {
  5041. this.GetNext().match(/\d/) && (this.string = this.string.substr(0, this.i + 1) + " " + this.string.substr(this.i + 1));
  5042. var n, i, s, u = this.stack.Top();
  5043. u.type === "prime" ? (s = u.data[0], i = u.data[1], this.stack.Pop()) : (s = this.stack.Prev(), s || (s = r.mi(""))), s.isEmbellishedWrapper && (s = s.data[0].data[0]);
  5044. if (s.type === "msubsup") s.data[s.sup] && e.Error("Double exponent: use braces to clarify"), n = s.sup; else if (s.movesupsub) {
  5045. if (s.type !== "munderover" || s.data[s.over]) s.movablelimits && s.isa(r.mi) && (s = this.mi2mo(s)), s = r.munderover(s, null, null).With({
  5046. movesupsub: !0
  5047. });
  5048. n = s.over;
  5049. } else s = r.msubsup(s, null, null), n = s.sup;
  5050. this.Push(o.subsup(s).With({
  5051. position: n,
  5052. primes: i
  5053. }));
  5054. },
  5055. Subscript: function(t) {
  5056. this.GetNext().match(/\d/) && (this.string = this.string.substr(0, this.i + 1) + " " + this.string.substr(this.i + 1));
  5057. var n, i, s, u = this.stack.Top();
  5058. u.type === "prime" ? (s = u.data[0], i = u.data[1], this.stack.Pop()) : (s = this.stack.Prev(), s || (s = r.mi(""))), s.isEmbellishedWrapper && (s = s.data[0].data[0]);
  5059. if (s.type === "msubsup") s.data[s.sub] && e.Error("Double subscripts: use braces to clarify"), n = s.sub; else if (s.movesupsub) {
  5060. if (s.type !== "munderover" || s.data[s.under]) s.movablelimits && s.isa(r.mi) && (s = this.mi2mo(s)), s = r.munderover(s, null, null).With({
  5061. movesupsub: !0
  5062. });
  5063. n = s.under;
  5064. } else s = r.msubsup(s, null, null), n = s.sub;
  5065. this.Push(o.subsup(s).With({
  5066. position: n,
  5067. primes: i
  5068. }));
  5069. },
  5070. PRIME: "\u2032",
  5071. SMARTQUOTE: "\u2019",
  5072. Prime: function(t) {
  5073. var n = this.stack.Prev();
  5074. n || (n = r.mi()), n.type === "msubsup" && n.data[n.sup] && e.Error("Prime causes double exponent: use braces to clarify");
  5075. var i = "";
  5076. this.i--;
  5077. do i += this.PRIME, this.i++, t = this.GetNext(); while (t === "'" || t === this.SMARTQUOTE);
  5078. i = [ "", "\u2032", "\u2033", "\u2034", "\u2057" ][i.length] || i, this.Push(o.prime(n, this.mmlToken(r.mo(i))));
  5079. },
  5080. mi2mo: function(e) {
  5081. var t = r.mo();
  5082. t.Append.apply(t, e.data);
  5083. var n;
  5084. for (n in t.defaults) t.defaults.hasOwnProperty(n) && e[n] != null && (t[n] = e[n]);
  5085. for (n in r.copyAttributes) r.copyAttributes.hasOwnProperty(n) && e[n] != null && (t[n] = e[n]);
  5086. return t;
  5087. },
  5088. Comment: function(e) {
  5089. while (this.i < this.string.length && this.string.charAt(this.i) != "\n") this.i++;
  5090. },
  5091. Hash: function(t) {
  5092. e.Error("You can't use 'macro parameter character #' in math mode");
  5093. },
  5094. Other: function(e) {
  5095. var t = {
  5096. stretchy: !1
  5097. }, n;
  5098. this.stack.env.font && (t.mathvariant = this.stack.env.font), u.remap[e] ? (e = u.remap[e], e instanceof Array && (t = e[1], e = e[0]), n = r.mo(r.entity("#x" + e)).With(t)) : n = r.mo(e).With(t), n.autoDefault("texClass", true) == "" && (n = r.TeXAtom(n)), this.Push(this.mmlToken(n));
  5099. },
  5100. SetFont: function(e, t) {
  5101. this.stack.env.font = t;
  5102. },
  5103. SetStyle: function(e, t, n, r) {
  5104. this.stack.env.style = t, this.stack.env.level = r, this.Push(o.style().With({
  5105. styles: {
  5106. displaystyle: n,
  5107. scriptlevel: r
  5108. }
  5109. }));
  5110. },
  5111. SetSize: function(e, t) {
  5112. this.stack.env.size = t, this.Push(o.style().With({
  5113. styles: {
  5114. mathsize: t + "em"
  5115. }
  5116. }));
  5117. },
  5118. Color: function(e) {
  5119. var t = this.GetArgument(e), n = this.stack.env.color;
  5120. this.stack.env.color = t;
  5121. var i = this.ParseArg(e);
  5122. n ? this.stack.env.color : delete this.stack.env.color, this.Push(r.mstyle(i).With({
  5123. mathcolor: t
  5124. }));
  5125. },
  5126. Spacer: function(e, t) {
  5127. this.Push(r.mspace().With({
  5128. width: t,
  5129. mathsize: r.SIZE.NORMAL,
  5130. scriptlevel: 0
  5131. }));
  5132. },
  5133. LeftRight: function(e) {
  5134. this.Push(o[e.substr(1)]().With({
  5135. delim: this.GetDelimiter(e)
  5136. }));
  5137. },
  5138. Middle: function(t) {
  5139. var n = this.GetDelimiter(t);
  5140. this.stack.Top().type !== "left" && e.Error(t + " must be within \\left and \\right"), this.Push(r.mo(n).With({
  5141. stretchy: !0
  5142. }));
  5143. },
  5144. NamedFn: function(e, t) {
  5145. t || (t = e.substr(1));
  5146. var n = r.mi(t).With({
  5147. texClass: r.TEXCLASS.OP
  5148. });
  5149. this.Push(o.fn(this.mmlToken(n)));
  5150. },
  5151. NamedOp: function(e, t) {
  5152. t || (t = e.substr(1)), t = t.replace(/&thinsp;/, "\u2006");
  5153. var n = r.mo(t).With({
  5154. movablelimits: !0,
  5155. movesupsub: !0,
  5156. form: r.FORM.PREFIX,
  5157. texClass: r.TEXCLASS.OP
  5158. });
  5159. n.useMMLspacing &= ~n.SPACE_ATTR.form, this.Push(this.mmlToken(n));
  5160. },
  5161. Limits: function(t, n) {
  5162. var i = this.stack.Prev("nopop");
  5163. (!i || i.texClass !== r.TEXCLASS.OP) && e.Error(t + " is allowed only on operators"), i.movesupsub = n ? !0 : !1, i.movablelimits = !1;
  5164. },
  5165. Over: function(e, t, n) {
  5166. var r = o.over().With({
  5167. name: e
  5168. });
  5169. t || n ? (r.open = t, r.close = n) : e.match(/withdelims$/) && (r.open = this.GetDelimiter(e), r.close = this.GetDelimiter(e));
  5170. if (e.match(/^\\above/)) r.thickness = this.GetDimen(e); else if (e.match(/^\\atop/) || t || n) r.thickness = 0;
  5171. this.Push(r);
  5172. },
  5173. Frac: function(e) {
  5174. var t = this.ParseArg(e), n = this.ParseArg(e);
  5175. this.Push(r.mfrac(t, n));
  5176. },
  5177. Sqrt: function(t) {
  5178. var n = this.GetBrackets(t), i = this.GetArgument(t);
  5179. i === "\\frac" && (i += "{" + this.GetArgument(i) + "}{" + this.GetArgument(i) + "}");
  5180. var s = e.Parse(i, this.stack.env).mml();
  5181. n ? s = r.mroot(s, this.parseRoot(n)) : s = r.msqrt.apply(r, s.array()), this.Push(s);
  5182. },
  5183. Root: function(e) {
  5184. var t = this.GetUpTo(e, "\\of"), n = this.ParseArg(e);
  5185. this.Push(r.mroot(n, this.parseRoot(t)));
  5186. },
  5187. parseRoot: function(t) {
  5188. var n = this.stack.env, i = n.inRoot;
  5189. n.inRoot = !0;
  5190. var s = e.Parse(t, n);
  5191. t = s.mml();
  5192. var o = s.stack.global;
  5193. if (o.leftRoot || o.upRoot) t = r.mpadded(t), o.leftRoot && (t.width = o.leftRoot), o.upRoot && (t.voffset = o.upRoot, t.height = o.upRoot);
  5194. return n.inRoot = i, t;
  5195. },
  5196. MoveRoot: function(t, n) {
  5197. this.stack.env.inRoot || e.Error(t + " can appear only within a root"), this.stack.global[n] && e.Error("Multiple use of " + t);
  5198. var r = this.GetArgument(t);
  5199. r.match(/-?[0-9]+/) || e.Error("The argument to " + t + " must be an integer"), r = r / 15 + "em", r.substr(0, 1) !== "-" && (r = "+" + r), this.stack.global[n] = r;
  5200. },
  5201. Accent: function(e, t, n) {
  5202. var i = this.ParseArg(e), s = {
  5203. accent: !0
  5204. };
  5205. this.stack.env.font && (s.mathvariant = this.stack.env.font);
  5206. var o = this.mmlToken(r.mo(r.entity("#x" + t)).With(s));
  5207. o.stretchy = n ? !0 : !1, this.Push(r.TeXAtom(r.munderover(i, null, o).With({
  5208. accent: !0
  5209. })));
  5210. },
  5211. UnderOver: function(e, t, n) {
  5212. var i = {
  5213. o: "over",
  5214. u: "under"
  5215. }[e.charAt(1)], s = this.ParseArg(e);
  5216. s.Get("movablelimits") && (s.movablelimits = !1);
  5217. var o = r.munderover(s, null, null);
  5218. n && (o.movesupsub = !0), o.data[o[i]] = this.mmlToken(r.mo(r.entity("#x" + t)).With({
  5219. stretchy: !0,
  5220. accent: i == "under"
  5221. })), this.Push(o);
  5222. },
  5223. Overset: function(e) {
  5224. var t = this.ParseArg(e), n = this.ParseArg(e);
  5225. this.Push(r.mover(n, t));
  5226. },
  5227. Underset: function(e) {
  5228. var t = this.ParseArg(e), n = this.ParseArg(e);
  5229. this.Push(r.munder(n, t));
  5230. },
  5231. TeXAtom: function(t, n) {
  5232. var i = {
  5233. texClass: n
  5234. }, s;
  5235. if (n == r.TEXCLASS.OP) {
  5236. i.movesupsub = i.movablelimits = !0;
  5237. var u = this.GetArgument(t), a = u.match(/^\s*\\rm\s+([a-zA-Z0-9 ]+)$/);
  5238. a ? (i.mathvariant = r.VARIANT.NORMAL, s = o.fn(this.mmlToken(r.mi(a[1]).With(i)))) : s = o.fn(r.TeXAtom(e.Parse(u, this.stack.env).mml()).With(i));
  5239. } else s = r.TeXAtom(this.ParseArg(t)).With(i);
  5240. this.Push(s);
  5241. },
  5242. MmlToken: function(t) {
  5243. var n = this.GetArgument(t), i = this.GetBrackets(t, "").replace(/^\s+/, ""), s = this.GetArgument(t), o = {
  5244. attrNames: []
  5245. }, u;
  5246. (!r[n] || !r[n].prototype.isToken) && e.Error(n + " is not a token element");
  5247. while (i !== "") u = i.match(/^([a-z]+)\s*=\s*('[^']*'|"[^"]*"|[^ ]*)\s*/i), u || e.Error("Invalid MathML attribute: " + i), !r[n].prototype.defaults[u[1]] && !this.MmlTokenAllow[u[1]] && e.Error(u[1] + " is not a recognized attribute for " + n), o[u[1]] = u[2].replace(/^(['"])(.*)\1$/, "$2"), o.attrNames.push(u[1]), i = i.substr(u[0].length);
  5248. this.Push(this.mmlToken(r[n](s).With(o)));
  5249. },
  5250. MmlTokenAllow: {
  5251. fontfamily: 1,
  5252. fontsize: 1,
  5253. fontweight: 1,
  5254. fontstyle: 1,
  5255. color: 1,
  5256. background: 1,
  5257. id: 1,
  5258. "class": 1,
  5259. href: 1,
  5260. style: 1
  5261. },
  5262. Strut: function(e) {
  5263. this.Push(r.mpadded(r.mrow()).With({
  5264. height: "8.6pt",
  5265. depth: "3pt",
  5266. width: 0
  5267. }));
  5268. },
  5269. Phantom: function(e, t, n) {
  5270. var i = r.mphantom(this.ParseArg(e));
  5271. if (t || n) i = r.mpadded(i), n && (i.height = i.depth = 0), t && (i.width = 0);
  5272. this.Push(r.TeXAtom(i));
  5273. },
  5274. Smash: function(e) {
  5275. var t = this.trimSpaces(this.GetBrackets(e, "")), n = r.mpadded(this.ParseArg(e));
  5276. switch (t) {
  5277. case "b":
  5278. n.depth = 0;
  5279. break;
  5280. case "t":
  5281. n.height = 0;
  5282. break;
  5283. default:
  5284. n.height = n.depth = 0;
  5285. }
  5286. this.Push(r.TeXAtom(n));
  5287. },
  5288. Lap: function(e) {
  5289. var t = r.mpadded(this.ParseArg(e)).With({
  5290. width: 0
  5291. });
  5292. e === "\\llap" && (t.lspace = "-1 width"), this.Push(r.TeXAtom(t));
  5293. },
  5294. RaiseLower: function(e) {
  5295. var t = this.GetDimen(e), n = o.position().With({
  5296. name: e,
  5297. move: "vertical"
  5298. });
  5299. t.charAt(0) === "-" && (t = t.slice(1), e = {
  5300. raise: "\\lower",
  5301. lower: "\\raise"
  5302. }[e.substr(1)]), e === "\\lower" ? (n.dh = "-" + t, n.dd = "+" + t) : (n.dh = "+" + t, n.dd = "-" + t), this.Push(n);
  5303. },
  5304. MoveLeftRight: function(e) {
  5305. var t = this.GetDimen(e), n = t.charAt(0) === "-" ? t.slice(1) : "-" + t;
  5306. if (e === "\\moveleft") {
  5307. var i = t;
  5308. t = n, n = i;
  5309. }
  5310. this.Push(o.position().With({
  5311. name: e,
  5312. move: "horizontal",
  5313. left: r.mspace().With({
  5314. width: t,
  5315. mathsize: r.SIZE.NORMAL
  5316. }),
  5317. right: r.mspace().With({
  5318. width: n,
  5319. mathsize: r.SIZE.NORMAL
  5320. })
  5321. }));
  5322. },
  5323. Hskip: function(e) {
  5324. this.Push(r.mspace().With({
  5325. width: this.GetDimen(e),
  5326. mathsize: r.SIZE.NORMAL
  5327. }));
  5328. },
  5329. Rule: function(e, t) {
  5330. var n = this.GetDimen(e), i = this.GetDimen(e), s = this.GetDimen(e), o, u = {
  5331. width: n,
  5332. height: i,
  5333. depth: s
  5334. };
  5335. t !== "blank" ? (parseFloat(n) && parseFloat(i) + parseFloat(s) && (u.mathbackground = this.stack.env.color || "black"), o = r.mpadded(r.mrow()).With(u)) : o = r.mspace().With(u), this.Push(o);
  5336. },
  5337. MakeBig: function(e, t, n) {
  5338. n *= u.p_height, n = String(n).replace(/(\.\d\d\d).+/, "$1") + "em";
  5339. var i = this.GetDelimiter(e);
  5340. this.Push(r.TeXAtom(r.mo(i).With({
  5341. minsize: n,
  5342. maxsize: n,
  5343. scriptlevel: 0,
  5344. fence: !0,
  5345. stretchy: !0,
  5346. symmetric: !0
  5347. })).With({
  5348. texClass: t
  5349. }));
  5350. },
  5351. BuildRel: function(e) {
  5352. var t = this.ParseUpTo(e, "\\over"), n = this.ParseArg(e);
  5353. this.Push(r.TeXAtom(r.munderover(n, null, t)).With({
  5354. mclass: r.TEXCLASS.REL
  5355. }));
  5356. },
  5357. HBox: function(e, t) {
  5358. this.Push.apply(this, this.InternalMath(this.GetArgument(e), t));
  5359. },
  5360. FBox: function(e) {
  5361. this.Push(r.menclose.apply(r, this.InternalMath(this.GetArgument(e))).With({
  5362. notation: "box"
  5363. }));
  5364. },
  5365. Not: function(e) {
  5366. this.Push(o.not());
  5367. },
  5368. Dots: function(e) {
  5369. this.Push(o.dots().With({
  5370. ldots: this.mmlToken(r.mo(r.entity("#x2026")).With({
  5371. stretchy: !1
  5372. })),
  5373. cdots: this.mmlToken(r.mo(r.entity("#x22EF")).With({
  5374. stretchy: !1
  5375. }))
  5376. }));
  5377. },
  5378. Require: function(e) {
  5379. var t = this.GetArgument(e).replace(/.*\//, "").replace(/[^a-z0-9_.-]/ig, "");
  5380. this.Extension(null, t);
  5381. },
  5382. Extension: function(r, i, s) {
  5383. r && !typeof r === "string" && (r = r.name), i = e.extensionDir + "/" + i, i.match(/\.js$/) || (i += ".js"), n.loaded[n.fileURL(i)] || (r != null && delete u[s || "macros"][r.replace(/^\\/, "")], t.RestartAfter(n.Require(i)));
  5384. },
  5385. Macro: function(t, n, r, i) {
  5386. if (r) {
  5387. var s = [];
  5388. if (i != null) {
  5389. var o = this.GetBrackets(t);
  5390. s.push(o == null ? i : o);
  5391. }
  5392. for (var u = s.length; u < r; u++) s.push(this.GetArgument(t));
  5393. n = this.SubstituteArgs(s, n);
  5394. }
  5395. this.string = this.AddArgs(n, this.string.slice(this.i)), this.i = 0, ++this.macroCount > e.config.MAXMACROS && e.Error("MathJax maximum macro substitution count exceeded; is there a recursive macro call?");
  5396. },
  5397. Matrix: function(t, n, r, i, s, u, a, f) {
  5398. var l = this.GetNext();
  5399. l === "" && e.Error("Missing argument for " + t), l === "{" ? this.i++ : (this.string = l + "}" + this.string.slice(this.i + 1), this.i = 0);
  5400. var c = o.array().With({
  5401. requireClose: !0,
  5402. arraydef: {
  5403. rowspacing: u || "4pt",
  5404. columnspacing: s || "1em"
  5405. }
  5406. });
  5407. f && (c.isCases = !0);
  5408. if (n || r) c.open = n, c.close = r;
  5409. a === "D" && (c.arraydef.displaystyle = !0), i != null && (c.arraydef.columnalign = i), this.Push(c);
  5410. },
  5411. Entry: function(t) {
  5412. this.Push(o.cell().With({
  5413. isEntry: !0,
  5414. name: t
  5415. }));
  5416. if (this.stack.Top().isCases) {
  5417. var n = this.string, r = 0, i = this.i, s = n.length;
  5418. while (i < s) {
  5419. var u = n.charAt(i);
  5420. u === "{" ? (r++, i++) : u === "}" ? r === 0 ? s = 0 : (r--, i++) : u === "&" && r === 0 ? e.Error("Extra alignment tab in \\cases text") : u === "\\" ? n.substr(i).match(/^((\\cr)[^a-zA-Z]|\\\\)/) ? s = 0 : i += 2 : i++;
  5421. }
  5422. var a = n.substr(this.i, i - this.i);
  5423. a.match(/^\s*\\text[^a-zA-Z]/) || (this.Push.apply(this, this.InternalMath(a)), this.i = i);
  5424. }
  5425. },
  5426. Cr: function(e) {
  5427. this.Push(o.cell().With({
  5428. isCR: !0,
  5429. name: e
  5430. }));
  5431. },
  5432. CrLaTeX: function(t) {
  5433. var n;
  5434. this.string.charAt(this.i) === "[" && (n = this.GetBrackets(t, "").replace(/ /g, ""), n && !n.match(/^((-?(\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|mm|cm|in|pc))$/) && e.Error("Bracket argument to " + t + " must be a dimension")), this.Push(o.cell().With({
  5435. isCR: !0,
  5436. name: t,
  5437. linebreak: !0
  5438. }));
  5439. var i = this.stack.Top();
  5440. if (i.isa(o.array)) {
  5441. if (n && i.arraydef.rowspacing) {
  5442. var s = i.arraydef.rowspacing.split(/ /);
  5443. i.rowspacing || (i.rowspacing = this.dimen2em(s[0]));
  5444. while (s.length < i.table.length) s.push(this.Em(i.rowspacing));
  5445. s[i.table.length - 1] = this.Em(Math.max(0, i.rowspacing + this.dimen2em(n))), i.arraydef.rowspacing = s.join(" ");
  5446. }
  5447. } else n && this.Push(r.mspace().With({
  5448. depth: n
  5449. })), this.Push(r.mo().With({
  5450. linebreak: r.LINEBREAK.NEWLINE
  5451. }));
  5452. },
  5453. emPerInch: 7.2,
  5454. dimen2em: function(e) {
  5455. var t = e.match(/^(-?(?:\.\d+|\d+(?:\.\d*)?))(pt|em|ex|mu|pc|in|mm|cm)/), n = parseFloat(t[1] || "1"), r = t[2];
  5456. return r === "em" ? n : r === "ex" ? n * .43 : r === "pt" ? n / 10 : r === "pc" ? n * 1.2 : r === "in" ? n * this.emPerInch : r === "cm" ? n * this.emPerInch / 2.54 : r === "mm" ? n * this.emPerInch / 25.4 : r === "mu" ? n / 18 : 0;
  5457. },
  5458. Em: function(e) {
  5459. return Math.abs(e) < 6e-4 ? "0em" : e.toFixed(3).replace(/\.?0+$/, "") + "em";
  5460. },
  5461. HLine: function(t, n) {
  5462. n == null && (n = "solid");
  5463. var r = this.stack.Top();
  5464. (!r.isa(o.array) || r.data.length) && e.Error("Misplaced " + t);
  5465. if (r.table.length == 0) r.frame.push("top"); else {
  5466. var i = r.arraydef.rowlines ? r.arraydef.rowlines.split(/ /) : [];
  5467. while (i.length < r.table.length) i.push("none");
  5468. i[r.table.length - 1] = n, r.arraydef.rowlines = i.join(" ");
  5469. }
  5470. },
  5471. Begin: function(t) {
  5472. var n = this.GetArgument(t);
  5473. n.match(/[^a-z*]/i) && e.Error('Invalid environment name "' + n + '"');
  5474. var r = this.envFindName(n);
  5475. r || e.Error('Unknown environment "' + n + '"'), ++this.macroCount > e.config.MAXMACROS && e.Error("MathJax maximum substitution count exceeded; is there a recursive latex environment?"), r instanceof Array || (r = [ r ]);
  5476. var i = o.begin().With({
  5477. name: n,
  5478. end: r[1],
  5479. parse: this
  5480. });
  5481. r[0] && this[r[0]] && (i = this[r[0]].apply(this, [ i ].concat(r.slice(2)))), this.Push(i);
  5482. },
  5483. End: function(e) {
  5484. this.Push(o.end().With({
  5485. name: this.GetArgument(e)
  5486. }));
  5487. },
  5488. envFindName: function(e) {
  5489. return u.environment[e];
  5490. },
  5491. Equation: function(e, t) {
  5492. return t;
  5493. },
  5494. ExtensionEnv: function(e, t) {
  5495. this.Extension(e.name, t, "environment");
  5496. },
  5497. Array: function(e, t, n, r, i, s, u, a) {
  5498. r || (r = this.GetArgument("\\begin{" + e.name + "}"));
  5499. var f = ("c" + r).replace(/[^clr|:]/g, "").replace(/[^|:]([|:])+/g, "$1");
  5500. r = r.replace(/[^clr]/g, "").split("").join(" "), r = r.replace(/l/g, "left").replace(/r/g, "right").replace(/c/g, "center");
  5501. var l = o.array().With({
  5502. arraydef: {
  5503. columnalign: r,
  5504. columnspacing: i || "1em",
  5505. rowspacing: s || "4pt"
  5506. }
  5507. });
  5508. return f.match(/[|:]/) && (f.charAt(0).match(/[|:]/) && (l.frame.push("left"), l.frame.dashed = f.charAt(0) === ":"), f.charAt(f.length - 1).match(/[|:]/) && l.frame.push("right"), f = f.substr(1, f.length - 2), l.arraydef.columnlines = f.split("").join(" ").replace(/[^|: ]/g, "none").replace(/\|/g, "solid").replace(/:/g, "dashed")), t && (l.open = this.convertDelimiter(t)), n && (l.close = this.convertDelimiter(n)), u === "D" && (l.arraydef.displaystyle = !0), u === "S" && (l.arraydef.scriptlevel = 1), a && (l.arraydef.useHeight = !1), this.Push(e), l;
  5509. },
  5510. AlignedArray: function(e) {
  5511. var t = this.GetBrackets("\\begin{" + e.name + "}");
  5512. return this.setArrayAlign(this.Array.apply(this, arguments), t);
  5513. },
  5514. setArrayAlign: function(e, t) {
  5515. return t = this.trimSpaces(t || ""), t === "t" ? e.arraydef.align = "baseline 1" : t === "b" ? e.arraydef.align = "baseline -1" : t === "c" ? e.arraydef.align = "center" : t && (e.arraydef.align = t), e;
  5516. },
  5517. convertDelimiter: function(e) {
  5518. return e && (e = u.delimiter[e]), e == null ? null : (e instanceof Array && (e = e[0]), e.length === 4 && (e = String.fromCharCode(parseInt(e, 16))), e);
  5519. },
  5520. trimSpaces: function(e) {
  5521. return typeof e != "string" ? e : e.replace(/^\s+|\s+$/g, "");
  5522. },
  5523. nextIsSpace: function() {
  5524. return this.string.charAt(this.i).match(/[ \n\r\t]/);
  5525. },
  5526. GetNext: function() {
  5527. while (this.nextIsSpace()) this.i++;
  5528. return this.string.charAt(this.i);
  5529. },
  5530. GetCS: function() {
  5531. var e = this.string.slice(this.i).match(/^([a-z]+|.) ?/i);
  5532. return e ? (this.i += e[1].length, e[1]) : (this.i++, " ");
  5533. },
  5534. GetArgument: function(t, n) {
  5535. switch (this.GetNext()) {
  5536. case "":
  5537. return n || e.Error("Missing argument for " + t), null;
  5538. case "}":
  5539. return n || e.Error("Extra close brace or missing open brace"), null;
  5540. case "\\":
  5541. return this.i++, "\\" + this.GetCS();
  5542. case "{":
  5543. var r = ++this.i, i = 1;
  5544. while (this.i < this.string.length) switch (this.string.charAt(this.i++)) {
  5545. case "\\":
  5546. this.i++;
  5547. break;
  5548. case "{":
  5549. i++;
  5550. break;
  5551. case "}":
  5552. i == 0 && e.Error("Extra close brace");
  5553. if (--i == 0) return this.string.slice(r, this.i - 1);
  5554. }
  5555. e.Error("Missing close brace");
  5556. }
  5557. return this.string.charAt(this.i++);
  5558. },
  5559. GetBrackets: function(t, n) {
  5560. if (this.GetNext() != "[") return n;
  5561. var r = ++this.i, i = 0;
  5562. while (this.i < this.string.length) switch (this.string.charAt(this.i++)) {
  5563. case "{":
  5564. i++;
  5565. break;
  5566. case "\\":
  5567. this.i++;
  5568. break;
  5569. case "}":
  5570. i-- <= 0 && e.Error("Extra close brace while looking for ']'");
  5571. break;
  5572. case "]":
  5573. if (i == 0) return this.string.slice(r, this.i - 1);
  5574. }
  5575. e.Error("Couldn't find closing ']' for argument to " + t);
  5576. },
  5577. GetDelimiter: function(t) {
  5578. while (this.nextIsSpace()) this.i++;
  5579. var n = this.string.charAt(this.i);
  5580. if (this.i < this.string.length) {
  5581. this.i++, n == "\\" && (n += this.GetCS(t));
  5582. if (u.delimiter[n] != null) return this.convertDelimiter(n);
  5583. }
  5584. e.Error("Missing or unrecognized delimiter for " + t);
  5585. },
  5586. GetDimen: function(t) {
  5587. var n;
  5588. this.nextIsSpace() && this.i++;
  5589. if (this.string.charAt(this.i) == "{") {
  5590. n = this.GetArgument(t);
  5591. if (n.match(/^\s*([-+]?(\.\d+|\d+(\.\d*)?))\s*(pt|em|ex|mu|px|mm|cm|in|pc)\s*$/)) return n.replace(/ /g, "");
  5592. } else {
  5593. n = this.string.slice(this.i);
  5594. var r = n.match(/^\s*(([-+]?(\.\d+|\d+(\.\d*)?))\s*(pt|em|ex|mu|px|mm|cm|in|pc)) ?/);
  5595. if (r) return this.i += r[0].length, r[1].replace(/ /g, "");
  5596. }
  5597. e.Error("Missing dimension or its units for " + t);
  5598. },
  5599. GetUpTo: function(t, n) {
  5600. while (this.nextIsSpace()) this.i++;
  5601. var r = this.i, i, s, o = 0;
  5602. while (this.i < this.string.length) {
  5603. i = this.i, s = this.string.charAt(this.i++);
  5604. switch (s) {
  5605. case "\\":
  5606. s += this.GetCS();
  5607. break;
  5608. case "{":
  5609. o++;
  5610. break;
  5611. case "}":
  5612. o == 0 && e.Error("Extra close brace while looking for " + n), o--;
  5613. }
  5614. if (o == 0 && s == n) return this.string.slice(r, i);
  5615. }
  5616. e.Error("Couldn't find " + n + " for " + t);
  5617. },
  5618. ParseArg: function(t) {
  5619. return e.Parse(this.GetArgument(t), this.stack.env).mml();
  5620. },
  5621. ParseUpTo: function(t, n) {
  5622. return e.Parse(this.GetUpTo(t, n), this.stack.env).mml();
  5623. },
  5624. InternalMath: function(t, n) {
  5625. var i = {
  5626. displaystyle: !1
  5627. };
  5628. n != null && (i.scriptlevel = n), this.stack.env.font && (i.mathvariant = this.stack.env.font);
  5629. if (!t.match(/\$|\\\(|\\(eq)?ref\s*\{/)) return [ this.InternalText(t, i) ];
  5630. var s = 0, o = 0, u, a = "", f = [];
  5631. while (s < t.length) u = t.charAt(s++), u === "$" ? a === "$" ? (f.push(r.TeXAtom(e.Parse(t.slice(o, s - 1), {}).mml().With(i))), a = "", o = s) : a === "" && (o < s - 1 && f.push(this.InternalText(t.slice(o, s - 1), i)), a = "$", o = s) : u === "}" && a === "}" ? (f.push(r.TeXAtom(e.Parse(t.slice(o, s), {}).mml().With(i))), a = "", o = s) : u === "\\" && (a === "" && t.substr(s).match(/^(eq)?ref\s*\{/) ? (o < s - 1 && f.push(this.InternalText(t.slice(o, s - 1), i)), a = "}", o = s - 1) : (u = t.charAt(s++), u === "(" && a === "" ? (o < s - 2 && f.push(this.InternalText(t.slice(o, s - 2), i)), a = ")", o = s) : u === ")" && a === ")" && (f.push(r.TeXAtom(e.Parse(t.slice(o, s - 2), {}).mml().With(i))), a = "", o = s)));
  5632. return a !== "" && e.Error("Math not terminated in text box"), o < t.length && f.push(this.InternalText(t.slice(o), i)), f;
  5633. },
  5634. InternalText: function(e, t) {
  5635. return e = e.replace(/^\s+/, i).replace(/\s+$/, i), r.mtext(r.chars(e)).With(t);
  5636. },
  5637. SubstituteArgs: function(t, n) {
  5638. var r = "", i = "", s, o = 0;
  5639. while (o < n.length) s = n.charAt(o++), s === "\\" ? r += s + n.charAt(o++) : s === "#" ? (s = n.charAt(o++), s === "#" ? r += s : ((!s.match(/[1-9]/) || s > t.length) && e.Error("Illegal macro parameter reference"), i = this.AddArgs(this.AddArgs(i, r), t[s - 1]), r = "")) : r += s;
  5640. return this.AddArgs(i, r);
  5641. },
  5642. AddArgs: function(t, n) {
  5643. return n.match(/^[a-z]/i) && t.match(/(^|[^\\])(\\\\)*\\[a-z]+$/i) && (t += " "), t.length + n.length > e.config.MAXBUFFER && e.Error("MathJax internal buffer size exceeded; is there a recursive macro call?"), t + n;
  5644. }
  5645. });
  5646. e.Augment({
  5647. Stack: s,
  5648. Parse: f,
  5649. Definitions: u,
  5650. Startup: a,
  5651. config: {
  5652. MAXMACROS: 1e4,
  5653. MAXBUFFER: 5120
  5654. },
  5655. sourceMenuTitle: "TeX Commands",
  5656. prefilterHooks: MathJax.Callback.Hooks(!0),
  5657. postfilterHooks: MathJax.Callback.Hooks(!0),
  5658. Config: function() {
  5659. this.SUPER(arguments).Config.apply(this, arguments), this.config.equationNumbers.autoNumber !== "none" && (this.config.extensions || (this.config.extensions = []), this.config.extensions.push("AMSmath.js"));
  5660. },
  5661. Translate: function(t) {
  5662. var n, i = !1, s = MathJax.HTML.getScript(t), o = t.type.replace(/\n/g, " ").match(/(;|\s|\n)mode\s*=\s*display(;|\s|\n|$)/) != null, u = {
  5663. math: s,
  5664. display: o,
  5665. script: t
  5666. };
  5667. this.prefilterHooks.Execute(u), s = u.math;
  5668. try {
  5669. n = e.Parse(s).mml();
  5670. } catch (a) {
  5671. if (!a.texError) throw a;
  5672. n = this.formatError(a, s, o, t), i = !0;
  5673. }
  5674. return n.inferred ? n = r.apply(MathJax.ElementJax, n.data) : n = r(n), o && (n.root.display = "block"), i && (n.texError = !0), u.math = n, this.postfilterHooks.Execute(u), u.math;
  5675. },
  5676. prefilterMath: function(e, t, n) {
  5677. return e;
  5678. },
  5679. postfilterMath: function(e, t, n) {
  5680. return this.combineRelations(e.root), e;
  5681. },
  5682. formatError: function(e, n, i, s) {
  5683. var o = e.message.replace(/\n.*/, "");
  5684. return t.signal.Post([ "TeX Jax - parse error", o, n, i, s ]), r.merror(o);
  5685. },
  5686. Error: function(e) {
  5687. throw t.Insert(Error(e), {
  5688. texError: !0
  5689. });
  5690. },
  5691. Macro: function(e, t, n) {
  5692. u.macros[e] = [ "Macro" ].concat([].slice.call(arguments, 1)), u.macros[e].isUser = !0;
  5693. },
  5694. combineRelations: function(e) {
  5695. var t, n, i, s;
  5696. for (t = 0, n = e.data.length; t < n; t++) if (e.data[t]) {
  5697. if (e.isa(r.mrow)) while (t + 1 < n && (i = e.data[t]) && (s = e.data[t + 1]) && i.isa(r.mo) && s.isa(r.mo) && i.Get("texClass") === r.TEXCLASS.REL && s.Get("texClass") === r.TEXCLASS.REL) i.variantForm == s.variantForm && i.Get("mathvariant") == s.Get("mathvariant") && i.style == s.style && i["class"] == s["class"] && !i.id && !s.id ? (i.Append.apply(i, s.data), e.data.splice(t + 1, 1), n--) : (i.rspace = s.lspace = "0pt", t++);
  5698. e.data[t].isToken || this.combineRelations(e.data[t]);
  5699. }
  5700. }
  5701. }), e.prefilterHooks.Add(function(t) {
  5702. t.math = e.prefilterMath(t.math, t.display, t.script);
  5703. }), e.postfilterHooks.Add(function(t) {
  5704. t.math = e.postfilterMath(t.math, t.display, t.script);
  5705. }), e.loadComplete("jax.js");
  5706. }(MathJax.InputJax.TeX, MathJax.Hub, MathJax.Ajax), MathJax.OutputJax["HTML-CSS"] = MathJax.OutputJax({
  5707. id: "HTML-CSS",
  5708. version: "2.1",
  5709. directory: MathJax.OutputJax.directory + "/HTML-CSS",
  5710. extensionDir: MathJax.OutputJax.extensionDir + "/HTML-CSS",
  5711. autoloadDir: MathJax.OutputJax.directory + "/HTML-CSS/autoload",
  5712. fontDir: MathJax.OutputJax.directory + "/HTML-CSS/fonts",
  5713. webfontDir: MathJax.OutputJax.fontDir + "/HTML-CSS",
  5714. config: {
  5715. scale: 100,
  5716. minScaleAdjust: 50,
  5717. availableFonts: [ "STIX", "TeX" ],
  5718. preferredFont: "TeX",
  5719. webFont: "TeX",
  5720. imageFont: "TeX",
  5721. undefinedFamily: "STIXGeneral,'Arial Unicode MS',serif",
  5722. mtextFontInherit: !1,
  5723. EqnChunk: MathJax.Hub.Browser.isMobile ? 10 : 50,
  5724. EqnChunkFactor: 1.5,
  5725. EqnChunkDelay: 100,
  5726. linebreaks: {
  5727. automatic: !1,
  5728. width: "container"
  5729. },
  5730. styles: {
  5731. ".MathJax_Display": {
  5732. "text-align": "center",
  5733. margin: "1em 0em"
  5734. },
  5735. ".MathJax .merror": {
  5736. "background-color": "#FFFF88",
  5737. color: "#CC0000",
  5738. border: "1px solid #CC0000",
  5739. padding: "1px 3px",
  5740. "font-style": "normal",
  5741. "font-size": "90%"
  5742. },
  5743. "#MathJax_Tooltip": {
  5744. "background-color": "InfoBackground",
  5745. color: "InfoText",
  5746. border: "1px solid black",
  5747. "box-shadow": "2px 2px 5px #AAAAAA",
  5748. "-webkit-box-shadow": "2px 2px 5px #AAAAAA",
  5749. "-moz-box-shadow": "2px 2px 5px #AAAAAA",
  5750. "-khtml-box-shadow": "2px 2px 5px #AAAAAA",
  5751. filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')",
  5752. padding: "3px 4px"
  5753. }
  5754. }
  5755. }
  5756. }), MathJax.Hub.Browser.isMSIE && document.documentMode >= 9 && delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter, MathJax.Hub.config.delayJaxRegistration || MathJax.OutputJax["HTML-CSS"].Register("jax/mml"), MathJax.Hub.Register.StartupHook("End Config", [ function(e, t) {
  5757. var n = e.Insert({
  5758. minBrowserVersion: {
  5759. Firefox: 3,
  5760. Opera: 9.52,
  5761. MSIE: 6,
  5762. Chrome: .3,
  5763. Safari: 2,
  5764. Konqueror: 4
  5765. },
  5766. inlineMathDelimiters: [ "$", "$" ],
  5767. displayMathDelimiters: [ "$$", "$$" ],
  5768. multilineDisplay: !0,
  5769. minBrowserTranslate: function(t) {
  5770. var r = e.getJaxFor(t), i = [ "[Math]" ], s, o = document.createElement("span", {
  5771. className: "MathJax_Preview"
  5772. });
  5773. r.inputJax === "TeX" && (r.root.Get("displaystyle") ? (s = n.displayMathDelimiters, i = [ s[0] + r.originalText + s[1] ], n.multilineDisplay && (i = i[0].split(/\n/))) : (s = n.inlineMathDelimiters, i = [ s[0] + r.originalText.replace(/^\s+/, "").replace(/\s+$/, "") + s[1] ]));
  5774. for (var u = 0, f = i.length; u < f; u++) o.appendChild(document.createTextNode(i[u])), u < f - 1 && o.appendChild(document.createElement("br"));
  5775. t.parentNode.insertBefore(o, t);
  5776. }
  5777. }, e.config["HTML-CSS"] || {});
  5778. e.Browser.version !== "0.0" && !e.Browser.versionAtLeast(n.minBrowserVersion[e.Browser] || 0) && (t.Translate = n.minBrowserTranslate, e.Config({
  5779. showProcessingMessages: !1
  5780. }), MathJax.Message.Set("Your browser does not support MathJax", null, 4e3), e.Startup.signal.Post("MathJax not supported"));
  5781. }, MathJax.Hub, MathJax.OutputJax["HTML-CSS"] ]), MathJax.OutputJax["HTML-CSS"].loadComplete("config.js"), function(e, t, n) {
  5782. var r, i = t.Browser.isMobile, s = MathJax.Object.Subclass({
  5783. timeout: (i ? 15 : 8) * 1e3,
  5784. FontInfo: {
  5785. STIX: {
  5786. family: "STIXSizeOneSym",
  5787. testString: "() {} []"
  5788. },
  5789. TeX: {
  5790. family: "MathJax_Size1",
  5791. testString: "() {} []"
  5792. }
  5793. },
  5794. comparisonFont: [ "sans-serif", "monospace", "script", "Times", "Courier", "Arial", "Helvetica" ],
  5795. testSize: [ "40px", "50px", "60px", "30px", "20px" ],
  5796. Init: function() {
  5797. this.div = MathJax.HTML.addElement(document.body, "div", {
  5798. id: "MathJax_Font_Test",
  5799. style: {
  5800. position: "absolute",
  5801. visibility: "hidden",
  5802. top: 0,
  5803. left: 0,
  5804. width: "auto",
  5805. padding: 0,
  5806. border: 0,
  5807. margin: 0,
  5808. whiteSpace: "nowrap",
  5809. textAlign: "left",
  5810. textIndent: 0,
  5811. textTransform: "none",
  5812. lineHeight: "normal",
  5813. letterSpacing: "normal",
  5814. wordSpacing: "normal",
  5815. fontSize: this.testSize[0],
  5816. fontWeight: "normal",
  5817. fontStyle: "normal",
  5818. fontSizeAdjust: "none"
  5819. }
  5820. }, [ "" ]), this.text = this.div.firstChild;
  5821. },
  5822. findFont: function(e, t) {
  5823. if (t && this.testCollection(t)) return t;
  5824. for (var n = 0, r = e.length; n < r; n++) {
  5825. if (e[n] === t) continue;
  5826. if (this.testCollection(e[n])) return e[n];
  5827. }
  5828. return null;
  5829. },
  5830. testCollection: function(e) {
  5831. return this.testFont(this.FontInfo[e]);
  5832. },
  5833. testFont: function(e) {
  5834. e.isWebFont && n.FontFaceBug ? this.div.style.fontWeight = this.div.style.fontStyle = "normal" : (this.div.style.fontWeight = e.weight || "normal", this.div.style.fontStyle = e.style || "normal");
  5835. var t = this.getComparisonWidths(e.testString, e.noStyleChar);
  5836. if (t) {
  5837. this.div.style.fontFamily = "'" + e.family + "'," + this.comparisonFont[0];
  5838. if (this.div.offsetWidth == t[0]) {
  5839. this.div.style.fontFamily = "'" + e.family + "'," + this.comparisonFont[t[2]];
  5840. if (this.div.offsetWidth == t[1]) return !1;
  5841. }
  5842. if (this.div.offsetWidth != t[3] || this.div.offsetHeight != t[4]) {
  5843. if (e.noStyleChar || !n.FONTDATA || !n.FONTDATA.hasStyleChar) return !0;
  5844. for (var r = 0, i = this.testSize.length; r < i; r++) if (this.testStyleChar(e, this.testSize[r])) return !0;
  5845. }
  5846. }
  5847. return !1;
  5848. },
  5849. styleChar: "\ueffd",
  5850. versionChar: "\ueffe",
  5851. compChar: "\uefff",
  5852. testStyleChar: function(e, t) {
  5853. var r = 3 + (e.weight ? 2 : 0) + (e.style ? 4 : 0), i = "", s = 0, o = this.div.style.fontSize;
  5854. this.div.style.fontSize = t, n.msieItalicWidthBug && e.style === "italic" && (this.text.nodeValue = i = this.compChar, s = this.div.offsetWidth), n.safariTextNodeBug ? this.div.innerHTML = this.compChar + i : this.text.nodeValue = this.compChar + i;
  5855. var u = this.div.offsetWidth - s;
  5856. n.safariTextNodeBug ? this.div.innerHTML = this.styleChar + i : this.text.nodeValue = this.styleChar + i;
  5857. var a = Math.floor((this.div.offsetWidth - s) / u + .5);
  5858. return a === r && (n.safariTextNodeBug ? this.div.innerHTML = this.versionChar + i : this.text.nodeValue = this.versionChar + i, e.version = Math.floor((this.div.offsetWidth - s) / u + 1.5) / 2), this.div.style.fontSize = o, a === r;
  5859. },
  5860. getComparisonWidths: function(e, t) {
  5861. n.FONTDATA && n.FONTDATA.hasStyleChar && !t && (e += this.styleChar + " " + this.compChar), n.safariTextNodeBug ? this.div.innerHTML = e : this.text.nodeValue = e, this.div.style.fontFamily = this.comparisonFont[0];
  5862. var r = this.div.offsetWidth;
  5863. this.div.style.fontFamily = n.webFontDefault;
  5864. var i = this.div.offsetWidth, s = this.div.offsetHeight;
  5865. for (var o = 1, u = this.comparisonFont.length; o < u; o++) {
  5866. this.div.style.fontFamily = this.comparisonFont[o];
  5867. if (this.div.offsetWidth != r) return [ r, this.div.offsetWidth, o, i, s ];
  5868. }
  5869. return null;
  5870. },
  5871. loadWebFont: function(r) {
  5872. t.Startup.signal.Post("HTML-CSS Jax - Web-Font " + n.fontInUse + "/" + r.directory);
  5873. var i = MathJax.Message.File("Web-Font " + n.fontInUse + "/" + r.directory), s = MathJax.Callback({}), o = MathJax.Callback([ "loadComplete", this, r, i, s ]);
  5874. return e.timer.start(e, [ this.checkWebFont, r, o ], 0, this.timeout), s;
  5875. },
  5876. loadComplete: function(r, i, s, o) {
  5877. MathJax.Message.Clear(i);
  5878. if (o === e.STATUS.OK) {
  5879. this.webFontLoaded = !0, s();
  5880. return;
  5881. }
  5882. this.loadError(r);
  5883. if (t.Browser.isFirefox && n.allowWebFonts) {
  5884. var u = document.location.protocol + "//" + document.location.hostname;
  5885. document.location.port != "" && (u += ":" + document.location.port), u += "/", e.fileURL(n.webfontDir).substr(0, u.length) !== u && this.firefoxFontError(r);
  5886. }
  5887. this.webFontLoaded ? s() : n.loadWebFontError(r, s);
  5888. },
  5889. loadError: function(e) {
  5890. MathJax.Message.Set("Can't load web font " + n.fontInUse + "/" + e.directory, null, 2e3), t.Startup.signal.Post([ "HTML-CSS Jax - web font error", n.fontInUse + "/" + e.directory, e ]);
  5891. },
  5892. firefoxFontError: function(e) {
  5893. MathJax.Message.Set("Firefox can't load web fonts from a remote host", null, 3e3), t.Startup.signal.Post("HTML-CSS Jax - Firefox web fonts on remote host error");
  5894. },
  5895. checkWebFont: function(e, t, r) {
  5896. if (e.time(r)) return;
  5897. n.Font.testFont(t) ? r(e.STATUS.OK) : setTimeout(e, e.delay);
  5898. },
  5899. fontFace: function(t) {
  5900. var r = n.allowWebFonts, i = n.FONTDATA.FONTS[t];
  5901. n.msieFontCSSBug && !i.family.match(/-Web$/) && (i.family += "-Web");
  5902. var s = e.fileURL(n.webfontDir + "/" + r), o = t.replace(/-b/, "-B").replace(/-i/, "-I").replace(/-Bold-/, "-Bold");
  5903. o.match(/-/) || (o += "-Regular"), r === "svg" ? o += ".svg#" + o : o += "." + r;
  5904. var u = {
  5905. "font-family": i.family,
  5906. src: "url('" + s + "/" + o + "')"
  5907. };
  5908. r === "otf" ? (u.src += " format('opentype')", s = e.fileURL(n.webfontDir + "/woff"), u.src = "url('" + s + "/" + o.replace(/otf$/, "woff") + "') format('woff'), " + u.src) : r !== "eot" && (u.src += " format('" + r + "')");
  5909. if (!n.FontFaceBug || !i.isWebFont) t.match(/-bold/) && (u["font-weight"] = "bold"), t.match(/-italic/) && (u["font-style"] = "italic");
  5910. return u;
  5911. }
  5912. }), o, u, a;
  5913. n.Augment({
  5914. config: {
  5915. styles: {
  5916. ".MathJax": {
  5917. display: "inline",
  5918. "font-style": "normal",
  5919. "font-weight": "normal",
  5920. "line-height": "normal",
  5921. "font-size": "100%",
  5922. "font-size-adjust": "none",
  5923. "text-indent": 0,
  5924. "text-align": "left",
  5925. "text-transform": "none",
  5926. "letter-spacing": "normal",
  5927. "word-spacing": "normal",
  5928. "word-wrap": "normal",
  5929. "white-space": "nowrap",
  5930. "float": "none",
  5931. direction: "ltr",
  5932. border: 0,
  5933. padding: 0,
  5934. margin: 0
  5935. },
  5936. ".MathJax_Display": {
  5937. position: "relative",
  5938. display: "block",
  5939. width: "100%"
  5940. },
  5941. ".MathJax img, .MathJax nobr, .MathJax a": {
  5942. border: 0,
  5943. padding: 0,
  5944. margin: 0,
  5945. "max-width": "none",
  5946. "max-height": "none",
  5947. "vertical-align": 0,
  5948. "line-height": "normal",
  5949. "text-decoration": "none"
  5950. },
  5951. "img.MathJax_strut": {
  5952. border: "0 !important",
  5953. padding: "0 !important",
  5954. margin: "0 !important",
  5955. "vertical-align": "0 !important"
  5956. },
  5957. ".MathJax span": {
  5958. display: "inline",
  5959. position: "static",
  5960. border: 0,
  5961. padding: 0,
  5962. margin: 0,
  5963. "vertical-align": 0,
  5964. "line-height": "normal",
  5965. "text-decoration": "none"
  5966. },
  5967. ".MathJax nobr": {
  5968. "white-space": "nowrap ! important"
  5969. },
  5970. ".MathJax img": {
  5971. display: "inline ! important",
  5972. "float": "none ! important"
  5973. },
  5974. ".MathJax_Processing": {
  5975. visibility: "hidden",
  5976. position: "fixed",
  5977. width: 0,
  5978. height: 0,
  5979. overflow: "hidden"
  5980. },
  5981. ".MathJax_Processed": {
  5982. display: "none!important"
  5983. },
  5984. ".MathJax_ExBox": {
  5985. display: "block",
  5986. overflow: "hidden",
  5987. width: "1px",
  5988. height: "60ex"
  5989. },
  5990. ".MathJax .MathJax_EmBox": {
  5991. display: "block",
  5992. overflow: "hidden",
  5993. width: "1px",
  5994. height: "60em"
  5995. },
  5996. ".MathJax .MathJax_HitBox": {
  5997. cursor: "text",
  5998. background: "white",
  5999. opacity: 0,
  6000. filter: "alpha(opacity=0)"
  6001. },
  6002. ".MathJax .MathJax_HitBox *": {
  6003. filter: "none",
  6004. opacity: 1,
  6005. background: "transparent"
  6006. },
  6007. "#MathJax_Tooltip": {
  6008. position: "absolute",
  6009. left: 0,
  6010. top: 0,
  6011. width: "auto",
  6012. height: "auto",
  6013. display: "none"
  6014. },
  6015. "#MathJax_Tooltip *": {
  6016. filter: "none",
  6017. opacity: 1,
  6018. background: "transparent"
  6019. },
  6020. "@font-face": {
  6021. "font-family": "MathJax_Blank",
  6022. src: "url('about:blank')"
  6023. }
  6024. }
  6025. },
  6026. settings: t.config.menuSettings,
  6027. hideProcessedMath: !0,
  6028. Font: null,
  6029. webFontDefault: "MathJax_Blank",
  6030. allowWebFonts: "otf",
  6031. Config: function() {
  6032. this.require || (this.require = []), this.Font = s(), this.SUPER(arguments).Config.call(this);
  6033. var e = this.settings;
  6034. this.adjustAvailableFonts && this.adjustAvailableFonts(this.config.availableFonts), e.scale && (this.config.scale = e.scale), e.font && e.font !== "Auto" && (e.font === "TeX (local)" ? (this.config.availableFonts = [ "TeX" ], this.config.preferredFont = "TeX", this.config.webFont = "TeX") : e.font === "STIX (local)" ? (this.config.availableFonts = [ "STIX" ], this.config.preferredFont = "STIX", this.config.webFont = "TeX") : e.font === "TeX (web)" ? (this.config.availableFonts = [], this.config.preferredFont = "", this.config.webFont = "TeX") : e.font === "TeX (image)" && (this.config.availableFonts = [], this.config.preferredFont = "", this.config.webFont = ""));
  6035. var n = this.Font.findFont(this.config.availableFonts, this.config.preferredFont);
  6036. !n && this.allowWebFonts && (n = this.config.webFont, n && (this.webFonts = !0)), !n && this.config.imageFont && (n = this.config.imageFont, this.imgFonts = !0), n ? (this.fontInUse = n, this.fontDir += "/" + n, this.webfontDir += "/" + n, this.require.push(this.fontDir + "/fontdata.js"), this.imgFonts && (this.require.push(this.directory + "/imageFonts.js"), t.Startup.signal.Post("HTML-CSS Jax - using image fonts"))) : (MathJax.Message.Set("Can't find a valid font using [" + this.config.availableFonts.join(", ") + "]", null, 3e3), this.FONTDATA = {
  6037. TeX_factor: 1,
  6038. baselineskip: 1.2,
  6039. lineH: .8,
  6040. lineD: .2,
  6041. ffLineH: .8,
  6042. FONTS: {},
  6043. VARIANT: {
  6044. normal: {
  6045. fonts: []
  6046. }
  6047. },
  6048. RANGES: [],
  6049. DELIMITERS: {},
  6050. RULECHAR: 45,
  6051. REMAP: {}
  6052. }, MathJax.InputJax.TeX && MathJax.InputJax.TeX.Definitions && (MathJax.InputJax.TeX.Definitions.macros.overline[1] = "002D", MathJax.InputJax.TeX.Definitions.macros.underline[1] = "002D"), t.Startup.signal.Post("HTML-CSS Jax - no valid font")), this.require.push(MathJax.OutputJax.extensionDir + "/MathEvents.js");
  6053. },
  6054. Startup: function() {
  6055. o = MathJax.Extension.MathEvents.Event, u = MathJax.Extension.MathEvents.Touch, a = MathJax.Extension.MathEvents.Hover, this.ContextMenu = o.ContextMenu, this.Mousedown = o.AltContextMenu, this.Mouseover = a.Mouseover, this.Mouseout = a.Mouseout, this.Mousemove = a.Mousemove, this.hiddenDiv = this.Element("div", {
  6056. style: {
  6057. visibility: "hidden",
  6058. overflow: "hidden",
  6059. position: "absolute",
  6060. top: 0,
  6061. height: "1px",
  6062. width: "auto",
  6063. padding: 0,
  6064. border: 0,
  6065. margin: 0,
  6066. textAlign: "left",
  6067. textIndent: 0,
  6068. textTransform: "none",
  6069. lineHeight: "normal",
  6070. letterSpacing: "normal",
  6071. wordSpacing: "normal"
  6072. }
  6073. }), document.body.firstChild ? document.body.insertBefore(this.hiddenDiv, document.body.firstChild) : document.body.appendChild(this.hiddenDiv), this.hiddenDiv = this.addElement(this.hiddenDiv, "div", {
  6074. id: "MathJax_Hidden"
  6075. });
  6076. var t = this.addElement(this.hiddenDiv, "div", {
  6077. style: {
  6078. width: "5in"
  6079. }
  6080. });
  6081. this.pxPerInch = t.offsetWidth / 5, this.hiddenDiv.removeChild(t), this.startMarker = this.createStrut(this.Element("span"), 10, !0), this.endMarker = this.addText(this.Element("span"), "x").parentNode, this.HDspan = this.Element("span"), this.operaHeightBug && this.createStrut(this.HDspan, 0);
  6082. if (this.msieInlineBlockAlignBug) {
  6083. this.HDimg = this.addElement(this.HDspan, "img", {
  6084. style: {
  6085. height: "0px",
  6086. width: "1px"
  6087. }
  6088. });
  6089. try {
  6090. this.HDimg.src = "about:blank";
  6091. } catch (n) {}
  6092. } else this.HDimg = this.createStrut(this.HDspan, 0);
  6093. return this.EmExSpan = this.Element("span", {
  6094. style: {
  6095. position: "absolute",
  6096. "font-size-adjust": "none"
  6097. }
  6098. }, [ [ "span", {
  6099. className: "MathJax_ExBox"
  6100. } ], [ "span", {
  6101. className: "MathJax"
  6102. }, [ [ "span", {
  6103. className: "MathJax_EmBox"
  6104. } ] ] ] ]), this.linebreakSpan = this.Element("span", null, [ [ "hr", {
  6105. style: {
  6106. width: "100%",
  6107. size: 1,
  6108. padding: 0,
  6109. border: 0,
  6110. margin: 0
  6111. }
  6112. } ] ]), e.Styles(this.config.styles, [ "InitializeHTML", this ]);
  6113. },
  6114. removeSTIXfonts: function(e) {
  6115. for (var t = 0, n = e.length; t < n; t++) e[t] === "STIX" && (e.splice(t, 1), n--, t--);
  6116. this.config.preferredFont === "STIX" && (this.config.preferredFont = e[0]);
  6117. },
  6118. PreloadWebFonts: function() {
  6119. if (!n.allowWebFonts || !n.config.preloadWebFonts) return;
  6120. for (var e = 0, t = n.config.preloadWebFonts.length; e < t; e++) {
  6121. var r = n.FONTDATA.FONTS[n.config.preloadWebFonts[e]];
  6122. r.available || n.Font.testFont(r);
  6123. }
  6124. },
  6125. InitializeHTML: function() {
  6126. this.PreloadWebFonts(), document.body.appendChild(this.EmExSpan), document.body.appendChild(this.linebreakSpan), this.defaultEx = this.EmExSpan.firstChild.offsetHeight / 60, this.defaultEm = this.EmExSpan.lastChild.firstChild.offsetHeight / 60, this.defaultWidth = this.linebreakSpan.firstChild.offsetWidth, document.body.removeChild(this.linebreakSpan), document.body.removeChild(this.EmExSpan);
  6127. },
  6128. preTranslate: function(e) {
  6129. var n = e.jax[this.id], r, i = n.length, s, a, f, l, c, h, p, d, v, m, g = !1, y = this.config.linebreaks.automatic, w = this.config.linebreaks.width;
  6130. y ? (g = w.match(/^\s*(\d+(\.\d*)?%\s*)?container\s*$/) != null, g ? w = w.replace(/\s*container\s*/, "") : m = this.defaultWidth, w === "" && (w = "100%")) : m = 1e5;
  6131. for (r = 0; r < i; r++) {
  6132. s = n[r];
  6133. if (!s.parentNode) continue;
  6134. a = s.previousSibling, a && String(a.className).match(/^MathJax(_Display)?( MathJax_Processing)?$/) && a.parentNode.removeChild(a), h = s.MathJax.elementJax;
  6135. if (!h) continue;
  6136. h.HTMLCSS = {
  6137. display: h.root.Get("display") === "block"
  6138. }, f = l = this.Element("span", {
  6139. className: "MathJax",
  6140. id: h.inputID + "-Frame",
  6141. isMathJax: !0,
  6142. jaxID: this.id,
  6143. oncontextmenu: o.Menu,
  6144. onmousedown: o.Mousedown,
  6145. onmouseover: o.Mouseover,
  6146. onmouseout: o.Mouseout,
  6147. onmousemove: o.Mousemove,
  6148. onclick: o.Click,
  6149. ondblclick: o.DblClick
  6150. }), t.Browser.noContextMenu && (f.ontouchstart = u.start, f.ontouchend = u.end), h.HTMLCSS.display ? (l = this.Element("div", {
  6151. className: "MathJax_Display"
  6152. }), l.appendChild(f)) : this.msieDisappearingBug && (f.style.display = "inline-block"), l.setAttribute("role", "textbox"), l.setAttribute("aria-readonly", "true"), l.className += " MathJax_Processing", s.parentNode.insertBefore(l, s), s.parentNode.insertBefore(this.EmExSpan.cloneNode(!0), s), g && l.parentNode.insertBefore(this.linebreakSpan.cloneNode(!0), l);
  6153. }
  6154. for (r = 0; r < i; r++) {
  6155. s = n[r];
  6156. if (!s.parentNode) continue;
  6157. c = s.previousSibling, l = c.previousSibling, h = s.MathJax.elementJax;
  6158. if (!h) continue;
  6159. p = c.firstChild.offsetHeight / 60, d = c.lastChild.firstChild.offsetHeight / 60, g && (m = l.previousSibling.firstChild.offsetWidth);
  6160. if (p === 0 || p === "NaN") this.hiddenDiv.appendChild(l), h.HTMLCSS.isHidden = !0, p = this.defaultEx, d = this.defaultEm, g && (m = this.defaultWidth);
  6161. v = Math.floor(Math.max(this.config.minScaleAdjust / 100, p / this.TeX.x_height / d) * this.config.scale), h.HTMLCSS.scale = v / 100, h.HTMLCSS.fontSize = v + "%", h.HTMLCSS.em = h.HTMLCSS.outerEm = d, this.em = d * v / 100, h.HTMLCSS.ex = p, h.HTMLCSS.lineWidth = y ? this.length2em(w, 1, m / this.em) : 1e6;
  6162. }
  6163. for (r = 0; r < i; r++) {
  6164. s = n[r];
  6165. if (!s.parentNode) continue;
  6166. c = n[r].previousSibling, h = n[r].MathJax.elementJax;
  6167. if (!h) continue;
  6168. g && (f = c.previousSibling, h.HTMLCSS.isHidden || (f = f.previousSibling), f.parentNode.removeChild(f)), c.parentNode.removeChild(c);
  6169. }
  6170. e.HTMLCSSeqn = e.HTMLCSSlast = 0, e.HTMLCSSi = -1, e.HTMLCSSchunk = this.config.EqnChunk, e.HTMLCSSdelay = !1;
  6171. },
  6172. Translate: function(e, n) {
  6173. if (!e.parentNode) return;
  6174. n.HTMLCSSdelay && (n.HTMLCSSdelay = !1, t.RestartAfter(MathJax.Callback.Delay(this.config.EqnChunkDelay)));
  6175. var i = e.MathJax.elementJax, s = i.root, o = document.getElementById(i.inputID + "-Frame"), u = i.HTMLCSS.display ? o.parentNode : o;
  6176. this.em = r.mbase.prototype.em = i.HTMLCSS.em * i.HTMLCSS.scale, this.outerEm = i.HTMLCSS.em, this.scale = i.HTMLCSS.scale, this.linebreakWidth = i.HTMLCSS.lineWidth, o.style.fontSize = i.HTMLCSS.fontSize, this.initImg(o), this.initHTML(s, o), s.setTeXclass();
  6177. try {
  6178. s.toHTML(o, u);
  6179. } catch (a) {
  6180. if (a.restart) while (o.firstChild) o.removeChild(o.firstChild);
  6181. throw a;
  6182. }
  6183. i.HTMLCSS.isHidden && e.parentNode.insertBefore(u, e), u.className = u.className.split(/ /)[0], this.hideProcessedMath && (u.className += " MathJax_Processed", e.MathJax.preview && (i.HTMLCSS.preview = e.MathJax.preview, delete e.MathJax.preview), n.HTMLCSSeqn += n.i - n.HTMLCSSi, n.HTMLCSSi = n.i, n.HTMLCSSeqn >= n.HTMLCSSlast + n.HTMLCSSchunk && (this.postTranslate(n), n.HTMLCSSchunk = Math.floor(n.HTMLCSSchunk * this.config.EqnChunkFactor), n.HTMLCSSdelay = !0));
  6184. },
  6185. postTranslate: function(e) {
  6186. var t = e.jax[this.id];
  6187. if (!this.hideProcessedMath) return;
  6188. for (var n = e.HTMLCSSlast, r = e.HTMLCSSeqn; n < r; n++) {
  6189. var i = t[n];
  6190. if (i && i.MathJax.elementJax) {
  6191. i.previousSibling.className = i.previousSibling.className.split(/ /)[0];
  6192. var s = i.MathJax.elementJax.HTMLCSS;
  6193. s.preview && (s.preview.innerHTML = "", i.MathJax.preview = s.preview, delete s.preview);
  6194. }
  6195. }
  6196. if (this.forceReflow) {
  6197. var o = (document.styleSheets || [])[0] || {};
  6198. o.disabled = !0, o.disabled = !1;
  6199. }
  6200. e.HTMLCSSlast = e.HTMLCSSeqn;
  6201. },
  6202. getJaxFromMath: function(e) {
  6203. e.parentNode.className === "MathJax_Display" && (e = e.parentNode);
  6204. do e = e.nextSibling; while (e && e.nodeName.toLowerCase() !== "script");
  6205. return t.getJaxFor(e);
  6206. },
  6207. getHoverSpan: function(e, t) {
  6208. return e.root.HTMLspanElement();
  6209. },
  6210. getHoverBBox: function(e, t, n) {
  6211. var r = t.bbox, i = e.HTMLCSS.outerEm, s = {
  6212. w: r.w * i,
  6213. h: r.h * i,
  6214. d: r.d * i
  6215. };
  6216. return r.width && (s.width = r.width), s;
  6217. },
  6218. Zoom: function(e, t, i, s, u) {
  6219. t.className = "MathJax", t.style.fontSize = e.HTMLCSS.fontSize;
  6220. var a = t.appendChild(this.EmExSpan.cloneNode(!0)), l = a.lastChild.firstChild.offsetHeight / 60;
  6221. this.em = r.mbase.prototype.em = l, this.outerEm = l / e.HTMLCSS.scale, a.parentNode.removeChild(a), this.idPostfix = "-zoom", e.root.toHTML(t, t), this.idPostfix = "";
  6222. var c = e.root.HTMLspanElement().bbox.width;
  6223. if (c) {
  6224. t.style.width = Math.floor(s - 1.5 * n.em) + "px", t.style.display = "inline-block";
  6225. var h = (e.root.id || "MathJax-Span-" + e.root.spanID) + "-zoom", p = document.getElementById(h).firstChild;
  6226. while (p && p.style.width !== c) p = p.nextSibling;
  6227. p && (p.style.width = "100%");
  6228. }
  6229. t.style.position = i.style.position = "absolute";
  6230. var v = t.offsetWidth, m = t.offsetHeight, g = i.offsetHeight, y = i.offsetWidth;
  6231. return y === 0 && (y = i.parentNode.offsetWidth), t.style.position = i.style.position = "", {
  6232. Y: -o.getBBox(t).h,
  6233. mW: y,
  6234. mH: g,
  6235. zW: v,
  6236. zH: m
  6237. };
  6238. },
  6239. initImg: function(e) {},
  6240. initHTML: function(e, t) {},
  6241. initFont: function(t) {
  6242. var r = n.FONTDATA.FONTS, i = n.config.availableFonts;
  6243. return i && i.length && n.Font.testFont(r[t]) ? (r[t].available = !0, null) : this.allowWebFonts ? (r[t].isWebFont = !0, n.FontFaceBug && (r[t].family = t, n.msieFontCSSBug && (r[t].family += "-Web")), e.Styles({
  6244. "@font-face": this.Font.fontFace(t)
  6245. })) : null;
  6246. },
  6247. Remove: function(e) {
  6248. var t = document.getElementById(e.inputID + "-Frame");
  6249. t && (e.HTMLCSS.display && (t = t.parentNode), t.parentNode.removeChild(t)), delete e.HTMLCSS;
  6250. },
  6251. getHD: function(e) {
  6252. var t = e.style.position;
  6253. e.style.position = "absolute", this.HDimg.style.height = "0px", e.appendChild(this.HDspan);
  6254. var n = {
  6255. h: e.offsetHeight
  6256. };
  6257. return this.HDimg.style.height = n.h + "px", n.d = e.offsetHeight - n.h, n.h -= n.d, n.h /= this.em, n.d /= this.em, e.removeChild(this.HDspan), e.style.position = t, n;
  6258. },
  6259. getW: function(e) {
  6260. var t, n, r = (e.bbox || {}).w, i = e;
  6261. if (e.bbox && e.bbox.exactW) return r;
  6262. if (e.bbox && r >= 0 && !this.initialSkipBug || this.negativeBBoxes || !e.firstChild) t = e.offsetWidth, n = e.parentNode.offsetHeight; else if (e.bbox && r < 0 && this.msieNegativeBBoxBug) t = -e.offsetWidth, n = e.parentNode.offsetHeight; else {
  6263. if (this.initialSkipBug) {
  6264. var s = e.style.position;
  6265. e.style.position = "absolute", i = this.startMarker, e.insertBefore(i, e.firstChild);
  6266. }
  6267. e.appendChild(this.endMarker), t = this.endMarker.offsetLeft - i.offsetLeft, e.removeChild(this.endMarker), this.initialSkipBug && (e.removeChild(i), e.style.position = s);
  6268. }
  6269. return n != null && (e.parentNode.HH = n / this.em), t / this.em;
  6270. },
  6271. Measured: function(e, t) {
  6272. var n = e.bbox;
  6273. if (n.width == null && n.w && !n.isMultiline) {
  6274. var r = this.getW(e);
  6275. n.rw += r - n.w, n.w = r, n.exactW = !0;
  6276. }
  6277. return t || (t = e.parentNode), t.bbox || (t.bbox = n), e;
  6278. },
  6279. Remeasured: function(e, t) {
  6280. t.bbox = this.Measured(e, t).bbox;
  6281. },
  6282. MeasureSpans: function(e) {
  6283. var t = [], n, r, i, s, o, u, a;
  6284. for (r = 0, i = e.length; r < i; r++) {
  6285. n = e[r];
  6286. if (!n) continue;
  6287. s = n.bbox;
  6288. if (s.exactW || s.width || s.w === 0 || s.isMultiline) {
  6289. n.parentNode.bbox || (n.parentNode.bbox = s);
  6290. continue;
  6291. }
  6292. this.negativeBBoxes || !n.firstChild || s.w >= 0 && !this.initialSkipBug || s.w < 0 && this.msieNegativeBBoxBug ? t.push([ n ]) : this.initialSkipBug ? (o = this.startMarker.cloneNode(!0), u = this.endMarker.cloneNode(!0), n.insertBefore(o, n.firstChild), n.appendChild(u), t.push([ n, o, u, n.style.position ]), n.style.position = "absolute") : (u = this.endMarker.cloneNode(!0), n.appendChild(u), t.push([ n, null, u ]));
  6293. }
  6294. for (r = 0, i = t.length; r < i; r++) {
  6295. n = t[r][0], s = n.bbox;
  6296. var f = n.parentNode;
  6297. s.w >= 0 && !this.initialSkipBug || this.negativeBBoxes || !n.firstChild ? (a = n.offsetWidth, f.HH = n.parentNode.offsetHeight / this.em) : s.w < 0 && this.msieNegativeBBoxBug ? (a = -n.offsetWidth, f.HH = n.parentNode.offsetHeight / this.em) : a = t[r][2].offsetLeft - ((t[r][1] || {}).offsetLeft || 0), a /= this.em, s.rw += a - s.w, s.w = a, s.exactW = !0, f.bbox || (f.bbox = s);
  6298. }
  6299. for (r = 0, i = t.length; r < i; r++) n = t[r], n[1] && (n[1].parentNode.removeChild(n[1]), n[0].style.position = n[3]), n[2] && n[2].parentNode.removeChild(n[2]);
  6300. },
  6301. Em: function(e) {
  6302. return Math.abs(e) < 6e-4 ? "0em" : e.toFixed(3).replace(/\.?0+$/, "") + "em";
  6303. },
  6304. unEm: function(e) {
  6305. return parseFloat(e);
  6306. },
  6307. Px: function(e) {
  6308. e *= this.em;
  6309. var t = e < 0 ? "-" : "";
  6310. return t + Math.abs(e).toFixed(1).replace(/\.?0+$/, "") + "px";
  6311. },
  6312. unPx: function(e) {
  6313. return parseFloat(e) / this.em;
  6314. },
  6315. Percent: function(e) {
  6316. return (100 * e).toFixed(1).replace(/\.?0+$/, "") + "%";
  6317. },
  6318. length2em: function(e, t, i) {
  6319. typeof e != "string" && (e = e.toString());
  6320. if (e === "") return "";
  6321. if (e === r.SIZE.NORMAL) return 1;
  6322. if (e === r.SIZE.BIG) return 2;
  6323. if (e === r.SIZE.SMALL) return .71;
  6324. if (e === "infinity") return n.BIGDIMEN;
  6325. var s = this.FONTDATA.TeX_factor;
  6326. if (e.match(/mathspace$/)) return n.MATHSPACE[e] * s;
  6327. var o = e.match(/^\s*([-+]?(?:\.\d+|\d+(?:\.\d*)?))?(pt|em|ex|mu|px|pc|in|mm|cm|%)?/), u = parseFloat(o[1] || "1"), a = o[2];
  6328. return i == null && (i = 1), t == null && (t = 1), a === "em" ? u * s : a === "ex" ? u * n.TeX.x_height * s : a === "%" ? u / 100 * i : a === "px" ? u / n.em : a === "pt" ? u / 10 * s : a === "pc" ? u * 1.2 * s : a === "in" ? u * this.pxPerInch / n.em : a === "cm" ? u * this.pxPerInch / n.em / 2.54 : a === "mm" ? u * this.pxPerInch / n.em / 25.4 : a === "mu" ? u / 18 * s * t : u * s * i;
  6329. },
  6330. thickness2em: function(e, t) {
  6331. var i = n.TeX.rule_thickness;
  6332. return e === r.LINETHICKNESS.MEDIUM ? i : e === r.LINETHICKNESS.THIN ? .67 * i : e === r.LINETHICKNESS.THICK ? 1.67 * i : this.length2em(e, t, i);
  6333. },
  6334. getPadding: function(e) {
  6335. var t = {
  6336. top: 0,
  6337. right: 0,
  6338. bottom: 0,
  6339. left: 0
  6340. }, n = !1;
  6341. for (var r in t) if (t.hasOwnProperty(r)) {
  6342. var i = e.style["padding" + r.charAt(0).toUpperCase() + r.substr(1)];
  6343. i && (t[r] = this.length2em(i), n = !0);
  6344. }
  6345. return n ? t : !1;
  6346. },
  6347. getBorders: function(e) {
  6348. var t = {
  6349. top: 0,
  6350. right: 0,
  6351. bottom: 0,
  6352. left: 0
  6353. }, n = {}, r = !1;
  6354. for (var i in t) if (t.hasOwnProperty(i)) {
  6355. var s = "border" + i.charAt(0).toUpperCase() + i.substr(1), o = e.style[s + "Style"];
  6356. o && (r = !0, t[i] = this.length2em(e.style[s + "Width"]), n[s] = [ e.style[s + "Width"], e.style[s + "Style"], e.style[s + "Color"] ].join(" "));
  6357. }
  6358. return t.css = n, r ? t : !1;
  6359. },
  6360. setBorders: function(e, t) {
  6361. if (t) for (var n in t.css) t.css.hasOwnProperty(n) && (e.style[n] = t.css[n]);
  6362. },
  6363. createStrut: function(e, t, n) {
  6364. var r = this.Element("span", {
  6365. isMathJax: !0,
  6366. style: {
  6367. display: "inline-block",
  6368. overflow: "hidden",
  6369. height: t + "px",
  6370. width: "1px",
  6371. marginRight: "-1px"
  6372. }
  6373. });
  6374. return n ? e.insertBefore(r, e.firstChild) : e.appendChild(r), r;
  6375. },
  6376. createBlank: function(e, t, n) {
  6377. var r = this.Element("span", {
  6378. isMathJax: !0,
  6379. style: {
  6380. display: "inline-block",
  6381. overflow: "hidden",
  6382. height: "1px",
  6383. width: this.Em(t)
  6384. }
  6385. });
  6386. return n ? e.insertBefore(r, e.firstChild) : e.appendChild(r), r;
  6387. },
  6388. createShift: function(e, t, n) {
  6389. var r = this.Element("span", {
  6390. style: {
  6391. marginLeft: this.Em(t)
  6392. },
  6393. isMathJax: !0
  6394. });
  6395. return n ? e.insertBefore(r, e.firstChild) : e.appendChild(r), r;
  6396. },
  6397. createSpace: function(e, t, i, s, o, u) {
  6398. t < -i && (i = -t);
  6399. var a = this.Em(t + i), l = this.Em(-i);
  6400. this.msieInlineBlockAlignBug && (l = this.Em(n.getHD(e.parentNode).d - i));
  6401. if (e.isBox || u) {
  6402. var c = e.scale == null ? 1 : e.scale;
  6403. e.bbox = {
  6404. exactW: !0,
  6405. h: t * c,
  6406. d: i * c,
  6407. w: s * c,
  6408. rw: s * c,
  6409. lw: 0
  6410. }, e.style.height = a, e.style.verticalAlign = l, e.HH = (t + i) * c;
  6411. } else e = this.addElement(e, "span", {
  6412. style: {
  6413. height: a,
  6414. verticalAlign: l
  6415. },
  6416. isMathJax: !0
  6417. });
  6418. return s >= 0 ? (e.style.width = this.Em(s), e.style.display = "inline-block", e.style.overflow = "hidden") : (this.msieNegativeSpaceBug && (e.style.height = ""), e.style.marginLeft = this.Em(s), n.safariNegativeSpaceBug && e.parentNode.firstChild == e && this.createBlank(e, 0, !0)), o && o !== r.COLOR.TRANSPARENT && (e.style.backgroundColor = o, e.style.position = "relative"), e;
  6419. },
  6420. createRule: function(e, t, r, i, s) {
  6421. t < -r && (r = -t);
  6422. var o = n.TeX.min_rule_thickness, u = 1;
  6423. i > 0 && i * this.em < o && (i = o / this.em), t + r > 0 && (t + r) * this.em < o && (u = 1 / (t + r) * (o / this.em), t *= u, r *= u), s ? s = "solid " + s : s = "solid", s = this.Em(i) + " " + s;
  6424. var a = u === 1 ? this.Em(t + r) : o + "px", f = this.Em(-r), l = this.addElement(e, "span", {
  6425. style: {
  6426. borderLeft: s,
  6427. display: "inline-block",
  6428. overflow: "hidden",
  6429. width: 0,
  6430. height: a,
  6431. verticalAlign: f
  6432. },
  6433. bbox: {
  6434. h: t,
  6435. d: r,
  6436. w: i,
  6437. rw: i,
  6438. lw: 0,
  6439. exactW: !0
  6440. },
  6441. noAdjust: !0,
  6442. HH: t + r,
  6443. isMathJax: !0
  6444. });
  6445. i > 0 && l.offsetWidth == 0 && (l.style.width = this.Em(i));
  6446. if (e.isBox || e.className == "mspace") e.bbox = l.bbox, e.HH = t + r;
  6447. return l;
  6448. },
  6449. createFrame: function(e, t, n, r, i, s) {
  6450. t < -n && (n = -t);
  6451. var o = 2 * i;
  6452. this.msieFrameSizeBug && (r < o && (r = o), t + n < o && (t = o - n)), this.msieBorderWidthBug && (o = 0);
  6453. var u = this.Em(t + n - o), a = this.Em(-n - i), f = this.Em(r - o), l = this.Em(i) + " " + s, c = this.addElement(e, "span", {
  6454. style: {
  6455. border: l,
  6456. display: "inline-block",
  6457. overflow: "hidden",
  6458. width: f,
  6459. height: u
  6460. },
  6461. bbox: {
  6462. h: t,
  6463. d: n,
  6464. w: r,
  6465. rw: r,
  6466. lw: 0,
  6467. exactW: !0
  6468. },
  6469. noAdjust: !0,
  6470. HH: t + n,
  6471. isMathJax: !0
  6472. });
  6473. return a && (c.style.verticalAlign = a), c;
  6474. },
  6475. createStack: function(e, t, n) {
  6476. this.msiePaddingWidthBug && this.createStrut(e, 0);
  6477. var r = String(n).match(/%$/), i = !r && n != null ? n : 0;
  6478. return e = this.addElement(e, "span", {
  6479. noAdjust: !0,
  6480. HH: 0,
  6481. isMathJax: !0,
  6482. style: {
  6483. display: "inline-block",
  6484. position: "relative",
  6485. width: r ? "100%" : this.Em(i),
  6486. height: 0
  6487. }
  6488. }), t || (e.parentNode.bbox = e.bbox = {
  6489. exactW: !0,
  6490. h: -this.BIGDIMEN,
  6491. d: -this.BIGDIMEN,
  6492. w: i,
  6493. lw: this.BIGDIMEN,
  6494. rw: !r && n != null ? n : -this.BIGDIMEN
  6495. }, r && (e.bbox.width = n)), e;
  6496. },
  6497. createBox: function(e, t) {
  6498. var n = this.addElement(e, "span", {
  6499. style: {
  6500. position: "absolute"
  6501. },
  6502. isBox: !0,
  6503. isMathJax: !0
  6504. });
  6505. return t != null && (n.style.width = t), n;
  6506. },
  6507. addBox: function(e, t) {
  6508. return t.style.position = "absolute", t.isBox = t.isMathJax = !0, e.appendChild(t);
  6509. },
  6510. placeBox: function(e, t, r, i) {
  6511. e.isMathJax = !0;
  6512. var s = e.parentNode, o = e.bbox, u = s.bbox;
  6513. this.msiePlaceBoxBug && this.addText(e, this.NBSP), this.imgSpaceBug && this.addText(e, this.imgSpace);
  6514. var a, f = 0;
  6515. e.HH != null ? a = e.HH : o ? a = Math.max(3, o.h + o.d) : a = e.offsetHeight / this.em, e.noAdjust || (a += 1, a = Math.round(a * this.em) / this.em, this.msieInlineBlockAlignBug ? this.addElement(e, "img", {
  6516. className: "MathJax_strut",
  6517. border: 0,
  6518. src: "about:blank",
  6519. isMathJax: !0,
  6520. style: {
  6521. width: 0,
  6522. height: this.Em(a)
  6523. }
  6524. }) : (this.addElement(e, "span", {
  6525. isMathJax: !0,
  6526. style: {
  6527. display: "inline-block",
  6528. width: 0,
  6529. height: this.Em(a)
  6530. }
  6531. }), n.chromeHeightBug && (a -= (e.lastChild.offsetHeight - Math.round(a * this.em)) / this.em)));
  6532. if (o) {
  6533. this.initialSkipBug && (o.lw < 0 && (f = o.lw, n.createBlank(e, -f, !0)), o.rw > o.w && n.createBlank(e, o.rw - o.w + .1));
  6534. if (!this.msieClipRectBug && !o.noclip && !i) {
  6535. var l = 3 / this.em, c = o.H == null ? o.h : o.H, h = o.D == null ? o.d : o.D, p = a - c - l, v = a + h + l, m = o.lw - 3 * l, g = 1e3;
  6536. this.initialSkipBug && o.lw < 0 && (m = -3 * l), o.isFixed && (g = o.width - m), e.style.clip = "rect(" + this.Em(p) + " " + this.Em(g) + " " + this.Em(v) + " " + this.Em(m) + ")";
  6537. }
  6538. }
  6539. e.style.top = this.Em(-r - a), e.style.left = this.Em(t + f), o && u && (o.H != null && (u.H == null || o.H + r > u.H) && (u.H = o.H + r), o.D != null && (u.D == null || o.D - r > u.D) && (u.D = o.D - r), o.h + r > u.h && (u.h = o.h + r), o.d - r > u.d && (u.d = o.d - r), u.H != null && u.H <= u.h && delete u.H, u.D != null && u.D <= u.d && delete u.D, o.w + t > u.w && (u.w = o.w + t, u.width == null && (s.style.width = this.Em(u.w))), o.rw + t > u.rw && (u.rw = o.rw + t), o.lw + t < u.lw && (u.lw = o.lw + t), o.width != null && !o.isFixed && (u.width == null && (s.style.width = u.width = "100%"), e.style.width = o.width));
  6540. },
  6541. alignBox: function(e, n, r) {
  6542. this.placeBox(e, 0, r);
  6543. var i = e.bbox;
  6544. if (i.isMultiline) return;
  6545. var s = i.width != null && !i.isFixed, o = 0, u = -i.w / 2, a = "50%";
  6546. this.initialSkipBug && (o = i.w - i.rw - .1, u += i.lw), this.msieMarginScaleBug ? u = u * this.em + "px" : u = this.Em(u), s && (u = "", a = 50 - parseFloat(i.width) / 2 + "%"), t.Insert(e.style, {
  6547. right: {
  6548. left: "",
  6549. right: this.Em(o)
  6550. },
  6551. center: {
  6552. left: a,
  6553. marginLeft: u
  6554. }
  6555. }[n]);
  6556. },
  6557. setStackWidth: function(e, t) {
  6558. if (typeof t == "number") {
  6559. e.style.width = this.Em(Math.max(0, t));
  6560. var n = e.bbox;
  6561. n && (n.w = t, n.exactW = !0), n = e.parentNode.bbox, n && (n.w = t, n.exactW = !0);
  6562. } else e.style.width = e.parentNode.style.width = "100%", e.bbox && (e.bbox.width = t), e.parentNode.bbox && (e.parentNode.bbox.width = t);
  6563. },
  6564. createDelimiter: function(n, i, s, o, u) {
  6565. if (!i) {
  6566. n.bbox = {
  6567. h: 0,
  6568. d: 0,
  6569. w: this.TeX.nulldelimiterspace,
  6570. lw: 0
  6571. }, n.bbox.rw = n.bbox.w, this.createSpace(n, n.bbox.h, n.bbox.d, n.bbox.w);
  6572. return;
  6573. }
  6574. o || (o = 1), s instanceof Array || (s = [ s, s ]);
  6575. var a = s[1];
  6576. s = s[0];
  6577. var l = {
  6578. alias: i
  6579. };
  6580. while (l.alias) i = l.alias, l = this.FONTDATA.DELIMITERS[i], l || (l = {
  6581. HW: [ 0, this.FONTDATA.VARIANT[r.VARIANT.NORMAL] ]
  6582. });
  6583. l.load && t.RestartAfter(e.Require(this.fontDir + "/fontdata-" + l.load + ".js"));
  6584. for (var c = 0, h = l.HW.length; c < h; c++) if (l.HW[c][0] * o >= s - .01 || c == h - 1 && !l.stretch) {
  6585. l.HW[c][2] && (o *= l.HW[c][2]), l.HW[c][3] && (i = l.HW[c][3]);
  6586. var p = this.addElement(n, "span");
  6587. this.createChar(p, [ i, l.HW[c][1] ], o, u), n.bbox = p.bbox, n.offset = .65 * n.bbox.w, n.scale = o;
  6588. return;
  6589. }
  6590. l.stretch && this["extendDelimiter" + l.dir](n, a, l.stretch, o, u);
  6591. },
  6592. extendDelimiterV: function(e, t, n, r, i) {
  6593. var s = this.createStack(e, !0), o = this.createBox(s), u = this.createBox(s);
  6594. this.createChar(o, n.top || n.ext, r, i), this.createChar(u, n.bot || n.ext, r, i);
  6595. var a = {
  6596. bbox: {
  6597. w: 0,
  6598. lw: 0,
  6599. rw: 0
  6600. }
  6601. }, f = a, l, c = o.bbox.h + o.bbox.d + u.bbox.h + u.bbox.d, h = -o.bbox.h;
  6602. this.placeBox(o, 0, h, !0), h -= o.bbox.d, n.mid && (f = this.createBox(s), this.createChar(f, n.mid, r, i), c += f.bbox.h + f.bbox.d), n.min && t < c * n.min && (t = c * n.min);
  6603. if (t > c) {
  6604. a = this.Element("span"), this.createChar(a, n.ext, r, i);
  6605. var p = a.bbox.h + a.bbox.d, d = p - .05, v, m, g = n.mid ? 2 : 1;
  6606. m = v = Math.ceil((t - c) / (g * d)), n.fullExtenders || (d = (t - c) / (g * v));
  6607. var y = v / (v + 1) * (p - d);
  6608. d = p - y, h += y + d - a.bbox.h;
  6609. while (g-- > 0) {
  6610. while (v-- > 0) this.msieCloneNodeBug ? (l = this.Element("span"), this.createChar(l, n.ext, r, i)) : l = a.cloneNode(!0), l.bbox = a.bbox, h -= d, this.placeBox(this.addBox(s, l), 0, h, !0);
  6611. h += y - a.bbox.d, n.mid && g && (this.placeBox(f, 0, h - f.bbox.h, !0), v = m, h += -(f.bbox.h + f.bbox.d) + y + d - a.bbox.h);
  6612. }
  6613. } else h += (c - t) / 2, n.mid && (this.placeBox(f, 0, h - f.bbox.h, !0), h += -(f.bbox.h + f.bbox.d)), h += (c - t) / 2;
  6614. this.placeBox(u, 0, h - u.bbox.h, !0), h -= u.bbox.h + u.bbox.d, e.bbox = {
  6615. w: Math.max(o.bbox.w, a.bbox.w, u.bbox.w, f.bbox.w),
  6616. lw: Math.min(o.bbox.lw, a.bbox.lw, u.bbox.lw, f.bbox.lw),
  6617. rw: Math.max(o.bbox.rw, a.bbox.rw, u.bbox.rw, f.bbox.rw),
  6618. h: 0,
  6619. d: -h,
  6620. exactW: !0
  6621. }, e.scale = r, e.offset = .55 * e.bbox.w, e.isMultiChar = !0, this.setStackWidth(s, e.bbox.w);
  6622. },
  6623. extendDelimiterH: function(e, t, n, r, i) {
  6624. var s = this.createStack(e, !0), o = this.createBox(s), u = this.createBox(s);
  6625. this.createChar(o, n.left || n.rep, r, i), this.createChar(u, n.right || n.rep, r, i);
  6626. var a = this.Element("span");
  6627. this.createChar(a, n.rep, r, i);
  6628. var f = {
  6629. bbox: {
  6630. h: -this.BIGDIMEN,
  6631. d: -this.BIGDIMEN
  6632. }
  6633. }, l;
  6634. this.placeBox(o, -o.bbox.lw, 0, !0);
  6635. var c = o.bbox.rw - o.bbox.lw + (u.bbox.rw - u.bbox.lw) - .05, h = o.bbox.rw - o.bbox.lw - .025, p;
  6636. n.mid && (f = this.createBox(s), this.createChar(f, n.mid, r, i), c += f.bbox.w), n.min && t < c * n.min && (t = c * n.min);
  6637. if (t > c) {
  6638. var d = a.bbox.rw - a.bbox.lw, v = d - .05, m, g, y = n.mid ? 2 : 1;
  6639. g = m = Math.ceil((t - c) / (y * v)), n.fillExtenders || (v = (t - c) / (y * m)), p = m / (m + 1) * (d - v), v = d - p, h -= a.bbox.lw + p;
  6640. while (y-- > 0) {
  6641. while (m-- > 0) this.cloneNodeBug ? (l = this.Element("span"), this.createChar(l, n.rep, r, i)) : l = a.cloneNode(!0), l.bbox = a.bbox, this.placeBox(this.addBox(s, l), h, 0, !0), h += v;
  6642. n.mid && y && (this.placeBox(f, h, 0, !0), h += f.bbox.w - p, m = g);
  6643. }
  6644. } else h -= (c - t) / 2, n.mid && (this.placeBox(f, h, 0, !0), h += f.bbox.w), h -= (c - t) / 2;
  6645. this.placeBox(u, h, 0, !0), e.bbox = {
  6646. w: h + u.bbox.rw,
  6647. lw: 0,
  6648. rw: h + u.bbox.rw,
  6649. H: Math.max(o.bbox.h, a.bbox.h, u.bbox.h, f.bbox.h),
  6650. D: Math.max(o.bbox.d, a.bbox.d, u.bbox.d, f.bbox.d),
  6651. h: a.bbox.h,
  6652. d: a.bbox.d,
  6653. exactW: !0
  6654. }, e.scale = r, e.isMultiChar = !0, this.setStackWidth(s, e.bbox.w);
  6655. },
  6656. createChar: function(e, t, n, i) {
  6657. e.isMathJax = !0;
  6658. var s = e, o = "", u = {
  6659. fonts: [ t[1] ],
  6660. noRemap: !0
  6661. };
  6662. i && i === r.VARIANT.BOLD && (u.fonts = [ t[1] + "-bold", t[1] ]), typeof t[1] != "string" && (u = t[1]);
  6663. if (t[0] instanceof Array) for (var a = 0, l = t[0].length; a < l; a++) o += String.fromCharCode(t[0][a]); else o = String.fromCharCode(t[0]);
  6664. t[4] && (n *= t[4]), n !== 1 || t[3] ? (s = this.addElement(e, "span", {
  6665. style: {
  6666. fontSize: this.Percent(n)
  6667. },
  6668. scale: n,
  6669. isMathJax: !0
  6670. }), this.handleVariant(s, u, o), e.bbox = s.bbox) : this.handleVariant(e, u, o), t[2] && (e.style.marginLeft = this.Em(t[2])), t[3] && (e.firstChild.style.verticalAlign = this.Em(t[3]), e.bbox.h += t[3], e.bbox.h < 0 && (e.bbox.h = 0)), t[5] && (e.bbox.h += t[5]), t[6] && (e.bbox.d += t[6]), this.AccentBug && e.bbox.w === 0 && (s.firstChild.nodeValue += this.NBSP);
  6671. },
  6672. positionDelimiter: function(e, t) {
  6673. t -= e.bbox.h, e.bbox.d -= t, e.bbox.h += t, t && (this.safariVerticalAlignBug || this.konquerorVerticalAlignBug || this.operaVerticalAlignBug && e.isMultiChar ? (e.firstChild.style.display === "" && e.style.top !== "" && (e = e.firstChild, t -= n.unEm(e.style.top)), e.style.position = "relative", e.style.top = this.Em(-t)) : (e.style.verticalAlign = this.Em(t), n.ffVerticalAlignBug && n.createRule(e.parentNode, e.bbox.h, 0, 0)));
  6674. },
  6675. handleVariant: function(e, t, n) {
  6676. var i = "", s, o, u, a, l = e, c = !!e.style.fontFamily;
  6677. if (n.length === 0) return;
  6678. e.bbox || (e.bbox = {
  6679. w: 0,
  6680. h: -this.BIGDIMEN,
  6681. d: -this.BIGDIMEN,
  6682. rw: -this.BIGDIMEN,
  6683. lw: this.BIGDIMEN
  6684. }), t || (t = this.FONTDATA.VARIANT[r.VARIANT.NORMAL]), a = t;
  6685. for (var h = 0, p = n.length; h < p; h++) {
  6686. t = a, s = n.charCodeAt(h), o = n.charAt(h);
  6687. if (s >= 55296 && s < 56319) {
  6688. h++, s = (s - 55296 << 10) + (n.charCodeAt(h) - 56320) + 65536;
  6689. if (this.FONTDATA.RemapPlane1) {
  6690. var d = this.FONTDATA.RemapPlane1(s, t);
  6691. s = d.n, t = d.variant;
  6692. }
  6693. } else {
  6694. var v, m, g = this.FONTDATA.RANGES;
  6695. for (v = 0, m = g.length; v < m; v++) {
  6696. if (g[v].name === "alpha" && t.noLowerCase) continue;
  6697. var y = t["offset" + g[v].offset];
  6698. if (y && s >= g[v].low && s <= g[v].high) {
  6699. g[v].remap && g[v].remap[s] ? s = y + g[v].remap[s] : (s = s - g[v].low + y, g[v].add && (s += g[v].add)), t["variant" + g[v].offset] && (t = this.FONTDATA.VARIANT[t["variant" + g[v].offset]]);
  6700. break;
  6701. }
  6702. }
  6703. }
  6704. if (t.remap && t.remap[s]) if (t.remap[s] instanceof Array) {
  6705. var b = t.remap[s];
  6706. s = b[0], t = this.FONTDATA.VARIANT[b[1]];
  6707. } else typeof t.remap[s] == "string" ? (n = t.remap[s] + n.substr(h + 1), h = 0, p = n.length, s = n.charCodeAt(0)) : (s = t.remap[s], t.remap.variant && (t = this.FONTDATA.VARIANT[t.remap.variant]));
  6708. this.FONTDATA.REMAP[s] && !t.noRemap && (s = this.FONTDATA.REMAP[s], s instanceof Array && (t = this.FONTDATA.VARIANT[s[1]], s = s[0]), typeof s == "string" && (n = s + n.substr(h + 1), h = 0, p = n.length, s = s.charCodeAt(0))), u = this.lookupChar(t, s), o = u[s];
  6709. if (c || !this.checkFont(u, l.style) && !o[5].img) {
  6710. i.length && (this.addText(l, i), i = "");
  6711. var w = !!l.style.fontFamily || !!e.style.fontStyle || !!e.style.fontWeight || !u.directory || c;
  6712. c = !1, l !== e && (w = !this.checkFont(u, e.style), l = e), w && (l = this.addElement(e, "span", {
  6713. isMathJax: !0,
  6714. subSpan: !0
  6715. })), this.handleFont(l, u, l !== e);
  6716. }
  6717. i = this.handleChar(l, u, o, s, i), (o[5] || {}).space || (o[0] / 1e3 > e.bbox.h && (e.bbox.h = o[0] / 1e3), o[1] / 1e3 > e.bbox.d && (e.bbox.d = o[1] / 1e3)), e.bbox.w + o[3] / 1e3 < e.bbox.lw && (e.bbox.lw = e.bbox.w + o[3] / 1e3), e.bbox.w + o[4] / 1e3 > e.bbox.rw && (e.bbox.rw = e.bbox.w + o[4] / 1e3), e.bbox.w += o[2] / 1e3;
  6718. }
  6719. i.length && this.addText(l, i), e.scale && e.scale !== 1 && (e.bbox.h *= e.scale, e.bbox.d *= e.scale, e.bbox.w *= e.scale, e.bbox.lw *= e.scale, e.bbox.rw *= e.scale), n.length == 1 && u.skew && u.skew[s] && (e.bbox.skew = u.skew[s]);
  6720. },
  6721. checkFont: function(e, t) {
  6722. var n = t.fontWeight || "normal";
  6723. return n.match(/^\d+$/) && (n = parseInt(n) >= 600 ? "bold" : "normal"), e.family.replace(/'/g, "") === t.fontFamily.replace(/'/g, "") && (e.style || "normal") === (t.fontStyle || "normal") && (e.weight || "normal") === n;
  6724. },
  6725. handleFont: function(e, t, r) {
  6726. e.style.fontFamily = t.family, t.directory || (e.style.fontSize = Math.floor(100 / n.scale + .5) + "%");
  6727. if (!n.FontFaceBug || !t.isWebFont) {
  6728. var i = t.style || "normal", s = t.weight || "normal";
  6729. if (i !== "normal" || r) e.style.fontStyle = i;
  6730. if (s !== "normal" || r) e.style.fontWeight = s;
  6731. }
  6732. },
  6733. handleChar: function(e, t, r, i, s) {
  6734. var o = r[5];
  6735. if (o.space) return s.length && this.addText(e, s), n.createShift(e, r[2] / 1e3), "";
  6736. if (o.img) return this.handleImg(e, t, r, i, s);
  6737. if (o.isUnknown && this.FONTDATA.DELIMITERS[i]) {
  6738. s.length && this.addText(e, s);
  6739. var u = e.scale;
  6740. return n.createDelimiter(e, i, 0, 1, t), this.FONTDATA.DELIMITERS[i].dir === "V" && (e.style.verticalAlign = this.Em(e.bbox.d), e.bbox.h += e.bbox.d, e.bbox.d = 0), e.scale = u, r[0] = e.bbox.h * 1e3, r[1] = e.bbox.d * 1e3, r[2] = e.bbox.w * 1e3, r[3] = e.bbox.lw * 1e3, r[4] = e.bbox.rw * 1e3, "";
  6741. }
  6742. if (o.c == null) if (i <= 65535) o.c = String.fromCharCode(i); else {
  6743. var a = i - 65536;
  6744. o.c = String.fromCharCode((a >> 10) + 55296) + String.fromCharCode((a & 1023) + 56320);
  6745. }
  6746. return o.rfix ? (this.addText(e, s + o.c), n.createShift(e, o.rfix / 1e3), "") : r[2] || !this.msieAccentBug || s.length ? s + o.c : (n.createShift(e, r[3] / 1e3), n.createShift(e, (r[4] - r[3]) / 1e3), this.addText(e, o.c), n.createShift(e, -r[4] / 1e3), "");
  6747. },
  6748. handleImg: function(e, t, n, r, i) {
  6749. return i;
  6750. },
  6751. lookupChar: function(e, t) {
  6752. var r, i;
  6753. if (!e.FONTS) {
  6754. var s = this.FONTDATA.FONTS, o = e.fonts || this.FONTDATA.VARIANT.normal.fonts;
  6755. o instanceof Array || (o = [ o ]), e.fonts != o && (e.fonts = o), e.FONTS = [];
  6756. for (r = 0, i = o.length; r < i; r++) s[o[r]] && (e.FONTS.push(s[o[r]]), s[o[r]].name = o[r]);
  6757. }
  6758. for (r = 0, i = e.FONTS.length; r < i; r++) {
  6759. var u = e.FONTS[r];
  6760. typeof u == "string" && (delete e.FONTS, this.loadFont(u));
  6761. if (u[t]) {
  6762. u[t].length === 5 && (u[t][5] = {});
  6763. if (!n.allowWebFonts || !!u.available) return u;
  6764. this.loadWebFont(u);
  6765. } else this.findBlock(u, t);
  6766. }
  6767. return this.unknownChar(e, t);
  6768. },
  6769. unknownChar: function(e, r) {
  6770. var i = e.defaultFont || {
  6771. family: n.config.undefinedFamily
  6772. };
  6773. return e.bold && (i.weight = "bold"), e.italic && (i.style = "italic"), i[r] || (i[r] = [ 800, 200, 500, 0, 500, {
  6774. isUnknown: !0
  6775. } ]), t.signal.Post([ "HTML-CSS Jax - unknown char", r, e ]), i;
  6776. },
  6777. findBlock: function(e, t) {
  6778. if (e.Ranges) for (var n = 0, r = e.Ranges.length; n < r; n++) {
  6779. if (t < e.Ranges[n][0]) return;
  6780. if (t <= e.Ranges[n][1]) {
  6781. var i = e.Ranges[n][2];
  6782. for (var s = e.Ranges.length - 1; s >= 0; s--) e.Ranges[s][2] == i && e.Ranges.splice(s, 1);
  6783. this.loadFont(e.directory + "/" + i + ".js");
  6784. }
  6785. }
  6786. },
  6787. loadFont: function(r) {
  6788. var i = MathJax.Callback.Queue();
  6789. i.Push([ "Require", e, this.fontDir + "/" + r ]), this.imgFonts && (MathJax.isPacked || (r = r.replace(/\/([^\/]*)$/, n.imgPacked + "/$1")), i.Push([ "Require", e, this.webfontDir + "/png/" + r ])), t.RestartAfter(i.Push({}));
  6790. },
  6791. loadWebFont: function(e) {
  6792. e.available = e.isWebFont = !0, n.FontFaceBug && (e.family = e.name, n.msieFontCSSBug && (e.family += "-Web")), t.RestartAfter(this.Font.loadWebFont(e));
  6793. },
  6794. loadWebFontError: function(n, r) {
  6795. t.Startup.signal.Post("HTML-CSS Jax - disable web fonts"), n.isWebFont = !1, this.config.imageFont && this.config.imageFont === this.fontInUse ? (this.imgFonts = !0, t.Startup.signal.Post("HTML-CSS Jax - switch to image fonts"), t.Startup.signal.Post("HTML-CSS Jax - using image fonts"), MathJax.Message.Set("Web-Fonts not available -- using image fonts instead", null, 3e3), e.Require(this.directory + "/imageFonts.js", r)) : (this.allowWebFonts = !1, r());
  6796. },
  6797. Element: MathJax.HTML.Element,
  6798. addElement: MathJax.HTML.addElement,
  6799. TextNode: MathJax.HTML.TextNode,
  6800. addText: MathJax.HTML.addText,
  6801. ucMatch: MathJax.HTML.ucMatch,
  6802. BIGDIMEN: 1e7,
  6803. ID: 0,
  6804. idPostfix: "",
  6805. GetID: function() {
  6806. return this.ID++, this.ID;
  6807. },
  6808. MATHSPACE: {
  6809. veryverythinmathspace: 1 / 18,
  6810. verythinmathspace: 2 / 18,
  6811. thinmathspace: 3 / 18,
  6812. mediummathspace: 4 / 18,
  6813. thickmathspace: 5 / 18,
  6814. verythickmathspace: 6 / 18,
  6815. veryverythickmathspace: 7 / 18,
  6816. negativeveryverythinmathspace: -1 / 18,
  6817. negativeverythinmathspace: -2 / 18,
  6818. negativethinmathspace: -3 / 18,
  6819. negativemediummathspace: -4 / 18,
  6820. negativethickmathspace: -5 / 18,
  6821. negativeverythickmathspace: -6 / 18,
  6822. negativeveryverythickmathspace: -7 / 18
  6823. },
  6824. TeX: {
  6825. x_height: .430554,
  6826. quad: 1,
  6827. num1: .676508,
  6828. num2: .393732,
  6829. num3: .44373,
  6830. denom1: .685951,
  6831. denom2: .344841,
  6832. sup1: .412892,
  6833. sup2: .362892,
  6834. sup3: .288888,
  6835. sub1: .15,
  6836. sub2: .247217,
  6837. sup_drop: .386108,
  6838. sub_drop: .05,
  6839. delim1: 2.39,
  6840. delim2: 1,
  6841. axis_height: .25,
  6842. rule_thickness: .06,
  6843. big_op_spacing1: .111111,
  6844. big_op_spacing2: .166666,
  6845. big_op_spacing3: .2,
  6846. big_op_spacing4: .6,
  6847. big_op_spacing5: .1,
  6848. scriptspace: .1,
  6849. nulldelimiterspace: .12,
  6850. delimiterfactor: 901,
  6851. delimitershortfall: .1,
  6852. min_rule_thickness: 1.25
  6853. },
  6854. NBSP: "\u00a0",
  6855. rfuzz: 0
  6856. }), MathJax.Hub.Register.StartupHook("mml Jax Ready", function() {
  6857. r = MathJax.ElementJax.mml, r.mbase.Augment({
  6858. toHTML: function(e) {
  6859. e = this.HTMLcreateSpan(e), this.type != "mrow" && (e = this.HTMLhandleSize(e));
  6860. for (var t = 0, n = this.data.length; t < n; t++) this.data[t] && this.data[t].toHTML(e);
  6861. var r = this.HTMLcomputeBBox(e), i = e.bbox.h, s = e.bbox.d;
  6862. for (t = 0, n = r.length; t < n; t++) r[t].HTMLstretchV(e, i, s);
  6863. return r.length && this.HTMLcomputeBBox(e, !0), this.HTMLlineBreaks(e) && (e = this.HTMLmultiline(e)), this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  6864. },
  6865. HTMLlineBreaks: function() {
  6866. return !1;
  6867. },
  6868. HTMLmultiline: function() {
  6869. r.mbase.HTMLautoloadFile("multiline");
  6870. },
  6871. HTMLcomputeBBox: function(e, t, n, r) {
  6872. n == null && (n = 0), r == null && (r = this.data.length);
  6873. var i = e.bbox = {
  6874. exactW: !0
  6875. }, s = [];
  6876. while (n < r) {
  6877. var o = this.data[n];
  6878. if (!o) continue;
  6879. !t && o.HTMLcanStretch("Vertical") && (s.push(o), o = o.CoreMO() || o), this.HTMLcombineBBoxes(o, i), n++;
  6880. }
  6881. return this.HTMLcleanBBox(i), s;
  6882. },
  6883. HTMLcombineBBoxes: function(e, t) {
  6884. t.w == null && this.HTMLemptyBBox(t);
  6885. var r = e.bbox ? e : e.HTMLspanElement();
  6886. if (!r || !r.bbox) return;
  6887. var i = r.bbox;
  6888. i.d > t.d && (t.d = i.d), i.h > t.h && (t.h = i.h), i.D != null && i.D > t.D && (t.D = i.D), i.H != null && i.H > t.H && (t.H = i.H), r.style.paddingLeft && (t.w += n.unEm(r.style.paddingLeft) * (r.scale || 1)), t.w + i.lw < t.lw && (t.lw = t.w + i.lw), t.w + i.rw > t.rw && (t.rw = t.w + i.rw), t.w += i.w, r.style.paddingRight && (t.w += n.unEm(r.style.paddingRight) * (r.scale || 1)), i.width && (t.width = i.width), i.ic ? t.ic = i.ic : delete t.ic, t.exactW && !i.exactW && delete t.exactW;
  6889. },
  6890. HTMLemptyBBox: function(e) {
  6891. return e.h = e.d = e.H = e.D = e.rw = -n.BIGDIMEN, e.w = 0, e.lw = n.BIGDIMEN, e;
  6892. },
  6893. HTMLcleanBBox: function(e) {
  6894. e.h === this.BIGDIMEN && (e.h = e.d = e.H = e.D = e.w = e.rw = e.lw = 0), e.D <= e.d && delete e.D, e.H <= e.h && delete e.H;
  6895. },
  6896. HTMLzeroBBox: function() {
  6897. return {
  6898. h: 0,
  6899. d: 0,
  6900. w: 0,
  6901. lw: 0,
  6902. rw: 0
  6903. };
  6904. },
  6905. HTMLcanStretch: function(e) {
  6906. if (this.isEmbellished()) {
  6907. var t = this.Core();
  6908. if (t && t !== this) return t.HTMLcanStretch(e);
  6909. }
  6910. return !1;
  6911. },
  6912. HTMLstretchH: function(e, t) {
  6913. return this.HTMLspanElement();
  6914. },
  6915. HTMLstretchV: function(e, t, n) {
  6916. return this.HTMLspanElement();
  6917. },
  6918. HTMLnotEmpty: function(e) {
  6919. while (e) {
  6920. if (e.type !== "mrow" && e.type !== "texatom" || e.data.length > 1) return !0;
  6921. e = e.data[0];
  6922. }
  6923. return !1;
  6924. },
  6925. HTMLmeasureChild: function(e, t) {
  6926. this.data[e] ? n.Measured(this.data[e].toHTML(t), t) : t.bbox = this.HTMLzeroBBox();
  6927. },
  6928. HTMLboxChild: function(e, t) {
  6929. return this.data[e] ? this.data[e].toHTML(t) : (t.bbox || (t.bbox = this.HTMLzeroBBox()), null);
  6930. },
  6931. HTMLcreateSpan: function(e) {
  6932. if (this.spanID) {
  6933. var t = this.HTMLspanElement();
  6934. if (t && (t.parentNode === e || (t.parentNode || {}).parentNode === e)) {
  6935. while (t.firstChild) t.removeChild(t.firstChild);
  6936. return t.bbox = {
  6937. w: 0,
  6938. h: 0,
  6939. d: 0,
  6940. lw: 0,
  6941. rw: 0
  6942. }, t.scale = 1, t.isMultChar = t.HH = null, t.style.cssText = "", t;
  6943. }
  6944. }
  6945. return this.href && (e = n.addElement(e, "a", {
  6946. href: this.href,
  6947. isMathJax: !0
  6948. })), e = n.addElement(e, "span", {
  6949. className: this.type,
  6950. isMathJax: !0
  6951. }), n.imgHeightBug && (e.style.display = "inline-block"), this["class"] && (e.className += " " + this["class"]), this.spanID || (this.spanID = n.GetID()), e.id = (this.id || "MathJax-Span-" + this.spanID) + n.idPostfix, e.bbox = {
  6952. w: 0,
  6953. h: 0,
  6954. d: 0,
  6955. lw: 0,
  6956. rw: 0
  6957. }, this.styles = {}, this.style && (e.style.cssText = this.style, e.style.fontSize && (this.mathsize = e.style.fontSize, e.style.fontSize = ""), this.styles = {
  6958. border: n.getBorders(e),
  6959. padding: n.getPadding(e)
  6960. }, this.styles.border && (e.style.border = ""), this.styles.padding && (e.style.padding = "")), this.href && (e.parentNode.bbox = e.bbox), e;
  6961. },
  6962. HTMLspanElement: function() {
  6963. return this.spanID ? document.getElementById((this.id || "MathJax-Span-" + this.spanID) + n.idPostfix) : null;
  6964. },
  6965. HTMLhandleVariant: function(e, t, r) {
  6966. n.handleVariant(e, t, r);
  6967. },
  6968. HTMLhandleSize: function(e) {
  6969. return e.scale || (e.scale = this.HTMLgetScale(), e.scale !== 1 && (e.style.fontSize = n.Percent(e.scale))), e;
  6970. },
  6971. HTMLhandleColor: function(e) {
  6972. var t = this.getValues("mathcolor", "color");
  6973. this.mathbackground && (t.mathbackground = this.mathbackground), this.background && (t.background = this.background), this.style && e.style.backgroundColor && (t.mathbackground = e.style.backgroundColor, e.style.backgroundColor = "transparent");
  6974. var i = (this.styles || {}).border, s = (this.styles || {}).padding;
  6975. t.color && !this.mathcolor && (t.mathcolor = t.color), t.background && !this.mathbackground && (t.mathbackground = t.background), t.mathcolor && (e.style.color = t.mathcolor);
  6976. if (t.mathbackground && t.mathbackground !== r.COLOR.TRANSPARENT || i || s) {
  6977. var o = e.bbox, u = o.exact ? 0 : 1 / n.em, a = 0, l = 0, c = e.style.paddingLeft, h = e.style.paddingRight;
  6978. this.isToken && (a = o.lw, l = o.rw - o.w), c !== "" && (a += n.unEm(c) * (e.scale || 1)), h !== "" && (l -= n.unEm(h) * (e.scale || 1));
  6979. var p = n.PaddingWidthBug || o.keepPadding || o.exactW ? 0 : l - a, v = Math.max(0, n.getW(e) + p), m = o.h + o.d, g = -o.d, y = 0, b = 0;
  6980. v > 0 && (v += 2 * u, a -= u), m > 0 && (m += 2 * u, g -= u), l = -v - a, i && (l -= i.right, g -= i.bottom, y += i.left, b += i.right, o.h += i.top, o.d += i.bottom, o.w += i.left + i.right, o.lw -= i.left, o.rw += i.right), s && (m += s.top + s.bottom, v += s.left + s.right, l -= s.right, g -= s.bottom, y += s.left, b += s.right, o.h += s.top, o.d += s.bottom, o.w += s.left + s.right, o.lw -= s.left, o.rw += s.right), b && (e.style.paddingRight = n.Em(b));
  6981. var w = n.Element("span", {
  6982. id: "MathJax-Color-" + this.spanID + n.idPostfix,
  6983. isMathJax: !0,
  6984. style: {
  6985. display: "inline-block",
  6986. backgroundColor: t.mathbackground,
  6987. width: n.Em(v),
  6988. height: n.Em(m),
  6989. verticalAlign: n.Em(g),
  6990. marginLeft: n.Em(a),
  6991. marginRight: n.Em(l)
  6992. }
  6993. });
  6994. return n.setBorders(w, i), o.width && (w.style.width = o.width, w.style.marginRight = "-" + o.width), n.msieInlineBlockAlignBug && (w.style.position = "relative", w.style.width = w.style.height = 0, w.style.verticalAlign = w.style.marginLeft = w.style.marginRight = "", w.style.border = w.style.padding = "", i && n.msieBorderWidthBug && (m += i.top + i.bottom, v += i.left + i.right), w.style.width = n.Em(y + u), n.placeBox(n.addElement(w, "span", {
  6995. noAdjust: !0,
  6996. isMathJax: !0,
  6997. style: {
  6998. display: "inline-block",
  6999. position: "absolute",
  7000. overflow: "hidden",
  7001. background: t.mathbackground || "transparent",
  7002. width: n.Em(v),
  7003. height: n.Em(m)
  7004. }
  7005. }), a, o.h + u), n.setBorders(w.firstChild, i)), e.parentNode.insertBefore(w, e), n.msieColorPositionBug && (e.style.position = "relative"), w;
  7006. }
  7007. return null;
  7008. },
  7009. HTMLremoveColor: function() {
  7010. var e = document.getElementById("MathJax-Color-" + this.spanID + n.idPostfix);
  7011. e && e.parentNode.removeChild(e);
  7012. },
  7013. HTMLhandleSpace: function(e) {
  7014. if (this.useMMLspacing) {
  7015. if (this.type !== "mo") return;
  7016. var t = this.getValues("scriptlevel", "lspace", "rspace");
  7017. if (t.scriptlevel <= 0 || this.hasValue("lspace") || this.hasValue("rspace")) {
  7018. var r = this.HTMLgetMu(e);
  7019. t.lspace = Math.max(0, n.length2em(t.lspace, r)), t.rspace = Math.max(0, n.length2em(t.rspace, r));
  7020. var i = this, s = this.Parent();
  7021. while (s && s.isEmbellished() && s.Core() === i) i = s, s = s.Parent(), e = i.HTMLspanElement();
  7022. t.lspace && (e.style.paddingLeft = n.Em(t.lspace)), t.rspace && (e.style.paddingRight = n.Em(t.rspace));
  7023. }
  7024. } else {
  7025. var o = this.texSpacing();
  7026. o !== "" && (o = n.length2em(o, this.HTMLgetScale()) / (e.scale || 1), e.style.paddingLeft && (o += n.unEm(e.style.paddingLeft)), e.style.paddingLeft = n.Em(o));
  7027. }
  7028. },
  7029. HTMLgetScale: function() {
  7030. var e = 1, t = this.getValues("mathsize", "scriptlevel", "fontsize");
  7031. if (this.style) {
  7032. var r = this.HTMLspanElement();
  7033. r.style.fontSize != "" && (t.fontsize = r.style.fontSize);
  7034. }
  7035. return t.fontsize && !this.mathsize && (t.mathsize = t.fontsize), t.scriptlevel !== 0 && (t.scriptlevel > 2 && (t.scriptlevel = 2), e = Math.pow(this.Get("scriptsizemultiplier"), t.scriptlevel), t.scriptminsize = n.length2em(this.Get("scriptminsize")), e < t.scriptminsize && (e = t.scriptminsize)), this.isToken && (e *= n.length2em(t.mathsize)), e;
  7036. },
  7037. HTMLgetMu: function(e) {
  7038. var t = 1, n = this.getValues("scriptlevel", "scriptsizemultiplier");
  7039. return e.scale && e.scale !== 1 && (t = 1 / e.scale), n.scriptlevel !== 0 && (n.scriptlevel > 2 && (n.scriptlevel = 2), t = Math.sqrt(Math.pow(n.scriptsizemultiplier, n.scriptlevel))), t;
  7040. },
  7041. HTMLgetVariant: function() {
  7042. var e = this.getValues("mathvariant", "fontfamily", "fontweight", "fontstyle");
  7043. e.hasVariant = this.Get("mathvariant", !0), e.hasVariant || (e.family = e.fontfamily, e.weight = e.fontweight, e.style = e.fontstyle);
  7044. if (this.style) {
  7045. var t = this.HTMLspanElement();
  7046. !e.family && t.style.fontFamily && (e.family = t.style.fontFamily), !e.weight && t.style.fontWeight && (e.weight = t.style.fontWeight), !e.style && t.style.fontStyle && (e.style = t.style.fontStyle);
  7047. }
  7048. e.weight && e.weight.match(/^\d+$/) && (e.weight = parseInt(e.weight) > 600 ? "bold" : "normal");
  7049. var i = e.mathvariant;
  7050. return this.variantForm && (i = "-" + n.fontInUse + "-variant"), e.family && !e.hasVariant ? (!e.weight && e.mathvariant.match(/bold/) && (e.weight = "bold"), !e.style && e.mathvariant.match(/italic/) && (e.style = "italic"), {
  7051. FONTS: [],
  7052. fonts: [],
  7053. noRemap: !0,
  7054. defaultFont: {
  7055. family: e.family,
  7056. style: e.style,
  7057. weight: e.weight
  7058. }
  7059. }) : (e.weight === "bold" ? i = {
  7060. normal: r.VARIANT.BOLD,
  7061. italic: r.VARIANT.BOLDITALIC,
  7062. fraktur: r.VARIANT.BOLDFRAKTUR,
  7063. script: r.VARIANT.BOLDSCRIPT,
  7064. "sans-serif": r.VARIANT.BOLDSANSSERIF,
  7065. "sans-serif-italic": r.VARIANT.SANSSERIFBOLDITALIC
  7066. }[i] || i : e.weight === "normal" && (i = {
  7067. bold: r.VARIANT.normal,
  7068. "bold-italic": r.VARIANT.ITALIC,
  7069. "bold-fraktur": r.VARIANT.FRAKTUR,
  7070. "bold-script": r.VARIANT.SCRIPT,
  7071. "bold-sans-serif": r.VARIANT.SANSSERIF,
  7072. "sans-serif-bold-italic": r.VARIANT.SANSSERIFITALIC
  7073. }[i] || i), e.style === "italic" ? i = {
  7074. normal: r.VARIANT.ITALIC,
  7075. bold: r.VARIANT.BOLDITALIC,
  7076. "sans-serif": r.VARIANT.SANSSERIFITALIC,
  7077. "bold-sans-serif": r.VARIANT.SANSSERIFBOLDITALIC
  7078. }[i] || i : e.style === "normal" && (i = {
  7079. italic: r.VARIANT.NORMAL,
  7080. "bold-italic": r.VARIANT.BOLD,
  7081. "sans-serif-italic": r.VARIANT.SANSSERIF,
  7082. "sans-serif-bold-italic": r.VARIANT.BOLDSANSSERIF
  7083. }[i] || i), n.FONTDATA.VARIANT[i]);
  7084. }
  7085. }, {
  7086. HTMLautoload: function() {
  7087. var r = n.autoloadDir + "/" + this.type + ".js";
  7088. t.RestartAfter(e.Require(r));
  7089. },
  7090. HTMLautoloadFile: function(r) {
  7091. var i = n.autoloadDir + "/" + r + ".js";
  7092. t.RestartAfter(e.Require(i));
  7093. },
  7094. HTMLstretchH: function(e, t) {
  7095. return this.HTMLremoveColor(), this.toHTML(e, t);
  7096. },
  7097. HTMLstretchV: function(e, t, n) {
  7098. return this.HTMLremoveColor(), this.toHTML(e, t, n);
  7099. }
  7100. }), r.chars.Augment({
  7101. toHTML: function(e, t, r, i) {
  7102. var s = this.data.join("").replace(/[\u2061-\u2064]/g, "");
  7103. r && (s = r(s, i));
  7104. if (t.fontInherit) {
  7105. var o = Math.floor(100 / n.scale + .5) + "%";
  7106. n.addElement(e, "span", {
  7107. style: {
  7108. "font-size": o
  7109. }
  7110. }, [ s ]), t.bold && (e.lastChild.style.fontWeight = "bold"), t.italic && (e.lastChild.style.fontStyle = "italic");
  7111. var u = n.getHD(e), a = n.getW(e);
  7112. e.bbox = {
  7113. h: u.h,
  7114. d: u.d,
  7115. w: a,
  7116. lw: 0,
  7117. rw: a,
  7118. exactW: !0
  7119. };
  7120. } else this.HTMLhandleVariant(e, t, s);
  7121. }
  7122. }), r.entity.Augment({
  7123. toHTML: function(e, t, r, i) {
  7124. var s = this.toString().replace(/[\u2061-\u2064]/g, "");
  7125. r && (s = r(s, i));
  7126. if (t.fontInherit) {
  7127. var o = Math.floor(100 / n.scale + .5) + "%";
  7128. n.addElement(e, "span", {
  7129. style: {
  7130. "font-size": o
  7131. }
  7132. }, [ s ]), t.bold && (e.lastChild.style.fontWeight = "bold"), t.italic && (e.lastChild.style.fontStyle = "italic");
  7133. var u = n.getHD(e), a = n.getW(e);
  7134. e.bbox = {
  7135. h: u.h,
  7136. d: u.d,
  7137. w: a,
  7138. lw: 0,
  7139. rw: a,
  7140. exactW: !0
  7141. };
  7142. } else this.HTMLhandleVariant(e, t, s);
  7143. }
  7144. }), r.mi.Augment({
  7145. toHTML: function(e) {
  7146. e = this.HTMLhandleSize(this.HTMLcreateSpan(e)), e.bbox = null;
  7147. var t = this.HTMLgetVariant();
  7148. for (var r = 0, i = this.data.length; r < i; r++) this.data[r] && this.data[r].toHTML(e, t);
  7149. e.bbox || (e.bbox = {
  7150. w: 0,
  7151. h: 0,
  7152. d: 0,
  7153. rw: 0,
  7154. lw: 0
  7155. });
  7156. var s = this.data.join(""), o = e.bbox;
  7157. return o.skew && s.length !== 1 && delete o.skew, o.rw > o.w && s.length === 1 && !t.noIC && (o.ic = o.rw - o.w, n.createBlank(e, o.ic), o.w = o.rw), this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7158. }
  7159. }), r.mn.Augment({
  7160. toHTML: function(e) {
  7161. e = this.HTMLhandleSize(this.HTMLcreateSpan(e)), e.bbox = null;
  7162. var t = this.HTMLgetVariant();
  7163. for (var n = 0, r = this.data.length; n < r; n++) this.data[n] && this.data[n].toHTML(e, t);
  7164. return e.bbox || (e.bbox = {
  7165. w: 0,
  7166. h: 0,
  7167. d: 0,
  7168. rw: 0,
  7169. lw: 0
  7170. }), this.data.join("").length !== 1 && delete e.bbox.skew, this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7171. }
  7172. }), r.mo.Augment({
  7173. toHTML: function(e) {
  7174. e = this.HTMLhandleSize(this.HTMLcreateSpan(e));
  7175. if (this.data.length == 0) return e;
  7176. e.bbox = null;
  7177. var t = this.data.join(""), i = this.HTMLgetVariant(), s = this.getValues("largeop", "displaystyle");
  7178. s.largeop && (i = n.FONTDATA.VARIANT[s.displaystyle ? "-largeOp" : "-smallOp"]);
  7179. var o = this.CoreParent(), u = o && o.isa(r.msubsup) && this !== o.data[o.base], a = u ? this.HTMLremapChars : null;
  7180. if (t.length === 1 && o && o.isa(r.munderover) && this.CoreText(o.data[o.base]).length === 1) {
  7181. var l = o.data[o.over], c = o.data[o.under];
  7182. l && this === l.CoreMO() && o.Get("accent") ? a = n.FONTDATA.REMAPACCENT : c && this === c.CoreMO() && o.Get("accentunder") && (a = n.FONTDATA.REMAPACCENTUNDER);
  7183. }
  7184. u && t.match(/['`"\u00B4\u2032-\u2037\u2057]/) && (i = n.FONTDATA.VARIANT["-" + n.fontInUse + "-variant"]);
  7185. for (var h = 0, p = this.data.length; h < p; h++) this.data[h] && this.data[h].toHTML(e, i, this.HTMLremap, a);
  7186. e.bbox || (e.bbox = {
  7187. w: 0,
  7188. h: 0,
  7189. d: 0,
  7190. rw: 0,
  7191. lw: 0
  7192. }), t.length !== 1 && delete e.bbox.skew, n.AccentBug && e.bbox.w === 0 && t.length === 1 && e.firstChild && (e.firstChild.nodeValue += n.NBSP, n.createSpace(e, 0, 0, -e.offsetWidth / n.em));
  7193. if (s.largeop) {
  7194. var v = (e.bbox.h - e.bbox.d) / 2 - n.TeX.axis_height * e.scale;
  7195. n.safariVerticalAlignBug && e.lastChild.nodeName === "IMG" ? e.lastChild.style.verticalAlign = n.Em(n.unEm(e.lastChild.style.verticalAlign || 0) / n.em - v / e.scale) : n.konquerorVerticalAlignBug && e.lastChild.nodeName === "IMG" ? (e.style.position = "relative", e.lastChild.style.position = "relative", e.lastChild.style.top = n.Em(v / e.scale)) : e.style.verticalAlign = n.Em(-v / e.scale), e.bbox.h -= v, e.bbox.d += v, e.bbox.rw > e.bbox.w && (e.bbox.ic = e.bbox.rw - e.bbox.w, n.createBlank(e, e.bbox.ic), e.bbox.w = e.bbox.rw);
  7196. }
  7197. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7198. },
  7199. CoreParent: function() {
  7200. var e = this;
  7201. while (e && e.isEmbellished() && e.CoreMO() === this && !e.isa(r.math)) e = e.Parent();
  7202. return e;
  7203. },
  7204. CoreText: function(e) {
  7205. if (!e) return "";
  7206. if (e.isEmbellished()) return e.CoreMO().data.join("");
  7207. while ((e.isa(r.mrow) || e.isa(r.TeXAtom)) && e.data.length === 1 && e.data[0]) e = e.data[0];
  7208. return e.isToken ? e.data.join("") : "";
  7209. },
  7210. HTMLremapChars: {
  7211. "*": "\u2217",
  7212. '"': "\u2033",
  7213. "\u00b0": "\u2218",
  7214. "\u00b2": "2",
  7215. "\u00b3": "3",
  7216. "\u00b4": "\u2032",
  7217. "\u00b9": "1"
  7218. },
  7219. HTMLremap: function(e, t) {
  7220. return e = e.replace(/-/g, "\u2212"), t && (e = e.replace(/'/g, "\u2032").replace(/`/g, "\u2035"), e.length === 1 && (e = t[e] || e)), e;
  7221. },
  7222. HTMLcanStretch: function(e) {
  7223. if (!this.Get("stretchy")) return !1;
  7224. var t = this.data.join("");
  7225. if (t.length > 1) return !1;
  7226. var i = this.CoreParent();
  7227. if (i && i.isa(r.munderover) && this.CoreText(i.data[i.base]).length === 1) {
  7228. var s = i.data[i.over], o = i.data[i.under];
  7229. s && this === s.CoreMO() && i.Get("accent") ? t = n.FONTDATA.REMAPACCENT[t] || t : o && this === o.CoreMO() && i.Get("accentunder") && (t = n.FONTDATA.REMAPACCENTUNDER[t] || t);
  7230. }
  7231. return t = n.FONTDATA.DELIMITERS[t.charCodeAt(0)], t && t.dir == e.substr(0, 1);
  7232. },
  7233. HTMLstretchV: function(e, t, r) {
  7234. this.HTMLremoveColor();
  7235. var i = this.getValues("symmetric", "maxsize", "minsize"), s = this.HTMLspanElement(), o = this.HTMLgetMu(s), u, a = n.TeX.axis_height, f = s.scale;
  7236. return i.symmetric ? u = 2 * Math.max(t - a, r + a) : u = t + r, i.maxsize = n.length2em(i.maxsize, o, s.bbox.h + s.bbox.d), i.minsize = n.length2em(i.minsize, o, s.bbox.h + s.bbox.d), u = Math.max(i.minsize, Math.min(i.maxsize, u)), s = this.HTMLcreateSpan(e), n.createDelimiter(s, this.data.join("").charCodeAt(0), u, f), i.symmetric ? u = (s.bbox.h + s.bbox.d) / 2 + a : u = (s.bbox.h + s.bbox.d) * t / (t + r), n.positionDelimiter(s, u), this.HTMLhandleSpace(s), this.HTMLhandleColor(s), s;
  7237. },
  7238. HTMLstretchH: function(e, t) {
  7239. this.HTMLremoveColor();
  7240. var i = this.getValues("maxsize", "minsize", "mathvariant", "fontweight");
  7241. (i.fontweight === "bold" || parseInt(i.fontweight) >= 600) && !this.Get("mathvariant", !0) && (i.mathvariant = r.VARIANT.BOLD);
  7242. var s = this.HTMLspanElement(), o = this.HTMLgetMu(s), u = s.scale;
  7243. return i.maxsize = n.length2em(i.maxsize, o, s.bbox.w), i.minsize = n.length2em(i.minsize, o, s.bbox.w), t = Math.max(i.minsize, Math.min(i.maxsize, t)), s = this.HTMLcreateSpan(e), n.createDelimiter(s, this.data.join("").charCodeAt(0), t, u, i.mathvariant), this.HTMLhandleSpace(s), this.HTMLhandleColor(s), s;
  7244. }
  7245. }), r.mtext.Augment({
  7246. toHTML: function(e) {
  7247. e = this.HTMLhandleSize(this.HTMLcreateSpan(e));
  7248. var t = this.HTMLgetVariant();
  7249. if (n.config.mtextFontInherit || this.Parent().type === "merror") t = {
  7250. bold: t.bold,
  7251. italic: t.italic,
  7252. fontInherit: !0
  7253. };
  7254. for (var r = 0, i = this.data.length; r < i; r++) this.data[r] && this.data[r].toHTML(e, t);
  7255. return e.bbox || (e.bbox = {
  7256. w: 0,
  7257. h: 0,
  7258. d: 0,
  7259. rw: 0,
  7260. lw: 0
  7261. }), this.data.join("").length !== 1 && delete e.bbox.skew, this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7262. }
  7263. }), r.merror.Augment({
  7264. toHTML: function(e) {
  7265. var t = MathJax.HTML.addElement(e, "span", {
  7266. style: {
  7267. display: "inline-block"
  7268. }
  7269. });
  7270. e = this.SUPER(arguments).toHTML.call(this, t);
  7271. var r = n.getHD(t), i = n.getW(t);
  7272. return t.bbox = {
  7273. h: r.h,
  7274. d: r.d,
  7275. w: i,
  7276. lw: 0,
  7277. rw: i,
  7278. exactW: !0
  7279. }, t.id = e.id, e.id = null, t;
  7280. }
  7281. }), r.ms.Augment({
  7282. toHTML: r.mbase.HTMLautoload
  7283. }), r.mglyph.Augment({
  7284. toHTML: r.mbase.HTMLautoload
  7285. }), r.mspace.Augment({
  7286. toHTML: function(e) {
  7287. e = this.HTMLcreateSpan(e);
  7288. var t = this.getValues("height", "depth", "width"), r = this.HTMLgetMu(e);
  7289. t.mathbackground = this.mathbackground, this.background && !this.mathbackground && (t.mathbackground = this.background);
  7290. var i = n.length2em(t.height, r), s = n.length2em(t.depth, r), o = n.length2em(t.width, r);
  7291. return n.createSpace(e, i, s, o, t.mathbackground, !0), e;
  7292. }
  7293. }), r.mphantom.Augment({
  7294. toHTML: function(e, t, r) {
  7295. e = this.HTMLcreateSpan(e);
  7296. if (this.data[0] != null) {
  7297. var i = this.data[0].toHTML(e);
  7298. r != null ? n.Remeasured(this.data[0].HTMLstretchV(e, t, r), e) : t != null ? n.Remeasured(this.data[0].HTMLstretchH(e, t), e) : i = n.Measured(i, e), e.bbox = {
  7299. w: i.bbox.w,
  7300. h: i.bbox.h,
  7301. d: i.bbox.d,
  7302. lw: 0,
  7303. rw: 0,
  7304. exactW: !0
  7305. };
  7306. for (var s = 0, o = e.childNodes.length; s < o; s++) e.childNodes[s].style.visibility = "hidden";
  7307. }
  7308. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7309. },
  7310. HTMLstretchH: r.mbase.HTMLstretchH,
  7311. HTMLstretchV: r.mbase.HTMLstretchV
  7312. }), r.mpadded.Augment({
  7313. toHTML: function(e, t, r) {
  7314. e = this.HTMLcreateSpan(e);
  7315. if (this.data[0] != null) {
  7316. var i = n.createStack(e, !0), s = n.createBox(i), o = this.data[0].toHTML(s);
  7317. r != null ? n.Remeasured(this.data[0].HTMLstretchV(s, t, r), s) : t != null ? n.Remeasured(this.data[0].HTMLstretchH(s, t), s) : n.Measured(o, s);
  7318. var u = this.getValues("height", "depth", "width", "lspace", "voffset"), a = 0, f = 0, l = this.HTMLgetMu(e);
  7319. u.lspace && (a = this.HTMLlength2em(s, u.lspace, l)), u.voffset && (f = this.HTMLlength2em(s, u.voffset, l)), n.placeBox(s, a, f), e.bbox = {
  7320. h: s.bbox.h,
  7321. d: s.bbox.d,
  7322. w: s.bbox.w,
  7323. exactW: !0,
  7324. lw: Math.min(0, s.bbox.lw + a),
  7325. rw: Math.max(s.bbox.w, s.bbox.rw + a),
  7326. H: Math.max(s.bbox.H == null ? -n.BIGDIMEN : s.bbox.H, s.bbox.h + f),
  7327. D: Math.max(s.bbox.D == null ? -n.BIGDIMEN : s.bbox.D, s.bbox.d - f)
  7328. }, u.height !== "" && (e.bbox.h = this.HTMLlength2em(s, u.height, l, "h", 0)), u.depth !== "" && (e.bbox.d = this.HTMLlength2em(s, u.depth, l, "d", 0)), u.width !== "" && (e.bbox.w = this.HTMLlength2em(s, u.width, l, "w", 0)), e.bbox.H <= e.bbox.h && delete e.bbox.H, e.bbox.D <= e.bbox.d && delete e.bbox.D;
  7329. var c = /^\s*(\d+(\.\d*)?|\.\d+)\s*(pt|em|ex|mu|px|pc|in|mm|cm)\s*$/;
  7330. e.bbox.exact = !!(this.data[0] && this.data[0].data.length == 0 || c.exec(u.height) || c.exec(u.width) || c.exec(u.depth)), n.setStackWidth(i, e.bbox.w);
  7331. }
  7332. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7333. },
  7334. HTMLlength2em: function(e, t, r, i, s) {
  7335. s == null && (s = -n.BIGDIMEN);
  7336. var o = String(t).match(/width|height|depth/), u = o ? e.bbox[o[0].charAt(0)] : i ? e.bbox[i] : 0, a = n.length2em(t, r, u);
  7337. return i && String(t).match(/^\s*[-+]/) ? Math.max(s, e.bbox[i] + a) : a;
  7338. },
  7339. HTMLstretchH: r.mbase.HTMLstretchH,
  7340. HTMLstretchV: r.mbase.HTMLstretchV
  7341. }), r.mrow.Augment({
  7342. HTMLlineBreaks: function(e) {
  7343. return this.parent.linebreakContainer ? n.config.linebreaks.automatic && e.bbox.w > n.linebreakWidth || this.hasNewline() : !1;
  7344. },
  7345. HTMLstretchH: function(e, t) {
  7346. this.HTMLremoveColor();
  7347. var n = this.HTMLspanElement();
  7348. return this.data[this.core].HTMLstretchH(n, t), this.HTMLcomputeBBox(n, !0), this.HTMLhandleColor(n), n;
  7349. },
  7350. HTMLstretchV: function(e, t, n) {
  7351. this.HTMLremoveColor();
  7352. var r = this.HTMLspanElement();
  7353. return this.data[this.core].HTMLstretchV(r, t, n), this.HTMLcomputeBBox(r, !0), this.HTMLhandleColor(r), r;
  7354. }
  7355. }), r.mstyle.Augment({
  7356. toHTML: function(e, t, n) {
  7357. e = this.HTMLcreateSpan(e);
  7358. if (this.data[0] != null) {
  7359. var r = this.data[0].toHTML(e);
  7360. n != null ? this.data[0].HTMLstretchV(e, t, n) : t != null && this.data[0].HTMLstretchH(e, t), e.bbox = r.bbox;
  7361. }
  7362. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7363. },
  7364. HTMLstretchH: r.mbase.HTMLstretchH,
  7365. HTMLstretchV: r.mbase.HTMLstretchV
  7366. }), r.mfrac.Augment({
  7367. toHTML: function(e) {
  7368. e = this.HTMLcreateSpan(e);
  7369. var t = n.createStack(e), r = n.createBox(t), i = n.createBox(t);
  7370. n.MeasureSpans([ this.HTMLboxChild(0, r), this.HTMLboxChild(1, i) ]);
  7371. var s = this.getValues("displaystyle", "linethickness", "numalign", "denomalign", "bevelled"), o = this.HTMLgetScale(), u = s.displaystyle, a = n.TeX.axis_height * o;
  7372. if (s.bevelled) {
  7373. var f = u ? .4 : .15, l = Math.max(r.bbox.h + r.bbox.d, i.bbox.h + i.bbox.d) + 2 * f, c = n.createBox(t);
  7374. n.createDelimiter(c, 47, l), n.placeBox(r, 0, (r.bbox.d - r.bbox.h) / 2 + a + f), n.placeBox(c, r.bbox.w - f / 2, (c.bbox.d - c.bbox.h) / 2 + a), n.placeBox(i, r.bbox.w + c.bbox.w - f, (i.bbox.d - i.bbox.h) / 2 + a - f);
  7375. } else {
  7376. var h = Math.max(r.bbox.w, i.bbox.w), p = n.thickness2em(s.linethickness, o), v, m, g, y, b = n.TeX.min_rule_thickness / this.em;
  7377. u ? (g = n.TeX.num1, y = n.TeX.denom1) : (g = p === 0 ? n.TeX.num3 : n.TeX.num2, y = n.TeX.denom2), g *= o, y *= o;
  7378. if (p === 0) v = Math.max((u ? 7 : 3) * n.TeX.rule_thickness, 2 * b), m = g - r.bbox.d - (i.bbox.h - y), m < v && (g += (v - m) / 2, y += (v - m) / 2); else {
  7379. v = Math.max((u ? 2 : 0) * b + p, p / 2 + 1.5 * b), m = g - r.bbox.d - (a + p / 2), m < v && (g += v - m), m = a - p / 2 - (i.bbox.h - y), m < v && (y += v - m);
  7380. var w = n.createBox(t);
  7381. n.createRule(w, p, 0, h + 2 * p), n.placeBox(w, 0, a - p / 2);
  7382. }
  7383. n.alignBox(r, s.numalign, g), n.alignBox(i, s.denomalign, -y);
  7384. }
  7385. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7386. },
  7387. HTMLcanStretch: function(e) {
  7388. return !1;
  7389. },
  7390. HTMLhandleSpace: function(e) {
  7391. if (!this.texWithDelims) {
  7392. var t = (this.useMMLspacing ? 0 : n.length2em(this.texSpacing() || 0)) + .12;
  7393. e.style.paddingLeft = n.Em(t), e.style.paddingRight = n.Em(.12);
  7394. }
  7395. }
  7396. }), r.msqrt.Augment({
  7397. toHTML: function(e) {
  7398. e = this.HTMLcreateSpan(e);
  7399. var t = n.createStack(e), r = n.createBox(t), i = n.createBox(t), s = n.createBox(t), o = this.HTMLgetScale(), u = n.TeX.rule_thickness * o, a, f, l, c;
  7400. this.Get("displaystyle") ? a = n.TeX.x_height * o : a = u, f = Math.max(u + a / 4, 1.5 * n.TeX.min_rule_thickness / this.em);
  7401. var h = this.HTMLboxChild(0, r);
  7402. l = h.bbox.h + h.bbox.d + f + u, n.createDelimiter(s, 8730, l, o), n.MeasureSpans([ h, s ]), c = h.bbox.w;
  7403. var p = 0;
  7404. if (s.isMultiChar || n.AdjustSurd && n.imgFonts) s.bbox.w *= .95;
  7405. s.bbox.h + s.bbox.d > l && (f = (s.bbox.h + s.bbox.d - (l - u)) / 2);
  7406. var v = n.FONTDATA.DELIMITERS[n.FONTDATA.RULECHAR];
  7407. return !v || c < v.HW[0][0] * o || o < .75 ? n.createRule(i, 0, u, c) : n.createDelimiter(i, n.FONTDATA.RULECHAR, c, o), l = h.bbox.h + f + u, f = l * n.rfuzz, s.isMultiChar && (f = n.rfuzz), p = this.HTMLaddRoot(t, s, p, s.bbox.h + s.bbox.d - l, o), n.placeBox(s, p, l - s.bbox.h), n.placeBox(i, p + s.bbox.w, l - i.bbox.h + f), n.placeBox(r, p + s.bbox.w, 0), this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7408. },
  7409. HTMLaddRoot: function(e, t, n, r, i) {
  7410. return n;
  7411. }
  7412. }), r.mroot.Augment({
  7413. toHTML: r.msqrt.prototype.toHTML,
  7414. HTMLaddRoot: function(e, t, r, i, s) {
  7415. var o = n.createBox(e);
  7416. if (this.data[1]) {
  7417. var u = this.data[1].toHTML(o);
  7418. u.style.paddingRight = u.style.paddingLeft = "", n.Measured(u, o);
  7419. } else o.bbox = this.HTMLzeroBBox();
  7420. var a = this.HTMLrootHeight(t.bbox.h + t.bbox.d, s, o) - i, f = Math.min(o.bbox.w, o.bbox.rw);
  7421. return r = Math.max(f, t.offset), n.placeBox(o, r - f, a), r - t.offset;
  7422. },
  7423. HTMLrootHeight: function(e, t, n) {
  7424. return .45 * (e - .9 * t) + .6 * t + Math.max(0, n.bbox.d - .075);
  7425. }
  7426. }), r.mfenced.Augment({
  7427. toHTML: function(e) {
  7428. e = this.HTMLcreateSpan(e), this.data.open && this.data.open.toHTML(e), this.data[0] != null && this.data[0].toHTML(e);
  7429. for (var t = 1, n = this.data.length; t < n; t++) this.data[t] && (this.data["sep" + t] && this.data["sep" + t].toHTML(e), this.data[t].toHTML(e));
  7430. this.data.close && this.data.close.toHTML(e);
  7431. var r = this.HTMLcomputeBBox(e), i = e.bbox.h, s = e.bbox.d;
  7432. for (t = 0, n = r.length; t < n; t++) r[t].HTMLstretchV(e, i, s);
  7433. return r.length && this.HTMLcomputeBBox(e, !0), this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7434. },
  7435. HTMLcomputeBBox: function(e, t) {
  7436. var n = e.bbox = {}, r = [];
  7437. this.HTMLcheckStretchy(this.data.open, n, r, t), this.HTMLcheckStretchy(this.data[0], n, r, t);
  7438. for (var i = 1, s = this.data.length; i < s; i++) this.data[i] && (this.HTMLcheckStretchy(this.data["sep" + i], n, r, t), this.HTMLcheckStretchy(this.data[i], n, r, t));
  7439. return this.HTMLcheckStretchy(this.data.close, n, r, t), this.HTMLcleanBBox(n), r;
  7440. },
  7441. HTMLcheckStretchy: function(e, t, n, r) {
  7442. e && (!r && e.HTMLcanStretch("Vertical") && (n.push(e), e = e.CoreMO() || e), this.HTMLcombineBBoxes(e, t));
  7443. }
  7444. }), r.menclose.Augment({
  7445. toHTML: r.mbase.HTMLautoload
  7446. }), r.maction.Augment({
  7447. toHTML: r.mbase.HTMLautoload
  7448. }), r.semantics.Augment({
  7449. toHTML: function(e, t, n) {
  7450. e = this.HTMLcreateSpan(e);
  7451. if (this.data[0] != null) {
  7452. var r = this.data[0].toHTML(e);
  7453. n != null ? this.data[0].HTMLstretchV(e, t, n) : t != null && this.data[0].HTMLstretchH(e, t), e.bbox = r.bbox;
  7454. }
  7455. return this.HTMLhandleSpace(e), e;
  7456. },
  7457. HTMLstretchH: r.mbase.HTMLstretchH,
  7458. HTMLstretchV: r.mbase.HTMLstretchV
  7459. }), r.munderover.Augment({
  7460. toHTML: function(e, t, i) {
  7461. var s = this.getValues("displaystyle", "accent", "accentunder", "align");
  7462. if (!s.displaystyle && this.data[this.base] != null && this.data[this.base].CoreMO().Get("movablelimits")) return r.msubsup.prototype.toHTML.call(this, e);
  7463. e = this.HTMLcreateSpan(e);
  7464. var o = this.HTMLgetScale(), u = n.createStack(e), a = [], l = [], c = [], h, p, v;
  7465. for (p = 0, v = this.data.length; p < v; p++) this.data[p] != null && (h = a[p] = n.createBox(u), l[p] = this.data[p].toHTML(h), p == this.base ? (i != null ? this.data[this.base].HTMLstretchV(h, t, i) : t != null && this.data[this.base].HTMLstretchH(h, t), c[p] = i == null && t != null ? !1 : this.data[p].HTMLcanStretch("Horizontal")) : c[p] = this.data[p].HTMLcanStretch("Horizontal"));
  7466. n.MeasureSpans(l);
  7467. var m = -n.BIGDIMEN, g = m;
  7468. for (p = 0, v = this.data.length; p < v; p++) this.data[p] && (a[p].bbox.w > g && (g = a[p].bbox.w), !c[p] && g > m && (m = g));
  7469. i == null && t != null ? m = t : m == -n.BIGDIMEN && (m = g);
  7470. for (p = g = 0, v = this.data.length; p < v; p++) this.data[p] && (h = a[p], c[p] && (h.bbox = this.data[p].HTMLstretchH(h, m).bbox), h.bbox.w > g && (g = h.bbox.w));
  7471. var y = n.TeX.rule_thickness, b = n.FONTDATA.TeX_factor, w = a[this.base] || {
  7472. bbox: this.HTMLzeroBBox()
  7473. }, E, S, x, T, N, C, k, L = 0;
  7474. w.bbox.ic && (L = 1.3 * w.bbox.ic + .05);
  7475. for (p = 0, v = this.data.length; p < v; p++) if (this.data[p] != null) {
  7476. h = a[p], N = n.TeX.big_op_spacing5 * o;
  7477. var A = p != this.base && s[this.ACCENTS[p]];
  7478. A && h.bbox.w <= 1 / n.em + 1e-4 && (h.bbox.w = h.bbox.rw - h.bbox.lw, h.bbox.noclip = !0, h.bbox.lw && h.insertBefore(n.createSpace(h.parentNode, 0, 0, -h.bbox.lw), h.firstChild), n.createBlank(h, 0, 0, h.bbox.rw + .1)), C = {
  7479. left: 0,
  7480. center: (g - h.bbox.w) / 2,
  7481. right: g - h.bbox.w
  7482. }[s.align], E = C, S = 0, p == this.over ? (A ? (k = Math.max(y * o * b, 2.5 / this.em), N = 0, w.bbox.skew && (E += w.bbox.skew)) : (x = n.TeX.big_op_spacing1 * o * b, T = n.TeX.big_op_spacing3 * o * b, k = Math.max(x, T - Math.max(0, h.bbox.d))), k = Math.max(k, 1.5 / this.em), E += L / 2, S = w.bbox.h + h.bbox.d + k, h.bbox.h += N) : p == this.under && (A ? (k = 3 * y * o * b, N = 0) : (x = n.TeX.big_op_spacing2 * o * b, T = n.TeX.big_op_spacing4 * o * b, k = Math.max(x, T - h.bbox.h)), k = Math.max(k, 1.5 / this.em), E -= L / 2, S = -(w.bbox.d + h.bbox.h + k), h.bbox.d += N), n.placeBox(h, E, S);
  7483. }
  7484. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7485. },
  7486. HTMLstretchH: r.mbase.HTMLstretchH,
  7487. HTMLstretchV: r.mbase.HTMLstretchV
  7488. }), r.msubsup.Augment({
  7489. toHTML: function(e, t, r) {
  7490. e = this.HTMLcreateSpan(e);
  7491. var i = this.HTMLgetScale(), s = this.HTMLgetMu(e), o = n.createStack(e), u, a = [], f = n.createBox(o);
  7492. this.data[this.base] ? (a.push(this.data[this.base].toHTML(f)), r != null ? this.data[this.base].HTMLstretchV(f, t, r) : t != null && this.data[this.base].HTMLstretchH(f, t)) : f.bbox = this.HTMLzeroBBox();
  7493. var l = n.TeX.x_height * i, c = n.TeX.scriptspace * i * .75, h, p;
  7494. this.HTMLnotEmpty(this.data[this.sup]) && (h = n.createBox(o), a.push(this.data[this.sup].toHTML(h))), this.HTMLnotEmpty(this.data[this.sub]) && (p = n.createBox(o), a.push(this.data[this.sub].toHTML(p))), n.MeasureSpans(a), h && (h.bbox.w += c, h.bbox.rw = Math.max(h.bbox.w, h.bbox.rw)), p && (p.bbox.w += c, p.bbox.rw = Math.max(p.bbox.w, p.bbox.rw)), n.placeBox(f, 0, 0);
  7495. var v = (this.data[this.sup] || this.data[this.sub] || this).HTMLgetScale(), m = n.TeX.sup_drop * v, g = n.TeX.sub_drop * v, y = f.bbox.h - m, b = f.bbox.d + g, w = 0, E;
  7496. f.bbox.ic && (f.bbox.w -= f.bbox.ic, w = 1.3 * f.bbox.ic + .05), this.data[this.base] && (this.data[this.base].type === "mi" || this.data[this.base].type === "mo") && this.data[this.base].data.join("").length === 1 && f.bbox.scale === 1 && !this.data[this.base].Get("largeop") && (y = b = 0);
  7497. var S = this.getValues("subscriptshift", "superscriptshift");
  7498. S.subscriptshift = S.subscriptshift === "" ? 0 : n.length2em(S.subscriptshift, s), S.superscriptshift = S.superscriptshift === "" ? 0 : n.length2em(S.superscriptshift, s);
  7499. if (!h) p && (b = Math.max(b, n.TeX.sub1 * i, p.bbox.h - .8 * l, S.subscriptshift), n.placeBox(p, f.bbox.w, -b, p.bbox)); else if (!p) u = this.getValues("displaystyle", "texprimestyle"), E = n.TeX[u.displaystyle ? "sup1" : u.texprimestyle ? "sup3" : "sup2"], y = Math.max(y, E * i, h.bbox.d + .25 * l, S.superscriptshift), n.placeBox(h, f.bbox.w + w, y, h.bbox); else {
  7500. b = Math.max(b, n.TeX.sub2 * i);
  7501. var x = n.TeX.rule_thickness * i;
  7502. y - h.bbox.d - (p.bbox.h - b) < 3 * x && (b = 3 * x - y + h.bbox.d + p.bbox.h, m = .8 * l - (y - h.bbox.d), m > 0 && (y += m, b -= m)), n.placeBox(h, f.bbox.w + w, Math.max(y, S.superscriptshift)), n.placeBox(p, f.bbox.w, -Math.max(b, S.subscriptshift));
  7503. }
  7504. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7505. },
  7506. HTMLstretchH: r.mbase.HTMLstretchH,
  7507. HTMLstretchV: r.mbase.HTMLstretchV
  7508. }), r.mmultiscripts.Augment({
  7509. toHTML: r.mbase.HTMLautoload
  7510. }), r.mtable.Augment({
  7511. toHTML: r.mbase.HTMLautoload
  7512. }), r["annotation-xml"].Augment({
  7513. toHTML: r.mbase.HTMLautoload
  7514. }), r.math.Augment({
  7515. toHTML: function(e, i) {
  7516. var s = this.Get("alttext");
  7517. s && s !== "" && i.setAttribute("aria-label", s);
  7518. var o = n.addElement(e, "nobr", {
  7519. isMathJax: !0
  7520. });
  7521. e = this.HTMLcreateSpan(o);
  7522. var u = n.createStack(e), a = n.createBox(u), l;
  7523. u.style.fontSize = o.parentNode.style.fontSize, o.parentNode.style.fontSize = "";
  7524. if (this.data[0] != null) {
  7525. n.msieColorBug && (this.background && (this.data[0].background = this.background, delete this.background), this.mathbackground && (this.data[0].mathbackground = this.mathbackground, delete this.mathbackground)), r.mbase.prototype.displayAlign = t.config.displayAlign, r.mbase.prototype.displayIndent = t.config.displayIndent;
  7526. var c = this.data[0].toHTML(a);
  7527. c.bbox.exactW = !1, l = n.Measured(c, a);
  7528. }
  7529. n.placeBox(a, 0, 0), u.style.width = Math.round(n.unEm(u.style.width) * this.em) + "px";
  7530. var h = 1 / n.em, p = n.em / n.outerEm;
  7531. n.em /= p, e.bbox.h *= p, e.bbox.d *= p, e.bbox.w *= p, e.bbox.lw *= p, e.bbox.rw *= p, l && l.bbox.width != null && (u.style.width = l.bbox.width, a.style.width = "100%"), this.HTMLhandleColor(e), l && n.createRule(e, (l.bbox.h + h) * p, (l.bbox.d + h) * p, 0);
  7532. if (!this.isMultiline && this.Get("display") === "block" && e.bbox.width == null) {
  7533. var v = this.getValues("indentalignfirst", "indentshiftfirst", "indentalign", "indentshift");
  7534. v.indentalignfirst !== r.INDENTALIGN.INDENTALIGN && (v.indentalign = v.indentalignfirst), v.indentalign === r.INDENTALIGN.AUTO && (v.indentalign = this.displayAlign), i.style.textAlign = v.indentalign, v.indentshiftfirst !== r.INDENTSHIFT.INDENTSHIFT && (v.indentshift = v.indentshiftfirst), v.indentshift === "auto" && (v.indentshift = this.displayIndent), v.indentshift && v.indentalign !== r.INDENTALIGN.CENTER && (e.style[{
  7535. left: "marginLeft",
  7536. right: "marginRight"
  7537. }[v.indentalign]] = n.Em(n.length2em(v.indentshift)));
  7538. }
  7539. return e;
  7540. },
  7541. HTMLspanElement: r.mbase.prototype.HTMLspanElement
  7542. }), r.TeXAtom.Augment({
  7543. toHTML: function(e) {
  7544. e = this.HTMLcreateSpan(e);
  7545. if (this.data[0] != null) if (this.texClass === r.TEXCLASS.VCENTER) {
  7546. var t = n.createStack(e), i = n.createBox(t);
  7547. n.Measured(this.data[0].toHTML(i), i), n.placeBox(i, 0, n.TeX.axis_height - (i.bbox.h + i.bbox.d) / 2 + i.bbox.d);
  7548. } else e.bbox = this.data[0].toHTML(e).bbox;
  7549. return this.HTMLhandleSpace(e), this.HTMLhandleColor(e), e;
  7550. }
  7551. }), MathJax.Hub.Register.StartupHook("onLoad", function() {
  7552. setTimeout(MathJax.Callback([ "loadComplete", n, "jax.js" ]), 0);
  7553. });
  7554. }), t.Register.StartupHook("End Config", function() {
  7555. t.Browser.Select({
  7556. MSIE: function(e) {
  7557. var t = document.documentMode || 0, r = e.versionAtLeast("7.0"), i = e.versionAtLeast("8.0") && t > 7, s = document.compatMode === "BackCompat";
  7558. t < 9 && (n.config.styles[".MathJax .MathJax_HitBox"]["background-color"] = "white", n.config.styles[".MathJax .MathJax_HitBox"].opacity = 0, n.config.styles[".MathJax .MathJax_HitBox"].filter = "alpha(opacity=0)"), n.Augment({
  7559. PaddingWidthBug: !0,
  7560. msieAccentBug: !0,
  7561. msieColorBug: !0,
  7562. msieColorPositionBug: !0,
  7563. msieRelativeWidthBug: s,
  7564. msieDisappearingBug: t >= 8,
  7565. msieMarginScaleBug: t < 8,
  7566. msiePaddingWidthBug: !0,
  7567. msieBorderWidthBug: s,
  7568. msieFrameSizeBug: t <= 8,
  7569. msieInlineBlockAlignBug: !i || s,
  7570. msiePlaceBoxBug: i && !s,
  7571. msieClipRectBug: !i,
  7572. msieNegativeSpaceBug: s,
  7573. cloneNodeBug: i && e.version === "8.0",
  7574. initialSkipBug: t < 8,
  7575. msieNegativeBBoxBug: t >= 8,
  7576. msieIE6: !r,
  7577. msieItalicWidthBug: !0,
  7578. FontFaceBug: !0,
  7579. msieFontCSSBug: e.isIE9,
  7580. allowWebFonts: t >= 9 ? "woff" : "eot"
  7581. });
  7582. },
  7583. Firefox: function(e) {
  7584. var r = !1;
  7585. if (e.versionAtLeast("3.5")) {
  7586. var i = String(document.location).replace(/[^\/]*$/, "");
  7587. if (document.location.protocol !== "file:" || t.config.root.match(/^https?:\/\//) || (t.config.root + "/").substr(0, i.length) === i) r = "otf";
  7588. }
  7589. n.Augment({
  7590. ffVerticalAlignBug: !0,
  7591. AccentBug: !0,
  7592. allowWebFonts: r
  7593. });
  7594. },
  7595. Safari: function(e) {
  7596. var r = e.versionAtLeast("3.0"), i = e.versionAtLeast("3.1"), s = navigator.appVersion.match(/ Safari\/\d/) && navigator.appVersion.match(/ Version\/\d/) && navigator.vendor.match(/Apple/), o = navigator.appVersion.match(/ Android (\d+)\.(\d+)/), u = i && e.isMobile && (navigator.platform.match(/iPad|iPod|iPhone/) && !e.versionAtLeast("5.0") || o != null && (o[1] < 2 || o[1] == 2 && o[2] < 2));
  7597. n.Augment({
  7598. config: {
  7599. styles: {
  7600. ".MathJax img, .MathJax nobr, .MathJax a": {
  7601. "max-width": "5000em",
  7602. "max-height": "5000em"
  7603. }
  7604. }
  7605. },
  7606. rfuzz: .011,
  7607. AccentBug: !0,
  7608. AdjustSurd: !0,
  7609. negativeBBoxes: !0,
  7610. safariNegativeSpaceBug: !0,
  7611. safariVerticalAlignBug: !i,
  7612. safariTextNodeBug: !r,
  7613. forceReflow: !0,
  7614. allowWebFonts: i && !u ? "otf" : !1
  7615. }), s && n.Augment({
  7616. webFontDefault: e.isMobile ? "sans-serif" : "serif"
  7617. }), e.isPC && n.Augment({
  7618. adjustAvailableFonts: n.removeSTIXfonts,
  7619. checkWebFontsTwice: !0
  7620. });
  7621. if (u) {
  7622. var a = t.config["HTML-CSS"];
  7623. a ? (a.availableFonts = [], a.preferredFont = null) : t.config["HTML-CSS"] = {
  7624. availableFonts: [],
  7625. preferredFont: null
  7626. };
  7627. }
  7628. },
  7629. Chrome: function(e) {
  7630. n.Augment({
  7631. Em: n.Px,
  7632. unEm: n.unPx,
  7633. chromeHeightBug: !0,
  7634. cloneNodeBug: !0,
  7635. rfuzz: .011,
  7636. AccentBug: !0,
  7637. AdjustSurd: !0,
  7638. negativeBBoxes: !0,
  7639. safariNegativeSpaceBug: !0,
  7640. safariWebFontSerif: [ "" ],
  7641. forceReflow: !0,
  7642. allowWebFonts: e.versionAtLeast("4.0") ? "otf" : "svg"
  7643. });
  7644. },
  7645. Opera: function(e) {
  7646. e.isMini = navigator.appVersion.match("Opera Mini") != null, n.config.styles[".MathJax .merror"]["vertical-align"] = null, n.config.styles[".MathJax span"]["z-index"] = 0, n.Augment({
  7647. operaHeightBug: !0,
  7648. operaVerticalAlignBug: !0,
  7649. operaFontSizeBug: e.versionAtLeast("10.61"),
  7650. initialSkipBug: !0,
  7651. FontFaceBug: !0,
  7652. PaddingWidthBug: !0,
  7653. allowWebFonts: e.versionAtLeast("10.0") && !e.isMini ? "otf" : !1,
  7654. adjustAvailableFonts: n.removeSTIXfonts
  7655. });
  7656. },
  7657. Konqueror: function(e) {
  7658. n.Augment({
  7659. konquerorVerticalAlignBug: !0
  7660. });
  7661. }
  7662. });
  7663. }), MathJax.Hub.Register.StartupHook("End Cookie", function() {
  7664. t.config.menuSettings.zoom !== "None" && e.Require("[MathJax]/extensions/MathZoom.js");
  7665. });
  7666. }(MathJax.Ajax, MathJax.Hub, MathJax.OutputJax["HTML-CSS"]), function(e) {
  7667. for (var t in e.loading) /KAthJax-[0-9a-f]{32}.js$/.test(t) && e.loadComplete(t);
  7668. }(MathJax.Ajax);