-
-
Save karino2/1948328 to your computer and use it in GitHub Desktop.
EquationPad
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <html> | |
| <head> | |
| <style type="text/css"> | |
| .selectedTarget { background-color: red} | |
| </style> | |
| </head> | |
| <body onload="onload()"> | |
| <input value="Export" type="button" onclick="Export();"> | |
| <input value="Import" type="button" onclick="Import();"> | |
| <input type="file" id="load_file"> | |
| <input value="Load" type="button" onclick="Load()"> | |
| <input value="Save" type="button" onclick="Save()"> | |
| <div id="history" contenteditable="true"></div> | |
| <script language="javascript"> | |
| var g_DEFAULT_IMPORT = | |
| "[['%5B%22=%22,%0A%22ℒ%22,%0A%20%5B%22int%22,%0A%20%20%5B%22+%22,%0A%20%20%20%5B%22*%22,%20%5B%22+%22,%20%22p(t)%22,%20%5B%22-%22,%20%22c%22%5D%5D,%20%0A%20%20%20%20%20%20%5B%22+%22,%20%22a%22,%20%5B%22-%22,%20%22x(t)%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%20%5B%22*%22,%20%22b%22,%20%22p(t)%22%5D%5D%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%20%22e%22,%5B%22-%22,%20%5B%22*%22,%20%22ρ%22,%20%22t%22%5D%5D%5D%0A%20%20%20%5D,%0A%20%20%20%5B%22*%22,%20%22λ%22,%0A%20%20%20%20%5B%22+%22,%20%22q(t)%22,%20%5B%22-%22,%20%22a%22%5D,%20%5B%22*%22,%20%22b%22,%20%22p(t)%22%5D%5D%5D,%0A%20%20%20%5B%22*%22,%20%22π%22,%0A%20%20%20%20%5B%22+%22,%20%0A%20%20%20%20%20%20%5B%22*%22,%20%22k%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%20%22p%22,%20%5B%22-%22,%20%22p*%22%5D%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%20%5B%22dotover%22,%20%22x%22%5D%5D%0A%20%20%20%20%5D%0A%20%20%20%5D%0A%20%20%5D,%0A%20%20%22t%22,%200,%20%22∞%22%0A%20%5D%0A%5D%0A%0A','%5B%22=%22,%0A%22ℋ%22,%0A%20%20%5B%22+%22,%0A%20%20%20%5B%22*%22,%20%5B%22+%22,%20%22p(t)%22,%20%5B%22-%22,%20%22c%22%5D%5D,%20%0A%20%20%20%20%20%20%5B%22+%22,%20%22a%22,%20%5B%22-%22,%20%22x(t)%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%20%5B%22*%22,%20%22b%22,%20%22p(t)%22%5D%5D%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%20%22e%22,%5B%22-%22,%20%5B%22*%22,%20%22ρ%22,%20%22t%22%5D%5D%5D%0A%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%20%22π%22,%0A%20%20%20%20%5B%22+%22,%5B%22*%22,%22k%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%20%22p%22,%20%5B%22-%22,%20%22p*%22%5D%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%20%5D%0A%20%20%5D,%0A%5D%0A%0A','%5B%22=%22,%0A%20%5B%22part%22,%20%22ℋ%22,%20%22p%22%5D,%0A%20%5B%22+%22,%0A%20%20%20%5B%22*%22,%20%0A%20%20%20%20%5B%22+%22,%20%22a%22,%20%5B%22-%22,%20%22x(t)%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%20%5B%22*%22,%20%22b%22,%20%22p(t)%22%5D%5D%5D,%0A%20%20%20%20%5B%22pow%22,%20%22e%22,%5B%22-%22,%20%5B%22*%22,%20%22ρ%22,%20%22t%22%5D%5D%5D%20%0A%20%20%20%5D,%0A%20%20%20%5B%22-%22,%5B%22*%22,%20%22b%22,%0A%20%20%20%20%20%20%20%20%20%5B%22+%22,%20%22p(t)%22,%20%5B%22-%22,%20%22c%22%5D%5D,%0A%20%20%20%20%20%20%20%20%20%5B%22pow%22,%20%22e%22,%5B%22-%22,%20%5B%22*%22,%20%22ρ%22,%20%22t%22%5D%5D%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%20%22π%22,%20%22k%22,%5D%0A%20%5D%0A%5D%0A%0A','%5B%22=%22,%0A%200,%0A%20%5B%22+%22,%0A%20%20%20%5B%22*%22,%20%0A%20%20%20%20%5B%22+%22,%20%22a%22,%20%0A%20%20%20%20%20%20%20%5B%22-%22,%20%22x(t)%22%5D,%0A%20%20%20%20%20%20%20%5B%22-%22,%20%5B%22*%22,%20%22b%22,%20%22p(t)%22%5D%5D,%0A%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%22b%22,%0A%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%20%22p(t)%22,%20%5B%22-%22,%20%22c%22%5D%5D%0A%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22pow%22,%20%22e%22,%5B%22-%22,%20%5B%22*%22,%20%22ρ%22,%20%22t%22%5D%5D%5D%20%0A%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%20%22π%22,%20%22k%22,%5D%0A%20%5D%0A%5D%0A%0A','%5B%22=%22,%0A%200,%0A%20%5B%22+%22,%0A%20%20%20%5B%22*%22,%20%0A%20%20%20%20%5B%22+%22,%20%22a%22,%20%0A%20%20%20%20%20%20%20%5B%22-%22,%20%22x(t)%22%5D,%0A%20%20%20%20%20%20%20%5B%22-%22,%20%5B%22*%22,%202,%20%22b%22,%20%22p(t)%22%5D%5D,%0A%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%20%22c%22%5D%0A%20%20%20%20%5D%0A%20%20%20%20,%0A%20%20%20%20%5B%22pow%22,%20%22e%22,%5B%22-%22,%20%5B%22*%22,%20%22ρ%22,%20%22t%22%5D%5D%5D%20%0A%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%20%22π%22,%20%22k%22,%5D%0A%20%5D%0A%5D%0A%0A','%5B%22=%22,%0A%20%200,%0A%20%20%5B%22+%22,%0A%20%20%20%20%22a%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%202,%0A%20%20%20%20%20%20%20%20%22b%22,%0A%20%20%20%20%20%20%20%20%22p(t)%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%20%20%22k%22%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%5B%22*%22,%0A%20%20%20%202,%0A%20%20%20%20%22b%22,%0A%20%20%20%20%22p(t)%22%0A%20%20%5D,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%5D,%0A%20%20%20%20%22a%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%20%20%22k%22%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%22p(t)%22,%0A%20%5B%22/%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%5B%22-%22,%22x(t)%22%5D,%22a%22,%0A%20%20%20%20%5B%22*%22,%22π%22,%22k%22,%20%5B%22pow%22,%22e%22,%20%5B%22*%22,%22ρ%22,%22t%22%5D%5D%5D,%0A%20%20%5D,%0A%20%20%5B%22*%22,%202,%20%22b%22%5D%0A%20%5D%0A%5D%0A%0A','%5B%22=%22,%0A%20%20%22ℋ*%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22b%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%22φ%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%22π%22,%0A%20%20%20%20%22k%22,%0A%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%22ℋ*%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%22X%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%22x(t)%22,%0A%20%20%20%20%5B%22-%22,%22a%22%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%22ℋ*%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%22ℋ*%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22=%22,%0A%20%20%22ℋ*%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22,%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,%0A%20%20%20%20%22φ%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,%0A%20%20%20%20%22φ%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22φ%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22φ%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%5D',],['%5B%22+%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,%0A%20%20%20%20%22φ%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22*%22,%0A%20%20%22φ%22,%0A%20%20%5B%22/%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%5D%0A%5D','%5B%22*%22,%0A%20%20%5B%22dotover%22,%0A%20%20%20%20%22φ%22%0A%20%20%5D,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22*%22,%0A%20%20%22φ%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','2','%5B%22+%22,%0A%20%20%5B%22-%22,%0A%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%22X%22%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22-%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22/%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,2,%22b%22%5D%0A%5D','%5B%22/%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%20%20%22X%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22dotover%22,%0A%20%20%20%20%20%20%22φ%22%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,2,%22b%22%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22*%22,%22a%22,%22b%22%5D,%0A%20%20%5B%22*%22,%22c%22,%22d%22%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22/%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%5D,%0A%20%20%5B%22-%22,%0A%20%20%20%20%22p*%22%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%5B%22-%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%202%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22/%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%5D,%0A%20%20%5B%22-%22,%22c%22%5D%0A%5D','%5B%22dotover%22,%0A%20%20%22φ%22%0A%5D','%5B%22-%22,%0A%20%20%5B%22dotover%22,%0A%20%20%20%20%22X%22%0A%20%20%5D%0A%5D','%5B%22dotover%22,%0A%20%20%22X%22%0A%5D','%5B%22+%22,%0A%20%20%5B%22/%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%5D,%0A%20%20%5B%22-%22,%22c%22%5D%0A%5D','%5B%22-%22,%22X%22%5D','%5B%22+%22,%0A%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%5B%22-%22,%0A%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%202%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22/%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%5B%22φ%22%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%202%0A%5D','%5B%22pow%22,%0A%20%20%22e%22,%0A%20%20%5B%22-%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%22t%22%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22*%22,%0A%20%20%5B%22φ%22%0A%20%20%5D,%0A%20%20%5B%22pow%22,%0A%20%20%20%20%22e%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22*%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%22a%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%202,%0A%20%20%20%20%20%20%20%20%22b%22,%0A%20%20%20%20%20%20%20%20%22p(t)%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D%0A%20%20%5D,%0A%20%20%5B%22pow%22,%0A%20%20%20%20%22e%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22+%22,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%22c%22%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,%0A%20%20%20%20%5B%22φ%22%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%22X%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22/%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%5D,%0A%20%20%20%20%22a%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22π%22,%0A%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%5B%22pow%22,%0A%20%20%20%20%20%20%20%20%22e%22,%0A%20%20%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D,%0A%20%20%5B%22*%22,2,%22b%22%5D%0A%5D','%5B%22*%22,%0A%20%20%22π%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%22k%22,%0A%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%5B%22/%22,%0A%20%20%20%20%20%20%20%20%20%20%5B%22+%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22a%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%22φ%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%20%20%5B%22*%22,2,%22b%22%5D%0A%20%20%20%20%20%20%20%20%5D,%0A%20%20%20%20%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%20%20%20%20%22p*%22%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D','%5B%22*%22,%0A%20%20%5B%22+%22,%0A%20%20%20%20%22a%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%22x(t)%22%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%202,%0A%20%20%20%20%20%20%20%20%22b%22,%0A%20%20%20%20%20%20%20%20%22p(t)%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D,%0A%20%20%20%20%5B%22*%22,%22b%22,%22c%22%5D%0A%20%20%5D,%0A%20%20%5B%22pow%22,%0A%20%20%20%20%22e%22,%0A%20%20%20%20%5B%22-%22,%0A%20%20%20%20%20%20%5B%22*%22,%0A%20%20%20%20%20%20%20%20%22ρ%22,%0A%20%20%20%20%20%20%20%20%22t%22%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%0A%20%20%5D%0A%5D',]]" | |
| ; | |
| var g_VERVOSE = false; | |
| function assertFail(msg) { | |
| if(g_VERVOSE) | |
| alert("fail! "+ msg); | |
| throw msg; | |
| } | |
| function assertFalse(condition, msg) { | |
| if(condition) | |
| assertFail("assert false fail:" + msg); | |
| } | |
| function assertEq(exp, act) { | |
| if(exp != act) | |
| assertFail("not equal [" + exp + "] and [" + act + "]"); | |
| } | |
| function assertNeq(exp, act) { | |
| if(exp == act) | |
| assertFail("not equal [" + exp + "] and [" + act + "]"); | |
| } | |
| function assertNStrictEq(exp, act) { | |
| if(exp === act) | |
| assertFail("not equal [" + exp + "] and [" + act + "]"); | |
| } | |
| function $(id) { | |
| return document.getElementById(id); | |
| } | |
| function CE(tag){ | |
| return document.createElement(tag); | |
| } | |
| var g_id = 1; | |
| function IdGen() { | |
| return g_id++; | |
| } | |
| function Mo(id, val) { | |
| return "<mo id=\"" + id + "\">" + val + "</mo>"; | |
| } | |
| function Mi(id, val) { | |
| return "<mi id=\"" + id + "\">" + val + "</mi>"; | |
| } | |
| function MnOrMi(term) { | |
| if(term instanceof Number){ | |
| return "<mn id=\"" + term.objId + "\">" + term + "</mn>"; | |
| } | |
| if(term instanceof String){ | |
| if(term[0] == '&') { | |
| return Mi(term.objId, term); | |
| } | |
| return Mi(term.objId, term); | |
| } | |
| throw "Unknow terminal"; | |
| } | |
| function EvalTerm(builder, term, nofence){ | |
| if(term instanceof Array){ | |
| if(!nofence) { | |
| builder.push("<mfenced id=\""); | |
| builder.push(term.objId); | |
| builder.push("\"><mrow>"); | |
| } | |
| builder.push(JsonToMathML(term)); | |
| if(!nofence) | |
| builder.push("</mrow></mfenced>"); | |
| }else{ | |
| builder.push(MnOrMi(term)); | |
| } | |
| } | |
| function PushMo(builder, tagName, id) { | |
| if(id) | |
| builder.push('<mo id="' + id + '">'); | |
| else | |
| builder.push("<mo>"); | |
| builder.push(tagName); | |
| builder.push("</mo>"); | |
| } | |
| function IsMinus(term) { | |
| return term[0] == "-"; | |
| } | |
| function IsSingleTerm(term) { | |
| return !(term[0] == "+"); | |
| } | |
| function PushMinusTerm(builder, term) { | |
| assertEq(true, IsMinus(term)); | |
| PushMrow(builder, term.objId); | |
| PushMo(builder, "-", term[0].objId); | |
| EvalTerm(builder,term[1], IsSingleTerm(term[1])); | |
| builder.push('</mrow>'); | |
| } | |
| function FirstHeadIsNotMinus(sexp) { | |
| if(sexp[0] == "-") | |
| return false; | |
| if(sexp[0] != "*") | |
| return true; | |
| return FirstHeadIsNotMinus(sexp[1]); | |
| } | |
| function EvalPlus(json) { | |
| var builder = []; | |
| var len = json.length; | |
| PushMrow(builder, json.objId); | |
| if(IsMinus(json[1])){ | |
| PushMinusTerm(builder, json[1]); | |
| } | |
| else | |
| EvalTerm(builder, json[1], IsSingleTerm(json[1])); | |
| for(var i = 2; i < len; i++) { | |
| if(IsMinus(json[i])){ | |
| PushMinusTerm(builder, json[i]); | |
| } | |
| else { | |
| PushMo(builder, "+"); | |
| EvalTerm(builder,json[i], IsSingleTerm(json[i]) && FirstHeadIsNotMinus(json[i])); | |
| } | |
| } | |
| builder.push('</mrow>'); | |
| return builder.join(""); | |
| } | |
| function PushMrow(builder, id) { | |
| builder.push('<mrow id="'+ id + '">'); | |
| } | |
| function EvalTimes(json) { | |
| var builder = []; | |
| var len = json.length; | |
| PushMrow(builder, json.objId); | |
| EvalTerm(builder, json[1], IsSingleTerm(json[1])); | |
| for(var i = 2; i < len; i++) { | |
| if(json[i-1] instanceof Number && json[i] instanceof Number) | |
| PushMo(builder, "×"); | |
| EvalTerm(builder,json[i], IsSingleTerm(json[i]) && !IsMinus(json[i])); | |
| } | |
| builder.push('</mrow>'); | |
| return builder.join(""); | |
| } | |
| function EvalEqual(json) { | |
| var builder = []; | |
| PushMrow(builder, json.objId); | |
| EvalTerm(builder, json[1], true); | |
| PushMo(builder, "=", json[0].objId); | |
| EvalTerm(builder,json[2], true); | |
| builder.push("</mrow>"); | |
| return builder.join(""); | |
| } | |
| function EvalPower(json) { | |
| var builder = []; | |
| builder.push('<msup id="' + json.objId + '">'); | |
| EvalTerm(builder, json[1]); | |
| EvalTerm(builder, json[2], true); | |
| builder.push("</msup>"); | |
| return builder.join(""); | |
| } | |
| function EvalPartial(json) { | |
| var builder = []; | |
| builder.push('<mfrac id="' +json.objId + '">'); | |
| builder.push("<mrow>"); | |
| PushMo(builder, "∂"); | |
| EvalTerm(builder, json[1]); | |
| builder.push("</mrow>"); | |
| builder.push("<mrow>"); | |
| PushMo(builder, "∂"); | |
| EvalTerm(builder, json[2]); | |
| builder.push("</mrow>"); | |
| builder.push("</mfrac>"); | |
| return builder.join(""); | |
| } | |
| function EvalFrac(json) { | |
| var builder = []; | |
| builder.push('<mfrac id="' +json.objId + '"><mrow>'); | |
| EvalTerm(builder, json[1], true); | |
| builder.push('</mrow><mrow>'); | |
| EvalTerm(builder, json[2], true); | |
| builder.push('</mrow></mfrac>'); | |
| return builder.join(""); | |
| } | |
| function EvalDotOver(json) { | |
| var builder = []; | |
| builder.push('<mover id="' + json.objId + '">'); | |
| EvalTerm(builder, json[1]); | |
| builder.push("<mo>.</mo>"); | |
| builder.push("</mover>"); | |
| return builder.join(""); | |
| } | |
| function EvalIntegral(json) { | |
| var builder = []; | |
| PushMrow(builder, json.objId); | |
| if(json.length == 3) { | |
| PushMo(builder, "∫", json[0].objId); | |
| EvalTerm(builder, json[1], true); | |
| // currently, json[2] does'nt support ρ, etc. | |
| builder.push(Mi(json[2].objId, "d" + json[2] )); | |
| } else if(json.length == 5) { | |
| builder.push("<msubsup>"); | |
| builder.push(Mo(json[0].objId, "∫")); | |
| EvalTerm(builder, json[3], true); | |
| EvalTerm(builder, json[4], true); | |
| builder.push("</msubsup>"); | |
| EvalTerm(builder, json[1], true); | |
| // currently, json[2] does'nt support ρ, etc. | |
| builder.push(Mi(json[2].objId, "d" + json[2] )); | |
| } else { | |
| throw "unknown arg number of integral. ( " + json.length + ")"; | |
| } | |
| builder.push("</mrow>"); | |
| return builder.join(""); | |
| } | |
| function JsonToMathML(json) { | |
| var tag = json[0]; | |
| if(tag == "-") | |
| { | |
| var builder = []; | |
| PushMinusTerm(builder, json); | |
| return builder.join(""); | |
| } | |
| if(tag == "+") | |
| { | |
| return EvalPlus(json); | |
| } | |
| if(tag == "*") | |
| { | |
| return EvalTimes(json); | |
| } | |
| if(tag == "pow") | |
| { | |
| return EvalPower(json); | |
| } | |
| if(tag == "part") | |
| { | |
| return EvalPartial(json); | |
| } | |
| if(tag == "/") | |
| { | |
| return EvalFrac(json); | |
| } | |
| if(tag == "dotover") | |
| { | |
| return EvalDotOver(json); | |
| } | |
| if(tag == "int") | |
| { | |
| return EvalIntegral(json); | |
| } | |
| if(tag == "=") | |
| { | |
| return EvalEqual(json); | |
| } | |
| if(json.length == 1) | |
| { | |
| var builder = []; | |
| EvalTerm(builder, json[0]); | |
| return builder.join(""); | |
| } | |
| if(!json.length) | |
| { | |
| var builder = []; | |
| EvalTerm(builder, json); | |
| return builder.join(""); | |
| } | |
| throw "unknown tag"; | |
| } | |
| function dp(st) { | |
| var con = $("console"); | |
| con.value += st + "\n"; | |
| } | |
| function EncloseMath(str,isBlock){ | |
| var header ="<math " + (isBlock?"display=\"block\"":"") + "xmlns=\"http://www.w3.org/1998/Math/MathML\">" | |
| var footer ="</math>" | |
| return header + str + footer; | |
| } | |
| function showMath(str) { | |
| var math = $("mathcanvas"); | |
| math.innerHTML = EncloseMath(str,true); | |
| } | |
| function onClear() { | |
| var con = $("console"); | |
| con.value = ''; | |
| } | |
| var g_hash = {}; | |
| function ParseSingleItem(item) { | |
| var obj; | |
| if(typeof(item) == "number") | |
| obj = new Number(item); | |
| else if(typeof(item) == "string") | |
| obj = new String(item); | |
| else if(item instanceof Array) | |
| obj = JsonParser(item); | |
| else | |
| obj = item; | |
| obj.objId = IdGen(); | |
| g_hash[obj.objId] = obj; | |
| return obj; | |
| } | |
| function JsonParser(str) { | |
| var sexp = eval(str); | |
| var res = []; | |
| res.objId = IdGen(); | |
| g_hash[res.objId] = res; | |
| if(sexp instanceof Array) { | |
| for(var i = 0; i < sexp.length; i++) { | |
| var obj = ParseSingleItem(sexp[i]); | |
| res.push(obj); | |
| obj.parent = res; | |
| } | |
| } else { | |
| var obj = ParseSingleItem(sexp); | |
| res = obj; // return atom, not array! | |
| } | |
| assertNStrictEq(res, sexp); | |
| return res; | |
| } | |
| var g_sexp; | |
| function UpdateInputToCanvas() { | |
| g_selected = undefined; | |
| g_sexp = JsonParser($("input").value); | |
| var result = JsonToMathML(g_sexp); | |
| dp(result); | |
| showMath(result); | |
| } | |
| function UpdateSelection() { | |
| if(g_selected) { | |
| var elem = $(g_selected.obj.objId); | |
| elem.setAttribute("class", "selectedTarget"); | |
| g_selected.elem = elem; | |
| } | |
| } | |
| function findSexp(sexp, id) { | |
| if(sexp && sexp.objId == id) | |
| return sexp; | |
| if(sexp instanceof Array) { | |
| for(var i = 0; i < sexp.length; i++) { | |
| var res = findSexp(sexp[i], id) | |
| if(res) | |
| return res; | |
| } | |
| } | |
| return false; | |
| } | |
| function HasArrayChild(sexp) { | |
| for(var i = 0; i < sexp.length; i++) { | |
| if(sexp[i].length > 1) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| function PushIndent(builder, level) { | |
| for(var i = 0; i < level; i++) { | |
| builder.push(" "); | |
| } | |
| } | |
| function InnerSexpSerializer(sexp, builder, level) { | |
| if(sexp instanceof Number) { | |
| PushIndent(builder, level); | |
| builder.push(sexp.toString()); | |
| return; | |
| } | |
| if(sexp instanceof String) { | |
| PushIndent(builder, level); | |
| builder.push('"'); | |
| builder.push(sexp); | |
| builder.push('"'); | |
| return; | |
| } | |
| if(sexp instanceof Array) { | |
| PushIndent(builder, level); | |
| builder.push("["); | |
| assertFalse(sexp[0] instanceof Array, "head of array must not array."); | |
| InnerSexpSerializer(sexp[0], builder, 0); | |
| if(HasArrayChild(sexp)) { | |
| for(var i = 1; i < sexp.length; i++) { | |
| builder.push(",\n"); | |
| InnerSexpSerializer(sexp[i], builder, level+1); | |
| } | |
| builder.push("\n"); | |
| PushIndent(builder, level); | |
| builder.push("]"); | |
| } | |
| else { | |
| for(var i = 1; i < sexp.length; i++) { | |
| builder.push(","); | |
| InnerSexpSerializer(sexp[i], builder, 0); | |
| } | |
| builder.push("]"); | |
| } | |
| return; | |
| } | |
| alert(typeof(sexp)); | |
| throw "unknown atom type inside S Expression Serializer"; | |
| } | |
| function SexpSerializer(sexp) { | |
| var builder = []; | |
| var level = 0; | |
| InnerSexpSerializer(sexp, builder, level); | |
| return builder.join(""); | |
| } | |
| function Update(sexp) { | |
| var result = JsonToMathML(sexp); | |
| dp(result); | |
| showMath(result); | |
| UpdateSelection(); | |
| $("input").value = SexpSerializer(sexp); | |
| } | |
| function CopyRawExpression(raw) { | |
| var par = $('cutbuffer'); | |
| var entry = CE("li"); | |
| SaveExpression(entry, raw); | |
| if(par.firstChild) { | |
| par.insertBefore(entry, par.firstChild); | |
| } else { | |
| par.appendChild(entry); | |
| } | |
| } | |
| function Copy(sexp) { | |
| var raw = SexpSerializer(sexp); | |
| CopyRawExpression(raw); | |
| } | |
| function CutBufferMoveForward() { | |
| var cutbuf = $('cutbuffer'); | |
| var li = cutbuf.firstChild; | |
| // move to last | |
| if(li) | |
| cutbuf.appendChild(li); | |
| } | |
| function CutBufferMoveBackword() { | |
| var cutbuf = $('cutbuffer'); | |
| var li = cutbuf.lastChild; | |
| // move to first | |
| if(li) | |
| cutbuf.insertBefore(li, cutbuf.firstChild); | |
| } | |
| function ReplaceExpression(targetSexp, newExp) { | |
| if(g_selected && g_selected.obj == targetSexp) | |
| g_selected = {obj: newExp}; // caution! no elem until UpdateSelection! | |
| var parent = targetSexp.parent; | |
| var i = FindIndex(parent, targetSexp); | |
| parent[i] = newExp; | |
| parent[i].parent = parent; | |
| return parent[i]; | |
| } | |
| var g_continue_replace = false; | |
| function Replace() { | |
| var raw = HeadRaw(); | |
| if(raw){ | |
| $('input').value = raw; | |
| UpdateInputToCanvas(); | |
| g_continue_replace = true; | |
| } | |
| } | |
| var g_last_pasted_sexp = undefined; | |
| function Paste(targetSexp, isBackword) { | |
| if(targetSexp == g_last_pasted_sexp) { | |
| if(isBackword){ | |
| CutBufferMoveBackword(); | |
| }else{ | |
| CutBufferMoveForward(); | |
| } | |
| } | |
| var raw = HeadRaw(); | |
| if(raw && targetSexp.parent){ | |
| UnSelectExpression(true); | |
| var newCell = ReplaceExpression(targetSexp, JsonParser(raw)); | |
| g_last_pasted_sexp = newCell; | |
| } | |
| } | |
| function FindIndex(arr, obj) { | |
| for(var i = 0; i < arr.length; i++) { | |
| if(arr[i] == obj) | |
| return i; | |
| } | |
| return -1; | |
| } | |
| function swap(array, i, j) { | |
| var iobj = array[i]; | |
| array[i] = array[j]; | |
| array[j] = iobj; | |
| } | |
| function MoveLeftTermInternal(parent_sexp, target_sexp) { | |
| var i = FindIndex(parent_sexp, target_sexp); | |
| if(i == 1) | |
| return; | |
| assertEq(parent_sexp[i], target_sexp); | |
| swap(parent_sexp, i, i-1); | |
| } | |
| function IsHead(obj) { | |
| return obj.parent[0] == obj; | |
| } | |
| function MoveLeftTerm(sel) { | |
| if(!sel.obj.parent) | |
| return; | |
| MoveLeftTermInternal(sel.obj.parent, sel.obj); | |
| } | |
| function MoveRightTermInternal(parent_sexp, target_sexp) { | |
| var i = FindIndex(parent_sexp, target_sexp); | |
| if(i == parent_sexp.length -1 ) | |
| return; | |
| assertEq(parent_sexp[i], target_sexp); | |
| swap(parent_sexp, i, i+1); | |
| } | |
| function MoveRightTerm(sel) { | |
| if(!sel.obj.parent) | |
| return; | |
| /* | |
| if(IsHead(sel.obj)) { | |
| MoveRightTermInternal(sel.obj.parent.parent, sel.obj.parent); | |
| return ; | |
| } | |
| */ | |
| MoveRightTermInternal(sel.obj.parent, sel.obj); | |
| } | |
| // orgExp is already inside newSexp. | |
| function ReplaceWithWrappedExpression(newSexp, orgExp) { | |
| // use sel.obj.parent inside ReplaceExpression. So update after. | |
| ReplaceExpression(orgExp, newSexp); | |
| orgExp.parent = newSexp; | |
| } | |
| function PartialDerivative(sel) { | |
| var newSexp = JsonParser('["part", "dummy", "t"]'); | |
| newSexp[1] = sel.obj; | |
| ReplaceWithWrappedExpression(newSexp, sel.obj); | |
| } | |
| function DotOver(sel) { | |
| var newSexp = JsonParser('["dotover", "dummy"]'); | |
| newSexp[1] = sel.obj; | |
| ReplaceWithWrappedExpression(newSexp, sel.obj); | |
| } | |
| function Plus(sel) { | |
| var newSexp = JsonParser('["+", "dummy", "y"]'); | |
| newSexp[1] = sel.obj; | |
| ReplaceWithWrappedExpression(newSexp, sel.obj); | |
| } | |
| function Times(sel) { | |
| var newSexp = JsonParser('["*", "dummy", "y"]'); | |
| newSexp[1] = sel.obj; | |
| ReplaceWithWrappedExpression(newSexp, sel.obj); | |
| } | |
| function Minus(sel) { | |
| var newSexp = JsonParser('["-", "dummy"]'); | |
| newSexp[1] = sel.obj; | |
| ReplaceWithWrappedExpression(newSexp, sel.obj); | |
| } | |
| function WidenSelection(sel) { | |
| var par = sel.obj.parent; | |
| if(!par) | |
| return; | |
| if(!par.objId) | |
| return; | |
| var par_elem = $(par.objId); | |
| if(!par_elem) | |
| return; | |
| g_selected = {obj: par, elem: par_elem }; | |
| } | |
| function SaveExpression(entry, raw) { | |
| var hidden = CE('input'); | |
| hidden.type = 'hidden'; | |
| hidden.name = 'raw_exp'; | |
| hidden.value = raw; | |
| entry.appendChild(hidden); | |
| var span = CE('span'); | |
| span.innerHTML = EncloseMath(JsonToMathML(JsonParser(raw))); | |
| entry.appendChild(span); | |
| } | |
| function Register(raw){ | |
| var history = $('history'); | |
| var history_entry = CE('div'); | |
| history_entry.contentEditable=false; | |
| history_entry.setAttribute('style', "background-color:Azure; word-wrap:normal;"); | |
| var form = CE('form'); | |
| form.innerHTML='<input type="checkbox" name="is_selected" onclick="CheckClicked(event)">'; | |
| var input = CE('input'); | |
| input.type = 'button'; | |
| input.value = 'revive'; | |
| input.setAttribute('onclick','Revive(event)'); | |
| form.appendChild(input); | |
| SaveExpression(form, raw); | |
| history_entry.appendChild(form); | |
| history.appendChild(history_entry); | |
| history.appendChild(CE('br')); | |
| // should I return history_entry? | |
| return form; | |
| /* | |
| <div> | |
| <form> | |
| <input type="button" value="revive" onclick="Revive(event);"> | |
| <input type="hidden" name="raw_exp" value="['+', 1, 2]"> | |
| <span> | |
| <math xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mi> | |
| ℒ | |
| </mi> | |
| </math> | |
| <span> | |
| </form> | |
| </div> | |
| */ | |
| } | |
| function GetHistoryForms() { | |
| var history = $('history'); | |
| return history.getElementsByTagName("form"); | |
| } | |
| function GetLastHistoryForm() { | |
| var fs = GetHistoryForms(); | |
| if(fs.length == 0) | |
| return undefined; | |
| return fs.item(fs.length-1); | |
| } | |
| function GetFirstCheckedForm() { | |
| var fs = GetHistoryForms(); | |
| for(var i=0; i < fs.length; i++){ | |
| var form = fs.item(i); | |
| if(form.elements.namedItem('is_selected').checked) { | |
| return form; | |
| } | |
| } | |
| return undefined; | |
| } | |
| function Overwrite(raw){ | |
| var checkedForm = GetFirstCheckedForm(); | |
| if(checkedForm) { | |
| checkedForm.elements.namedItem('raw_exp').value=raw; | |
| checkedForm.getElementsByTagName('span')[0].innerHTML = EncloseMath(JsonToMathML(JsonParser(raw))); | |
| } | |
| } | |
| function SelectedRaw(){ | |
| var form = GetFirstCheckedForm(); | |
| if(form) { | |
| return form.elements.namedItem('raw_exp').value; | |
| } else { | |
| return LastRaw(); | |
| } | |
| } | |
| function HeadRaw() { | |
| var cutbuf = $('cutbuffer'); | |
| var li = cutbuf.firstChild | |
| if(li) { | |
| var inp = li.getElementsByTagName("input")[0]; | |
| return inp.value; | |
| } | |
| return undefined; | |
| } | |
| function CheckClicked(e){ | |
| var fs = GetHistoryForms(); | |
| for(var i=0; i < fs.length; i++){ | |
| var f = fs.item(i); | |
| var elem = f.elements.namedItem('is_selected'); | |
| if(elem !== e.target){ | |
| elem.checked = false; | |
| } | |
| } | |
| } | |
| function ReviveForm(form) { | |
| var input = $('input'); | |
| input.value = form.elements.namedItem('raw_exp').value; | |
| var fs = GetHistoryForms(); | |
| for(var i=0; i < fs.length; i++){ | |
| var f = fs.item(i); | |
| var elem = f.elements.namedItem('is_selected'); | |
| elem.checked = false; | |
| } | |
| form.elements.namedItem('is_selected').checked=true; | |
| UpdateInputToCanvas(); | |
| } | |
| function Revive(e){ | |
| var target = e.target; | |
| var form = target.form; | |
| ReviveForm(form); | |
| } | |
| function Export(){ | |
| var forms = GetHistoryForms(); | |
| var builder = []; | |
| builder.push('[['); | |
| for(var i = 0; i < forms.length; i++){ | |
| builder.push("'"); | |
| builder.push(encodeURI(forms.item(i).elements.namedItem('raw_exp').value)); | |
| builder.push("'"); | |
| builder.push(','); | |
| } | |
| builder.push('],['); | |
| var cutbufEnts = $('cutbuffer').getElementsByTagName("li"); | |
| for(var i = 0; i < cutbufEnts.length; i++) { | |
| builder.push("'"); | |
| builder.push(encodeURI(cutbufEnts.item(i).getElementsByTagName('input')[0].value)); | |
| builder.push("'"); | |
| builder.push(','); | |
| } | |
| builder.push(']]'); | |
| prompt("Export", builder.join("")); | |
| } | |
| function QueryInput(initVal) { | |
| return prompt("Import", initVal); | |
| } | |
| function Import(){ | |
| var input = QueryInput(g_DEFAULT_IMPORT); | |
| if(!input) | |
| return; | |
| var array = eval(input); | |
| for(var i=0; i < array[0].length; i++){ | |
| Register(decodeURI(array[0][i])); | |
| } | |
| for(var i = 0;i < array[1].length; i++) { | |
| var j = array[1].length -i-1; | |
| CopyRawExpression(decodeURI(array[1][j])); | |
| } | |
| } | |
| function ClearMathCanvas(){ | |
| var input = $('input'); | |
| input.value = ""; | |
| var canvas = $('mathcanvas'); | |
| canvas.innerHTML = ""; | |
| } | |
| function Save(){ | |
| ClearMathCanvas(); | |
| var console = $('console'); | |
| console.value = "<html><head>\n" + document.head.innerHTML + "</head><body onload=\"onload()\">\n" + document.body.innerHTML + "</body></html>"; | |
| } | |
| function GetDocumentFromString(str){ | |
| var iframe = $('iframe'); | |
| var tmpDoc = iframe.contentDocument; | |
| tmpDoc.open(); | |
| tmpDoc.write(str); | |
| tmpDoc.close(); | |
| return tmpDoc; | |
| } | |
| function Load(){ | |
| var file = $('load_file').files[0]; | |
| if(file){ | |
| var reader = new FileReader(); | |
| reader.readAsText(file, "UTF-8"); | |
| reader.onload = function (){ | |
| var doc = GetDocumentFromString(reader.result); | |
| var history = doc.getElementById('history'); | |
| var inputs = history.getElementsByTagName('input'); | |
| for(var i = 0; i < inputs.length; i++){ | |
| var input = inputs.item(i); | |
| if(input.type == 'hidden' && input.name == 'raw_exp' && input.value){ | |
| Register(input.value); | |
| } | |
| } | |
| var cutbuffer = doc.getElementById('cutbuffer'); | |
| var inputs = cutbuffer.getElementsByTagName('input'); | |
| for(var i = inputs.length - 1; i >= 0; i --){ | |
| var input = inputs.item(i); | |
| if(input.type == 'hidden' && input.name == 'raw_exp' && input.value){ | |
| CopyRawExpression(input.value); | |
| } | |
| } | |
| }; | |
| } | |
| } | |
| function assertMatch(expectPat, actual, msg) { | |
| if(!actual.match(expectPat)) { | |
| assertFail("pat not match. " + msg + ": pat[" + expectPat + "], actual [" + actual + "]"); | |
| } | |
| } | |
| function verify(input, expectPat, needLog) { | |
| var sexp = JsonParser(input); | |
| var result = JsonToMathML(sexp); | |
| var actual_pat = expectPat; | |
| if(needLog) | |
| dp(result); | |
| assertMatch(actual_pat, result, input); | |
| } | |
| function EvalTest() { | |
| verify('["pow", "e", "a"]', /<msup id="[0-9]*"><mi[^>]*>e<\/mi><mi[^>]*>a<\/mi><\/msup>/); | |
| verify('["pow", "e", ["*", "a", "b"]]', /<msup id="[0-9]*"><mi[^>]*>e<\/mi><mrow[^>]*><mi[^>]*>a<\/mi><mi id="[0-9]*">b<\/mi><\/mrow><\/msup>/); | |
| verify('["*", "e", ["-", "a"]]', /<mrow id="[0-9]*"><mi id="[0-9]*">e<\/mi><mfenced id="[0-9]*"><mrow><mrow id="[0-9]*"><mo[^>]*>-<\/mo><mi id="[0-9]*">a<\/mi><\/mrow><\/mrow><\/mfenced><\/mrow>/); | |
| //<mn id="84">3</mn><mo>+</mo><mrow id="86"><mi id="87">e</mi><mfenced id="91"><mrow><mrow id="89"><mo[^>]*>-</mo><mi id="90">a</mi></mrow></mrow></mfenced></mrow> | |
| verify('["+", 3, ["*", "e", ["-", "a"]]]', /<mn id="[0-9]*">3<\/mn><mo>\+<\/mo><mrow id="[0-9]*"><mi id="[0-9]*">e<\/mi><mfenced id="[0-9]*"><mrow><mrow id="[0-9]*"><mo[^>]*>-<\/mo><mi id="[0-9]*">a<\/mi><\/mrow><\/mrow><\/mfenced><\/mrow>/); | |
| // <mn id="106">3</mn><mo>+</mo><mfenced id="114"><mrow><mrow id="108"><mrow id="110"><mo[^>]*>-</mo><mi id="111">a</mi></mrow><mi id="113">e</mi></mrow></mrow></mfenced> | |
| verify('["+",3,["*",["-","a"], "e"]]', /<mn id="[0-9]*">3<\/mn><mo>\+<\/mo><mfenced id="[0-9]*"><mrow><mrow id="[0-9]*"><mrow id="[0-9]*"><mo[^>]*>-<\/mo><mi id="[0-9]*">a<\/mi><\/mrow><mi id="[0-9]*">e<\/mi><\/mrow><\/mrow><\/mfenced>/); | |
| verify('["+", "λ", "a"]', /<mi id="[0-9]*">λ<\/mi><mo>\+<\/mo><mi id="[0-9]*">a<\/mi>/); | |
| verify('["dotover", "x"]', /<mover[^>]*><mi id="[0-9]*">x<\/mi><mo>.<\/mo><\/mover>/); | |
| verify('["int", ["+", "x", "y"], "t"]', /<mo id="[0-9]*">∫<\/mo><mrow id="[0-9]*"><mi id="[0-9]*">x<\/mi><mo>\+<\/mo><mi id="[0-9]*">y<\/mi><\/mrow><mi id="[0-9]*">dt<\/mi>/); | |
| verify('["int", "x", "t"]', /<mo id="[0-9]*">∫<\/mo><mi id="[0-9]*">x<\/mi><mi id="[0-9]*">dt<\/mi>/); | |
| verify('["int", "x", "t", 0, "∞"]', /<msubsup><mo id="[0-9]*">∫<\/mo><mn id="[0-9]*">0<\/mn><mi id="[0-9]*">∞<\/mi><\/msubsup><mi id="[0-9]*">x<\/mi><mi id="[0-9]*">dt<\/mi>/); | |
| verify('["=", "x", "y"]', /<mi id="[0-9]*">x<\/mi><mo id="[0-9]*">=<\/mo><mi id="[0-9]*">y<\/mi>/); | |
| verify('["=", "x", ["+", "y", "z"]]', /<mi id="[0-9]*">x<\/mi><mo id="[0-9]*">=<\/mo><mrow id="[0-9]*"><mi id="[0-9]*">y<\/mi><mo>\+<\/mo><mi id="[0-9]*">z<\/mi><\/mrow>/); | |
| verify('["part", "y", "x"]', /<mfrac id="[0-9]*"><mrow><mo>∂<\/mo><mi id="[0-9]*">y<\/mi><\/mrow><mrow><mo>∂<\/mo><mi id="[0-9]*">x<\/mi><\/mrow><\/mfrac>/); | |
| verify('["/", "x", "y"]', /<mfrac id="[0-9]*"><mrow><mi id="[0-9]*">x<\/mi><\/mrow><mrow><mi id="[0-9]*">y<\/mi><\/mrow><\/mfrac>/); | |
| } | |
| function verifySerializer(input, expect) { | |
| var actual = SexpSerializer(JsonParser(input)); | |
| assertEq(expect, actual); | |
| } | |
| function SerializerTest() { | |
| verifySerializer(["a", 1, 2],'["a",1,2]'); | |
| verifySerializer(["a", [1, 2]],'["a",\n [1,2]\n]'); | |
| } | |
| function UnitTest() { | |
| try { | |
| EvalTest(); | |
| SerializerTest(); | |
| dp("test sucess!"); | |
| }catch(e) { | |
| dp("test fail!"); | |
| dp(e); | |
| } | |
| } | |
| function CutBufferRotate(isBackward) { | |
| if(isBackward) { | |
| CutBufferMoveBackword(); | |
| }else{ | |
| CutBufferMoveForward(); | |
| } | |
| } | |
| var KEY_ENTER = 13; | |
| var KEY_LEFT = 37; | |
| var KEY_RIGHT = 39; | |
| var KEY_C = 67; | |
| var KEY_D = 68; | |
| var KEY_E = 69; | |
| var KEY_I = 73; | |
| var KEY_J = 74; | |
| var KEY_L = 76; | |
| var KEY_O = 79; | |
| var KEY_P = 80; | |
| var KEY_T = 84; | |
| var KEY_V = 86; | |
| var KEY_W = 87; | |
| var g_selected = undefined; | |
| function onload() { | |
| UnitTest(); | |
| var canv = $("mathcanvas"); | |
| canv.addEventListener("click", function(evt) { | |
| g_continue_replace = false; | |
| UnSelectExpression(); | |
| var id = evt.target.getAttribute("id"); | |
| var obj = g_hash[id]; | |
| if(!obj) { | |
| return; | |
| } | |
| g_selected = {obj: obj, elem: evt.target}; | |
| g_selected.elem.setAttribute("class", "selectedTarget"); | |
| // alert(g_selected.elem); | |
| }); | |
| document.body.addEventListener("keyup", function(evt) { | |
| if($('input') == document.activeElement) | |
| return; | |
| if(evt.keyCode == KEY_I && | |
| evt.shiftKey) { | |
| Import(); | |
| return; | |
| } | |
| if(evt.keyCode == KEY_E && | |
| evt.shiftKey) { | |
| Export(); | |
| return; | |
| } | |
| if(evt.keyCode == KEY_O && evt.shiftKey) { | |
| Overwrite($('input').value); | |
| return; | |
| } | |
| if(evt.keyCode == KEY_P){ | |
| CutBufferRotate(evt.shiftKey); | |
| return; | |
| } | |
| if(evt.keyCode == KEY_L){ | |
| if(g_continue_replace) { | |
| CutBufferRotate(evt.shiftKey); | |
| } | |
| Replace(); | |
| Update(g_sexp); | |
| } | |
| if(!g_selected) { | |
| if(evt.keyCode == KEY_C) { | |
| CopyRawExpression($('input').value); | |
| return; | |
| } | |
| } | |
| if(!g_selected) | |
| return; | |
| if(evt.keyCode == KEY_D && | |
| evt.shiftKey) { | |
| PartialDerivative(g_selected); | |
| Update(g_sexp); | |
| } | |
| if(evt.keyCode == KEY_T) { | |
| DotOver(g_selected); | |
| Update(g_sexp); | |
| } | |
| if(evt.keyCode == KEY_W) { | |
| WidenSelection(g_selected); | |
| Update(g_sexp); | |
| } | |
| if(evt.keyCode == KEY_C) { | |
| Copy(g_selected.obj); | |
| } | |
| if(evt.keyCode == KEY_V){ | |
| if(g_selected.obj == g_last_pasted_sexp) { | |
| CutBufferRotate(evt.shiftKey); | |
| } | |
| Paste(g_selected.obj, true); | |
| Update(g_sexp); | |
| } | |
| }); | |
| document.body.addEventListener("keypress", function(evt) { | |
| // for debug | |
| g_event = evt; | |
| if (!g_selected && evt.keyCode == KEY_ENTER){ | |
| Register($("input").value); | |
| return; | |
| } | |
| if(!g_selected) | |
| return; | |
| if(evt.keyCode == KEY_LEFT) { | |
| MoveLeftTerm(g_selected); | |
| Update(g_sexp); | |
| } else if (evt.keyCode == KEY_RIGHT) { | |
| MoveRightTerm(g_selected); | |
| Update(g_sexp); | |
| } else if (evt.keyCode == KEY_ENTER){ | |
| var raw = SexpSerializer(g_selected.obj); | |
| var form = Register(raw); | |
| ReviveForm(form); | |
| } else if(evt.charCode == "+".charCodeAt(0)) { | |
| Plus(g_selected); | |
| Update(g_sexp); | |
| } else if(evt.charCode == "-".charCodeAt(0)) { | |
| Minus(g_selected); | |
| Update(g_sexp); | |
| } else if(evt.charCode == "*".charCodeAt(0)) { | |
| Times(g_selected); | |
| Update(g_sexp); | |
| } | |
| // alert(evt.charCode); | |
| // alert(evt.keyCode); | |
| }); | |
| } | |
| function UnSelectExpression(notClear) { | |
| if(g_selected && g_selected.elem) { | |
| g_selected.elem.setAttribute("class", ""); | |
| } | |
| if(!notClear) | |
| g_selected = undefined; | |
| } | |
| function OnInputKeyDown(evt) { | |
| if(evt.keyCode == KEY_J && evt.ctrlKey) | |
| { | |
| evt.stopPropagation(); | |
| evt.preventDefault(); | |
| UpdateInputToCanvas(); | |
| return false; | |
| } | |
| return true; | |
| } | |
| </script> | |
| <br> | |
| <textarea id="input" rows="2" cols="100" onkeydown="OnInputKeyDown(event)" onfocus="UnSelectExpression();"></textarea><br> | |
| <input value="Set" type="button" onclick="UpdateInputToCanvas();"> | |
| <input value="Register" type="button" onclick="Register($('input').value);"> | |
| <input value="Overwrite" type="button" onclick="Overwrite($('input').value);"> | |
| <br> | |
| <div id="mathcanvas"></div> | |
| <ul id="cutbuffer"></ul> | |
| <hr> | |
| <input value="Clear" type="button" onclick="onClear();"><br> | |
| <textarea id="console" rows="10" cols="100" ></textarea><br> | |
| <hr> | |
| <h3>キーバインド</h3> | |
| <dl> | |
| <dt>c</dt><dd>選択範囲をコピー領域に追加</dd> | |
| <dt>v</dt><dd>選択されている部分をコピーバッファの先頭で上書き(さらに連打でコピーバッファを回転。Shiftキーと同時押しで逆回転)</dd> | |
| <dt>l</dt><dd>コピーバッファの先頭をinputに入れてC-j(さらに連打でコピーバッファを回転。Shiftキーと同時押しで逆回転)</dd> | |
| <dt>p</dt><dd>コピーバッファを回転。Shiftキーと同時押しで逆回転</dd> | |
| <dt>w</dt><dd>選択範囲を広げる</dd> | |
| <dt>D</dt><dd>選択要素を偏微分</dd> | |
| <dt>E</dt><dd>Export</dd> | |
| <dt>I</dt><dd>Import</dd> | |
| <dt>C-j (textarea内)</dt><dd>テキストエリア内を評価してmathcanvasに表示</dd> | |
| <dt>O</dt><dd>チェックされた式を上書き</dd> | |
| </dl> | |
| <hr> | |
| 以下は適当な例。<br> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mi id="73">x</mi><mo id="72">=</mo><mrow id="75"><mi id="76">y</mi><mo>+</mo><mi id="77">z</mi></mrow> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mfrac id="687"> | |
| <mrow id="691"> | |
| <mi id="692">b</mi> | |
| <mi id="693">c</mi> | |
| </mrow> | |
| <mrow> | |
| <mrow id="696"> | |
| <mo>-</mo> | |
| <mi id="697">x(t)</mi> | |
| </mrow> | |
| <mo>+</mo> | |
| <mi id="699">a</mi> | |
| <mo>+</mo> | |
| <mfrac id="701"> | |
| <mrow id="703"> | |
| <mi id="704">π</mi> | |
| <mi id="705">k</mi> | |
| </mrow> | |
| <msup> | |
| <mi id="709">e</mi> | |
| <mrow id="711"> | |
| <mo>-</mo> | |
| <mrow id="713"> | |
| <mi id="714">ρ</mi> | |
| <mi id="715">t</mi> | |
| </mrow> | |
| </mrow> | |
| </msup> | |
| </mfrac> | |
| <mrow id="722"> | |
| <mn id="723">2</mn> | |
| <mi id="724">b</mi> | |
| </mrow> | |
| </mrow> | |
| </mfrac> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mfrac><mi>x</mi><mi>y</mi></mfrac> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <msup> | |
| <mi>a</mi> | |
| <mi>b</mi> | |
| </msup> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mrow class="selectedTarget"> | |
| <mi>a</mi> | |
| <mi>b</mi> | |
| <mi>c</mi> | |
| </mrow> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mi> | |
| ℒ | |
| </mi> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <msubsup> | |
| <mo>∫</mo> | |
| <mi>a</mi> | |
| <mi>∞</mi> | |
| </msubsup> | |
| <mi>x</mi> | |
| <mi>dt</mi> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mo>∫</mo> | |
| <mi>x</mi> | |
| <mi>dt</mi> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mover> | |
| <mi>r</mi> | |
| <mo>.</mo> | |
| </mover> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mo>λ</mo> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <msup> | |
| <mrow> | |
| <msub> | |
| <mrow> | |
| <mi> e </mi> | |
| </mrow> | |
| <mrow> | |
| <mi>a</mi> | |
| </mrow> | |
| </msub> | |
| </mrow> | |
| <mrow> | |
| <mo> - </mo> | |
| <mi> ρ<!--greek small letter rho--> </mi> | |
| <mi> x </mi> | |
| </mrow> | |
| </msup> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <msubsup> | |
| <mrow> | |
| <mi> e </mi> | |
| </mrow> | |
| <mrow> | |
| <mi>a</mi> | |
| </mrow> | |
| <mrow> | |
| <mo> - </mo> | |
| <mi> ρ<!--greek small letter rho--> </mi> | |
| <mi> x </mi> | |
| </mrow> | |
| </msubsup> | |
| </math> | |
| <br> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mn> 3 </mn> | |
| <mo> + </mo> | |
| <mn> 4 </mn> | |
| </math> | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mrow id="hoge"> | |
| <munderover> | |
| <mo>∫</mo> | |
| <mn>0</mn> | |
| <mn>1</mn> | |
| </munderover> | |
| <mrow> | |
| <msup> | |
| <mi>e</mi> | |
| <mi id="x">x</mi> | |
| </msup> | |
| <mi id="d">d</mi> | |
| <mi>x</mi> | |
| </mrow> | |
| </mrow> | |
| </math> | |
| <math xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mfenced> | |
| <mrow> | |
| <mi> a </mi> | |
| <mo> + </mo> | |
| <mi> b </mi> | |
| </mrow> | |
| </mfenced> | |
| </math> | |
| 以下はダメ | |
| <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> | |
| <mrow> | |
| <cn type="complex-cartesian"> 12.3 <sep/> 5 </cn> | |
| <bind id="outer"><csymbol cd="fns1">lambda</csymbol> | |
| <bvar><ci>x</ci></bvar> | |
| <apply><ci>f</ci> | |
| <bind id="inner"><csymbol cd="fns1">lambda</csymbol> | |
| <bvar><ci>x</ci></bvar> | |
| <share id="copy" href="#orig"/> | |
| </bind> | |
| <apply id="orig"><ci>g</ci><ci>x</ci></apply> | |
| </apply> | |
| </bind> | |
| </mrow> | |
| </math> | |
| <iframe id='iframe' style="display:none;"></iframe> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment