/* Version 0.96 */
/* Version 0.96 */
/*
Copyright 2008-2012
Matthias Ehmann,
Michael Gerhaeuser,
Carsten Miller,
Bianca Valentin,
Alfred Wassermann,
Peter Wilfahrt
This file is part of JSXGraph.
JSXGraph is free software dual licensed under the GNU LGPL or MIT License.
You can redistribute it and/or modify it under the terms of the
* GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version
OR
* MIT License: https://github.com/jsxgraph/jsxgraph/blob/master/LICENSE.MIT
JSXGraph is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License and
the MIT License along with JSXGraph. If not, see
and .
*/
JXG.GeogebraReader=new function(){this.ggbAct=function(e,t,n){var r=t,i=n,s,o,u;switch(e.toLowerCase()){case"end":return r;case"coord":return s=JXG.GeogebraReader.board.ggbElements[r]?'JXG.getRef(JXG.GeogebraReader.board, "'+r+'")':r,o=JXG.GeogebraReader.board.ggbElements[i]?'JXG.getRef(JXG.GeogebraReader.board, "'+i+'")':i,[s,o];case"le":return"( ("+r+") <= ("+i+") )";case"ge":return"( ("+r+") >= ("+i+") )";case"eq":return"( ("+r+") == ("+i+") )";case"neq":return"( ("+r+") != ("+i+") )";case"lt":return"( ("+r+") < ("+i+") )";case"gt":return"( ("+r+") > ("+i+") )";case"add":if(JXG.GeogebraReader.isGGBVector(r)&&JXG.GeogebraReader.isGGBVector(i))return[1,r[1]+"+"+i[1],r[2]+"+"+i[2]];JXG.isString(r)&&!r.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&r.match(/JXG\.getRef/)?s=[r+".X()",r+".Y()"]:s=r,JXG.isString(i)&&!i.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&i.match(/JXG\.getRef/)?o=[i+".X()",i+".Y()"]:o=i;if(JXG.GeogebraReader.isGGBVector(s)&&JXG.isArray(o))return[s[1]+"+"+o[0],s[2]+"+"+o[1]];if(JXG.GeogebraReader.isGGBVector(o)&&JXG.isArray(s))return[o[1]+"+"+s[0],o[2]+"+"+s[1]];return JXG.isArray(s)&&JXG.isArray(o)?[s[0]+" + "+o[0],s[1]+" + "+o[1]]:(JXG.isNumber(s)||JXG.isString(s))&&(JXG.isNumber(o)||JXG.isString(o))?s+" + "+o:(JXG.isNumber(s)||JXG.isString(s))&&JXG.isArray(o)?[s+" + "+o[0],s+" + "+o[1]]:JXG.isArray(s)&&(JXG.isNumber(o)||JXG.isString(o))?[s[0]+" + "+o,s[1]+" + "+o]:s+" + "+o;case"sub":if(JXG.GeogebraReader.isGGBVector(r)&&JXG.GeogebraReader.isGGBVector(i))return[1,r[1]+"-"+i[1],r[2]+"-"+i[2]];JXG.isString(r)&&!r.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&r.match(/JXG\.getRef/)?s=[r+".X()",r+".Y()"]:s=r,JXG.isString(i)&&!i.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&i.match(/JXG\.getRef/)?o=[i+".X()",i+".Y()"]:o=i;if(JXG.GeogebraReader.isGGBVector(s)&&JXG.isArray(o))return[s[1]+"-"+o[0],s[2]+"-"+o[1]];if(JXG.isArray(s)&&JXG.GeogebraReader.isGGBVector(o))return[s[0]+"-("+o[1]+")",s[1]+"-("+o[2]+")"];return JXG.isArray(s)&&JXG.isArray(o)?[s[0]+" - "+o[0],s[1]+" - "+o[1]]:(JXG.isNumber(s)||JXG.isString(s))&&(JXG.isNumber(o)||JXG.isString(o))?s+" - "+o:(JXG.isNumber(s)||JXG.isString(s))&&JXG.isArray(o)?[s+" - "+o[0],s+" - "+o[1]]:JXG.isArray(s)&&(JXG.isNumber(o)||JXG.isString(o))?[s[0]+" - "+o,s[1]+" - "+o]:s+" - "+o;case"neg":return"!("+r+")";case"pow":return"Math.pow("+r+", "+i+")";case"or":return"("+r+"||"+i+")";case"and":return"("+r+"&&"+i+")";case"mul":return JXG.GeogebraReader.isGGBVector(r)&&!JXG.isArray(i)?[1,"("+r[1]+")*"+i,"("+r[2]+")*"+i]:!JXG.isArray(r)&&JXG.GeogebraReader.isGGBVector(i)?new Array(1,"("+i[1]+")*"+r,"("+i[2]+")*"+r):JXG.GeogebraReader.isGGBVector(r)&&JXG.GeogebraReader.isGGBVector(i)?"(("+r[1]+")*("+i[1]+")+("+r[2]+")*("+i[2]+"))":(JXG.isString(r)&&!r.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&r.match(/JXG\.getRef/)?s=[r+".X()",r+".Y()"]:s=r,JXG.isString(i)&&!i.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&i.match(/JXG\.getRef/)?o=[i+".X()",i+".Y()"]:o=i,JXG.isArray(s)&&JXG.isArray(o)?[s[0]+" * "+o[0],s[1]+" * "+o[1]]:(JXG.isNumber(s)||JXG.isString(s))&&(JXG.isNumber(o)||JXG.isString(o))?s+" * "+o:(JXG.isNumber(s)||JXG.isString(s))&&JXG.isArray(o)?[s+" * "+o[0],s+" * "+o[1]]:JXG.isArray(s)&&(JXG.isNumber(o)||JXG.isString(o))?[s[0]+" * "+o,s[1]+" * "+o]:s+" * "+o);case"div":return JXG.isString(r)&&!r.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&r.match(/JXG\.getRef/)?s=[r+".X()",r+".Y()"]:s=r,JXG.isString(i)&&!i.match(/JXG\.getRef\(JXG\.GeogebraReader\.board, "(.+?)"\)\./)&&i.match(/JXG\.getRef/)?o=[i+".X()",i+".Y()"]:o=i,JXG.isArray(s)&&JXG.isArray(o)?[s[0]+" / "+o[0],s[1]+" / "+o[1]]:(JXG.isNumber(s)||JXG.isString(s))&&(JXG.isNumber(o)||JXG.isString(o))?s+" / "+o:(JXG.isNumber(s)||JXG.isString(s))&&JXG.isArray(o)?[s+" / "+o[0],s+" / "+o[1]]:JXG.isArray(s)&&(JXG.isNumber(o)||JXG.isString(o))?[s[0]+" / "+o,s[1]+" / "+o]:s+" / "+o;case"negmult":if(JXG.GeogebraReader.isGGBVector(r))return new Array(1,"-1*"+r[1],"-1*"+r[2]);return"-1*"+r;case"bra":if(JXG.GeogebraReader.isGGBVector(r))return new Array(1,"("+r[1]+")","("+r[2]+")");return"("+r+")";case"int":return parseInt(r);case"float":return parseFloat(r);case"param":return r;case"html":return r;case"string":return i?[r,i]:r;case"command":i=r.split("["),s=i[0],o=i[1].split("]")[0];switch(s.toLowerCase()){case"name":return'JXG.getRef(JXG.GeogebraReader.board, "'+o+'").getName()'}break;case"var":if(!i)return r=="PI"?"Math.PI":(u=JXG.GeogebraReader.checkElement(r),typeof JXG.GeogebraReader.board.ggb[r]!="undefined"?'JXG.GeogebraReader.board.ggb["'+r+'"]()':typeof u.Value!="undefined"?'JXG.getRef(JXG.GeogebraReader.board, "'+r+'").Value()':typeof u.Area!="undefined"?'JXG.getRef(JXG.GeogebraReader.board, "'+r+'").Area()':typeof u.plaintextStr!="undefined"?'1.0*JXG.getRef(JXG.GeogebraReader.board, "'+r+'").plaintextStr':u.type==JXG.OBJECT_TYPE_VECTOR?new Array(1,'JXG.getRef(JXG.GeogebraReader.board, "'+r+'").point2.X()-JXG.getRef(JXG.GeogebraReader.board, "'+r+'").point1.X()','JXG.getRef(JXG.GeogebraReader.board, "'+r+'").point2.Y()-JXG.getRef(JXG.GeogebraReader.board, "'+r+'").point1.Y()'):u.elementClass==JXG.OBJECT_CLASS_LINE?'JXG.getRef(JXG.GeogebraReader.board, "'+r+'").point1.Dist(JXG.getRef(JXG.GeogebraReader.board, "'+r+'").point2)':'JXG.getRef(JXG.GeogebraReader.board, "'+r+'")');switch(r.toLowerCase()){case"x":return i+".X()";case"y":return i+".Y()";case"abs":case"acos":case"asin":case"atan":case"ceil":case"cos":case"exp":case"floor":case"log":case"max":case"min":case"pow":case"random":case"round":case"sin":case"sqrt":case"tan":return"Math."+r.toLowerCase()+"("+i+")";default:return r.toLowerCase()+"*("+i+")"}}},this.ggbParse=function(e,t){function i(e){r+=e+"\n"}function s(e){var t=0,n=-1,r=0,i=0,s=e.offset+1;do{s--,t=0,n=-2,i=s;if(e.src.length<=i)return 28;do{switch(t){case 0:e.src.charCodeAt(s)==9||e.src.charCodeAt(s)==32?t=1:e.src.charCodeAt(s)==33?t=2:e.src.charCodeAt(s)==40?t=3:e.src.charCodeAt(s)==41?t=4:e.src.charCodeAt(s)==42?t=5:e.src.charCodeAt(s)==43?t=6:e.src.charCodeAt(s)==44?t=7:e.src.charCodeAt(s)==45?t=8:e.src.charCodeAt(s)==47?t=9:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57?t=10:e.src.charCodeAt(s)==60?t=11:e.src.charCodeAt(s)==62?t=12:e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=13:e.src.charCodeAt(s)==94?t=14:e.src.charCodeAt(s)==34?t=26:e.src.charCodeAt(s)==38?t=28:e.src.charCodeAt(s)==46?t=29:e.src.charCodeAt(s)==61?t=30:e.src.charCodeAt(s)==95?t=31:e.src.charCodeAt(s)==124?t=32:t=-1;break;case 1:t=-1,n=1,r=s;break;case 2:e.src.charCodeAt(s)==61?t=15:t=-1,n=23,r=s;break;case 3:t=-1,n=2,r=s;break;case 4:t=-1,n=3,r=s;break;case 5:t=-1,n=13,r=s;break;case 6:t=-1,n=11,r=s;break;case 7:t=-1,n=16,r=s;break;case 8:t=-1,n=12,r=s;break;case 9:t=-1,n=14,r=s;break;case 10:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57?t=10:e.src.charCodeAt(s)==46?t=18:t=-1,n=4,r=s;break;case 11:e.src.charCodeAt(s)==61?t=19:t=-1,n=21,r=s;break;case 12:e.src.charCodeAt(s)==61?t=21:t=-1,n=22,r=s;break;case 13:e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=13:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57?t=27:e.src.charCodeAt(s)==91?t=34:e.src.charCodeAt(s)==95?t=35:t=-1,n=7,r=s;break;case 14:t=-1,n=15,r=s;break;case 15:t=-1,n=20,r=s;break;case 16:t=-1,n=9,r=s;break;case 17:t=-1,n=25,r=s;break;case 18:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57?t=18:t=-1,n=5,r=s;break;case 19:t=-1,n=17,r=s;break;case 20:t=-1,n=19,r=s;break;case 21:t=-1,n=18,r=s;break;case 22:t=-1,n=24,r=s;break;case 23:t=-1,n=8,r=s;break;case 24:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57||e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=24:t=-1,n=6,r=s;break;case 25:t=-1,n=10,r=s;break;case 26:e.src.charCodeAt(s)==34?t=16:e.src.charCodeAt(s)==32||e.src.charCodeAt(s)==46||e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57||e.src.charCodeAt(s)==61||e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122||e.src.charCodeAt(s)==223||e.src.charCodeAt(s)==228||e.src.charCodeAt(s)==246||e.src.charCodeAt(s)==252?t=26:t=-1;break;case 27:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57||e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=27:e.src.charCodeAt(s)==95?t=35:t=-1,n=7,r=s;break;case 28:e.src.charCodeAt(s)==38?t=17:e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=33:t=-1;break;case 29:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57?t=18:t=-1;break;case 30:e.src.charCodeAt(s)==61?t=20:t=-1;break;case 31:e.src.charCodeAt(s)==95?t=36:t=-1;break;case 32:e.src.charCodeAt(s)==124?t=22:t=-1;break;case 33:e.src.charCodeAt(s)==59?t=23:e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=33:t=-1;break;case 34:e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=37:t=-1;break;case 35:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57||e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=27:e.src.charCodeAt(s)==95?t=35:t=-1;break;case 36:e.src.charCodeAt(s)>=48&&e.src.charCodeAt(s)<=57||e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=24:t=-1;break;case 37:e.src.charCodeAt(s)==93?t=25:e.src.charCodeAt(s)>=65&&e.src.charCodeAt(s)<=90||e.src.charCodeAt(s)>=97&&e.src.charCodeAt(s)<=122?t=37:t=-1}s++}while(t>-1)}while(n==1);return n>-1?(e.att=e.src.substr(i,r-i),e.offset=r):(e.att=new String,n=-1),n}function o(e,o,u){var a=new Array,f=new Array,c=0,h,p,d,v,m=new Function("","var offset; var src; var att;"),g=new m,y=new Array(new Array(0,1),new Array(27,1),new Array(26,5),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,2),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,3),new Array(26,2),new Array(26,3),new Array(26,3),new Array(26,1),new Array(26,1),new Array(26,1),new Array(26,1),new Array(26,1),new Array(26,1),new Array(26,4),new Array(26,1)),b=new Array(new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(28,0),new Array(14,13,13,14,25,15,24,16,15,17,12,18,11,19,22,20,21,21,20,22,19,23,18,24,17,25,28,-1),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(11,29,28,-24,17,-24,18,-24,19,-24,20,-24,21,-24,22,-24,12,-24,15,-24,24,-24,25,-24,13,-24,14,-24,16,-24,3,-24),new Array(28,-20,17,-20,18,-20,19,-20,20,-20,21,-20,22,-20,11,-20,12,-20,15,-20,24,-20,25,-20,13,-20,14,-20,16,-20,3,-20),new Array(28,-21,17,-21,18,-21,19,-21,20,-21,21,-21,22,-21,11,-21,12,-21,15,-21,24,-21,25,-21,13,-21,14,-21,16,-21,3,-21),new Array(28,-22,17,-22,18,-22,19,-22,20,-22,21,-22,22,-22,11,-22,12,-22,15,-22,24,-22,25,-22,13,-22,14,-22,16,-22,3,-22),new Array(28,-23,17,-23,18,-23,19,-23,20,-23,21,-23,22,-23,11,-23,12,-23,15,-23,24,-23,25,-23,13,-23,14,-23,16,-23,3,-23),new Array(28,-25,17,-25,18,-25,19,-25,20,-25,21,-25,22,-25,11,-25,12,-25,15,-25,24,-25,25,-25,13,-25,14,-25,16,-25,3,-25),new Array(2,30,28,-27,17,-27,18,-27,19,-27,20,-27,21,-27,22,-27,11,-27,12,-27,15,-27,24,-27,25,-27,13,-27,14,-27,16,-27,3,-27),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(14,13,13,14,25,15,24,16,15,17,12,18,11,19,22,20,21,21,20,22,19,23,18,24,17,25,16,44,3,45),new Array(14,-11,13,-11,25,15,24,16,15,-11,12,-11,11,-11,22,-11,21,-11,20,-11,19,-11,18,-11,17,-11,28,-11,16,-11,3,-11),new Array(14,-17,13,-17,25,15,24,16,15,17,12,-17,11,-17,22,20,21,21,20,22,19,23,18,24,17,25,28,-17,16,-17,3,-17),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(14,-16,13,-16,25,15,24,16,15,17,12,-16,11,-16,22,20,21,21,20,22,19,23,18,24,17,25,28,-16,16,-16,3,-16),new Array(14,-15,13,-15,25,15,24,16,15,17,12,-15,11,-15,22,20,21,21,20,22,19,23,18,24,17,25,28,-15,16,-15,3,-15),new Array(14,-14,13,-14,25,-14,24,-14,15,-14,12,-14,11,-14,22,-14,21,-14,20,-14,19,-14,18,-14,17,-14,28,-14,16,-14,3,-14),new Array(14,-13,13,-13,25,-13,24,-13,15,-13,12,-13,11,-13,22,-13,21,-13,20,-13,19,-13,18,-13,17,-13,28,-13,16,-13,3,-13),new Array(14,-12,13,-12,25,15,24,16,15,-12,12,-12,11,-12,22,20,21,21,20,22,19,23,18,24,17,25,28,-12,16,-12,3,-12),new Array(14,13,13,14,25,15,24,16,15,17,12,-10,11,-10,22,20,21,21,20,22,19,23,18,24,17,25,28,-10,16,-10,3,-10),new Array(14,13,13,14,25,15,24,16,15,17,12,-9,11,-9,22,20,21,21,20,22,19,23,18,24,17,25,28,-9,16,-9,3,-9),new Array(14,-8,13,-8,25,15,24,16,15,-8,12,-8,11,-8,22,-8,21,-8,20,-8,19,-8,18,-8,17,-8,28,-8,16,-8,3,-8),new Array(14,-7,13,-7,25,15,24,16,15,-7,12,-7,11,-7,22,-7,21,-7,20,-7,19,-7,18,-7,17,-7,28,-7,16,-7,3,-7),new Array(14,-6,13,-6,25,15,24,16,15,-6,12,-6,11,-6,22,-6,21,-6,20,-6,19,-6,18,-6,17,-6,28,-6,16,-6,3,-6),new Array(14,-5,13,-5,25,15,24,16,15,-5,12,-5,11,-5,22,-5,21,-5,20,-5,19,-5,18,-5,17,-5,28,-5,16,-5,3,-5),new Array(14,-4,13,-4,25,15,24,16,15,-4,12,-4,11,-4,22,-4,21,-4,20,-4,19,-4,18,-4,17,-4,28,-4,16,-4,3,-4),new Array(14,-3,13,-3,25,15,24,16,15,-3,12,-3,11,-3,22,-3,21,-3,20,-3,19,-3,18,-3,17,-3,28,-3,16,-3,3,-3),new Array(2,3,23,4,12,5,9,6,4,7,5,8,6,9,8,10,10,11,7,12),new Array(28,-18,17,-18,18,-18,19,-18,20,-18,21,-18,22,-18,11,-18,12,-18,15,-18,24,-18,25,-18,13,-18,14,-18,16,-18,3,-18),new Array(14,13,13,14,25,15,24,16,15,17,12,-19,11,-19,22,20,21,21,20,22,19,23,18,24,17,25,28,-19,16,-19,3,-19),new Array(14,13,13,14,25,15,24,16,15,17,12,18,11,19,22,20,21,21,20,22,19,23,18,24,17,25,3,49),new Array(14,13,13,14,25,15,24,16,15,17,12,18,11,19,22,20,21,21,20,22,19,23,18,24,17,25,3,50),new Array(28,-26,17,-26,18,-26,19,-26,20,-26,21,-26,22,-26,11,-26,12,-26,15,-26,24,-26,25,-26,13,-26,14,-26,16,-26,3,-26),new Array(28,-2,17,-2,18,-2,19,-2,20,-2,21,-2,22,-2,11,-2,12,-2,15,-2,24,-2,25,-2,13,-2,14,-2,16,-2,3,-2)),w=new Array(new Array(27,1,26,2),new Array,new Array,new Array(26,26),new Array(26,27),new Array(26,28),new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array(26,31),new Array(26,32),new Array(26,33),new Array(26,34),new Array(26,35),new Array(26,36),new Array(26,37),new Array(26,38),new Array(26,39),new Array(26,40),new Array(26,41),new Array(26,42),new Array(26,43),new Array,new Array,new Array,new Array(26,46),new Array(26,47),new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array,new Array(26,48),new Array,new Array,new Array,new Array,new Array,new Array),E=new Array("p'","WHITESPACE","(",")","INT","FLOAT","PARAM","VAR","HTML","STRING","COMMAND","+","-","*","/","^",",","<=",">=","==","!=","<",">","!","||","&&","e","p","$");g.offset=0,g.src=e,g.att=new String,o||(o=new Array),u||(u=new Array),a.push(0),f.push(0),d=s(g);for(;;){h=52;for(var S=0;S0&&i("\nState "+a[a.length-1]+"\n"+" Lookahead: "+E[d]+' ("'+g.att+'")\n'+" Action: "+h+"\n"+' Source: "'+g.src.substr(g.offset,30)+(g.offset+300){a.pop(),f.pop();if(a.length==0)break;h=52;for(var S=0;S0)n&&i("Shifting symbol: "+E[d]+" ("+g.att+")"),a.push(h),f.push(g.att),d=s(g),n&&i(" New lookahead symbol: "+E[d]+" ("+g.att+")");else{h*=-1,n&&i("Reducing by producution: "+h),v=void 0,n&&i(" Performing semantic action...");switch(h){case 0:v=f[f.length-1];break;case 1:v=JXG.GeogebraReader.ggbAct("end",f[f.length-1]);break;case 2:v=JXG.GeogebraReader.ggbAct("coord",f[f.length-4],f[f.length-2],t);break;case 3:v=JXG.GeogebraReader.ggbAct("le",f[f.length-3],f[f.length-1]);break;case 4:v=JXG.GeogebraReader.ggbAct("ge",f[f.length-3],f[f.length-1]);break;case 5:v=JXG.GeogebraReader.ggbAct("eq",f[f.length-3],f[f.length-1]);break;case 6:v=JXG.GeogebraReader.ggbAct("neq",f[f.length-3],f[f.length-1]);break;case 7:v=JXG.GeogebraReader.ggbAct("lt",f[f.length-3],f[f.length-1]);break;case 8:v=JXG.GeogebraReader.ggbAct("gt",f[f.length-3],f[f.length-1]);break;case 9:v=JXG.GeogebraReader.ggbAct("add",f[f.length-3],f[f.length-1]);break;case 10:v=JXG.GeogebraReader.ggbAct("sub",f[f.length-3],f[f.length-1]);break;case 11:v=JXG.GeogebraReader.ggbAct("neg",f[f.length-1]);break;case 12:v=JXG.GeogebraReader.ggbAct("pow",f[f.length-3],f[f.length-1]);break;case 13:v=JXG.GeogebraReader.ggbAct("or",f[f.length-3],f[f.length-1]);break;case 14:v=JXG.GeogebraReader.ggbAct("and",f[f.length-3],f[f.length-1]);break;case 15:v=JXG.GeogebraReader.ggbAct("mul",f[f.length-3],f[f.length-1]);break;case 16:v=JXG.GeogebraReader.ggbAct("div",f[f.length-3],f[f.length-1]);break;case 17:v=JXG.GeogebraReader.ggbAct("negmult",f[f.length-1]);break;case 18:v=JXG.GeogebraReader.ggbAct("bra",f[f.length-2]);break;case 19:v=JXG.GeogebraReader.ggbAct("string",f[f.length-3],f[f.length-1]);break;case 20:v=JXG.GeogebraReader.ggbAct("int",f[f.length-1]);break;case 21:v=JXG.GeogebraReader.ggbAct("float",f[f.length-1]);break;case 22:v=JXG.GeogebraReader.ggbAct("param",f[f.length-1]);break;case 23:v=JXG.GeogebraReader.ggbAct("html",f[f.length-1]);break;case 24:v=JXG.GeogebraReader.ggbAct("string",f[f.length-1]);break;case 25:v=JXG.GeogebraReader.ggbAct("command",f[f.length-1]);break;case 26:v=JXG.GeogebraReader.ggbAct("var",f[f.length-4],f[f.length-2]);break;case 27:v=JXG.GeogebraReader.ggbAct("var",f[f.length-1])}n&&i(" Popping "+y[h][1]+" off the stack...");for(var S=0;S0){var c=new String;for(var h=0;h0&&e.getElementsByTagName("objColor")[0].getAttribute("alpha")?parseFloat(e.getElementsByTagName("objColor")[0].getAttribute("alpha")):0,r=e.getElementsByTagName("objColor").length>0&&e.getElementsByTagName("objColor")[0].getAttribute("r")?parseInt(e.getElementsByTagName("objColor")[0].getAttribute("r")).toString(16):0,i=e.getElementsByTagName("objColor").length>0&&e.getElementsByTagName("objColor")[0].getAttribute("g")?parseInt(e.getElementsByTagName("objColor")[0].getAttribute("g")).toString(16):0,s=e.getElementsByTagName("objColor").length>0&&e.getElementsByTagName("objColor")[0].getAttribute("b")?parseInt(e.getElementsByTagName("objColor")[0].getAttribute("b")).toString(16):0,r.length==1&&(r="0"+r),i.length==1&&(i="0"+i),s.length==1&&(s="0"+s),t.fillColor="#"+r+i+s,t.strokeColor=t.fillColor,t.highlightFillColor=t.fillColor,t.highlightStrokeColor=t.strokeColor,t.fillOpacity=n,t.highlightFillOpacity=n,t.labelColor=t.fillColor,t},this.boardProperties=function(e,t,n){return n},this.coordinates=function(e,t){var n={},r;n.x=0,n.y=0,n.z=0,t.getElementsByTagName("labelOffset")[0]&&(n.x=parseFloat(t.getElementsByTagName("labelOffset")[0].getAttribute("x"))/JXG.GeogebraReader.board.unitX,n.y=parseFloat(t.getElementsByTagName("labelOffset")[0].getAttribute("y"))/JXG.GeogebraReader.board.unitY);if(t.getElementsByTagName("coords")[0])e.x=parseFloat(t.getElementsByTagName("coords")[0].getAttribute("x")),e.y=parseFloat(t.getElementsByTagName("coords")[0].getAttribute("y")),e.z=parseFloat(t.getElementsByTagName("coords")[0].getAttribute("z"));else if(t.getElementsByTagName("startPoint")[0])if(t.getElementsByTagName("startPoint")[0].getAttribute("exp")){var i=JXG.getRef(JXG.GeogebraReader.board,t.getElementsByTagName("startPoint")[0].getAttribute("exp"));e.x=function(){return i.X()+n.x},e.y=function(){return i.Y()-n.y},e.z=!1}else e.x=parseFloat(t.getElementsByTagName("startPoint")[0].getAttribute("x")),e.y=parseFloat(t.getElementsByTagName("startPoint")[0].getAttribute("y")),e.z=parseFloat(t.getElementsByTagName("startPoint")[0].getAttribute("z"));else{if(!t.getElementsByTagName("absoluteScreenLocation")[0])return!1;var r=new JXG.Coords(JXG.COORDS_BY_SCREEN,[parseFloat(t.getElementsByTagName("absoluteScreenLocation")[0].getAttribute("x")),parseFloat(t.getElementsByTagName("absoluteScreenLocation")[0].getAttribute("y"))],JXG.GeogebraReader.board);e.x=r.usrCoords[1]+n.x,e.y=r.usrCoords[2]+n.y,e.z=!1}return e},this.visualProperties=function(e,t){return e.getElementsByTagName("show").length!=0&&e.getElementsByTagName("show")[0].getAttribute("object")?t.visible=e.getElementsByTagName("show")[0].getAttribute("object"):!1,e.getElementsByTagName("show").length!=0&&e.getElementsByTagName("show")[0].getAttribute("label")?t.withLabel=e.getElementsByTagName("show")[0].getAttribute("label"):!0,t.withLabel=="true"?t.withLabel=!0:t.withLabel=="false"&&(t.withLabel=!1),e.getElementsByTagName("pointSize")[0]?t.size=e.getElementsByTagName("pointSize")[0].getAttribute("val"):!1,e.getElementsByTagName("pointStyle")[0]?t.styleGGB=e.getElementsByTagName("pointStyle")[0].getAttribute("val"):!1,t.styleGGB==0||t.styleGGB==2?(t.face="circle",t.styleGGB==0?(t.fillColor=t.strokeColor,t.fillOpacity=1,t.highlightFillColor=t.strokeColor,t.highlightFillOpacity=1,t.strokeColor="black",t.strokeWidth="1px"):t.styleGGB==2&&(t.fillColor="none")):t.styleGGB==1?t.face="x":t.styleGGB==3?(t.face="+",t.strokeOpacity=1):t.styleGGB==4||t.styleGGB==5?(t.face="diamond",t.styleGGB==4?(t.fillColor=t.strokeColor,t.fillOpacity=1):t.styleGGB==5&&(t.fillColor="none")):t.styleGGB==6?(t.face="triangleUp",t.fillColor=t.strokeColor,t.fillOpacity=1):t.styleGGB==7?(t.face="triangleDown",t.fillColor=t.strokeColor,t.fillOpacity=1):t.styleGGB==8?(t.face="triangleRight",t.fillColor=t.strokeColor,t.fillOpacity=1):t.styleGGB==9&&(t.face="triangleLeft",t.fillColor=t.strokeColor,t.fillOpacity=1),e.getElementsByTagName("slopeTriangleSize")[0]?t.slopeWidth=e.getElementsByTagName("slopeTriangleSize")[0].getAttribute("val"):!1,e.getElementsByTagName("lineStyle")[0]?t.strokeWidth=e.getElementsByTagName("lineStyle")[0].getAttribute("thickness")/2+"px":!1,t.strokeWidth&&(t.highlightStrokeWidth=1*t.strokeWidth.substr(0,t.strokeWidth.length-2)+1+"px"),e.getElementsByTagName("lineStyle")[0]?t.dashGGB=e.getElementsByTagName("lineStyle")[0].getAttribute("type"):!1,t.dashGGB==0?t.dash=0:t.dashGGB==10?t.dash=2:t.dashGGB==15?t.dash=3:t.dashGGB==20?t.dash=1:t.dashGGB==30&&(t.dash=6),e.getElementsByTagName("labelOffset")[0]?t.labelX=1*e.getElementsByTagName("labelOffset")[0].getAttribute("x"):!1,e.getElementsByTagName("labelOffset")[0]?t.labelY=1*e.getElementsByTagName("labelOffset")[0].getAttribute("y"):!1,e.getElementsByTagName("trace")[0]?t.trace=e.getElementsByTagName("trace")[0].getAttribute("val"):!1,e.getElementsByTagName("fix")[0]?t.fixed=e.getElementsByTagName("fix")[0].getAttribute("val"):!1,t},this.getElement=function(e,t){var n,r,i;t=t||!1;for(r=0;r-1||s[i].search(/[0-9]+$/)>-1||s[i].search(/[a-zA-Z]+(\_*[a-zA-Z0-9]+)*$/)>-1)&&(s[i+1].search(/^\(/)>-1||s[i+1].search(/^[0-9]+/)>-1||s[i+1].search(/^[a-zA-Z]+(\_*[a-zA-Z0-9]+)*/)>-1||s[i+1].search(/\_\_[a-zA-Z0-9]+/)>-1)&&(s[i]=s[i]+"*"),o+=s[i];expr=o}return output.push(expr),output}return exp;case"s":return exp=exp.replace(/(?![e])x(?!\()(?![p])/g,"__x"),["__x",exp];default:if(JXG.GeogebraReader.format<=3.01){s=exp.split(" "),o="";for(i=0;i-1||s[i].search(/[0-9]+$/)>-1||s[i].search(/[a-zA-Z]+(\_*[a-zA-Z0-9]+)*$/)>-1)&&(s[i+1].search(/^\(/)>-1||s[i+1].search(/^[0-9]+/)>-1||s[i+1].search(/^[a-zA-Z]+(\_*[a-zA-Z0-9]+)*/)>-1||s[i+1].search(/\_\_[a-zA-Z0-9]+/)>-1)&&(s[i]=s[i]+"*"),o+=s[i];exp=o}return exp}},this.writeBoard=function(e){var t=JXG.GeogebraReader.tree.getElementsByTagName("euclidianView")[0];e.origin={},e.origin.usrCoords=[1,0,0],e.origin.scrCoords=[1,1*t.getElementsByTagName("coordSystem")[0].getAttribute("xZero"),1*t.getElementsByTagName("coordSystem")[0].getAttribute("yZero")],e.unitX=t.getElementsByTagName("coordSystem")[0].getAttribute("scale")?1*t.getElementsByTagName("coordSystem")[0].getAttribute("scale"):1,e.unitY=t.getElementsByTagName("coordSystem")[0].getAttribute("yscale")?1*t.getElementsByTagName("coordSystem")[0].getAttribute("yscale"):e.unitX,e.fontSize=JXG.GeogebraReader.tree.getElementsByTagName("gui")[0]&&JXG.GeogebraReader.tree.getElementsByTagName("gui")[0].getElementsByTagName("font")[0]?1*JXG.GeogebraReader.tree.getElementsByTagName("gui")[0].getElementsByTagName("font")[0].getAttribute("size"):"12px",JXG.JSXGraph.boards[e.id]=e,e.renderer.enhancedRendering=!0;var n=t.getElementsByTagName("evSettings")[0].getAttribute("pointCapturing")=="true",r=t.getElementsByTagName("evSettings")[0].getAttribute("grid")=="true"?e.create("grid"):null;t.getElementsByTagName("evSettings")[0].getAttribute("axes")&&t.getElementsByTagName("evSettings")[0].getAttribute("axes")=="true"&&(e.ggbElements.xAxis=e.create("axis",[[0,0],[1,0]],{strokeColor:"black",minorTicks:0}),e.ggbElements.yAxis=e.create("axis",[[0,0],[0,1]],{strokeColor:"black",minorTicks:0}))},this.writeElement=function(e,t,n,r){var i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S;i=JXG.isArray(t)?t[0]:t,s={},o={},JXG.debug(i),s.type=i&&i.attributes&&typeof r=="undefined"?i.getAttribute("type").toLowerCase():r,s.label=i.getAttribute("label"),o.name=s.label,JXG.debug("
Konstruiere "+o.name+"("+s.type+"):");switch(s.type){case"point":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),o=JXG.GeogebraReader.visualProperties(i,o),JXG.GeogebraReader.getElement(o.name,!0)?(a=JXG.GeogebraReader.getElement(o.name,!0).getAttribute("exp"),f=JXG.GeogebraReader.ggbParse(a),s.x=new Function("return "+f[0]+";"),s.y=new Function("return "+f[1]+";")):s=JXG.GeogebraReader.coordinates(s,i),JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px"),JXG.debug(s),JXG.debug(n);try{var x=/Circle\[\s*(\w+)\s*,\s*([\d\.]+)\s*\]/.exec(n);if(typeof n!="undefined")if(x!=null&&x.length==3){var T=JXG.GeogebraReader.checkElement(x[1]),N=e.create("circle",[T,parseFloat(x[2])],{fillColor:"none",visible:!1,name:""});u=e.create("glider",[s.x,s.y,N],o)}else JXG.isArray(n)?u=e.create("glider",[s.x,s.y,n[0]],o):u=e.create("glider",[s.x,s.y,n],o);else u=e.create("point",[s.x,s.y],o);return u}catch(m){return JXG.debug("* Err: Point "+o.name+"
\n"),!1}break;case"segment":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Segment: ("+o.name+") First: "+n[0].name+", Last: "+n[1].name+"
\n"),o.straightFirst=!1,o.straightLast=!1,u=e.create("line",n,o),u}catch(m){return JXG.debug("* Err: Segment "+o.name+" First: "+n[0].name+", Last: "+n[1].name+"
\n"),!1}break;case"line":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o),l="line",n?JXG.getRef(e,n[1].id).elementClass==JXG.OBJECT_CLASS_LINE&&(l="parallel"):n=[parseFloat(i.getElementsByTagName("coords")[0].getAttribute("z")),parseFloat(i.getElementsByTagName("coords")[0].getAttribute("x")),parseFloat(i.getElementsByTagName("coords")[0].getAttribute("y"))];try{return u=e.create(l,n,o),u}catch(m){return JXG.debug("* Err: Line "+o.label+"
\n"),!1}break;case"orthogonalline":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Orthogonalline: First: "+n[0].id+", Last: "+n[1].id+"
\n"),u=e.create("normal",n,o),u}catch(m){return JXG.debug("* Err: Orthogonalline "+o.label+"
\n"),!1}break;case"polygon":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o),n.length==3&&t.length!=4&&(n[2]=parseInt(n[2]),l="regular");try{JXG.debug("* Polygon: First: "+n[0].name+", Second: "+n[1].name+", Third: "+n[2]+"
\n");var C=[],k=[];p=l=="regular"?t.length-n[2]+2:t.length;for(var L=1;LErr:
Polygon "+o.name+"
\n"),!1}break;case"intersect":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{JXG.debug("* Intersection: First: "+n[0].name+", Second: "+n[1].name+"
\n"),JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px");if(t.length==1)u=e.create("intersection",[n[0],n[1],0],o);else{u=e.create("intersection",[n[0],n[1],1],o);var A={};A=JXG.GeogebraReader.colorProperties(t[1],A),A=JXG.GeogebraReader.visualProperties(t[1],A),A.name=t[1].getAttribute("label");var O=e.create("otherintersection",[n[0],n[1],u],A);e.ggbElements[A.name]=O}return u}catch(m){return JXG.debug("* Err: Intersection "+o.name+"
\n"),!1}break;case"distance":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Distance: First: "+n[0].name+", Second: "+n[1].name+"
\n"),d=e.create("midpoint",n,{visible:"false"}),o.visible="true",u=e.create("text",[function(){return d.X()},function(){return d.Y()},function(){return""+n[0].name+n[1].name+" = "+JXG.trimNumber(JXG.getRef(e,n[0].id).Dist(JXG.getRef(e,n[1].id)).toFixed(JXG.GeogebraReader.decimals))}],o),u.Value=function(){return JXG.getRef(e,n[0].id).Dist(JXG.getRef(e,n[1].id))},u}catch(m){return JXG.debug("* Err: Distance "+o.name+"
\n"),!1}break;case"vector":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);if(i.getElementsByTagName("startPoint")[0]){n&&n.length==2?m=JXG.GeogebraReader.checkElement(n[1].name):m=[parseFloat(i.getElementsByTagName("coords")[0].getAttribute("x")),parseFloat(i.getElementsByTagName("coords")[0].getAttribute("y"))];if(i.getElementsByTagName("startPoint")[0].getAttribute("x")&&i.getElementsByTagName("startPoint")[0].getAttribute("y"))v=[parseFloat(i.getElementsByTagName("startPoint")[0].getAttribute("x")),parseFloat(i.getElementsByTagName("startPoint")[0].getAttribute("y"))];else if(i.getElementsByTagName("startPoint")[0].getAttribute("exp")){var M=i.getElementsByTagName("startPoint")[0].getAttribute("exp");v=JXG.GeogebraReader.checkElement(M)}}else if(n&&n.length!=0)v=n[0],m=n[1];else{a=JXG.GeogebraReader.getElement(i.getAttribute("label"),!0);if(a)return a=a.getAttribute("exp"),a=JXG.GeogebraReader.ggbParse(a),JXG.isArray(a)?a=new Array(new Function("return "+a[1]+";"),new Function("return "+a[2]+";")):a=new Function("return "+a+";"),JXG.debug("exp: "+a),u=e.create("arrow",[[0,0],[a[0],a[1]]],o),u}try{return JXG.debug("* Vector: First: "+o.name),u=e.create("arrow",[v,m],o),u}catch(m){return JXG.debug("* Err: Vector "+o.name+m+"
\n"),!1}break;case"rotate":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Rotate: First: "+n[0].name+", Second: "+n[1]+"
\n"),o.type="rotate",JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px"),X=e.create("transform",[parseInt(n[1])*Math.PI/180,n[2]],{type:"rotate"}),u=e.create("point",[n[0],X],o),u}catch(m){return JXG.debug("* Err: Rotate "+o.name+"
\n"),!1}break;case"dilate":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{JXG.debug("* Dilate: First: "+n[0].name+", Second: "+n[1]+"
\n"),o.type="rotate";var _=parseInt(n[1]),D=e.create("transform",[_,_],{type:"scale"}),P=e.create("transform",[function(){return(1-_)*n[2].X()},function(){return(1-_)*n[2].Y()}],{type:"translate"});return JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px"),u=e.create("point",[n[0],[D,P]],o),u}catch(m){return JXG.debug("* Err: Dilate "+o.name+"
\n"),!1}break;case"translate":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return X=e.create("transform",[function(){return n[1].point2.X()-n[1].point1.X()},function(){return n[1].point2.Y()-n[1].point1.Y()}],{type:"translate"}),JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px"),u=e.create("point",[n[0],X],o),u}catch(m){return JXG.debug("* Err: Translate "+o.name+"
\n"),!1}break;case"mirror":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);if(JXG.isPoint(JXG.getRef(e,n[1].id)))var l="mirrorpoint";else if(JXG.getRef(e,n[1].id).elementClass==JXG.OBJECT_CLASS_LINE)var l="reflection";try{return JXG.debug("* Mirror: First: "+n[0].name+", Second: "+n[1].name+"
\n"),u=e.create(l,[n[1],n[0]],o),u}catch(m){return JXG.debug("* Err: Mirror "+o.name+"
\n"),!1}break;case"circle":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Circle: First: "+n[0].name+", Second: "+n[1]+"
\n"),u=e.create("circle",n,o),u}catch(m){return JXG.debug("* Err: Circle "+o.name+"
\n"),!1}break;case"circlearc":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* CircleArc: First: "+n[0].name+", Second: "+n[1].name+"
\n"),u=e.create("arc",n,o),u}catch(m){return JXG.debug("* Err: CircleArc "+o.name+"
\n"),!1}break;case"ellipse":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Ellipse: First: "+n[0].name+", Second: "+n[1].name+", Third: "+n[2]+"
\n"),parseInt(n[2])==n[2]&&(n[2]=parseInt(n[2]*2)),u=e.create("ellipse",n,o),u}catch(m){return JXG.debug("* Err: Ellipse "+o.name+"
\n"),!1}break;case"conic":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);if(n&&n.length==5)u=e.create("conic",n,o);else if(i.getElementsByTagName("matrix")){d=[];for(var L=0;LCircleSector: First: "+n[0].name+", Second: "+n[1].name+", Third: "+n[2].name+"
\n"),u=e.create("sector",[n[0],n[1],n[2]],o),u}catch(m){return JXG.debug("* Err: CircleSector "+o.name+"
\n"),!1}break;case"linebisector":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* LineBiSector (Mittelsenkrechte): First: "+n[0].name+"
\n"),d=e.create("midpoint",n,{visible:!1}),JXG.isPoint(JXG.getRef(e,n[0].id))&&JXG.isPoint(JXG.getRef(e,n[1].id))?(X=e.create("line",n,{visible:"false"}),u=e.create("perpendicular",[d,X],o)):u=e.create("perpendicular",[d,n[0]],o),u}catch(m){return JXG.debug("* Err: LineBiSector (Mittelsenkrechte) "+o.name+"
\n"),!1}break;case"ray":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Ray: First: "+n[0].name+"
\n"),o.straightFirst=!0,o.straightLast=!1,u=e.create("line",[n[1],n[0]],o),u}catch(m){return JXG.debug("* Err: Ray "+o.name+"
\n"),!1}break;case"tangent":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{JXG.debug("* Tangent: First: "+n[0].name+", Sec.: "+n[1].name+"("+n[1].type+")
\n");switch(n[1].type){case 1330923344:return n[0].makeGlider(n[1]),u=e.create("tangent",[n[0]],o),u;case 1330922316:case 1330922319:var H=e.create("polar",[n[1],n[0]],{visible:!1}),B=e.create("intersection",[n[1],H,0],{visible:!1}),j=e.create("intersection",[n[1],H,1],{visible:!1}),F=e.create("line",[n[0],B],o),A={};A=JXG.GeogebraReader.colorProperties(t[1],A),A=JXG.GeogebraReader.visualProperties(t[1],A),A.name=t[1].getAttribute("label");var I=e.create("line",[n[0],j],A);return e.ggbElements[A.name]=I,[F,I]}}catch(m){return JXG.debug("* Err: Tangent "+o.name+" "+A.name+"
\n"),!1}break;case"circumcirclearc":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* CircumcircleArc: First: "+n[0].name+"
\n"),u=e.create("circumcirclearc",n,o),u}catch(m){return JXG.debug("* Err: CircumcircleArc "+o.name+"
\n"),!1}break;case"circumcirclesector":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* CircumcircleSector: First: "+n[0].name+"
\n"),u=e.create("circumcirclesector",[n[0],n[1],n[2]],o),u}catch(m){return JXG.debug("* Err: CircumcircleSector "+o.name+"
\n"),!1}break;case"semicircle":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Semicircle: First: "+n[0].name+"
\n"),u=e.create("semicircle",[n[0],n[1]],o),u}catch(m){return JXG.debug("* Err: Semicircle "+o.name+"
\n"),!1}break;case"angle":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Angle: First: "+n[0].name+"
\n"),u=e.create("angle",n,o),u}catch(m){return JXG.debug("* Err: Angle "+o.name+"
\n"),!1}break;case"angularbisector":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o),o.straightFirst=!0,o.straightLast=!0;try{return JXG.debug("* Angularbisector: First: "+n[0].name+"
\n"),u=e.create("bisector",n,o),u}catch(m){return JXG.debug("* Err: Angularbisector "+o.name+"
\n"),!1}break;case"numeric":if(i.getElementsByTagName("slider").length==0)return a=JXG.GeogebraReader.getElement(i.getAttribute("label"),!0),a&&(a=a.getAttribute("exp"),a=JXG.GeogebraReader.functionParse("",a),a=JXG.GeogebraReader.ggbParse(a)),e.ggb[o.name]=new Function("return "+a+";"),JXG.debug("value: "+e.ggb[o.name]()),e.ggb[o.name];o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),o=JXG.GeogebraReader.visualProperties(i,o);if(i.getElementsByTagName("slider").length==1){g=parseFloat(i.getElementsByTagName("slider")[0].getAttribute("x")),y=parseFloat(i.getElementsByTagName("slider")[0].getAttribute("y")),p=parseFloat(i.getElementsByTagName("slider")[0].getAttribute("width"));if(i.getElementsByTagName("slider")[0].getAttribute("absoluteScreenLocation")&&i.getElementsByTagName("slider")[0].getAttribute("absoluteScreenLocation")=="true"){var q=new JXG.Coords(JXG.COORDS_BY_SCREEN,[g,y],e);g=q.usrCoords[1],y=q.usrCoords[2]}i.getElementsByTagName("slider")[0].getAttribute("horizontal")=="true"?(i.getElementsByTagName("slider")[0].getAttribute("absoluteScreenLocation")&&i.getElementsByTagName("slider")[0].getAttribute("absoluteScreenLocation")=="true"&&(p/=e.unitX),b=g+p,w=y):(i.getElementsByTagName("slider")[0].getAttribute("absoluteScreenLocation")&&i.getElementsByTagName("slider")[0].getAttribute("absoluteScreenLocation")=="true"&&(p/=e.unitY),b=g,w=y+p),i.getElementsByTagName("animation")[0]?o.snapWidth=parseFloat(i.getElementsByTagName("animation")[0].getAttribute("step")):!1;try{return JXG.debug("* Numeric: First: "+o.name+"
\n"),o.withTicks=!1,u=e.create("slider",[[g,y],[b,w],[parseFloat(i.getElementsByTagName("slider")[0].getAttribute("min")),parseFloat(i.getElementsByTagName("value")[0].getAttribute("val")),parseFloat(i.getElementsByTagName("slider")[0].getAttribute("max"))]],o),u.setProperty({withLabel:!1}),u}catch(m){return JXG.debug("* Err: Numeric "+o.name+"
\n"),!1}}break;case"midpoint":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px"),u=e.create("midpoint",n,o),JXG.debug("* Midpoint ("+u.id+"): "+o.name+"("+s.x+", "+s.y+")
\n"),u}catch(m){return JXG.debug("* Err: Midpoint "+o.name+"
\n"),!1}break;case"center":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.exists(o.styleGGB)||(o.face="circle",o.fillColor=o.strokeColor,o.fillOpacity=1,o.highlightFillColor=o.strokeColor,o.highlightFillOpacity=1,o.strokeColor="black",o.strokeWidth="1px"),u=e.create("point",[function(){return JXG.getRef(e,n[0].id).center.X()},function(){return JXG.getRef(e,n[0].id).center.Y()}],o),JXG.debug("* Center ("+u.id+"): "+o.name+"("+s.x+", "+s.y+")
\n"),u}catch(m){return JXG.debug("* Err: Center "+o.name+"
\n"),!1}break;case"function":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o),JXG.GeogebraReader.getElement(o.name,!0)?(E=JXG.GeogebraReader.getElement(o.name,!0).getAttribute("exp"),E=JXG.GeogebraReader.functionParse("c",E)):(E=n[0],E=JXG.GeogebraReader.functionParse("s",E)),JXG.debug(E),p=E.length,E[E.length-1]="return "+JXG.GeogebraReader.ggbParse(E[E.length-1])+";",JXG.debug(E),S=[n&&n[1]?n[1]:null,n&&n[2]?n[2]:null];try{return p==1?u=e.create("functiongraph",[new Function(E[0]),S[0],S[1]],o):p==2?u=e.create("functiongraph",[new Function(E[0],E[1]),S[0],S[1]],o):p==3?u=e.create("functiongraph",[new Function(E[0],E[1],E[2]),S[0],S[1]],o):p==4?u=e.create("functiongraph",[new Function(E[0],E[1],E[2],E[3]),S[0],S[1]],o):p==5&&(u=e.create("functiongraph",[new Function(E[0],E[1],E[2],E[3],E[4]),S[0],S[1]],o)),u}catch(m){return JXG.debug("* Err: Functiongraph "+o.name+"
\n"),!1}break;case"polar":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{return JXG.debug("* Polar: First: "+n[0].name+", Sec.: "+n[1].name+"
\n"),u=e.create("polar",n,o),u}catch(m){return JXG.debug("* Err: Polar "+o.name+"
\n"),!1}break;case"slope":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);try{JXG.debug("* Slope ("+o.name+"): First: "+n[0].name+"
\n");var R=parseInt(o.slopeWidth)||1,U=n[0].glider||n[0].point1,O=e.create("point",[function(){return R+U.X()},function(){return U.Y()}],{visible:!1}),z=e.create("segment",[U,O],{visible:!1}),W=e.create("normal",[z,z.point2],{visible:!1}),L=e.create("intersection",[n[0],W,0],{visible:!1}),d=e.create("midpoint",[z.point2,L],{visible:!1}),X=e.create("text",[function(){return d.X()},function(){return d.Y()},function(){return" "+(R>1?R.toString():"")+" "+this.name+" = "+JXG.trimNumber((R*n[0].getSlope()).toFixed(JXG.GeogebraReader.decimals))}],o);o.name="";var I=e.create("text",[function(){return(U.X()+O.X())/2},function(){return U.Y()},function(){return"
"+R}],o);X.Value=function(){return function(){return n[0].getSlope()}}();var V=e.create("polygon",[U,O,L],o);return V.borders[2].setProperty({visible:!1}),V.borders[0].setProperty({strokeColor:o.fillColor,strokeWidth:o.strokeWidth,highlightStrokeColor:o.fillColor,dash:o.dash}),V.borders[1].setProperty({strokeColor:o.fillColor,strokeWidth:o.strokeWidth,highlightStrokeColor:o.fillColor,dash:o.dash}),X}catch(m){return JXG.debug("* Err: Slope "+o.name+"
\n"),!1}break;case"text":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);var $,J="";try{if(i.getElementsByTagName("isLaTeX")[0]&&i.getElementsByTagName("isLaTeX")[0].getAttribute("val")=="true"){JXG.GeogebraReader.board.options.text.useASCIIMathML=!0,X=JXG.GeogebraReader.getElement(o.name,!0).getAttribute("exp");while($=X.match(/(.*?)" \+ (.+) \+ "(.*)/)){var K=JXG.GeogebraReader.ggbParse(RegExp.$2);typeof K=="string"?J=J+RegExp.$1+K:J=J+RegExp.$1+'" + JXG.trimNumber(('+K+').toFixed(JXG.GeogebraReader.decimals)) + "',X=RegExp.$3}($=X.match(/(.*?)" \+ (.+)/))?J=J+RegExp.$1+'" + JXG.trimNumber(('+JXG.GeogebraReader.ggbParse(RegExp.$2)+").toFixed(JXG.GeogebraReader.decimals))":J+=X,JXG.debug("Text: "+J),u=e.create("text",[s.x,s.y,new Function("return "+J+";")],o)}else JXG.debug(JXG.GeogebraReader.getElement(o.name,!0).getAttribute("exp")),X=JXG.GeogebraReader.ggbParse(JXG.GeogebraReader.functionParse(!1,JXG.GeogebraReader.getElement(o.name,!0).getAttribute("exp"))),JXG.debug(X[1]),u=e.create("text",[s.x,s.y,new Function("return "+X[0]+' + " " + JXG.trimNumber(parseFloat('+X[1]+").toFixed(JXG.GeogebraReader.decimals));")],o);return JXG.debug("* Text: "+X+"
\n"),u}catch(m){return JXG.debug("* Err: Text: "+X+"
\n"),!1}break;case"root":o=JXG.GeogebraReader.boardProperties(s,i,o),o=JXG.GeogebraReader.colorProperties(i,o),s=JXG.GeogebraReader.coordinates(s,i),o=JXG.GeogebraReader.visualProperties(i,o);for(var L=0;LIntegral: First: "+n[0].name+", Sec.: "+n[1].name+", Thir.: "+n[2].name+"
\n"),JXG.debug([n[1](),n[2]()]);var u=e.create("integral",[JXG.getRef(e,n[0]),[n[1],n[2]]],o);return u}catch(m){return JXG.debug("* Err: Integral "+o.name+m+"
\n"),!1}break;default:return!1}},this.readGeogebra=function(e,t){var n,r,i,s=[],o;t.ggbElements=[],t.ggb={},JXG.GeogebraReader.tree=e,JXG.GeogebraReader.board=t,JXG.GeogebraReader.format=parseFloat(JXG.GeogebraReader.tree.getElementsByTagName("geogebra")[0].getAttribute("format")),JXG.GeogebraReader.decimals=parseInt(JXG.GeogebraReader.tree.getElementsByTagName("geogebra")[0].getElementsByTagName("kernel")[0].getElementsByTagName("decimals")[0].getAttribute("val")),JXG.GeogebraReader.writeBoard(t),t=JXG.GeogebraReader.setDefaultOptions(t);var u=JXG.GeogebraReader.tree.getElementsByTagName("construction");for(var a=0;a="):e,e=e.match(/\u2227/)?e.replace(/\u2227/g,"&&"):e,e=e.match(/\u2228/)?e.replace(/\u2228/g,"//"):e,e},this.prepareString=function(e,t){var n,r,i,s;t&&(s=JXG.Util.Base64.decode(e),s.slice(0,2)!=="PK"&&(s=JXG.Util.Base64.decode(e,!0)),e=s);if(e.indexOf("<")!=0){r=[],i=e.length;for(n=0;n