1 Intorduction

This note list commands for creating mathematics formulas in RMarkdown.

2 Greek Letters

Symbol Script
\(\alpha\) \alpha
\(A\) A
\(\beta\) \beta
\(B\) B
\(\gamma\) \gammma
\(\Gamma\) \Gamma
\(\pi\) \pi
\(\Pi\) \Pi
\(\phi\) \phi
\(\Phi\) \Phi
\(\varphi\) \varphi
\(\theta\) \theta

3 Operators

Symbol Script
\(\cos\) \cos
\(\sin\) \sin
\(\lim\) \lim
\(\exp\) \exp
\(\to\) \to
\(\infty\) \infty
\(\equiv\) \equiv
\(\bmod\) \bmod
\(\times\) \times

4 Power and Indicies

Symbol Script
\(k_{n+1}\) k_{n+1}
\(n^2\) n^2
\(k_n^2\) k_n^2

5 Fractions and Binomials

Symbol Script
\(\frac{n!}{k!(n-k)!}\) \frac{n!}{k!(n-k)!}
\(\binom{n}{k}\) \binom{n}{k}
\(\frac{\frac{x}{1}}{x - y}\) \frac{\frac{x}{1}}{x - y}
\(^3/_7\) ^3/_7

6 Radical Roots

Symbol Script
\(\sqrt{k}\) \sqrt{k}
\(\sqrt[n]{k}\) \sqrt[n]{k}

8 More Special Symbols

Symbol Script
\(a^{\prime}\) a^{\prime}
\(a^{\prime\prime}\) a^{\prime\prime}
\(\hat{a}\) \hat{a}
\(\bar{a}\) \bar{a}
\(\grave{a}\) \grave{a}
\(\acute{a}\) \acute{a}
\(\dot{a}\) \dot{a}
\(\ddot{a}\) \ddot{a}
\(\not{a}\) \not{a}
\(\mathring{a}\) \mathring{a}
\(\overrightarrow{AB}\) \overrightarrow{AB}
\(\overleftarrow{AB}\) \overleftarrow{AB}
\(a^{\prime\prime\prime}\) a^{\prime\prime\prime}
\(\overline{aaa}\) \overline{aaa}
\(\check{a}\) \check{a}
\(\vec{a}\) \vec{a}
\(\underline{a}\) \underline{a}
\(\color{red}x\) \color{red}x
\(\pm\) \pm
\(\mp\) \mp
\(\int y \mathrm{d}x\) \int y \mathrm{d}x
\(,\) ,
\(:\) :
\(;\) ;
\(!\) !
\(\int y, \mathrm{d}x\) \int y, \mathrm{d}x
\(\dots\) \dots
\(\ldots\) \ldots
\(\cdots\) \cdots
\(\vdots\) \vdots
\(\ddots\) \ddots

9 Brackets

Symbol Script
\((a)\) (a)
\([a]\) [a]
\(\{a\}\) \{a\}
\(\langle f \rangle\) \langle f \rangle
\(\lfloor f \rfloor\) \lfloor f \rfloor
\(\lceil f \rceil\) \lceil f \rceil
\(\ulcorner f \urcorner\) \ulcorner f \urcorner

10 Matrices and System of Equations

10.1 Matrix

$$
X_{m,n} = 
\begin{pmatrix}
  x_{1,1} & x_{1,2} & \cdots & x_{1,n} \\
  x_{2,1} & x_{2,2} & \cdots & x_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  x_{m,1} & x_{m,2} & \cdots & x_{m,n} 
\end{pmatrix}
$$

produces

\[ X_{m,n} = \begin{pmatrix} x_{1,1} & x_{1,2} & \cdots & x_{1,n} \\ x_{2,1} & x_{2,2} & \cdots & x_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m,1} & x_{m,2} & \cdots & x_{m,n} \end{pmatrix} \]

$$
M = 
\begin{bmatrix}
\frac{5}{6} & \frac{1}{6} & 0 \\[0.3em]
\frac{5}{6} & 0 & \frac{1}{6} \\[0.3em]
0 & \frac{5}{6} & \frac{1}{6}
\end{bmatrix}
$$

produces

\[ M = \begin{bmatrix} \frac{5}{6} & \frac{1}{6} & 0 \\[0.3em] \frac{5}{6} & 0 & \frac{1}{6} \\[0.3em] 0 & \frac{5}{6} & \frac{1}{6} \end{bmatrix} \]

10.2 Aligned Equations

$$
\begin{aligned}
Bias(\hat{\theta})  &= E(\hat{\theta}) - \theta \\
Bias(\hat{\theta})  &= E(2 \bar{X} -1) - \theta \\
Bias(\hat{\theta})  &= \frac{2}{n}\sum_{i=1}^n E(X_i) -1 -\theta \\
Bias(\hat{\theta})  &= 2E(X) - 1 - \theta \\
Bias(\hat{\theta})  &= 2 \cdot \frac{\theta+1}{2} - 1 - \theta \\
Bias(\hat{\theta})  &= 0 \\
\end{aligned}
$$

Produces the following system of equations

\[ \begin{aligned} Bias(\hat{\theta}) &= E(\hat{\theta}) - \theta \\ Bias(\hat{\theta}) &= E(2 \bar{X} -1) - \theta \\ Bias(\hat{\theta}) &= \frac{2}{n}\sum_{i=1}^n E(X_i) -1 -\theta \\ Bias(\hat{\theta}) &= 2E(X) - 1 - \theta \\ Bias(\hat{\theta}) &= 2 \cdot \frac{\theta+1}{2} - 1 - \theta \\ Bias(\hat{\theta}) &= 0 \\ \end{aligned} \]

10.3 Piece-wise Function

$$ f(x) = \begin{cases} \frac{1}{b-a} \\ 0 \end{cases} $$

produces the following piece-wise function

\[ f(x) = \begin{cases} \frac{1}{b-a} \\ 0 \end{cases} \]

11 Pseudo-code of Algorithms

while not convergence:

compute \(\nabla(J)\)

\(\theta_0 := \theta_0 - \alpha\nabla(J)_0\)

\(\theta_1 := \theta_1 - \alpha\nabla(J)_1\)

end while

LS0tDQp0aXRsZTogIldyaXRpbmcgTWF0aGVtYXRpY2FsIEVxdWF0aW9ucyBpbiBSTWFya2Rvd24iDQphdXRob3I6ICJDaGVuZyBQZW5nIg0KZGF0ZTogIlNUQSA1MDYgTWF0aGVtYXRpY2FsIFN0YXRpc3RpY3MgSUkgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgZmlnX3dpZHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdG9jX2NvbGxhcHNlZDogeWVzDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogeWVzDQogICAgdGhlbWU6IGx1bWVuDQogIHdvcmRfZG9jdW1lbnQ6IA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIGtlZXBfbWQ6IHllcw0KICBwZGZfZG9jdW1lbnQ6IA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgZmlnX3dpZHRoOiAzDQogICAgZmlnX2hlaWdodDogMw0KZWRpdG9yX29wdGlvbnM6IA0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQotLS0NCg0KYGBgez1odG1sfQ0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KDQovKiBDYXNjYWRpbmcgU3R5bGUgU2hlZXRzIChDU1MpIGlzIGEgc3R5bGVzaGVldCBsYW5ndWFnZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwcmVzZW50YXRpb24gb2YgYSBkb2N1bWVudCB3cml0dGVuIGluIEhUTUwgb3IgWE1MLiBpdCBpcyBhIHNpbXBsZSBtZWNoYW5pc20gZm9yIGFkZGluZyBzdHlsZSAoZS5nLiwgZm9udHMsIGNvbG9ycywgc3BhY2luZykgdG8gV2ViIGRvY3VtZW50cy4gKi8NCg0KaDEudGl0bGUgeyAgLyogVGl0bGUgLSBmb250IHNwZWNpZmljYXRpb25zIG9mIHRoZSByZXBvcnQgdGl0bGUgKi8NCiAgZm9udC1zaXplOiAyNHB4Ow0KICBjb2xvcjogRGFya1JlZDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICBmb250LWZhbWlseTogIkdpbGwgU2FucyIsIHNhbnMtc2VyaWY7DQogIGZvbnQtd2VpZ2h0OmJvbGQNCn0NCmg0LmF1dGhvciB7IC8qIEhlYWRlciA0IC0gZm9udCBzcGVjaWZpY2F0aW9ucyBmb3IgYXV0aG9ycyAgKi8NCiAgZm9udC1zaXplOiAyMHB4Ow0KICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICBjb2xvcjogRGFya1JlZDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KaDQuZGF0ZSB7IC8qIEhlYWRlciA0IC0gZm9udCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGRhdGUgICovDQogIGZvbnQtc2l6ZTogMThweDsNCiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoMSB7IC8qIEhlYWRlciAxIC0gZm9udCBzcGVjaWZpY2F0aW9ucyBmb3IgbGV2ZWwgMSBzZWN0aW9uIHRpdGxlICAqLw0KICAgIGZvbnQtc2l6ZTogMjJweDsNCiAgICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQpoMiB7IC8qIEhlYWRlciAyIC0gZm9udCBzcGVjaWZpY2F0aW9ucyBmb3IgbGV2ZWwgMiBzZWN0aW9uIHRpdGxlICovDQogICAgZm9udC1zaXplOiAyMHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgLyogSGVhZGVyIDMgLSBmb250IHNwZWNpZmljYXRpb25zIG9mIGxldmVsIDMgc2VjdGlvbiB0aXRsZSAgKi8NCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDQgeyAvKiBIZWFkZXIgNCAtIGZvbnQgc3BlY2lmaWNhdGlvbnMgb2YgbGV2ZWwgNCBzZWN0aW9uIHRpdGxlICAqLw0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpib2R5IHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQouaGlnaGxpZ2h0bWUgeyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsgfQ0KDQpwIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQo8L3N0eWxlPg0KYGBgDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KIyBEZXRlY3QsIGluc3RhbGwgYW5kIGxvYWQgcGFja2FnZXMgaWYgbmVlZGVkLg0KaWYgKCFyZXF1aXJlKCJrbml0ciIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJrbml0ciIpDQogICBsaWJyYXJ5KGtuaXRyKQ0KfQ0KaWYgKCFyZXF1aXJlKCJNQVNTIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoIk1BU1MiKQ0KICAgbGlicmFyeShNQVNTKQ0KfQ0KaWYgKCFyZXF1aXJlKCJubGVxc2x2IikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoIm5sZXFzbHYiKQ0KICAgbGlicmFyeShubGVxc2x2KQ0KfQ0KIw0KIyBzcGVjaWZpY2F0aW9ucyBvZiBvdXRwdXRzIG9mIGNvZGUgaW4gY29kZSBjaHVua3MNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgICAgICAjIGluY2x1ZGUgY29kZSBjaHVuayBpbiB0aGUgb3V0cHV0IGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyA9IEZBTFNFLCAgIyBzb21ldGltZXMsIHlvdSBjb2RlIG1heSBwcm9kdWNlIHdhcm5pbmcgbWVzc2FnZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91IGNhbiBjaG9vc2UgdG8gaW5jbHVkZSB0aGUgd2FybmluZyBtZXNzYWdlcyBpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBvdXRwdXQgZmlsZS4gDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSBGQUxTRSwgICMNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gVFJVRSAgICAgIyB5b3UgY2FuIGFsc28gZGVjaWRlIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgb3V0cHV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIG91dHB1dCBmaWxlLg0KICAgICAgICAgICAgICAgICAgICAgICkgICANCmBgYA0KDQpcDQoNCg0KIyBJbnRvcmR1Y3Rpb24NCg0KVGhpcyBub3RlIGxpc3QgY29tbWFuZHMgZm9yIGNyZWF0aW5nIG1hdGhlbWF0aWNzIGZvcm11bGFzIGluIFJNYXJrZG93bi4NCg0KIyBHcmVlayBMZXR0ZXJzDQoNCnxTeW1ib2wJICB8ICBTY3JpcHQgICB8DQp8Oi0tLS0tLS0tfDotLS0tLS0tLS0tfA0KfCRcYWxwaGEkCXwgYFxhbHBoYWAgIHwNCnwkQSQgICAgICB8ICAJYEFgfA0KfCRcYmV0YSQJfCAgIGBcYmV0YWB8DQp8JEIkCSAgICB8ICAgIGBCYHwNCnwkXGdhbW1hJCB8IAlgXGdhbW1tYWB8DQp8JFxHYW1tYSQgfCAgCWBcR2FtbWFgfA0KfCRccGkkICAgIHwgIAlgXHBpYHwNCnwkXFBpJCAgICB8IAlgXFBpYHwNCnwkXHBoaSQJICB8ICBgXHBoaWB8DQp8JFxQaGkkCSAgfCAgYFxQaGlgfA0KfCRcdmFycGhpJHwJICAgYFx2YXJwaGlgfA0KfCRcdGhldGEkCXwgICBgXHRoZXRhYHwNCg0KIyBPcGVyYXRvcnMNCg0KDQp8U3ltYm9sCSAgfCAgU2NyaXB0ICAgfA0KfDotLS0tLS0tLXw6LS0tLS0tLS0tLXwNCnwkXGNvcyR8CWBcY29zYHwNCnwkXHNpbiR8YFxzaW5gfA0KfCRcbGltJHwJYFxsaW1gfA0KfCRcZXhwJHwJYFxleHBgfA0KfCRcdG8kfAlgXHRvYHwNCnwkXGluZnR5JHwJYFxpbmZ0eWB8DQp8JFxlcXVpdiR8CWBcZXF1aXZgfA0KfCRcYm1vZCR8CWBcYm1vZGB8DQp8JFx0aW1lcyR8CWBcdGltZXNgfA0KDQoNCg0KIyBQb3dlciBhbmQgSW5kaWNpZXMNCg0KfFN5bWJvbAkgIHwgIFNjcmlwdCAgIHwNCnw6LS0tLS0tLS18Oi0tLS0tLS0tLS18DQp8JGtfe24rMX0kfAlga197bisxfWB8DQp8JG5eMiR8CWBuXjJgfA0KfCRrX25eMiR8CWBrX25eMmB8DQoNCg0KIyBGcmFjdGlvbnMgYW5kIEJpbm9taWFscw0KDQp8U3ltYm9sCSAgfCAgU2NyaXB0ICAgfA0KfDotLS0tLS0tLXw6LS0tLS0tLS0tLXwNCnwkXGZyYWN7biF9e2shKG4taykhfSR8CWBcZnJhY3tuIX17ayEobi1rKSF9YHwNCnwkXGJpbm9te259e2t9JHwJYFxiaW5vbXtufXtrfWB8DQp8JFxmcmFje1xmcmFje3h9ezF9fXt4IC0geX0kfAlgXGZyYWN7XGZyYWN7eH17MX19e3ggLSB5fWB8DQp8JF4zL183JHwJYF4zL183YHwNCg0KDQojIFJhZGljYWwgUm9vdHMNCg0KfFN5bWJvbAkgIHwgIFNjcmlwdCAgIHwNCnw6LS0tLS0tLS18Oi0tLS0tLS0tLS18DQp8JFxzcXJ0e2t9JHwJYFxzcXJ0e2t9YHwNCnwkXHNxcnRbbl17a30kfAlgXHNxcnRbbl17a31gfA0KDQoNCiMgU3VtcywgSW50ZWdyYWxzLCBhbmQgUmVsYXRlZCBTeW1ib2xzDQoNCg0KfFN5bWJvbAkgIHwgIFNjcmlwdCAgIHwNCnw6LS0tLS0tLS18Oi0tLS0tLS0tLS18DQp8JFxzdW1fe2k9MX1eezEwfSB0X2kkfAlgXHN1bV97aT0xfV57MTB9IHRfaWB8DQp8JFxpbnRfMF5caW5mdHkgXG1hdGhybXtlfV57LXh9LFxtYXRocm17ZH14JHwJYFxpbnRfMF5caW5mdHkgXG1hdGhybXtlfV57LXh9LFxtYXRocm17ZH14YHwNCnwkXHN1bSR8CWBcc3VtYHwNCnwkXHByb2QkfAlgXHByb2RgfA0KfCRcY29wcm9kJHwJYFxjb3Byb2RgfA0KfCRcYmlnb3BsdXMkfAlgXGJpZ29wbHVzYHwNCnwkXGJpZ290aW1lcyR8CWBcYmlnb3RpbWVzYHwNCnwkXGJpZ29kb3QkfAlgXGJpZ29kb3RgfA0KfCRcYmlnY3VwJHwJYFxiaWdjdXBgfA0KfCRcYmlnY2FwJHwJYFxiaWdjYXBgfA0KfCRcYmlndXBsdXMkfAlgXGJpZ3VwbHVzYHwNCnwkXGJpZ3NxY3VwJHwJYFxiaWdzcWN1cGB8DQp8JFxiaWd2ZWUkfAlgXGJpZ3ZlZWB8DQp8JFxiaWd3ZWRnZSR8CWBcYmlnd2VkZ2VgfA0KfCRcaW50JHwJYFxpbnRgfA0KfCRcb2ludCR8CWBcb2ludGB8DQp8JFxpaW50JHwJYFxpaW50YHwNCnwkXGlpaW50JHwJYFxpaWludGB8DQp8JFxpZG90c2ludCR8CWBcaWRvdHNpbnRgfA0KfCRcc3VtX3tcc3Vic3RhY2t7MDxpPG0sIFwgMDxqPG59fSBQKGksIGopJHwJYFxzdW1fe1xzdWJzdGFja3swPGk8bSwgXCAwPGo8bn19IFAoaSwgailgfA0KfCRcaW50XGxpbWl0c19hXmIkfAlgXGludFxsaW1pdHNfYV5iYHwNCg0KDQoNCiMgTW9yZSBTcGVjaWFsIFN5bWJvbHMNCg0KfFN5bWJvbAkgIHwgIFNjcmlwdCAgIHwNCnw6LS0tLS0tLS18Oi0tLS0tLS0tLS18DQp8JGFee1xwcmltZX0kfCBgYV57XHByaW1lfWB8DQp8JGFee1xwcmltZVxwcmltZX0kfAlgYV57XHByaW1lXHByaW1lfWB8DQp8JFxoYXR7YX0kfAlgXGhhdHthfWB8DQp8JFxiYXJ7YX0kfAlgXGJhcnthfWB8DQp8JFxncmF2ZXthfSR8CWBcZ3JhdmV7YX1gfA0KfCRcYWN1dGV7YX0kfAlgXGFjdXRle2F9YHwNCnwkXGRvdHthfSR8CWBcZG90e2F9YHwNCnwkXGRkb3R7YX0kfAlgXGRkb3R7YX1gfA0KfCRcbm90e2F9JHwJYFxub3R7YX1gfA0KfCRcbWF0aHJpbmd7YX0kfAlgXG1hdGhyaW5ne2F9YHwNCnwkXG92ZXJyaWdodGFycm93e0FCfSR8CWBcb3ZlcnJpZ2h0YXJyb3d7QUJ9YHwNCnwkXG92ZXJsZWZ0YXJyb3d7QUJ9JHwJYFxvdmVybGVmdGFycm93e0FCfWB8DQp8JGFee1xwcmltZVxwcmltZVxwcmltZX0kfAlgYV57XHByaW1lXHByaW1lXHByaW1lfWB8DQp8JFxvdmVybGluZXthYWF9JHwJYFxvdmVybGluZXthYWF9YHwNCnwkXGNoZWNre2F9JHwJYFxjaGVja3thfWB8DQp8JFx2ZWN7YX0kfAlgXHZlY3thfWB8DQp8JFx1bmRlcmxpbmV7YX0kfAlgXHVuZGVybGluZXthfWB8DQp8JFxjb2xvcntyZWR9eCR8CWBcY29sb3J7cmVkfXhgfA0KfCRccG0kfAlgXHBtYHwNCnwkXG1wJHwJYFxtcGB8DQp8JFxpbnQgeSBcbWF0aHJte2R9eCR8CWBcaW50IHkgXG1hdGhybXtkfXhgfA0KfCQsJHwJYCxgfA0KfCQ6JHwJYDpgfA0KfCQ7JHwJYDtgfA0KfCQhJHwJYCFgfA0KfCRcaW50IHksIFxtYXRocm17ZH14JHwJYFxpbnQgeSwgXG1hdGhybXtkfXhgfA0KfCRcZG90cyR8CWBcZG90c2B8DQp8JFxsZG90cyR8CWBcbGRvdHNgfA0KfCRcY2RvdHMkfAlgXGNkb3RzYHwNCnwkXHZkb3RzJHwJYFx2ZG90c2B8DQp8JFxkZG90cyR8CWBcZGRvdHNgfA0KDQoNCg0KDQojIEJyYWNrZXRzDQoNCnxTeW1ib2wJICB8ICBTY3JpcHQgICB8DQp8Oi0tLS0tLS0tfDotLS0tLS0tLS0tfA0KfCQoYSkkfCAgCWAoYSlgfA0KfCRbYV0kfAkgIGBbYV1gfA0KfCRce2FcfSR8CWBce2FcfWB8DQp8JFxsYW5nbGUgZiBccmFuZ2xlJHwJYFxsYW5nbGUgZiBccmFuZ2xlYHwNCnwkXGxmbG9vciBmIFxyZmxvb3IkfAlgXGxmbG9vciBmIFxyZmxvb3JgfA0KfCRcbGNlaWwgZiBccmNlaWwkfAlgXGxjZWlsIGYgXHJjZWlsYHwNCnwkXHVsY29ybmVyIGYgXHVyY29ybmVyJHwJYFx1bGNvcm5lciBmIFx1cmNvcm5lcmB8DQoNCg0KDQoNCiMgTWF0cmljZXMgYW5kIFN5c3RlbSBvZiBFcXVhdGlvbnMNCg0KIyMgTWF0cml4DQoNCmBgYGANCiQkDQpYX3ttLG59ID0gDQpcYmVnaW57cG1hdHJpeH0NCiAgeF97MSwxfSAmIHhfezEsMn0gJiBcY2RvdHMgJiB4X3sxLG59IFxcDQogIHhfezIsMX0gJiB4X3syLDJ9ICYgXGNkb3RzICYgeF97MixufSBcXA0KICBcdmRvdHMgICYgXHZkb3RzICAmIFxkZG90cyAmIFx2ZG90cyAgXFwNCiAgeF97bSwxfSAmIHhfe20sMn0gJiBcY2RvdHMgJiB4X3ttLG59IA0KXGVuZHtwbWF0cml4fQ0KJCQNCmBgYGANCnByb2R1Y2VzDQoNCiQkDQpYX3ttLG59ID0gDQpcYmVnaW57cG1hdHJpeH0NCiAgeF97MSwxfSAmIHhfezEsMn0gJiBcY2RvdHMgJiB4X3sxLG59IFxcDQogIHhfezIsMX0gJiB4X3syLDJ9ICYgXGNkb3RzICYgeF97MixufSBcXA0KICBcdmRvdHMgICYgXHZkb3RzICAmIFxkZG90cyAmIFx2ZG90cyAgXFwNCiAgeF97bSwxfSAmIHhfe20sMn0gJiBcY2RvdHMgJiB4X3ttLG59IA0KXGVuZHtwbWF0cml4fQ0KJCQNCg0KYGBgYA0KJCQNCk0gPSANClxiZWdpbntibWF0cml4fQ0KXGZyYWN7NX17Nn0gJiBcZnJhY3sxfXs2fSAmIDAgXFxbMC4zZW1dDQpcZnJhY3s1fXs2fSAmIDAgJiBcZnJhY3sxfXs2fSBcXFswLjNlbV0NCjAgJiBcZnJhY3s1fXs2fSAmIFxmcmFjezF9ezZ9DQpcZW5ke2JtYXRyaXh9DQokJA0KYGBgYA0KcHJvZHVjZXMNCg0KDQokJA0KTSA9IA0KXGJlZ2lue2JtYXRyaXh9DQpcZnJhY3s1fXs2fSAmIFxmcmFjezF9ezZ9ICYgMCBcXFswLjNlbV0NClxmcmFjezV9ezZ9ICYgMCAmIFxmcmFjezF9ezZ9IFxcWzAuM2VtXQ0KMCAmIFxmcmFjezV9ezZ9ICYgXGZyYWN7MX17Nn0NClxlbmR7Ym1hdHJpeH0NCiQkDQoNCg0KIyMgQWxpZ25lZCBFcXVhdGlvbnMNCg0KYGBgYA0KJCQNClxiZWdpbnthbGlnbmVkfQ0KQmlhcyhcaGF0e1x0aGV0YX0pICAmPSBFKFxoYXR7XHRoZXRhfSkgLSBcdGhldGEgXFwNCkJpYXMoXGhhdHtcdGhldGF9KSAgJj0gRSgyIFxiYXJ7WH0gLTEpIC0gXHRoZXRhIFxcDQpCaWFzKFxoYXR7XHRoZXRhfSkgICY9IFxmcmFjezJ9e259XHN1bV97aT0xfV5uIEUoWF9pKSAtMSAtXHRoZXRhIFxcDQpCaWFzKFxoYXR7XHRoZXRhfSkgICY9IDJFKFgpIC0gMSAtIFx0aGV0YSBcXA0KQmlhcyhcaGF0e1x0aGV0YX0pICAmPSAyIFxjZG90IFxmcmFje1x0aGV0YSsxfXsyfSAtIDEgLSBcdGhldGEgXFwNCkJpYXMoXGhhdHtcdGhldGF9KSAgJj0gMCBcXA0KXGVuZHthbGlnbmVkfQ0KJCQNCmBgYGANCg0KUHJvZHVjZXMgdGhlIGZvbGxvd2luZyBzeXN0ZW0gb2YgZXF1YXRpb25zDQoNCg0KJCQNClxiZWdpbnthbGlnbmVkfQ0KQmlhcyhcaGF0e1x0aGV0YX0pICAmPSBFKFxoYXR7XHRoZXRhfSkgLSBcdGhldGEgXFwNCkJpYXMoXGhhdHtcdGhldGF9KSAgJj0gRSgyIFxiYXJ7WH0gLTEpIC0gXHRoZXRhIFxcDQpCaWFzKFxoYXR7XHRoZXRhfSkgICY9IFxmcmFjezJ9e259XHN1bV97aT0xfV5uIEUoWF9pKSAtMSAtXHRoZXRhIFxcDQpCaWFzKFxoYXR7XHRoZXRhfSkgICY9IDJFKFgpIC0gMSAtIFx0aGV0YSBcXA0KQmlhcyhcaGF0e1x0aGV0YX0pICAmPSAyIFxjZG90IFxmcmFje1x0aGV0YSsxfXsyfSAtIDEgLSBcdGhldGEgXFwNCkJpYXMoXGhhdHtcdGhldGF9KSAgJj0gMCBcXA0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KDQojIyBQaWVjZS13aXNlIEZ1bmN0aW9uDQoNCmBgYGANCiQkIGYoeCkgPSBcYmVnaW57Y2FzZXN9IFxmcmFjezF9e2ItYX0gXFwgMCBcZW5ke2Nhc2VzfSAkJA0KYGBgYA0KcHJvZHVjZXMgdGhlIGZvbGxvd2luZyBwaWVjZS13aXNlIGZ1bmN0aW9uDQoNCiQkIGYoeCkgPSBcYmVnaW57Y2FzZXN9IFxmcmFjezF9e2ItYX0gXFwgMCBcZW5ke2Nhc2VzfSAkJA0KDQoNCg0KDQoNCiMgUHNldWRvLWNvZGUgb2YgQWxnb3JpdGhtcw0KDQo+d2hpbGUgbm90IGNvbnZlcmdlbmNlOg0KPg0KPj4gY29tcHV0ZSAkXG5hYmxhKEopJA0KPj4NCj4+ICRcdGhldGFfMCA6PSBcdGhldGFfMCAtIFxhbHBoYVxuYWJsYShKKV8wJA0KPj4NCj4+ICRcdGhldGFfMSA6PSBcdGhldGFfMSAtIFxhbHBoYVxuYWJsYShKKV8xJA0KPg0KPmVuZCB3aGlsZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K