// Copyright 2014-2019 Volker Sorge
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/*

 Copyright The Closure Library Authors.
 SPDX-License-Identifier: Apache-2.0
*/
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.makeIterator=function(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):$jscomp.arrayIterator(a)};$jscomp.arrayFromIterator=function(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c};
$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};
$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};$jscomp.polyfill=function(a,b,c,d){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,d):$jscomp.polyfillUnisolated(a,b,c,d))};
$jscomp.polyfillUnisolated=function(a,b,c,d){c=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))return;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
$jscomp.polyfillIsolated=function(a,b,c,d){var e=a.split(".");a=1===e.length;d=e[0];d=!a&&d in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<e.length-1;f++){var g=e[f];if(!(g in d))return;d=d[g]}e=e[e.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?d[e]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,e,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[e]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(e):$jscomp.POLYFILL_PREFIX+e,e=
$jscomp.propertyToPolyfillSymbol[e],$jscomp.defineProperty(d,e,{configurable:!0,writable:!0,value:b})))};$jscomp.initSymbol=function(){};
$jscomp.polyfill("Symbol",function(a){if(a)return a;var b=function(e,f){this.$jscomp$symbol$id_=e;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:f})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var c=0,d=function(e){if(this instanceof d)throw new TypeError("Symbol is not a constructor");return new b("jscomp_symbol_"+(e||"")+"_"+c++,e)};return d},"es6","es3");$jscomp.initSymbolIterator=function(){};
$jscomp.polyfill("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=$jscomp.global[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&$jscomp.defineProperty(d.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}})}return a},"es6",
"es3");$jscomp.initSymbolAsyncIterator=function(){};$jscomp.iteratorPrototype=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,b){a instanceof String&&(a+="");var c=0,d={next:function(){if(c<a.length){var e=c++;return{value:b(e,a[e]),done:!1}}d.next=function(){return{done:!0,value:void 0}};return d.next()}};d[Symbol.iterator]=function(){return d};return d};
$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},"es6","es3");$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
$jscomp.checkStringArgs=function(a,b,c){if(null==a)throw new TypeError("The 'this' value for String.prototype."+c+" must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype."+c+" must not be a regular expression");return a+""};
$jscomp.polyfill("String.prototype.repeat",function(a){return a?a:function(b){var c=$jscomp.checkStringArgs(this,null,"repeat");if(0>b||1342177279<b)throw new RangeError("Invalid count value");b|=0;for(var d="";b;)if(b&1&&(d+=c),b>>>=1)c+=c;return d}},"es6","es3");var COMPILED=!0,goog=goog||{};goog.global=this||self;
goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};
goog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2012;goog.DEBUG=!0;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;
goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(".")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};
goog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
goog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");
if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};
goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};
goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};
goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};
goog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error('Module with namespace "'+a+'" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error('Module with namespace "'+
a+'" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});
goog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.globalize=function(a,b){b=b||goog.global;for(var c in a)b[c]=a[c]};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};
goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.nullFunction=function(){};
goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";
goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRANSPILE_TO_LANGUAGE="";goog.TRANSPILER="transpile.js";goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";')}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};goog.workaroundSafari10EvalBug=function(a){return"(function(){"+a+"\n;})();\n"};
goog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};if(goog.isFunction(a))var c=a.call(void 0,{});else if("string"===typeof a)goog.useSafari10Workaround()&&(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error("Invalid module definition");var d=goog.moduleLoaderState_.moduleName;if("string"===typeof d&&d)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,
c):goog.SEAL_MODULE_EXPORTS&&Object.seal&&"object"==typeof c&&null!=c&&Object.seal(c),goog.loadedModules_[d]={exports:c,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name "'+d+'"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};
goog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};
goog.transpile_=function(a,b,c){var d=goog.global.$jscomp;d||(goog.global.$jscomp=d={});var e=d.transpile;if(!e){var f=goog.basePath+goog.TRANSPILER,g=goog.loadFileSync_(f);if(g){(function(){(0,eval)(g+"\n//# sourceURL="+f)}).call(goog.global);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: '+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=
goog.global.$gwtExport.$jscomp.transpile;d=goog.global.$jscomp;e=d.transpile}}e||(e=d.transpile=function(h,k){goog.logToConsole_(k+" requires transpilation but no transpiler was found.");return h});return e(a,b,c)};
goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isArray=function(a){return Array.isArray(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};
goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;
goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};
goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};
goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval){if(null==goog.evalWorks_)try{goog.global.eval(""),goog.evalWorks_=!0}catch(d){goog.evalWorks_=!1}if(goog.evalWorks_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));b.head.appendChild(c);b.head.removeChild(c)}}else throw Error("goog.globalEval not available");};goog.evalWorks_=null;
goog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with ".". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};
goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));b&&(a=a.replace(/\{\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};
goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);
goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;
goog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};
!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;
a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null;this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(g,h){e?d[g]=!0:h()?(c=g,d[g]=!1):e=d[g]=!0}function b(g){try{return!!eval(g)}catch(h){return!1}}
var c="es3",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"";a("es5",function(){return b("[1,].length==1")});a("es6",function(){return f.match(/Edge\/(\d+)(\.\d)*/i)?!1:b('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});
a("es7",function(){return b("2 ** 2 == 4")});a("es8",function(){return b("async () => 1, true")});a("es9",function(){return b("({...rest} = {}), true")});a("es_next",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||
c.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||"es6"!=b||"noModule"in goog.global.document.createElement("script")?!1:!0;throw Error("Unknown language mode: "+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};
this.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=
0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{},!1));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=
function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else throw a="goog.require could not find: "+
a,goog.logToConsole_(a),Error(a);},goog.DebugLoader_.prototype.loadDeps_=function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);
return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,moduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,
g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);
break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=
function(a){return a in this.idToPath_?this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,
b,c){},goog.LoadController.prototype.setModuleState=function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=
a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=
function(a){delete goog.Dependency.callbackMap_[a]},goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=
goog.global.document;if("complete"==b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write "'+this.path+'" after document load');}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var c=goog.Dependency.registerCallback_(function(f){goog.DebugLoader_.IS_OLD_IE_&&"complete"!=f.readyState||(goog.Dependency.unregisterCallback_(c),a.loaded())}),d=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?
' nonce="'+goog.getScriptNonce()+'"':"";d='<script src="'+this.path+'" '+(goog.DebugLoader_.IS_OLD_IE_?"onreadystatechange":"onload")+"=\"goog.Dependency.callback_('"+c+'\', this)" type="text/javascript" '+(goog.Dependency.defer_?"defer":"")+d+">\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}else{var e=b.createElement("script");e.defer=goog.Dependency.defer_;e.async=!1;e.type="text/javascript";(d=goog.getScriptNonce())&&e.setAttribute("nonce",d);goog.DebugLoader_.IS_OLD_IE_?
(a.pause(),e.onreadystatechange=function(){if("loaded"==e.readyState||"complete"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(e)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),
a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){l=m?'<script type="module" crossorigin>'+m+"\x3c/script>":'<script type="module" crossorigin src="'+l+'">\x3c/script>';d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement("script");n.defer=!0;n.async=!1;n.type=
"module";n.setAttribute("crossorigin",!0);var p=goog.getScriptNonce();p&&n.setAttribute("nonce",p);m?n.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=
!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_("'+g+'")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from "'+this.path+'"; goog.Dependency.callback_("'+h+'", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);
a.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_("'+k+'")')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=
goog.loadFileSync_(e.path);e.contents_&&(e.contents_=e.transform(e.contents_),e.contents_&&(e.contents_+="\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var m=e.contents_;e.contents_=null;goog.globalEval(m);if(f)var n=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),
n)});a.loaded()}}function d(){var m=goog.global.document,n=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(n);c()}),p='<script type="text/javascript">'+goog.protectScriptTag_('goog.Dependency.callback_("'+n+'");')+"\x3c/script>";m.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(p):p)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):a.pause();
else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length,h=g&&goog.DebugLoader_.IS_OLD_IE_;g=goog.Dependency.defer_&&(g||goog.isDocumentLoading_());if(h||g)a.defer(function(){c()});else{var k=goog.global.document;h=goog.inHtmlDocument_()&&"ActiveXObject"in goog.global;if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!h){goog.Dependency.defer_=!0;a.pause();var l=k.onreadystatechange;k.onreadystatechange=function(){"interactive"==k.readyState&&(k.onreadystatechange=
l,c(),a.resume());goog.isFunction(l)&&l.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.TranspiledDependency=function(a,b,c,d,e,f){goog.TransformedDependency.call(this,a,b,c,d,e);this.transpiler=f},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(a){return this.transpiler.transpile(a,this.getPathName())},
goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,c,d,e,f,g){goog.TransformedDependency.call(this,a,b,c,d,e);this.needsTranspile_=f;this.transpiler_=g},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=
function(a){this.needsTranspile_&&(a=this.transpiler_.transpile(a,this.getPathName()));return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\n//# sourceURL="+this.path+"\n")+");":'goog.loadModule(function(exports) {"use strict";'+a+"\n;return exports});\n//# sourceURL="+this.path+"\n"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(a,b,c,
d){b=b||[];a=a.replace(/\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d,goog.transpiler_.needsTranspile(d.lang||"es3",d.module));this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(a){this.transpiler=a},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e,f){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,
b,c,d,e,f,this.transpiler):f?new goog.TranspiledDependency(a,b,c,d,e,this.transpiler):e.module==goog.ModuleType.ES6?"never"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=
goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});goog.TRUSTED_TYPES_POLICY_NAME="";goog.identity_=function(a){return a};goog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};var sre={Variables:function(){}};sre.Variables.VERSION="3.1.0";sre.Variables.LOCALES=["de","en","es","fr","nemeth"];sre.Variables.mathjaxVersion="3.0.0";sre.Variables.url="https://cdn.jsdelivr.net/npm/speech-rule-engine@"+sre.Variables.VERSION+"/lib/mathmaps";sre.Variables.WGXpath="https://cdn.jsdelivr.net/npm/wicked-good-xpath@1.3.0/dist/wgxpath.install.js";sre.SystemExternal=function(){};sre.SystemExternal.require=function(a){return"undefined"!==typeof process&&"undefined"!==typeof require?require(a):null};sre.SystemExternal.documentSupported=function(){return"undefined"!=typeof document};sre.SystemExternal.process=sre.SystemExternal.require("process");sre.SystemExternal.xmldom=sre.SystemExternal.documentSupported()?window:sre.SystemExternal.require("xmldom-sre");
sre.SystemExternal.document=sre.SystemExternal.documentSupported()?document:(new sre.SystemExternal.xmldom.DOMImplementation).createDocument("","",0);sre.SystemExternal.xpath=sre.SystemExternal.documentSupported()?document:function(){var a={document:{},XPathResult:{}};sre.SystemExternal.require("wicked-good-xpath").install(a);a.document.XPathResult=a.XPathResult;return a.document}();sre.SystemExternal.commander=sre.SystemExternal.documentSupported()?null:sre.SystemExternal.require("commander");
sre.SystemExternal.fs=sre.SystemExternal.documentSupported()?null:sre.SystemExternal.require("fs");sre.SystemExternal.url=sre.Variables.url;sre.SystemExternal.jsonPath=function(){return(sre.SystemExternal.process&&"undefined"!==typeof global?sre.SystemExternal.process.env.SRE_JSON_PATH||global.SRE_JSON_PATH||sre.SystemExternal.process.cwd():sre.SystemExternal.url)+"/"}();sre.SystemExternal.WGXpath=sre.Variables.WGXpath;sre.SystemExternal.wgxpath=null;sre.BrowserUtil={};sre.BrowserUtil.detectIE=function(){if(!("undefined"!==typeof window&&"ActiveXObject"in window&&"clipboardData"in window))return!1;sre.BrowserUtil.loadMapsForIE_();sre.BrowserUtil.loadWGXpath_();return!0};sre.BrowserUtil.detectEdge=function(){if(!("undefined"!==typeof window&&"MSGestureEvent"in window&&"chrome"in window&&null==window.chrome.loadTimes))return!1;document.evaluate=null;sre.BrowserUtil.loadWGXpath_(!0);return!0};sre.BrowserUtil.mapsForIE=null;
sre.BrowserUtil.loadWGXpath_=function(a){sre.BrowserUtil.loadScript(sre.SystemExternal.WGXpath);sre.BrowserUtil.installWGXpath_(a)};
sre.BrowserUtil.installWGXpath_=function(a,b){var c=b||1;"undefined"===typeof wgxpath&&10>c?setTimeout(function(){sre.BrowserUtil.installWGXpath_(a,c++)},200):10<=c||(sre.SystemExternal.wgxpath=wgxpath,a?sre.SystemExternal.wgxpath.install({document:document}):sre.SystemExternal.wgxpath.install(),sre.XpathUtil.xpathEvaluate=document.evaluate,sre.XpathUtil.xpathResult=XPathResult,sre.XpathUtil.createNSResolver=document.createNSResolver)};
sre.BrowserUtil.loadMapsForIE_=function(){sre.BrowserUtil.loadScript(sre.SystemExternal.jsonPath+"mathmaps_ie.js")};sre.BrowserUtil.loadScript=function(a){var b=sre.SystemExternal.document.createElement("script");b.type="text/javascript";b.src=a;sre.SystemExternal.document.head?sre.SystemExternal.document.head.appendChild(b):sre.SystemExternal.document.body.appendChild(b)};sre.DynamicProperties=function(a,b){this.properties_=a;this.order_=b||Object.keys(a)};sre.DynamicProperties.prototype.getProperties=function(){return this.properties_};sre.DynamicProperties.prototype.getOrder=function(){return this.order_};sre.DynamicProperties.prototype.getAxes=function(){return this.order_};sre.DynamicProperties.prototype.getProperty=function(a){return this.properties_[a]};sre.DynamicProperties.prototype.updateProperties=function(a){this.properties_=a};
sre.DynamicProperties.prototype.allProperties=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(this.getProperty(b).slice())},this));return a};sre.DynamicProperties.prototype.toString=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(b+": "+this.getProperty(b).toString())},this));return a.join("\n")};
sre.DynamicCstr=function(a,b){this.components_=a;var c={},d;for(d in a){var e=a[d];c[d]=[e];sre.DynamicCstr.Values_.getInstance().add(d,e)}sre.DynamicProperties.call(this,c,b)};goog.inherits(sre.DynamicCstr,sre.DynamicProperties);sre.DynamicCstr.prototype.getComponents=function(){return this.components_};sre.DynamicCstr.prototype.getValue=function(a){return this.components_[a]};
sre.DynamicCstr.prototype.getValues=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(this.getValue(b))},this));return a};sre.DynamicCstr.prototype.allProperties=function(){for(var a=sre.DynamicCstr.superClass_.allProperties.call(this),b=0,c,d;c=a[b],d=this.order_[b];b++)d=this.getValue(d),-1===c.indexOf(d)&&c.unshift(d);return a};sre.DynamicCstr.prototype.toString=function(){return this.getValues().join(".")};
sre.DynamicCstr.prototype.equal=function(a){var b=a.getAxes();if(this.order_.length!==b.length)return!1;for(var c=0,d;d=b[c];c++){var e=this.getValue(d);if(!e||a.getValue(d)!==e)return!1}return!0};sre.DynamicCstr.Axis={DOMAIN:"domain",STYLE:"style",LOCALE:"locale",TOPIC:"topic",MODALITY:"modality"};sre.DynamicCstr.Values_=function(){this.axisToValues=sre.DynamicCstr.Values_.makeAxisValueObject_()};goog.addSingletonGetter(sre.DynamicCstr.Values_);
sre.DynamicCstr.Values_.prototype.add=function(a,b){this.axisToValues[a][b]=!0};sre.DynamicCstr.Values_.prototype.get=function(){var a={},b=sre.DynamicCstr.Values_.getInstance().axisToValues,c;for(c in b)a[c]=Object.keys(b[c]);return a};sre.DynamicCstr.Values_.makeAxisValueObject_=function(){var a={},b;for(b in sre.DynamicCstr.Axis)a[sre.DynamicCstr.Axis[b]]={};return a};sre.DynamicCstr.getAxisValues=function(){return sre.DynamicCstr.Values_.getInstance().get()};
sre.DynamicCstr.DEFAULT_ORDER=[sre.DynamicCstr.Axis.LOCALE,sre.DynamicCstr.Axis.MODALITY,sre.DynamicCstr.Axis.DOMAIN,sre.DynamicCstr.Axis.STYLE,sre.DynamicCstr.Axis.TOPIC];sre.DynamicCstr.DEFAULT_VALUE="default";sre.DynamicCstr.DEFAULT_VALUES={};sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]="en";sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]=sre.DynamicCstr.DEFAULT_VALUE;sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]=sre.DynamicCstr.DEFAULT_VALUE;
sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.TOPIC]=sre.DynamicCstr.DEFAULT_VALUE;sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]="speech";sre.DynamicCstr.Parser=function(a){this.order_=a};sre.DynamicCstr.Parser.prototype.parse=function(a){a=a.split(".");var b={};if(a.length>this.order_.length)throw Error("Invalid dynamic constraint: "+b);for(var c=0,d;d=this.order_[c],a.length;c++){var e=a.shift();b[d]=e}return new sre.DynamicCstr(b,this.order_.slice(0,c))};
sre.DynamicCstr.Comparator=function(){};sre.DynamicCstr.Comparator.prototype.getReference=function(){};sre.DynamicCstr.Comparator.prototype.setReference=function(a,b){};sre.DynamicCstr.Comparator.prototype.match=function(a){};sre.DynamicCstr.Comparator.prototype.compare=function(a,b){};sre.DynamicCstr.DefaultComparator=function(a,b){this.reference_=a;this.fallback_=b||new sre.DynamicProperties(a.getProperties(),a.getOrder());this.order_=this.reference_.getOrder()};
sre.DynamicCstr.DefaultComparator.prototype.getReference=function(){return this.reference_};sre.DynamicCstr.DefaultComparator.prototype.setReference=function(a,b){this.reference_=a;this.fallback_=b||new sre.DynamicProperties(a.getProperties(),a.getOrder());this.order_=this.reference_.getOrder()};
sre.DynamicCstr.DefaultComparator.prototype.match=function(a){var b=a.getAxes();return b.length===this.reference_.getAxes().length&&b.every(goog.bind(function(c){var d=a.getValue(c);return d===this.reference_.getValue(c)||-1!==this.fallback_.getProperty(c).indexOf(d)},this))};
sre.DynamicCstr.DefaultComparator.prototype.compare=function(a,b){for(var c=!1,d=0,e;e=this.order_[d];d++){var f=a.getValue(e),g=b.getValue(e);if(!c){var h=this.reference_.getValue(e);if(h===f&&h!==g)return-1;if(h===g&&h!==f)return 1;if(h===f&&h===g)continue;h!==f&&h!==g&&(c=!0)}e=this.fallback_.getProperty(e);f=e.indexOf(f);g=e.indexOf(g);if(f<g)return-1;if(g<f)return 1}return 0};sre.DynamicCstr.DefaultComparator.prototype.toString=function(){return this.reference_.toString()+"\n"+this.fallback_.toString()};
sre.DynamicProperties.create=function(a){for(var b=sre.DynamicCstr.DEFAULT_ORDER,c={},d=Array.prototype.slice.call(arguments,0),e=0,f=d.length,g=b.length;e<f&&e<g;e++)c[b[e]]=d[e];return new sre.DynamicProperties(c)};sre.DynamicCstr.create=function(a){for(var b=sre.DynamicCstr.DEFAULT_ORDER,c={},d=Array.prototype.slice.call(arguments,0),e=0,f=d.length,g=b.length;e<f&&e<g;e++)c[b[e]]=d[e];return new sre.DynamicCstr(c)};
sre.DynamicCstr.defaultCstr=function(){return sre.DynamicCstr.create.apply(null,sre.DynamicCstr.DEFAULT_ORDER.map(function(a){return sre.DynamicCstr.DEFAULT_VALUES[a]}))};sre.DynamicCstr.validOrder=function(a){var b=sre.DynamicCstr.DEFAULT_ORDER.slice();return a.every(function(c){c=b.indexOf(c);return-1!==c&&b.splice(c,1)})};sre.Engine=function(){this.evaluator=sre.Engine.defaultEvaluator;this.parser=this.defaultParser=new sre.DynamicCstr.Parser(sre.DynamicCstr.DEFAULT_ORDER);this.parsers={};this.dynamicCstr=sre.DynamicCstr.defaultCstr();this.comparator=null;this.comparators={};this.domain=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN];this.style=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE];this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY];
this.walker="Table";this.mode=sre.Engine.Mode.SYNC;this.speech=sre.Engine.Speech.NONE;this.structure=!1;this.ruleSets=[];this.cache=!0;this.markup=sre.Engine.Markup.NONE;this.isEdge=this.isIE=this.strict=!1;this.rate="100";this.pprint=!1;this.setupTests_=[];this.config=!1};goog.addSingletonGetter(sre.Engine);sre.Engine.personalityProps={PITCH:"pitch",RATE:"rate",VOLUME:"volume",PAUSE:"pause",JOIN:"join"};sre.Engine.Mode={SYNC:"sync",ASYNC:"async",HTTP:"http"};
sre.Engine.Speech={NONE:"none",SHALLOW:"shallow",DEEP:"deep"};sre.Engine.Markup={NONE:"none",PUNCTUATION:"punctuation",SSML:"ssml",SSML_STEP:"ssml_step",ACSS:"acss",SABLE:"sable",VOICEXML:"voicexml"};sre.Engine.registerTest=function(a){sre.Engine.getInstance().setupTests_.push(a)};sre.Engine.isReady=function(){return sre.Engine.getInstance().setupTests_.every(function(a){return a()})};sre.Engine.prototype.setupBrowsers=function(){this.isIE=sre.BrowserUtil.detectIE();this.isEdge=sre.BrowserUtil.detectEdge()};
sre.Engine.prototype.getAxisValues=function(){return sre.DynamicCstr.getAxisValues()};sre.Engine.defaultEvaluator=function(a,b){return a};sre.Engine.prototype.getRate=function(){var a=parseInt(this.rate,10);return isNaN(a)?100:a};sre.Engine.Error=function(a){Error.call(this);this.message=a||"";this.name="SRE Error"};goog.inherits(sre.Engine.Error,Error);sre.Engine.BINARY_FEATURES=["strict","cache","structure","pprint"];sre.Engine.STRING_FEATURES="markup style domain speech walker locale modality rate".split(" ");
sre.Engine.prototype.setDynamicCstr=function(a){if(a)for(var b=Object.keys(a),c=0;c<b.length;c++){var d=b[c];-1!==sre.DynamicCstr.DEFAULT_ORDER.indexOf(d)&&(this[d]=a[d])}sre.Engine.DOMAIN_TO_STYLES[this.domain]=this.style;a=[this.locale,this.modality,this.domain,this.style].join(".");b=sre.DynamicProperties.create([sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]],
[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]]);c=this.comparators[this.domain];this.parser=(d=this.parsers[this.domain])?d:this.defaultParser;this.dynamicCstr=this.parser.parse(a);this.dynamicCstr.updateProperties(b.getProperties());this.comparator=c?c():new sre.DynamicCstr.DefaultComparator(this.dynamicCstr)};sre.Engine.DOMAIN_TO_STYLES={mathspeak:"default",clearspeak:"default"};sre.BaseUtil={};sre.BaseUtil.removeEmpty=function(a){return a.filter(function(b){return b})};sre.BaseUtil.interleaveLists=function(a,b){for(var c=[];a.length||b.length;)a.length&&c.push(a.shift()),b.length&&c.push(b.shift());return c};sre.BaseUtil.setdifference=function(a,b){return a?b?a.filter(function(c){return 0>b.indexOf(c)}):a:[]};sre.BaseUtil.union=function(a,b){return a&&b?a.concat(sre.BaseUtil.setdifference(b,a)):a||b||[]};sre.BaseUtil.makePath=function(a){return a.match("/$")?a:a+"/"};sre.Debugger=function(){this.isActive_=!1;this.outputFunction_=console.info;this.stream_=null};goog.addSingletonGetter(sre.Debugger);sre.Debugger.prototype.init=function(a){a&&this.startDebugFile_(a);this.isActive_=!0};
sre.Debugger.prototype.startDebugFile_=function(a){this.stream_=sre.SystemExternal.fs.createWriteStream(a);this.outputFunction_=goog.bind(function(b){var c=Array.prototype.slice.call(arguments,0);this.stream_.write(c.join(" "));this.stream_.write("\n")},this);this.stream_.on("error",goog.bind(function(b){console.info("Invalid log file. Debug information sent to console.");this.outputFunction_=console.info},this));this.stream_.on("finish",function(){console.info("Finalizing debug file.")})};
sre.Debugger.prototype.output_=function(a){this.outputFunction_.apply(console.info===this.outputFunction_?console:this.outputFunction_,["Speech Rule Engine Debugger:"].concat(a))};sre.Debugger.prototype.output=function(a){this.isActive_&&this.output_(Array.prototype.slice.call(arguments,0))};sre.Debugger.prototype.generateOutput=function(a){this.isActive_&&this.output_(a.apply(a,[]))};sre.Debugger.prototype.exit=function(a){this.isActive_&&this.stream_&&this.stream_.end("","",a||function(){})};sre.Grammar=function(){this.parameters_={};this.corrections_={};this.preprocessors_={};this.stateStack_=[];this.currentFlags={}};goog.addSingletonGetter(sre.Grammar);sre.Grammar.ATTRIBUTE="grammar";sre.Grammar.prototype.clear=function(){this.parameters_={};this.stateStack_=[]};sre.Grammar.prototype.setParameter=function(a,b){var c=this.parameters_[a];b?this.parameters_[a]=b:delete this.parameters_[a];return c};sre.Grammar.prototype.getParameter=function(a){return this.parameters_[a]};
sre.Grammar.prototype.setCorrection=function(a,b){this.corrections_[a]=b};sre.Grammar.prototype.setPreprocessor=function(a,b){this.preprocessors_[a]=b};sre.Grammar.prototype.getCorrection=function(a){return this.corrections_[a]};sre.Grammar.prototype.getState=function(){var a=[],b;for(b in this.parameters_){var c=this.parameters_[b];a.push("string"===typeof c?b+":"+c:b)}return a.join(" ")};sre.Grammar.prototype.pushState=function(a){for(var b in a)a[b]=this.setParameter(b,a[b]);this.stateStack_.push(a)};
sre.Grammar.prototype.popState=function(){var a=this.stateStack_.pop(),b;for(b in a)this.setParameter(b,a[b])};sre.Grammar.prototype.setAttribute=function(a){if(a&&a.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE){var b=this.getState();b&&a.setAttribute(sre.Grammar.ATTRIBUTE,b)}};sre.Grammar.prototype.preprocess=function(a){return this.runProcessors_(a,this.preprocessors_)};sre.Grammar.prototype.correct=function(a){return this.runProcessors_(a,this.corrections_)};
sre.Grammar.prototype.runProcessors_=function(a,b){for(var c in this.parameters_){var d=b[c];if(d){var e=this.parameters_[c];a=!0===e?d(a):d(a,e)}}return a};sre.Grammar.translateString_=function(a){a=sre.Grammar.prepareUnit_(a);var b=sre.Engine.getInstance();a=b.evaluator(a,b.dynamicCstr)||a;return sre.Grammar.cleanUnit_(a)};sre.Grammar.prepareUnit_=function(a){var b=a.match(/:unit$/);return b?a.slice(0,b.index).replace(/\s+/g," ")+a.slice(b.index):a};
sre.Grammar.cleanUnit_=function(a){return a.match(/:unit$/)?(sre.Grammar.getInstance().setParameter("plural",!1),a.replace(/:unit$/,"")):a};
sre.Grammar.prototype.apply=function(a,b){this.currentFlags=b||{};a=this.currentFlags.adjust||this.currentFlags.preprocess?sre.Grammar.getInstance().preprocess(a):a;if(this.parameters_.translate||this.currentFlags.translate)a=sre.Grammar.translateString_(a);a=this.currentFlags.adjust||this.currentFlags.correct?sre.Grammar.getInstance().correct(a):a;this.currentFlags={};return a};
sre.Grammar.parseState=function(a){var b={};a=a.split(" ");for(var c=0,d=a.length;c<d;c++){var e=a[c].split(":"),f=e[1];b[e[0]]=f?f:!0}return b};sre.Grammar.parseInput=function(a){var b={};a=a.split(":");for(var c=0,d=a.length;c<d;c++){var e=a[c].split("="),f=e[0].trim();e[1]?b[f]=e[1].trim():f.match(/^!/)?b[f.slice(1)]=!1:b[f]=!0}return b};sre.Grammar.correctFont_=function(a,b){if(!b||!a)return a;b=sre.Messages.MS_FUNC.FONT_REGEXP(sre.Locale.localFont(b));return a.replace(b,"")};
sre.Grammar.addAnnotation_=function(a,b){return a+":"+b};sre.Grammar.noTranslateText_=function(a){a.match(new RegExp("^["+sre.Messages.REGEXP.TEXT+"]+$"))&&(sre.Grammar.getInstance().currentFlags.translate=!1);return a};sre.Grammar.getInstance().setCorrection("ignoreFont",sre.Grammar.correctFont_);sre.Grammar.getInstance().setPreprocessor("annotation",sre.Grammar.addAnnotation_);sre.Grammar.getInstance().setPreprocessor("noTranslateText",sre.Grammar.noTranslateText_);
sre.Grammar.getInstance().setCorrection("ignoreCaps",sre.Grammar.correctFont_);sre.XpathUtil={};sre.XpathUtil.xpathSupported=function(){return"undefined"==typeof XPathResult?!1:!0};sre.XpathUtil.currentDocument=null;sre.XpathUtil.xpathEvaluate=sre.XpathUtil.xpathSupported()?document.evaluate:sre.SystemExternal.xpath.evaluate;sre.XpathUtil.xpathResult=sre.XpathUtil.xpathSupported()?XPathResult:sre.SystemExternal.xpath.XPathResult;sre.XpathUtil.createNSResolver=sre.XpathUtil.xpathSupported()?document.createNSResolver:sre.SystemExternal.xpath.createNSResolver;
sre.XpathUtil.nameSpaces_={xhtml:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",mml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};sre.XpathUtil.resolveNameSpace=function(a){return sre.XpathUtil.nameSpaces_[a]||null};sre.XpathUtil.resolver_=function(){this.lookupNamespaceURI=sre.XpathUtil.resolveNameSpace};
sre.XpathUtil.evaluateXpath_=function(a,b,c){var d=sre.Engine.getInstance();return d.mode!==sre.Engine.Mode.HTTP||d.isIE||d.isEdge?sre.XpathUtil.xpathEvaluate(a,b,new sre.XpathUtil.resolver_,c,null):sre.XpathUtil.currentDocument.evaluate(a,b,sre.XpathUtil.resolveNameSpace,c,null)};sre.XpathUtil.evalXPath=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.ORDERED_NODE_ITERATOR_TYPE)}catch(d){return[]}a=[];for(b=c.iterateNext();b;b=c.iterateNext())a.push(b);return a};
sre.XpathUtil.getLeafNodes=function(a){return sre.XpathUtil.evalXPath(".//*[count(*)=0]",a)};sre.XpathUtil.evaluateBoolean=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.BOOLEAN_TYPE)}catch(d){return!1}return c.booleanValue};sre.XpathUtil.evaluateString=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.STRING_TYPE)}catch(d){return""}return c.stringValue};sre.DomUtil={};sre.DomUtil.toArray=function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b};sre.DomUtil.trimInput_=function(a){a=a.replace(/&nbsp;/g,"\u00a0");return a.replace(/>[ \f\n\r\t\v\u200b]+</g,"><").trim()};sre.DomUtil.XML_ENTITIES={"&lt;":!0,"&gt;":!0,"&amp;":!0,"&quot;":!0,"&apos;":!0};
sre.DomUtil.parseInput=function(a,b){b=b||sre.Engine.Error;var c=new sre.SystemExternal.xmldom.DOMParser;a=sre.DomUtil.trimInput_(a);var d=!!a.match(/&(?!lt|gt|amp|quot|apos)\w+;/g);if(!a)throw new b("Empty input!");try{var e=c.parseFromString(a,d?"text/html":"text/xml");return sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP?(sre.XpathUtil.currentDocument=e,d?e.body.childNodes[0]:e.documentElement):e.documentElement}catch(f){throw new b("Illegal input: "+f.message);}};
sre.DomUtil.NodeType={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};sre.DomUtil.replaceNode=function(a,b){a.parentNode&&(a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a))};sre.DomUtil.createElement=function(a){return sre.SystemExternal.document.createElement(a)};
sre.DomUtil.createElementNS=function(a,b){return sre.SystemExternal.document.createElementNS(a,b)};sre.DomUtil.createTextNode=function(a){return sre.SystemExternal.document.createTextNode(a)};
sre.DomUtil.formatXml=function(a){var b="",c=/(>)(<)(\/*)/g;a=a.replace(c,"$1\r\n$2$3");var d=0;a=a.split("\r\n");c=/(\.)*(<)(\/*)/g;for(a=a.map(function(h){return h.replace(c,"$1\r\n$2$3").split("\r\n")}).reduce(function(h,k){return h.concat(k)},[]);a.length;){var e=a.shift();if(e){var f=0;if(e.match(/^<\w[^>\/]*>[^>]+$/)){var g=sre.DomUtil.matchingStartEnd_(e,a[0]);g[0]?g[1]?(e+=a.shift().slice(0,-g[1].length),g[1].trim()&&a.unshift(g[1])):e+=a.shift():f=1}else e.match(/^<\/\w/)?0!=d&&--d:e.match(/^<\w[^>]*[^\/]>.*$/)?
f=1:e.match(/^<\w[^>]*\/>.+$/)?(g=e.indexOf(">")+1,e.slice(g).trim()&&a.unshift(),e=e.slice(0,g)):f=0;b+=Array(d+1).join("  ")+e+"\r\n";d+=f}}return b};sre.DomUtil.matchingStartEnd_=function(a,b){if(!b)return[!1,""];a=a.match(/^<([^> ]+).*>/);b=b.match(/^<\/([^>]+)>(.*)/);return a&&b&&a[1]===b[1]?[!0,b[2]]:[!1,""]};sre.DomUtil.dataAttribute=function(a){a.match(/^data-/)&&(a=a.substr(5));return a.replace(/-([a-z])/g,function(b,c){return c.toUpperCase()})};
sre.DomUtil.getDataAttribute=function(a,b){return a.dataset?a.dataset[sre.DomUtil.dataAttribute(b)]:a.getAttribute(b)};sre.DomUtil.querySelectorAllByAttr=function(a,b){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll("["+b+"]")):sre.XpathUtil.evalXPath(".//*[@"+b+"]",a)};sre.DomUtil.querySelectorAllByAttrValue=function(a,b,c){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll("["+b+'="'+c+'"]')):sre.XpathUtil.evalXPath(".//*[@"+b+'="'+c+'"]',a)};
sre.DomUtil.querySelectorAll=function(a,b){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(b)):sre.XpathUtil.evalXPath(".//"+b,a)};sre.DomUtil.tagName=function(a){return a.tagName.toUpperCase()};sre.Numbers={};sre.Numbers.identityTransformer_=function(a){return a.toString()};sre.Numbers.pluralTransformer_=function(a,b){return a.toString()};sre.Numbers.NUMBERS={wordOrdinal:sre.Numbers.identityTransformer_,simpleOrdinal:sre.Numbers.identityTransformer_,numberToWords:sre.Numbers.identityTransformer_,numberToOrdinal:sre.Numbers.pluralTransformer_,vulgarSep:" ",numSep:" "};sre.Messages={};sre.Messages.MS={START:"",FRAC_V:"",FRAC_B:"",FRAC_S:"",END:"",FRAC_OVER:"",TWICE:"",NEST_FRAC:"",ENDFRAC:"",SUPER:"",SUB:"",SUP:"",SUPERSCRIPT:"",SUBSCRIPT:"",BASELINE:"",BASE:"",NESTED:"",NEST_ROOT:"",STARTROOT:"",ENDROOT:"",ROOTINDEX:"",ROOT:"",INDEX:"",UNDER:"",UNDERSCRIPT:"",OVER:"",OVERSCRIPT:""};sre.Messages.MS_FUNC={FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return""},COMBINE_ROOT_INDEX:function(a,b){return a}};sre.Messages.MS_ROOT_INDEX={};
sre.Messages.FONT={bold:"","bold-fraktur":"","bold-italic":"","bold-script":"",caligraphic:"","caligraphic-bold":"","double-struck":"","double-struck-italic":"",fraktur:"",italic:"",monospace:"",normal:"",oldstyle:"","oldstyle-bold":"",script:"","sans-serif":"","sans-serif-italic":"","sans-serif-bold":"","sans-serif-bold-italic":"",unknown:""};
sre.Messages.EMBELLISH={"super":"",sub:"",circled:"",parenthesized:"",period:"","negative-circled":"","double-circled":"","circled-sans-serif":"","negative-circled-sans-serif":"",blackboard:"",comma:"",squared:"","negative-squared":""};
sre.Messages.ROLE={addition:"",multiplication:"",subtraction:"",division:"",equality:"",inequality:"",element:"",arrow:"",determinant:"",rowvector:"",binomial:"",squarematrix:"","set empty":"","set extended":"","set singleton":"","set collection":"",label:"",multiline:"",matrix:"",vector:"",cases:"",table:"",unknown:""};
sre.Messages.ENCLOSE={longdiv:"",actuarial:"",radical:"",box:"",roundedbox:"",circle:"",left:"",right:"",top:"",bottom:"",updiagonalstrike:"",downdiagonalstrike:"",verticalstrike:"",horizontalstrike:"",madruwb:"",updiagonalarrow:"",phasorangle:"",unknown:""};sre.Messages.NAVIGATE={COLLAPSIBLE:"",EXPANDABLE:"",LEVEL:""};sre.Messages.REGEXP={TEXT:"a-zA-Z",NUMBER:"",DECIMAL_MARK:"",DIGIT_GROUP:"",JOINER_SUBSUPER:" "};sre.Messages.PLURAL_UNIT={};
sre.Messages.PLURAL=function(a){return/.*s$/.test(a)?a:a+"s"};sre.Messages.UNIT_TIMES="";sre.Messages.NUMBERS=sre.Numbers.NUMBERS;sre.Messages.ALPHABETS={latinSmall:[],latinCap:[],greekSmall:[],greekCap:[]};sre.Messages.ALPHABET_PREFIXES={capPrefix:{default:""},smallPrefix:{default:""},digitPrefix:{default:""}};sre.Messages.identityTransformer_=function(a){return a.toString()};sre.Messages.ALPHABET_TRANSFORMERS={digit:{default:sre.Messages.identityTransformer_},letter:{default:sre.Messages.identityTransformer_}};
sre.Messages.ALPHABET_COMBINER=function(a,b,c){return a};sre.NumbersUtil={};sre.NumbersUtil.ordinalCounter=function(a,b){var c=0;return function(){return sre.Messages.NUMBERS.simpleOrdinal(++c)+" "+b}};
sre.NumbersUtil.convertVulgarFraction_=function(a){if(!a.childNodes||!a.childNodes[0]||!a.childNodes[0].childNodes||2>a.childNodes[0].childNodes.length||a.childNodes[0].childNodes[0].tagName!==sre.SemanticAttr.Type.NUMBER||a.childNodes[0].childNodes[0].getAttribute("role")!==sre.SemanticAttr.Role.INTEGER||a.childNodes[0].childNodes[1].tagName!==sre.SemanticAttr.Type.NUMBER||a.childNodes[0].childNodes[1].getAttribute("role")!==sre.SemanticAttr.Role.INTEGER)return{convertible:!1,content:a.textContent};
var b=a.childNodes[0].childNodes[1].textContent;a=a.childNodes[0].childNodes[0].textContent;var c=Number(b),d=Number(a);return isNaN(c)||isNaN(d)?{convertible:!1,content:a+" "+sre.Messages.MS.FRAC_OVER+" "+b}:{convertible:!0,enumerator:d,denominator:c}};
sre.NumbersUtil.vulgarFraction=function(a){a=sre.NumbersUtil.convertVulgarFraction_(a);return a.convertible&&a.enumerator&&a.denominator?sre.Messages.NUMBERS.numberToWords(a.enumerator)+sre.Messages.NUMBERS.vulgarSep+sre.Messages.NUMBERS.numberToOrdinal(a.denominator,1!==a.enumerator):a.content||""};sre.NumbersUtil.vulgarFractionSmall=function(a,b,c){var d=sre.NumbersUtil.convertVulgarFraction_(a);return d.convertible?(a=d.enumerator,d=d.denominator,0<a&&a<b&&0<d&&d<c):!1};
sre.NumbersUtil.ordinalPosition=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes);return sre.Messages.NUMBERS.simpleOrdinal(b.indexOf(a)+1).toString()};sre.SemanticUtil=function(){};sre.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};sre.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];a.forEach(function(c){for(var d in c)b.push(c[d])});return b};
sre.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};sre.SemanticUtil.numberToUnicode=function(a){return 65536>a?String.fromCharCode(a):String.fromCharCode((a-65536)/1024+55296,(a-65536)%1024+56320)};
sre.SemanticUtil.splitUnicode=function(a){a=a.split("");for(var b=[],c=0,d;d=a[c];c++)"\ud800"<=d&&"\udbff">=d&&a[c+1]?b.push(d+a[++c]):b.push(d);return b};sre.SemanticUtil.LEAFTAGS=["MO","MI","MN","MTEXT","MS"];sre.SemanticUtil.IGNORETAGS="MERROR MPHANTOM MSPACE MALIGNGROUP MALIGNMARK MPRESCRIPTS ANNOTATION ANNOTATION-XML".split(" ");sre.SemanticUtil.EMPTYTAGS="MATH MROW MPADDED MACTION NONE MSTYLE SEMANTICS".split(" ");sre.SemanticUtil.hasMathTag=function(a){return!!a&&"MATH"===sre.DomUtil.tagName(a)};
sre.SemanticUtil.hasIgnoreTag=function(a){return!!a&&-1!==sre.SemanticUtil.IGNORETAGS.indexOf(sre.DomUtil.tagName(a))};sre.SemanticUtil.hasEmptyTag=function(a){return!!a&&-1!==sre.SemanticUtil.EMPTYTAGS.indexOf(sre.DomUtil.tagName(a))};sre.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=sre.DomUtil.tagName(d);-1!=sre.SemanticUtil.IGNORETAGS.indexOf(e)||-1!=sre.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d)}return b};
sre.SemanticUtil.isZeroLength=function(a){return a?-1!=="negativeveryverythinmathspace negativeverythinmathspace negativethinmathspace negativemediummathspace negativethickmathspace negativeverythickmathspace negativeveryverythickmathspace".split(" ").indexOf(a)?!0:(a=a.match(/[0-9\.]+/))?0===parseFloat(a)?!0:!1:!1:!1};sre.SemanticAttr=function(){this.generalPunctuations='!"#%&:;?@\\\u00a1\u00a7\u00b6\u00bf\u2017\u2020\u2021\u2022\u2023\u2024\u2025\u2027\u2030\u2031\u2038\u203b\u203c\u203d\u203e\u2041\u2042\u2043\u2047\u2048\u2049\u204b\u204c\u204d\u204e\u204f\u2050\u2051\u2053\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\ufe10\ufe13\ufe14\ufe15\ufe16\ufe30\ufe45\ufe46\ufe49\ufe4a\ufe4b\ufe4c\ufe50\ufe54\ufe55\ufe56\ufe57\ufe5f\ufe60\ufe61\ufe68\ufe6a\ufe6b\uff01\uff02\uff03\uff05\uff06\uff07\uff0a\uff0c\uff0f\uff1a\uff1b\uff1f\uff20\uff3c'.split("");
this.colons=[":","\uff1a","\ufe55"];this.invisibleComma_=sre.SemanticUtil.numberToUnicode(8291);this.commas=[",",this.invisibleComma_];this.ellipses="\u2026\u22ee\u22ef\u22f0\u22f1\ufe19".split("");this.fullStops=[".","\ufe52","\uff0e"];this.dashes="\u2012\u2013\u2014\u2015\u301c\ufe31\ufe32\ufe58".split("");this.primes="'\u2032\u2033\u2034\u2035\u2036\u2037\u2057".split("");this.degrees=["\u00b0"];this.openClosePairs={"(":")","[":"]","{":"}","\u2045":"\u2046","\u2329":"\u232a","\u2768":"\u2769",
"\u276a":"\u276b","\u276c":"\u276d","\u276e":"\u276f","\u2770":"\u2771","\u2772":"\u2773","\u2774":"\u2775","\u27c5":"\u27c6","\u27e6":"\u27e7","\u27e8":"\u27e9","\u27ea":"\u27eb","\u27ec":"\u27ed","\u27ee":"\u27ef","\u2983":"\u2984","\u2985":"\u2986","\u2987":"\u2988","\u2989":"\u298a","\u298b":"\u298c","\u298d":"\u298e","\u298f":"\u2990","\u2991":"\u2992","\u2993":"\u2994","\u2995":"\u2996","\u2997":"\u2998","\u29d8":"\u29d9","\u29da":"\u29db","\u29fc":"\u29fd","\u2e22":"\u2e23","\u2e24":"\u2e25",
"\u2e26":"\u2e27","\u2e28":"\u2e29","\u3008":"\u3009","\u300a":"\u300b","\u300c":"\u300d","\u300e":"\u300f","\u3010":"\u3011","\u3014":"\u3015","\u3016":"\u3017","\u3018":"\u3019","\u301a":"\u301b","\u301d":"\u301e","\ufd3e":"\ufd3f","\ufe17":"\ufe18","\ufe59":"\ufe5a","\ufe5b":"\ufe5c","\ufe5d":"\ufe5e","\uff08":"\uff09","\uff3b":"\uff3d","\uff5b":"\uff5d","\uff5f":"\uff60","\uff62":"\uff63","\u2308":"\u2309","\u230a":"\u230b","\u230c":"\u230d","\u230e":"\u230f","\u231c":"\u231d","\u231e":"\u231f",
"\u239b":"\u239e","\u239c":"\u239f","\u239d":"\u23a0","\u23a1":"\u23a4","\u23a2":"\u23a5","\u23a3":"\u23a6","\u23a7":"\u23ab","\u23a8":"\u23ac","\u23a9":"\u23ad","\u23b0":"\u23b1","\u23b8":"\u23b9"};this.topBottomPairs={"\u23b4":"\u23b5","\u23dc":"\u23dd","\u23de":"\u23df","\u23e0":"\u23e1","\ufe35":"\ufe36","\ufe37":"\ufe38","\ufe39":"\ufe3a","\ufe3b":"\ufe3c","\ufe3d":"\ufe3e","\ufe3f":"\ufe40","\ufe41":"\ufe42","\ufe43":"\ufe44","\ufe47":"\ufe48"};this.leftFences=sre.SemanticUtil.objectsToKeys(this.openClosePairs);
this.rightFences=sre.SemanticUtil.objectsToValues(this.openClosePairs);this.rightFences.push("\u301f");this.topFences=sre.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=sre.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences="|\u00a6\u2016\u2758\u2980\u2af4\uffe4\uff5c".split("");this.allFences=this.neutralFences.concat(this.leftFences,this.rightFences,this.topFences,this.bottomFences);this.capitalLatin="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");this.smallLatin="abcdefghijklmnopqrstuvwxyz\u0131\u0237".split("");
this.capitalLatinFullWidth="\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a".split("");this.smallLatinFullWidth="\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a".split("");this.capitalLatinBold="\ud835\udc00 \ud835\udc01 \ud835\udc02 \ud835\udc03 \ud835\udc04 \ud835\udc05 \ud835\udc06 \ud835\udc07 \ud835\udc08 \ud835\udc09 \ud835\udc0a \ud835\udc0b \ud835\udc0c \ud835\udc0d \ud835\udc0e \ud835\udc0f \ud835\udc10 \ud835\udc11 \ud835\udc12 \ud835\udc13 \ud835\udc14 \ud835\udc15 \ud835\udc16 \ud835\udc17 \ud835\udc18 \ud835\udc19".split(" ");
this.smallLatinBold="\ud835\udc1a \ud835\udc1b \ud835\udc1c \ud835\udc1d \ud835\udc1e \ud835\udc1f \ud835\udc20 \ud835\udc21 \ud835\udc22 \ud835\udc23 \ud835\udc24 \ud835\udc25 \ud835\udc26 \ud835\udc27 \ud835\udc28 \ud835\udc29 \ud835\udc2a \ud835\udc2b \ud835\udc2c \ud835\udc2d \ud835\udc2e \ud835\udc2f \ud835\udc30 \ud835\udc31 \ud835\udc32 \ud835\udc33".split(" ");this.capitalLatinItalic="\ud835\udc34 \ud835\udc35 \ud835\udc36 \ud835\udc37 \ud835\udc38 \ud835\udc39 \ud835\udc3a \ud835\udc3b \ud835\udc3c \ud835\udc3d \ud835\udc3e \ud835\udc3f \ud835\udc40 \ud835\udc41 \ud835\udc42 \ud835\udc43 \ud835\udc44 \ud835\udc45 \ud835\udc46 \ud835\udc47 \ud835\udc48 \ud835\udc49 \ud835\udc4a \ud835\udc4b \ud835\udc4c \ud835\udc4d".split(" ");
this.smallLatinItalic="\ud835\udc4e \ud835\udc4f \ud835\udc50 \ud835\udc51 \ud835\udc52 \ud835\udc53 \ud835\udc54 \u210e \ud835\udc56 \ud835\udc57 \ud835\udc58 \ud835\udc59 \ud835\udc5a \ud835\udc5b \ud835\udc5c \ud835\udc5d \ud835\udc5e \ud835\udc5f \ud835\udc60 \ud835\udc61 \ud835\udc62 \ud835\udc63 \ud835\udc64 \ud835\udc65 \ud835\udc66 \ud835\udc67 \ud835\udea4 \ud835\udea5".split(" ");this.capitalLatinBoldItalic="\ud835\udc68 \ud835\udc69 \ud835\udc6a \ud835\udc6b \ud835\udc6c \ud835\udc6d \ud835\udc6e \ud835\udc6f \ud835\udc70 \ud835\udc71 \ud835\udc72 \ud835\udc73 \ud835\udc74 \ud835\udc75 \ud835\udc76 \ud835\udc77 \ud835\udc78 \ud835\udc79 \ud835\udc7a \ud835\udc7b \ud835\udc7c \ud835\udc7d \ud835\udc7e \ud835\udc7f \ud835\udc80 \ud835\udc81".split(" ");
this.smallLatinBoldItalic="\ud835\udc82 \ud835\udc83 \ud835\udc84 \ud835\udc85 \ud835\udc86 \ud835\udc87 \ud835\udc88 \ud835\udc89 \ud835\udc8a \ud835\udc8b \ud835\udc8c \ud835\udc8d \ud835\udc8e \ud835\udc8f \ud835\udc90 \ud835\udc91 \ud835\udc92 \ud835\udc93 \ud835\udc94 \ud835\udc95 \ud835\udc96 \ud835\udc97 \ud835\udc98 \ud835\udc99 \ud835\udc9a \ud835\udc9b".split(" ");this.capitalLatinScript="\ud835\udc9c \u212c \ud835\udc9e \ud835\udc9f \u2130 \u2131 \ud835\udca2 \u210b \u2110 \ud835\udca5 \ud835\udca6 \u2112 \u2133 \ud835\udca9 \ud835\udcaa \ud835\udcab \ud835\udcac \u211b \ud835\udcae \ud835\udcaf \ud835\udcb0 \ud835\udcb1 \ud835\udcb2 \ud835\udcb3 \ud835\udcb4 \ud835\udcb5 \u2118".split(" ");
this.smallLatinScript="\ud835\udcb6 \ud835\udcb7 \ud835\udcb8 \ud835\udcb9 \u212f \ud835\udcbb \u210a \ud835\udcbd \ud835\udcbe \ud835\udcbf \ud835\udcc0 \ud835\udcc1 \ud835\udcc2 \ud835\udcc3 \u2134 \ud835\udcc5 \ud835\udcc6 \ud835\udcc7 \ud835\udcc8 \ud835\udcc9 \ud835\udcca \ud835\udccb \ud835\udccc \ud835\udccd \ud835\udcce \ud835\udccf \u2113".split(" ");this.capitalLatinBoldScript="\ud835\udcd0 \ud835\udcd1 \ud835\udcd2 \ud835\udcd3 \ud835\udcd4 \ud835\udcd5 \ud835\udcd6 \ud835\udcd7 \ud835\udcd8 \ud835\udcd9 \ud835\udcda \ud835\udcdb \ud835\udcdc \ud835\udcdd \ud835\udcde \ud835\udcdf \ud835\udce0 \ud835\udce1 \ud835\udce2 \ud835\udce3 \ud835\udce4 \ud835\udce5 \ud835\udce6 \ud835\udce7 \ud835\udce8 \ud835\udce9".split(" ");
this.smallLatinBoldScript="\ud835\udcea \ud835\udceb \ud835\udcec \ud835\udced \ud835\udcee \ud835\udcef \ud835\udcf0 \ud835\udcf1 \ud835\udcf2 \ud835\udcf3 \ud835\udcf4 \ud835\udcf5 \ud835\udcf6 \ud835\udcf7 \ud835\udcf8 \ud835\udcf9 \ud835\udcfa \ud835\udcfb \ud835\udcfc \ud835\udcfd \ud835\udcfe \ud835\udcff \ud835\udd00 \ud835\udd01 \ud835\udd02 \ud835\udd03".split(" ");this.capitalLatinFraktur="\ud835\udd04 \ud835\udd05 \u212d \ud835\udd07 \ud835\udd08 \ud835\udd09 \ud835\udd0a \u210c \u2111 \ud835\udd0d \ud835\udd0e \ud835\udd0f \ud835\udd10 \ud835\udd11 \ud835\udd12 \ud835\udd13 \ud835\udd14 \u211c \ud835\udd16 \ud835\udd17 \ud835\udd18 \ud835\udd19 \ud835\udd1a \ud835\udd1b \ud835\udd1c \u2128".split(" ");
this.smallLatinFraktur="\ud835\udd1e \ud835\udd1f \ud835\udd20 \ud835\udd21 \ud835\udd22 \ud835\udd23 \ud835\udd24 \ud835\udd25 \ud835\udd26 \ud835\udd27 \ud835\udd28 \ud835\udd29 \ud835\udd2a \ud835\udd2b \ud835\udd2c \ud835\udd2d \ud835\udd2e \ud835\udd2f \ud835\udd30 \ud835\udd31 \ud835\udd32 \ud835\udd33 \ud835\udd34 \ud835\udd35 \ud835\udd36 \ud835\udd37".split(" ");this.capitalLatinDoubleStruck="\ud835\udd38 \ud835\udd39 \u2102 \ud835\udd3b \ud835\udd3c \ud835\udd3d \ud835\udd3e \u210d \ud835\udd40 \ud835\udd41 \ud835\udd42 \ud835\udd43 \ud835\udd44 \u2115 \ud835\udd46 \u2119 \u211a \u211d \ud835\udd4a \ud835\udd4b \ud835\udd4c \ud835\udd4d \ud835\udd4e \ud835\udd4f \ud835\udd50 \u2124".split(" ");
this.smallLatinDoubleStruck="\ud835\udd52 \ud835\udd53 \ud835\udd54 \ud835\udd55 \ud835\udd56 \ud835\udd57 \ud835\udd58 \ud835\udd59 \ud835\udd5a \ud835\udd5b \ud835\udd5c \ud835\udd5d \ud835\udd5e \ud835\udd5f \ud835\udd60 \ud835\udd61 \ud835\udd62 \ud835\udd63 \ud835\udd64 \ud835\udd65 \ud835\udd66 \ud835\udd67 \ud835\udd68 \ud835\udd69 \ud835\udd6a \ud835\udd6b".split(" ");this.capitalLatinBoldFraktur="\ud835\udd6c \ud835\udd6d \ud835\udd6e \ud835\udd6f \ud835\udd70 \ud835\udd71 \ud835\udd72 \ud835\udd73 \ud835\udd74 \ud835\udd75 \ud835\udd76 \ud835\udd77 \ud835\udd78 \ud835\udd79 \ud835\udd7a \ud835\udd7b \ud835\udd7c \ud835\udd7d \ud835\udd7e \ud835\udd7f \ud835\udd80 \ud835\udd81 \ud835\udd82 \ud835\udd83 \ud835\udd84 \ud835\udd85".split(" ");
this.smallLatinBoldFraktur="\ud835\udd86 \ud835\udd87 \ud835\udd88 \ud835\udd89 \ud835\udd8a \ud835\udd8b \ud835\udd8c \ud835\udd8d \ud835\udd8e \ud835\udd8f \ud835\udd90 \ud835\udd91 \ud835\udd92 \ud835\udd93 \ud835\udd94 \ud835\udd95 \ud835\udd96 \ud835\udd97 \ud835\udd98 \ud835\udd99 \ud835\udd9a \ud835\udd9b \ud835\udd9c \ud835\udd9d \ud835\udd9e \ud835\udd9f".split(" ");this.capitalLatinSansSerif="\ud835\udda0 \ud835\udda1 \ud835\udda2 \ud835\udda3 \ud835\udda4 \ud835\udda5 \ud835\udda6 \ud835\udda7 \ud835\udda8 \ud835\udda9 \ud835\uddaa \ud835\uddab \ud835\uddac \ud835\uddad \ud835\uddae \ud835\uddaf \ud835\uddb0 \ud835\uddb1 \ud835\uddb2 \ud835\uddb3 \ud835\uddb4 \ud835\uddb5 \ud835\uddb6 \ud835\uddb7 \ud835\uddb8 \ud835\uddb9".split(" ");
this.smallLatinSansSerif="\ud835\uddba \ud835\uddbb \ud835\uddbc \ud835\uddbd \ud835\uddbe \ud835\uddbf \ud835\uddc0 \ud835\uddc1 \ud835\uddc2 \ud835\uddc3 \ud835\uddc4 \ud835\uddc5 \ud835\uddc6 \ud835\uddc7 \ud835\uddc8 \ud835\uddc9 \ud835\uddca \ud835\uddcb \ud835\uddcc \ud835\uddcd \ud835\uddce \ud835\uddcf \ud835\uddd0 \ud835\uddd1 \ud835\uddd2 \ud835\uddd3".split(" ");this.capitalLatinSansSerifBold="\ud835\uddd4 \ud835\uddd5 \ud835\uddd6 \ud835\uddd7 \ud835\uddd8 \ud835\uddd9 \ud835\uddda \ud835\udddb \ud835\udddc \ud835\udddd \ud835\uddde \ud835\udddf \ud835\udde0 \ud835\udde1 \ud835\udde2 \ud835\udde3 \ud835\udde4 \ud835\udde5 \ud835\udde6 \ud835\udde7 \ud835\udde8 \ud835\udde9 \ud835\uddea \ud835\uddeb \ud835\uddec \ud835\udded".split(" ");
this.smallLatinSansSerifBold="\ud835\uddee \ud835\uddef \ud835\uddf0 \ud835\uddf1 \ud835\uddf2 \ud835\uddf3 \ud835\uddf4 \ud835\uddf5 \ud835\uddf6 \ud835\uddf7 \ud835\uddf8 \ud835\uddf9 \ud835\uddfa \ud835\uddfb \ud835\uddfc \ud835\uddfd \ud835\uddfe \ud835\uddff \ud835\ude00 \ud835\ude01 \ud835\ude02 \ud835\ude03 \ud835\ude04 \ud835\ude05 \ud835\ude06 \ud835\ude07".split(" ");this.capitalLatinSansSerifItalic="\ud835\ude08 \ud835\ude09 \ud835\ude0a \ud835\ude0b \ud835\ude0c \ud835\ude0d \ud835\ude0e \ud835\ude0f \ud835\ude10 \ud835\ude11 \ud835\ude12 \ud835\ude13 \ud835\ude14 \ud835\ude15 \ud835\ude16 \ud835\ude17 \ud835\ude18 \ud835\ude19 \ud835\ude1a \ud835\ude1b \ud835\ude1c \ud835\ude1d \ud835\ude1e \ud835\ude1f \ud835\ude20 \ud835\ude21".split(" ");
this.smallLatinSansSerifItalic="\ud835\ude22 \ud835\ude23 \ud835\ude24 \ud835\ude25 \ud835\ude26 \ud835\ude27 \ud835\ude28 \ud835\ude29 \ud835\ude2a \ud835\ude2b \ud835\ude2c \ud835\ude2d \ud835\ude2e \ud835\ude2f \ud835\ude30 \ud835\ude31 \ud835\ude32 \ud835\ude33 \ud835\ude34 \ud835\ude35 \ud835\ude36 \ud835\ude37 \ud835\ude38 \ud835\ude39 \ud835\ude3a \ud835\ude3b".split(" ");this.capitalLatinSansSerifBoldItalic="\ud835\ude3c \ud835\ude3d \ud835\ude3e \ud835\ude3f \ud835\ude40 \ud835\ude41 \ud835\ude42 \ud835\ude43 \ud835\ude44 \ud835\ude45 \ud835\ude46 \ud835\ude47 \ud835\ude48 \ud835\ude49 \ud835\ude4a \ud835\ude4b \ud835\ude4c \ud835\ude4d \ud835\ude4e \ud835\ude4f \ud835\ude50 \ud835\ude51 \ud835\ude52 \ud835\ude53 \ud835\ude54 \ud835\ude55".split(" ");
this.smallLatinSansSerifBoldItalic="\ud835\ude56 \ud835\ude57 \ud835\ude58 \ud835\ude59 \ud835\ude5a \ud835\ude5b \ud835\ude5c \ud835\ude5d \ud835\ude5e \ud835\ude5f \ud835\ude60 \ud835\ude61 \ud835\ude62 \ud835\ude63 \ud835\ude64 \ud835\ude65 \ud835\ude66 \ud835\ude67 \ud835\ude68 \ud835\ude69 \ud835\ude6a \ud835\ude6b \ud835\ude6c \ud835\ude6d \ud835\ude6e \ud835\ude6f".split(" ");this.capitalLatinMonospace="\ud835\ude70 \ud835\ude71 \ud835\ude72 \ud835\ude73 \ud835\ude74 \ud835\ude75 \ud835\ude76 \ud835\ude77 \ud835\ude78 \ud835\ude79 \ud835\ude7a \ud835\ude7b \ud835\ude7c \ud835\ude7d \ud835\ude7e \ud835\ude7f \ud835\ude80 \ud835\ude81 \ud835\ude82 \ud835\ude83 \ud835\ude84 \ud835\ude85 \ud835\ude86 \ud835\ude87 \ud835\ude88 \ud835\ude89".split(" ");
this.smallLatinMonospace="\ud835\ude8a \ud835\ude8b \ud835\ude8c \ud835\ude8d \ud835\ude8e \ud835\ude8f \ud835\ude90 \ud835\ude91 \ud835\ude92 \ud835\ude93 \ud835\ude94 \ud835\ude95 \ud835\ude96 \ud835\ude97 \ud835\ude98 \ud835\ude99 \ud835\ude9a \ud835\ude9b \ud835\ude9c \ud835\ude9d \ud835\ude9e \ud835\ude9f \ud835\udea0 \ud835\udea1 \ud835\udea2 \ud835\udea3".split(" ");this.latinDoubleStruckItalic=["\u2145","\u2146","\u2147","\u2148","\u2149"];this.capitalGreek="\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9".split("");
this.smallGreek="\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9".split("");this.capitalGreekBold="\ud835\udea8 \ud835\udea9 \ud835\udeaa \ud835\udeab \ud835\udeac \ud835\udead \ud835\udeae \ud835\udeaf \ud835\udeb0 \ud835\udeb1 \ud835\udeb2 \ud835\udeb3 \ud835\udeb4 \ud835\udeb5 \ud835\udeb6 \ud835\udeb7 \ud835\udeb8 \ud835\udeba \ud835\udebb \ud835\udebc \ud835\udebd \ud835\udebe \ud835\udebf \ud835\udec0".split(" ");
this.smallGreekBold="\ud835\udec2 \ud835\udec3 \ud835\udec4 \ud835\udec5 \ud835\udec6 \ud835\udec7 \ud835\udec8 \ud835\udec9 \ud835\udeca \ud835\udecb \ud835\udecc \ud835\udecd \ud835\udece \ud835\udecf \ud835\uded0 \ud835\uded1 \ud835\uded2 \ud835\uded3 \ud835\uded4 \ud835\uded5 \ud835\uded6 \ud835\uded7 \ud835\uded8 \ud835\uded9 \ud835\udeda".split(" ");this.capitalGreekItalic="\ud835\udee2 \ud835\udee3 \ud835\udee4 \ud835\udee5 \ud835\udee6 \ud835\udee7 \ud835\udee8 \ud835\udee9 \ud835\udeea \ud835\udeeb \ud835\udeec \ud835\udeed \ud835\udeee \ud835\udeef \ud835\udef0 \ud835\udef1 \ud835\udef2 \ud835\udef4 \ud835\udef5 \ud835\udef6 \ud835\udef7 \ud835\udef8 \ud835\udef9 \ud835\udefa".split(" ");
this.smallGreekItalic="\ud835\udefc \ud835\udefd \ud835\udefe \ud835\udeff \ud835\udf00 \ud835\udf01 \ud835\udf02 \ud835\udf03 \ud835\udf04 \ud835\udf05 \ud835\udf06 \ud835\udf07 \ud835\udf08 \ud835\udf09 \ud835\udf0a \ud835\udf0b \ud835\udf0c \ud835\udf0d \ud835\udf0e \ud835\udf0f \ud835\udf10 \ud835\udf11 \ud835\udf12 \ud835\udf13 \ud835\udf14".split(" ");this.capitalGreekBoldItalic="\ud835\udf1c \ud835\udf1d \ud835\udf1e \ud835\udf1f \ud835\udf20 \ud835\udf21 \ud835\udf22 \ud835\udf23 \ud835\udf24 \ud835\udf25 \ud835\udf26 \ud835\udf27 \ud835\udf28 \ud835\udf29 \ud835\udf2a \ud835\udf2b \ud835\udf2c \ud835\udf2e \ud835\udf2f \ud835\udf30 \ud835\udf31 \ud835\udf32 \ud835\udf33 \ud835\udf34".split(" ");
this.smallGreekBoldItalic="\ud835\udf36 \ud835\udf37 \ud835\udf38 \ud835\udf39 \ud835\udf3a \ud835\udf3b \ud835\udf3c \ud835\udf3d \ud835\udf3e \ud835\udf3f \ud835\udf40 \ud835\udf41 \ud835\udf42 \ud835\udf43 \ud835\udf44 \ud835\udf45 \ud835\udf46 \ud835\udf47 \ud835\udf48 \ud835\udf49 \ud835\udf4a \ud835\udf4b \ud835\udf4c \ud835\udf4d \ud835\udf4e".split(" ");this.capitalGreekSansSerifBold="\ud835\udf56 \ud835\udf57 \ud835\udf58 \ud835\udf59 \ud835\udf5a \ud835\udf5b \ud835\udf5c \ud835\udf5d \ud835\udf5e \ud835\udf5f \ud835\udf60 \ud835\udf61 \ud835\udf62 \ud835\udf63 \ud835\udf64 \ud835\udf65 \ud835\udf66 \ud835\udf68 \ud835\udf69 \ud835\udf6a \ud835\udf6b \ud835\udf6c \ud835\udf6d \ud835\udf6e".split(" ");
this.smallGreekSansSerifBold="\ud835\udf70 \ud835\udf71 \ud835\udf72 \ud835\udf73 \ud835\udf74 \ud835\udf75 \ud835\udf76 \ud835\udf77 \ud835\udf78 \ud835\udf79 \ud835\udf7a \ud835\udf7b \ud835\udf7c \ud835\udf7d \ud835\udf7e \ud835\udf7f \ud835\udf80 \ud835\udf81 \ud835\udf82 \ud835\udf83 \ud835\udf84 \ud835\udf85 \ud835\udf86 \ud835\udf87 \ud835\udf88".split(" ");this.capitalGreekSansSerifBoldItalic="\ud835\udf90 \ud835\udf91 \ud835\udf92 \ud835\udf93 \ud835\udf94 \ud835\udf95 \ud835\udf96 \ud835\udf97 \ud835\udf98 \ud835\udf99 \ud835\udf9a \ud835\udf9b \ud835\udf9c \ud835\udf9d \ud835\udf9e \ud835\udf9f \ud835\udfa0 \ud835\udfa2 \ud835\udfa3 \ud835\udfa4 \ud835\udfa5 \ud835\udfa6 \ud835\udfa7 \ud835\udfa8".split(" ");
this.smallGreekSansSerifBoldItalic="\ud835\udfaa \ud835\udfab \ud835\udfac \ud835\udfad \ud835\udfae \ud835\udfaf \ud835\udfb0 \ud835\udfb1 \ud835\udfb2 \ud835\udfb3 \ud835\udfb4 \ud835\udfb5 \ud835\udfb6 \ud835\udfb7 \ud835\udfb8 \ud835\udfb9 \ud835\udfba \ud835\udfbb \ud835\udfbc \ud835\udfbd \ud835\udfbe \ud835\udfbf \ud835\udfc0 \ud835\udfc1 \ud835\udfc2".split(" ");this.greekDoubleStruck=["\u213c","\u213d","\u213e","\u213f"];this.greekSpecial="\u03d0\u03d1\u03d5\u03d6\u03d7\u03f0\u03f1\u03f5\u03f6\u03f4".split("");
this.greekSpecialBold="\ud835\udedc \ud835\udedd \ud835\udede \ud835\udedf \ud835\udee0 \ud835\udee1".split(" ");this.greekSpecialItalic="\ud835\udf16 \ud835\udf17 \ud835\udf18 \ud835\udf19 \ud835\udf1a \ud835\udf1b".split(" ");this.greekSpecialSansSerifBold="\ud835\udf8a \ud835\udf8b \ud835\udf8c \ud835\udf8d \ud835\udf8e \ud835\udf8f".split(" ");this.hebrewLetters=["\u2135","\u2136","\u2137","\u2138"];this.allLetters=this.capitalLatin.concat(this.smallLatin,this.capitalLatinFullWidth,this.smallLatinFullWidth,
this.capitalLatinBold,this.smallLatinBold,this.capitalLatinItalic,this.capitalLatinBoldItalic,this.smallLatinBoldItalic,this.smallLatinItalic,this.capitalLatinScript,this.smallLatinScript,this.capitalLatinBoldScript,this.smallLatinBoldScript,this.capitalLatinFraktur,this.smallLatinFraktur,this.capitalLatinDoubleStruck,this.smallLatinDoubleStruck,this.capitalLatinBoldFraktur,this.smallLatinBoldFraktur,this.capitalLatinSansSerif,this.smallLatinSansSerif,this.capitalLatinSansSerifBold,this.smallLatinSansSerifBold,
this.capitalLatinSansSerifItalic,this.smallLatinSansSerifItalic,this.capitalLatinSansSerifBoldItalic,this.smallLatinSansSerifBoldItalic,this.capitalLatinMonospace,this.smallLatinMonospace,this.latinDoubleStruckItalic,this.capitalGreek,this.smallGreek,this.capitalGreekBold,this.smallGreekBold,this.capitalGreekItalic,this.smallGreekItalic,this.capitalGreekBoldItalic,this.smallGreekBoldItalic,this.capitalGreekSansSerifBold,this.smallGreekSansSerifBold,this.greekDoubleStruck,this.greekSpecial,this.capitalGreekSansSerifBoldItalic,
this.smallGreekSansSerifBoldItalic,this.greekSpecialBold,this.greekSpecialItalic,this.greekSpecialSansSerifBold,this.hebrewLetters);this.additions="+\u00b1\u2213\u2214\u2227\u2228\u2229\u222a\u228c\u2293\u2294\u229d\u229e\u22a4\u22a5\u22ba\u22bb\u22bc\u22c4\u22ce\u22cf\u22d2\u22d3\u25b3\u25b7\u25bd\u25c1\u2a5e\u2295".split("");this.invisiblePlus_=sre.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications="\u2020\u2021\u2210\u2217\u2218\u2219\u2240\u229a\u229b\u22a0\u22a1\u22c5\u22c6\u22c7\u22c9\u22ca\u22cb\u22cc\u25cb\u00b7*".split("");
this.invisibleTimes_=sre.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions="-\u2052\u207b\u208b\u2212\u2216\u2238\u2242\u2296\u229f\u2796\u2a29\u2a2a\u2a2b\u2a2c\u2a3a\u2a41\u2a6c\ufe63\uff0d\u2010\u2011".split("");this.divisions="/\u00f7\u2044\u2215\u2298\u27cc\u29bc\u2a38".split("");this.functionApplication_=sre.SemanticUtil.numberToUnicode(8289);this.equalities="=~\u207c\u208c\u223c\u223d\u2243\u2245\u2248\u224a\u224b\u224c\u224d\u224e\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2263\u29e4\u2a66\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a74\u2a75\u2a76\u2a77\u2a78\u22d5\u2a6d\u2a6a\u2a6b\u2a6c\ufe66\uff1d".split("");
this.inequalities="<>\u2241\u2242\u2244\u2246\u2247\u2249\u224f\u2250\u2260\u2262\u2264\u2265\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u226d\u226e\u226f\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227a\u227b\u227c\u227d\u227e\u227f\u2280\u2281\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e0\u22e1\u22e2\u22e3\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2af7\u2af8\u2af9\u2afa\u29c0\u29c1\ufe64\ufe65\uff1c\uff1e".split("");
this.relations=[];this.arrows="\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219a\u219b\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21ae\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cd\u21ce\u21cf\u21d0\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2301\u2303\u2304\u2324\u238b\u2794\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u29b3\u29b4\u29bd\u29ea\u29ec\u29ed\u2a17\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\uffe9\uffea\uffeb\uffec\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21cb\u21cc\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u297c\u297d\u297e\u297f".split("");
this.sumOps="\u2140\u220f\u2210\u2211\u22c0\u22c1\u22c2\u22c3\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2afc\u2aff".split("");this.intOps="\u222b\u222c\u222d\u222e\u222f\u2230\u2231\u2232\u2233\u2a0c\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c".split("");this.prefixOps="\u2200\u2203\u2206\u2207\u2202\u2201\u2204".split("");this.prefixOpsBold=["\ud835\udec1","\ud835\udedb","\ud835\udfca","\ud835\udfcb"];this.prefixOpsItalic=
["\ud835\udefb","\ud835\udf15"];this.prefixOpsSansSerifBold=["\ud835\udf6f","\ud835\udf89"];this.operatorBits="\u2320\u2321\u23b6\u23aa\u23ae\u23af\u23b2\u23b3\u23b7".split("");this.digitsNormal="0123456789".split("");this.digitsFullWidth="\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19".split("");this.digitsBold="\ud835\udfce \ud835\udfcf \ud835\udfd0 \ud835\udfd1 \ud835\udfd2 \ud835\udfd3 \ud835\udfd4 \ud835\udfd5 \ud835\udfd6 \ud835\udfd7".split(" ");this.digitsDoubleStruck="\ud835\udfd8 \ud835\udfd9 \ud835\udfda \ud835\udfdb \ud835\udfdc \ud835\udfdd \ud835\udfde \ud835\udfdf \ud835\udfe0 \ud835\udfe1".split(" ");
this.digitsSansSerif="\ud835\udfe2 \ud835\udfe3 \ud835\udfe4 \ud835\udfe5 \ud835\udfe6 \ud835\udfe7 \ud835\udfe8 \ud835\udfe9 \ud835\udfea \ud835\udfeb".split(" ");this.digitsSansSerifBold="\ud835\udfec \ud835\udfed \ud835\udfee \ud835\udfef \ud835\udff0 \ud835\udff1 \ud835\udff2 \ud835\udff3 \ud835\udff4 \ud835\udff5".split(" ");this.digitsMonospace="\ud835\udff6 \ud835\udff7 \ud835\udff8 \ud835\udff9 \ud835\udffa \ud835\udffb \ud835\udffc \ud835\udffd \ud835\udffe \ud835\udfff".split(" ");this.digitsSuperscript=
"\u00b2\u00b3\u00b9\u2070\u2074\u2075\u2076\u2077\u2078\u2079".split("");this.digitsSubscript="\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089".split("");this.fractions="\u00bc\u00bd\u00be\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215a\u215b\u215c\u215d\u215e\u215f\u2189".split("");this.enclosedNumbers="\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u24ea\u24eb\u24ec\u24ed\u24ee\u24ef\u24f0\u24f1\u24f2\u24f3\u24f4\u24f5\u24f6\u24f7\u24f8\u24f9\u24fa\u24fb\u24fc\u24fd\u24fe\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e\u277f\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789\u278a\u278b\u278c\u278d\u278e\u278f\u2790\u2791\u2792\u2793\u3248\u3249\u324a\u324b\u324c\u324d\u324e\u324f\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325a\u325b\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u32bf".split("");
this.fencedNumbers="\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487".split("");this.punctuatedNumbers="\u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496 \u2497 \u2498 \u2499 \u249a \u249b \ud83c\udd00 \ud83c\udd01 \ud83c\udd02 \ud83c\udd03 \ud83c\udd04 \ud83c\udd05 \ud83c\udd06 \ud83c\udd07 \ud83c\udd08 \ud83c\udd09 \ud83c\udd0a".split(" ");this.digits=this.digitsNormal.concat(this.digitsFullWidth,
this.digitsBold,this.digitsDoubleStruck,this.digitsSansSerif,this.digitsSansSerifBold,this.digitsMonospace);this.numbers=this.fractions.concat(this.digitsSuperscript,this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.allNumbers=this.digits.concat(this.numbers);this.trigonometricFunctions="cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan".split(" ");this.hyperbolicFunctions="cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh".split(" ");
this.algebraicFunctions="deg det dim hom ker Tr tr".split(" ");this.elementaryFunctions="log ln lg exp expt gcd gcd arg im re Pr".split(" ");this.prefixFunctions=this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions="inf lim liminf limsup max min sup injlim projlim".split(" ");this.infixFunctions=["mod","rem"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.UNKNOWN},
{set:this.colons,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.COLON},{set:this.commas,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.COMMA},{set:this.ellipses,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.DASH},{set:this.primes,type:sre.SemanticAttr.Type.PUNCTUATION,
role:sre.SemanticAttr.Role.PRIME},{set:this.degrees,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.DEGREE},{set:this.leftFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.OPEN},{set:this.rightFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.CLOSE},{set:this.topFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.TOP},{set:this.bottomFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,
type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,
type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.smallLatinItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.ITALIC},
{set:this.capitalLatinItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.smallLatinBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.capitalLatinBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.smallLatinScript,type:sre.SemanticAttr.Type.IDENTIFIER,
role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDSCRIPT},
{set:this.smallLatinFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,
role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIF},
{set:this.capitalLatinSansSerif,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:sre.SemanticAttr.Type.IDENTIFIER,
role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.capitalLatinSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,
font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.smallLatinMonospace,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCKITALIC},{set:this.smallGreek,
type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},
{set:this.smallGreekItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.smallGreekBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.capitalGreekBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,
font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.smallGreekSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},
{set:this.smallGreekSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.greekDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.greekSpecial,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.greekSpecialBold,type:sre.SemanticAttr.Type.IDENTIFIER,
role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.greekSpecialItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.greekSpecialSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.hebrewLetters,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.OTHERLETTER,font:sre.SemanticAttr.Font.NORMAL},
{set:this.digitsNormal,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},
{set:this.digitsSansSerif,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.FLOAT},{set:this.additions,
type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.ADDITION},{set:this.multiplications,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP},{set:this.prefixOpsBold,type:sre.SemanticAttr.Type.OPERATOR,
role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.BOLD},{set:this.prefixOpsItalic,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.ITALIC},{set:this.prefixOpsSansSerifBold,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.equalities,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.EQUALITY},{set:this.inequalities,type:sre.SemanticAttr.Type.RELATION,
role:sre.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.ARROW},{set:this.sumOps,type:sre.SemanticAttr.Type.LARGEOP,role:sre.SemanticAttr.Role.SUM},{set:this.intOps,type:sre.SemanticAttr.Type.LARGEOP,role:sre.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:sre.SemanticAttr.Type.FUNCTION,role:sre.SemanticAttr.Role.LIMFUNC},{set:this.prefixFunctions,
type:sre.SemanticAttr.Type.FUNCTION,role:sre.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.INFIXFUNC}];this.meaning_=this.initMeaning_()};goog.addSingletonGetter(sre.SemanticAttr);
sre.SemanticAttr.Type={PUNCTUATION:"punctuation",FENCE:"fence",NUMBER:"number",IDENTIFIER:"identifier",TEXT:"text",OPERATOR:"operator",RELATION:"relation",LARGEOP:"largeop",FUNCTION:"function",ACCENT:"accent",FENCED:"fenced",FRACTION:"fraction",PUNCTUATED:"punctuated",RELSEQ:"relseq",MULTIREL:"multirel",INFIXOP:"infixop",PREFIXOP:"prefixop",POSTFIXOP:"postfixop",APPL:"appl",INTEGRAL:"integral",BIGOP:"bigop",SQRT:"sqrt",ROOT:"root",LIMUPPER:"limupper",LIMLOWER:"limlower",LIMBOTH:"limboth",SUBSCRIPT:"subscript",
SUPERSCRIPT:"superscript",UNDERSCORE:"underscore",OVERSCORE:"overscore",TENSOR:"tensor",TABLE:"table",MULTILINE:"multiline",MATRIX:"matrix",VECTOR:"vector",CASES:"cases",ROW:"row",LINE:"line",CELL:"cell",ENCLOSE:"enclose",INFERENCE:"inference",RULELABEL:"rulelabel",CONCLUSION:"conclusion",PREMISES:"premises",UNKNOWN:"unknown",EMPTY:"empty"};
sre.SemanticAttr.Role={COMMA:"comma",ELLIPSIS:"ellipsis",FULLSTOP:"fullstop",DASH:"dash",PRIME:"prime",DEGREE:"degree",VBAR:"vbar",COLON:"colon",OPENFENCE:"openfence",CLOSEFENCE:"closefence",APPLICATION:"application",DUMMY:"dummy",UNIT:"unit",LABEL:"label",OPEN:"open",CLOSE:"close",TOP:"top",BOTTOM:"bottom",NEUTRAL:"neutral",LATINLETTER:"latinletter",GREEKLETTER:"greekletter",OTHERLETTER:"otherletter",INTEGER:"integer",FLOAT:"float",OTHERNUMBER:"othernumber",MIXED:"mixed",MULTIACCENT:"multiaccent",
OVERACCENT:"overaccent",UNDERACCENT:"underaccent",UNDEROVER:"underover",SUBSUP:"subsup",LEFTSUB:"leftsub",LEFTSUPER:"leftsuper",RIGHTSUB:"rightsub",RIGHTSUPER:"rightsuper",LEFTRIGHT:"leftright",ABOVEBELOW:"abovebelow",SETEMPTY:"set empty",SETEXT:"set extended",SETSINGLE:"set singleton",SETCOLLECT:"set collection",STRING:"string",SEQUENCE:"sequence",ENDPUNCT:"endpunct",STARTPUNCT:"startpunct",TEXT:"text",NEGATIVE:"negative",POSITIVE:"positive",NEGATION:"negation",MULTIOP:"multiop",PREFIXOP:"prefix operator",
POSTFIXOP:"postfix operator",LIMFUNC:"limit function",INFIXFUNC:"infix function",PREFIXFUNC:"prefix function",POSTFIXFUNC:"postfix function",SIMPLEFUNC:"simple function",COMPFUNC:"composed function",SUM:"sum",INTEGRAL:"integral",ADDITION:"addition",MULTIPLICATION:"multiplication",SUBTRACTION:"subtraction",IMPLICIT:"implicit",DIVISION:"division",VULGAR:"vulgar",EQUALITY:"equality",INEQUALITY:"inequality",ELEMENT:"element",ARROW:"arrow",DETERMINANT:"determinant",ROWVECTOR:"rowvector",BINOMIAL:"binomial",
SQUAREMATRIX:"squarematrix",MULTILINE:"multiline",MATRIX:"matrix",VECTOR:"vector",CASES:"cases",TABLE:"table",PROOF:"proof",LEFT:"left",RIGHT:"right",UP:"up",DOWN:"down",FINAL:"final",SINGLE:"single",HYP:"hyp",AXIOM:"axiom",UNKNOWN:"unknown"};
sre.SemanticAttr.Font={BOLD:"bold",BOLDFRAKTUR:"bold-fraktur",BOLDITALIC:"bold-italic",BOLDSCRIPT:"bold-script",CALIGRAPHIC:"caligraphic",CALIGRAPHICBOLD:"caligraphic-bold",DOUBLESTRUCK:"double-struck",DOUBLESTRUCKITALIC:"double-struck-italic",FRAKTUR:"fraktur",ITALIC:"italic",MONOSPACE:"monospace",NORMAL:"normal",OLDSTYLE:"oldstyle",OLDSTYLEBOLD:"oldstyle-bold",SCRIPT:"script",SANSSERIF:"sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLD:"sans-serif-bold",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",
UNKNOWN:"unknown"};sre.SemanticAttr.equal=function(a,b){return a.type===b.type&&a.role===b.role&&a.font===b.font};sre.SemanticAttr.prototype.lookupType=function(a){return sre.SemanticAttr.Type.UNKNOWN};sre.SemanticAttr.prototype.lookupRole=function(a){return sre.SemanticAttr.Role.UNKNOWN};sre.SemanticAttr.lookupMeaning=function(a){return sre.SemanticAttr.getInstance().lookupMeaning_(a)};sre.SemanticAttr.invisibleTimes=function(){return sre.SemanticAttr.getInstance().invisibleTimes_};
sre.SemanticAttr.invisibleComma=function(){return sre.SemanticAttr.getInstance().invisibleComma_};sre.SemanticAttr.functionApplication=function(){return sre.SemanticAttr.getInstance().functionApplication_};sre.SemanticAttr.isMatchingFenceRole=function(a,b){return a==sre.SemanticAttr.Role.OPEN&&b==sre.SemanticAttr.Role.CLOSE||a==sre.SemanticAttr.Role.NEUTRAL&&b==sre.SemanticAttr.Role.NEUTRAL||a==sre.SemanticAttr.Role.TOP&&b==sre.SemanticAttr.Role.BOTTOM};
sre.SemanticAttr.isMatchingFence=function(a,b){return sre.SemanticAttr.getInstance().isMatchingFence_(a,b)};sre.SemanticAttr.isOpeningFence=function(a){return a==sre.SemanticAttr.Role.OPEN||a==sre.SemanticAttr.Role.NEUTRAL};sre.SemanticAttr.isClosingFence=function(a){return a==sre.SemanticAttr.Role.CLOSE||a==sre.SemanticAttr.Role.NEUTRAL};
sre.SemanticAttr.isEmbellishedType=function(a){return a===sre.SemanticAttr.Type.OPERATOR||a===sre.SemanticAttr.Type.RELATION||a===sre.SemanticAttr.Type.FENCE||a===sre.SemanticAttr.Type.PUNCTUATION};sre.SemanticAttr.isCharacterD=function(a){return-1!="d \u2146 \uff44 \ud835\udc1d \ud835\udc51 \ud835\udcb9 \ud835\udced \ud835\udd21 \ud835\udd55 \ud835\udd89 \ud835\uddbd \ud835\uddf1 \ud835\ude25 \ud835\ude8d".split(" ").indexOf(a)};
sre.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};sre.SemanticAttr.prototype.initMeaning_=function(){for(var a={},b=0,c;c=this.symbolSetToSemantic_[b];b++)c.set.forEach(function(d){a[d]={role:c.role||sre.SemanticAttr.Role.UNKNOWN,type:c.type||sre.SemanticAttr.Type.UNKNOWN,font:c.font||sre.SemanticAttr.Font.UNKNOWN}});return a};
sre.SemanticAttr.prototype.lookupMeaning_=function(a){return this.meaning_[a]||{role:sre.SemanticAttr.Role.UNKNOWN,type:sre.SemanticAttr.Type.UNKNOWN,font:sre.SemanticAttr.Font.UNKNOWN}};sre.SemanticNode=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=sre.SemanticAttr.Type.UNKNOWN;this.role=sre.SemanticAttr.Role.UNKNOWN;this.font=sre.SemanticAttr.Font.UNKNOWN;this.embellished=null;this.fencePointer="";this.childNodes=[];this.textContent="";this.mathmlTree=null;this.contentNodes=[];this.annotation={};this.attributes={}};
sre.SemanticNode.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));for(c=0;d=this.contentNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};sre.SemanticNode.Attribute={EMBELLISHED:"embellished",FENCEPOINTER:"fencepointer",FONT:"font",ID:"id",ANNOTATION:"annotation",ROLE:"role",TYPE:"type",CHILDREN:"children",CONTENT:"content",TEXT:"$t"};
sre.SemanticNode.prototype.xml=function(a,b){var c=function(e,f){f=f.map(function(k){return k.xml(a,b)});e=a.createElementNS("",e);for(var g=0,h;h=f[g];g++)e.appendChild(h);return e},d=a.createElementNS("",this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c(sre.SemanticNode.Attribute.CONTENT,this.contentNodes));0<this.childNodes.length&&d.appendChild(c(sre.SemanticNode.Attribute.CHILDREN,this.childNodes));return d};
sre.SemanticNode.prototype.toString=function(a){var b=new sre.SystemExternal.xmldom.XMLSerializer,c=(new sre.SystemExternal.xmldom.DOMParser).parseFromString("<snode/>","text/xml");return b.serializeToString(this.xml(c,a))};sre.SemanticNode.prototype.xmlAttributes_=function(a){for(var b=this.allAttributes(),c=0,d;d=b[c];c++)a.setAttribute(d[0],d[1]);this.addExternalAttributes_(a)};
sre.SemanticNode.prototype.allAttributes=function(){var a=[];a.push([sre.SemanticNode.Attribute.ROLE,this.role]);this.font!=sre.SemanticAttr.Font.UNKNOWN&&a.push([sre.SemanticNode.Attribute.FONT,this.font]);Object.keys(this.annotation).length&&a.push([sre.SemanticNode.Attribute.ANNOTATION,this.xmlAnnotation()]);this.embellished&&a.push([sre.SemanticNode.Attribute.EMBELLISHED,this.embellished]);this.fencePointer&&a.push([sre.SemanticNode.Attribute.FENCEPOINTER,this.fencePointer]);a.push([sre.SemanticNode.Attribute.ID,
this.id]);return a};sre.SemanticNode.prototype.addExternalAttributes_=function(a){for(var b in this.attributes)a.setAttribute(b,this.attributes[b])};sre.SemanticNode.prototype.xmlAnnotation=function(){var a=[],b;for(b in this.annotation)this.annotation[b].forEach(function(c){a.push(b+":"+c)});return a.join(";")};
sre.SemanticNode.prototype.toJson=function(){var a={};a[sre.SemanticNode.Attribute.TYPE]=this.type;for(var b=this.allAttributes(),c=0,d;d=b[c];c++)a[d[0]]=d[1].toString();this.textContent&&(a[sre.SemanticNode.Attribute.TEXT]=this.textContent);this.childNodes.length&&(a[sre.SemanticNode.Attribute.CHILDREN]=this.childNodes.map(function(e){return e.toJson()}));this.contentNodes.length&&(a[sre.SemanticNode.Attribute.CONTENT]=this.contentNodes.map(function(e){return e.toJson()}));return a};
sre.SemanticNode.prototype.updateContent=function(a,b){b=b?a.replace(/^[ \f\n\r\t\v\u200b]*/,"").replace(/[ \f\n\r\t\v\u200b]*$/,""):a.trim();a=a&&!b?a:b;this.textContent!=a&&(b=sre.SemanticAttr.lookupMeaning(a),this.textContent=a,this.role=b.role,this.type=b.type,this.font=b.font)};sre.SemanticNode.prototype.addMathmlNodes=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};
sre.SemanticNode.prototype.removeMathmlNodes_=function(a){for(var b=this.mathml,c=0,d;d=a[c];c++)d=b.indexOf(d),-1!=d&&b.splice(d,1);this.mathml=b};sre.SemanticNode.prototype.appendChild=function(a){this.childNodes.push(a);this.addMathmlNodes(a.mathml);a.parent=this};
sre.SemanticNode.prototype.replaceChild=function(a,b){var c=this.childNodes.indexOf(a);if(-1!=c){a.parent=null;b.parent=this;this.childNodes[c]=b;c=a.mathml.filter(function(e){return-1==b.mathml.indexOf(e)});var d=b.mathml.filter(function(e){return-1==a.mathml.indexOf(e)});this.removeMathmlNodes_(c);this.addMathmlNodes(d)}};sre.SemanticNode.prototype.appendContentNode=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes(a.mathml),a.parent=this)};
sre.SemanticNode.prototype.removeContentNode=function(a){a&&(a=this.contentNodes.indexOf(a),-1!=a&&this.contentNodes.slice(a,1))};
sre.SemanticNode.prototype.equals=function(a){if(!a||this.type!==a.type||this.role!==a.role||this.textContent!==a.textContent||this.childNodes.length!==a.childNodes.length||this.contentNodes.length!==a.contentNodes.length)return!1;for(var b=0,c,d;c=this.childNodes[b],d=a.childNodes[b];b++)if(!c.equals(d))return!1;for(b=0;c=this.contentNodes[b],d=a.contentNodes[b];b++)if(!c.equals(d))return!1;return!0};sre.SemanticNode.prototype.displayTree=function(){console.info(this.displayTree_(0))};
sre.SemanticNode.prototype.displayTree_=function(a){a++;var b=Array(a).join("  "),c="";c+="\n"+b+this.toString();c+="\n"+b+"MathmlTree:";c+="\n"+b+this.mathmlTreeString_();c+="\n"+b+"MathML:";for(var d=0,e;e=this.mathml[d];d++)c+="\n"+b+e.toString();c+="\n"+b+"Begin Content";this.contentNodes.forEach(function(f){c+=f.displayTree_(a)});c+="\n"+b+"End Content";c+="\n"+b+"Begin Children";this.childNodes.forEach(function(f){c+=f.displayTree_(a)});return c+="\n"+b+"End Children"};
sre.SemanticNode.prototype.mathmlTreeString_=function(){return this.mathmlTree?this.mathmlTree.toString():"EMPTY"};sre.SemanticNode.prototype.addAnnotation=function(a,b){b&&this.addAnnotation_(a,b)};sre.SemanticNode.prototype.addAnnotation_=function(a,b){var c=this.annotation[a];c?c.push(b):this.annotation[a]=[b]};sre.SemanticNode.prototype.getAnnotation=function(a){return(a=this.annotation[a])?a:[]};
sre.SemanticNode.prototype.hasAnnotation=function(a,b){return(a=this.annotation[a])?-1!==a.indexOf(b):!1};sre.SemanticNode.prototype.parseAnnotation=function(a){a=a.split(";");for(var b=0,c=a.length;b<c;b++){var d=a[b].split(":");this.addAnnotation(d[0],d[1])}};sre.SemanticNode.prototype.meaning=function(){return{type:this.type,role:this.role,font:this.font}};sre.SemanticAnnotator=function(a,b){this.domain=a;this.func=b;this.name=a};sre.SemanticAnnotator.prototype.annotate=function(a){a.childNodes.forEach(goog.bind(this.annotate,this));a.addAnnotation(this.domain,this.func(a))};sre.SemanticVisitor=function(a,b,c){this.domain=a;this.func=b;this.name=a;this.def=c||{}};sre.SemanticVisitor.prototype.visit=function(a,b){b=this.func(a,b);a.addAnnotation(this.domain,b[0]);for(var c=0,d;d=a.childNodes[c];c++)b=this.visit(d,b[1]);return b};sre.SemanticAnnotations=function(){this.annotators={};this.visitors={};this.counter=0};goog.addSingletonGetter(sre.SemanticAnnotations);sre.SemanticAnnotations.prototype.register=function(a){a.name=a.domain+this.counter++;(a instanceof sre.SemanticAnnotator?this.annotators:this.visitors)[a.name]=a};sre.SemanticAnnotations.prototype.unregister=function(a){delete this.annotators[a];delete this.visitors[a]};
sre.SemanticAnnotations.prototype.annotate=function(a){for(var b in this.annotators)this.annotators[b].annotate(a);for(var c in this.visitors)this.visitors[c].visit(a,this.visitors[c].def)};sre.SemanticOrdering=function(){this.comparators=[]};goog.addSingletonGetter(sre.SemanticOrdering);sre.SemanticOrdering.prototype.add=function(a){this.comparators.push(a)};sre.SemanticOrdering.prototype.apply=function(a,b){for(var c=0,d;d=this.comparators[c];c++)if(d=d.compare(a,b),0!==d)return d;return 0};sre.SemanticOrdering.prototype.sort=function(a){a.sort(goog.bind(this.apply,this))};
sre.SemanticOrdering.prototype.reduce=function(a){if(1>=a.length)return a;a=a.slice();this.sort(a);var b=[];do{var c=a.pop();b.push(c)}while(c&&a.length&&0===this.apply(a[a.length-1],c));return b};sre.SemanticComparator=function(a,b){this.comparator=a;this.type=b||null;sre.SemanticOrdering.getInstance().add(this)};sre.SemanticComparator.prototype.compare=function(a,b){return this.type&&this.type===a.type&&this.type===b.type?this.comparator(a,b):0};
sre.SemanticOrdering.simpleFunction=function(a,b){return a.role===sre.SemanticAttr.Role.SIMPLEFUNC?1:b.role===sre.SemanticAttr.Role.SIMPLEFUNC?-1:0};new sre.SemanticComparator(sre.SemanticOrdering.simpleFunction,sre.SemanticAttr.Type.IDENTIFIER);sre.SemanticDefault=function(){this.map_={}};sre.SemanticDefault.prototype.add=function(a,b){this.map_[sre.SemanticDefault.key_(a,b.font)]=b};sre.SemanticDefault.prototype.addNode=function(a){this.add(a.textContent,a.meaning())};sre.SemanticDefault.prototype.retrieve=function(a,b){return this.map_[sre.SemanticDefault.key_(a,b)]};sre.SemanticDefault.prototype.retrieveNode=function(a){return this.retrieve(a.textContent,a.font)};sre.SemanticDefault.key_=function(a,b){return b?a+":"+b:a};
sre.SemanticDefault.prototype.size=function(){return Object.keys(this.map_).length};sre.SemanticCollator_=function(){this.map_={}};sre.SemanticCollator_.prototype.add=function(a,b){a=sre.SemanticDefault.key_(a,b.font);var c=this.map_[a];c?c.push(b):this.map_[a]=[b]};sre.SemanticCollator_.prototype.addNode=function(a){this.add(a.textContent,a)};sre.SemanticCollator_.prototype.retrieve=function(a,b){return this.map_[sre.SemanticDefault.key_(a,b)]};
sre.SemanticCollator_.prototype.retrieveNode=function(a){return this.retrieve(a.textContent,a.font)};sre.SemanticCollator_.prototype.copyCollator=goog.abstractMethod;sre.SemanticCollator_.prototype.copy=function(){var a=this.copyCollator(),b;for(b in this.map_)a.map_[b]=this.map_[b];return a};sre.SemanticCollator_.prototype.minimize=function(){for(var a in this.map_)1===this.map_[a].length&&delete this.map_[a]};
sre.SemanticCollator_.prototype.reduce=function(){for(var a in this.map_)1!==this.map_[a].length&&(this.map_[a]=sre.SemanticOrdering.getInstance().reduce(this.map_[a]))};sre.SemanticCollator_.prototype.minimalCollator=function(){var a=this.copy(),b;for(b in a.map_)1===a.map_[b].length&&delete a.map_[b];return a};sre.SemanticCollator_.prototype.isMultiValued=function(){for(var a in this.map_)if(1<this.map_[a].length)return!0;return!1};sre.SemanticCollator_.prototype.isEmpty=function(){return!Object.keys(this.map_).length};
sre.SemanticNodeCollator=function(){sre.SemanticCollator_.call(this)};goog.inherits(sre.SemanticNodeCollator,sre.SemanticCollator_);sre.SemanticNodeCollator.prototype.copyCollator=function(){return new sre.SemanticNodeCollator};sre.SemanticNodeCollator.prototype.toString=function(){var a=[],b;for(b in this.map_){for(var c=Array(b.length+3).join(" "),d=this.map_[b],e=[],f=0,g;g=d[f];f++)e.push(g.toString());a.push(b+": "+e.join("\n"+c))}return a.join("\n")};
sre.SemanticNodeCollator.prototype.collateMeaning=function(){var a=new sre.SemanticMeaningCollator,b;for(b in this.map_)a.map_[b]=this.map_[b].map(function(c){return c.meaning()});return a};sre.SemanticMeaningCollator=function(){sre.SemanticCollator_.call(this)};goog.inherits(sre.SemanticMeaningCollator,sre.SemanticCollator_);sre.SemanticMeaningCollator.prototype.copyCollator=function(){return new sre.SemanticMeaningCollator};
sre.SemanticMeaningCollator.prototype.add=function(a,b){var c=this.retrieve(a,b.font);c&&c.find(function(d){return sre.SemanticAttr.equal(d,b)})||sre.SemanticMeaningCollator.superClass_.add.call(this,a,b)};sre.SemanticMeaningCollator.prototype.addNode=function(a){this.add(a.textContent,a.meaning())};
sre.SemanticMeaningCollator.prototype.toString=function(){var a=[],b;for(b in this.map_){for(var c=Array(b.length+3).join(" "),d=this.map_[b],e=[],f=0,g;g=d[f];f++)e.push("{type: "+g.type+", role: "+g.role+", font: "+g.font+"}");a.push(b+": "+e.join("\n"+c))}return a.join("\n")};sre.SemanticMeaningCollator.prototype.default=function(){var a=new sre.SemanticDefault,b;for(b in this.map_)1===this.map_[b].length&&(a.map_[b]=this.map_[b][0]);return a};
sre.SemanticMeaningCollator.prototype.newDefault=function(){var a=this.default();this.reduce();var b=this.default();return a.size()!==b.size()?b:null};sre.SemanticNodeFactory=function(){this.idCounter_=-1;this.leafMap=new sre.SemanticNodeCollator;this.defaultMap=new sre.SemanticDefault};sre.SemanticNodeFactory.prototype.createNode_=function(a){"undefined"!==typeof a?this.idCounter_=Math.max(this.idCounter_,a):a=++this.idCounter_;return new sre.SemanticNode(a)};sre.SemanticNodeFactory.prototype.makeNode=function(a){return this.createNode_(a)};sre.SemanticNodeFactory.prototype.makeUnprocessed=function(a){var b=this.createNode_();b.mathml=[a];return b};
sre.SemanticNodeFactory.prototype.makeEmptyNode=function(){var a=this.createNode_();a.type=sre.SemanticAttr.Type.EMPTY;return a};sre.SemanticNodeFactory.prototype.makeContentNode=function(a){var b=this.createNode_();b.updateContent(a);return b};sre.SemanticNodeFactory.prototype.makeMultipleContentNodes=function(a,b){for(var c=[],d=0;d<a;d++)c.push(this.makeContentNode(b));return c};
sre.SemanticNodeFactory.prototype.makeLeafNode=function(a,b){if(!a)return this.makeEmptyNode();a=this.makeContentNode(a);a.font=b||a.font;if(b=this.defaultMap.retrieveNode(a))a.type=b.type,a.role=b.role,a.font=b.font;this.leafMap.addNode(a);return a};sre.SemanticNodeFactory.prototype.makeBranchNode=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(f){f.parent=e;e.addMathmlNodes(f.mathml)});return e};sre.SemanticParser=function(){};sre.SemanticParser.prototype.parse=function(a){};sre.SemanticParser.prototype.parseList=function(a){};sre.SemanticParser.prototype.getFactory=function(){};sre.SemanticParser.prototype.setFactory=function(a){};sre.SemanticParser.prototype.getType=function(){};sre.SemanticAbstractParser=function(a){this.type_=a;this.factory_=new sre.SemanticNodeFactory};sre.SemanticAbstractParser.prototype.getFactory=function(){return this.factory_};
sre.SemanticAbstractParser.prototype.setFactory=function(a){this.factory_=a};sre.SemanticAbstractParser.prototype.getType=function(){return this.type_};sre.SemanticAbstractParser.prototype.parse=goog.abstractMethod;sre.SemanticAbstractParser.prototype.parseList=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parse(d));return b};sre.SemanticPred={};sre.SemanticPred.isAttribute=function(a,b){return function(c){c=c[a];a:switch(a){case "role":var d=sre.SemanticAttr.Role[b];break a;case "font":d=sre.SemanticAttr.Font[b];break a;default:d=sre.SemanticAttr.Type[b]}return c===d}};
sre.SemanticPred.isAccent=function(a){return sre.SemanticPred.isAttribute("type","FENCE")(a)||sre.SemanticPred.isAttribute("type","PUNCTUATION")(a)||sre.SemanticPred.isAttribute("type","OPERATOR")(a)||sre.SemanticPred.isAttribute("type","RELATION")(a)||sre.SemanticPred.isAttribute("type","IDENTIFIER")(a)&&sre.SemanticPred.isAttribute("role","UNKNOWN")(a)&&!a.textContent.match(new RegExp(sre.SemanticAttr.getInstance().allLetters.join("|")))};
sre.SemanticPred.isSimpleFunctionScope=function(a){a=a.childNodes;if(0===a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!==sre.SemanticAttr.Type.INFIXOP||a.role===sre.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(sre.SemanticPred.isAttribute("type","INFIXOP"))?!0:!1};sre.SemanticPred.isPrefixFunctionBoundary=function(a){return sre.SemanticPred.isOperator(a)||sre.SemanticPred.isAttribute("type","APPL")(a)||sre.SemanticPred.isGeneralFunctionBoundary(a)};
sre.SemanticPred.isBigOpBoundary=function(a){return sre.SemanticPred.isOperator(a)||sre.SemanticPred.isGeneralFunctionBoundary(a)};sre.SemanticPred.isIntegralDxBoundary=function(a,b){return!!b&&sre.SemanticPred.isAttribute("type","IDENTIFIER")(b)&&sre.SemanticAttr.isCharacterD(a.textContent)};sre.SemanticPred.isIntegralDxBoundarySingle=function(a){if(sre.SemanticPred.isAttribute("type","IDENTIFIER")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&sre.SemanticAttr.isCharacterD(b)}return!1};
sre.SemanticPred.isGeneralFunctionBoundary=function(a){return sre.SemanticPred.isRelation(a)||sre.SemanticPred.isPunctuation(a)};sre.SemanticPred.isEmbellished=function(a){return a.embellished?a.embellished:sre.SemanticAttr.isEmbellishedType(a.type)?a.type:null};sre.SemanticPred.isOperator=function(a){return sre.SemanticPred.isAttribute("type","OPERATOR")(a)||sre.SemanticPred.isAttribute("embellished","OPERATOR")(a)};
sre.SemanticPred.isRelation=function(a){return sre.SemanticPred.isAttribute("type","RELATION")(a)||sre.SemanticPred.isAttribute("embellished","RELATION")(a)};sre.SemanticPred.isPunctuation=function(a){return sre.SemanticPred.isAttribute("type","PUNCTUATION")(a)||sre.SemanticPred.isAttribute("embellished","PUNCTUATION")(a)};sre.SemanticPred.isFence=function(a){return sre.SemanticPred.isAttribute("type","FENCE")(a)||sre.SemanticPred.isAttribute("embellished","FENCE")(a)};
sre.SemanticPred.isElligibleEmbellishedFence=function(a){if(!a||!sre.SemanticPred.isFence(a))return!1;if(!a.embellished)return!0;var b=function(c){return c.embellished?!(!sre.SemanticPred.isAttribute("type","TENSOR")(c)||sre.SemanticPred.isAttribute("type","EMPTY")(c.childNodes[1])&&sre.SemanticPred.isAttribute("type","EMPTY")(c.childNodes[2])||sre.SemanticPred.isAttribute("type","EMPTY")(c.childNodes[3])&&sre.SemanticPred.isAttribute("type","EMPTY")(c.childNodes[4]))||sre.SemanticPred.isAttribute("role",
"CLOSE")(c)&&sre.SemanticPred.isAttribute("type","TENSOR")(c)||sre.SemanticPred.isAttribute("role","OPEN")(c)&&(sre.SemanticPred.isAttribute("type","SUBSCRIPT")(c)||sre.SemanticPred.isAttribute("type","SUPERSCRIPT")(c))?!1:b(c.childNodes[0]):!0};return b(a)};sre.SemanticPred.isTableOrMultiline=function(a){return!!a&&(sre.SemanticPred.isAttribute("type","TABLE")(a)||sre.SemanticPred.isAttribute("type","MULTILINE")(a))};
sre.SemanticPred.tableIsMatrixOrVector=function(a){return!!a&&sre.SemanticPred.isFencedElement(a)&&sre.SemanticPred.isTableOrMultiline(a.childNodes[0])};sre.SemanticPred.isFencedElement=function(a){return!!a&&sre.SemanticPred.isAttribute("type","FENCED")(a)&&(sre.SemanticPred.isAttribute("role","LEFTRIGHT")(a)||sre.SemanticPred.isAttribute("role","NEUTRAL")(a))&&1===a.childNodes.length};
sre.SemanticPred.tableIsCases=function(a,b){return 0<b.length&&sre.SemanticPred.isAttribute("role","OPENFENCE")(b[b.length-1])};sre.SemanticPred.tableIsMultiline=function(a){return a.childNodes.every(function(b){return 1>=b.childNodes.length})};sre.SemanticPred.isBinomial=function(a){return 2===a.childNodes.length};
sre.SemanticPred.isLimitBase=function(a){return sre.SemanticPred.isAttribute("type","LARGEOP")(a)||sre.SemanticPred.isAttribute("type","LIMBOTH")(a)||sre.SemanticPred.isAttribute("type","LIMLOWER")(a)||sre.SemanticPred.isAttribute("type","LIMUPPER")(a)||sre.SemanticPred.isAttribute("type","FUNCTION")(a)&&sre.SemanticPred.isAttribute("role","LIMFUNC")(a)};
sre.SemanticPred.isSimpleFunctionHead=function(a){return a.type===sre.SemanticAttr.Type.IDENTIFIER||a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER||a.role===sre.SemanticAttr.Role.OTHERLETTER};sre.SemanticPred.singlePunctAtPosition=function(a,b,c){return 1===b.length&&(a[c].type===sre.SemanticAttr.Type.PUNCTUATION||a[c].embellished===sre.SemanticAttr.Type.PUNCTUATION)&&a[c]===b[0]};
sre.SemanticPred.isSimpleFunction=function(a){return sre.SemanticPred.isAttribute("type","IDENTIFIER")(a)&&sre.SemanticPred.isAttribute("role","SIMPLEFUNC")(a)};sre.SemanticPred.isLeftBrace=function(a){var b=["{","\ufe5b","\uff5b"];return!!a&&-1!==b.indexOf(a.textContent)};sre.SemanticPred.isRightBrace=function(a){var b=["}","\ufe5c","\uff5d"];return!!a&&-1!==b.indexOf(a.textContent)};sre.SemanticPred.isSetNode=function(a){return sre.SemanticPred.isLeftBrace(a.contentNodes[0])&&sre.SemanticPred.isRightBrace(a.contentNodes[1])};
sre.SemanticPred.illegalSingleton_=[sre.SemanticAttr.Type.PUNCTUATION,sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Type.RELSEQ,sre.SemanticAttr.Type.MULTIREL,sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Type.INFERENCE];
sre.SemanticPred.scriptedElement_=[sre.SemanticAttr.Type.LIMUPPER,sre.SemanticAttr.Type.LIMLOWER,sre.SemanticAttr.Type.LIMBOTH,sre.SemanticAttr.Type.SUBSCRIPT,sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Type.UNDERSCORE,sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Type.TENSOR];
sre.SemanticPred.isSingletonSetContent=function(a){var b=a.type;return-1!==sre.SemanticPred.illegalSingleton_.indexOf(b)||b===sre.SemanticAttr.Type.INFIXOP&&a.role!==sre.SemanticAttr.Role.IMPLICIT?!1:b===sre.SemanticAttr.Type.FENCED?a.role===sre.SemanticAttr.Role.LEFTRIGHT?sre.SemanticPred.isSingletonSetContent(a.childNodes[0]):!0:-1!==sre.SemanticPred.scriptedElement_.indexOf(b)?sre.SemanticPred.isSingletonSetContent(a.childNodes[0]):!0};
sre.SemanticPred.isNumber=function(a){return a.type===sre.SemanticAttr.Type.NUMBER&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.FLOAT)};sre.SemanticPred.isUnitCounter=function(a){return sre.SemanticPred.isNumber(a)||a.role===sre.SemanticAttr.Role.VULGAR||a.role===sre.SemanticAttr.Role.MIXED};sre.SemanticPred.isPureUnit=function(a){var b=a.childNodes;return a.role===sre.SemanticAttr.Role.UNIT&&(!b.length||b[0].role===sre.SemanticAttr.Role.UNIT)};
sre.SemanticPred.isImplicit=function(a){return a.role===sre.SemanticAttr.Role.IMPLICIT||a.role===sre.SemanticAttr.Role.UNIT&&!!a.contentNodes.length&&a.contentNodes[0].textContent===sre.SemanticAttr.invisibleTimes()};sre.SemanticProcessor=function(){this.factory_=new sre.SemanticNodeFactory};goog.addSingletonGetter(sre.SemanticProcessor);sre.SemanticProcessor.prototype.setNodeFactory=function(a){this.factory_=a};
sre.SemanticProcessor.prototype.identifierNode=function(a,b,c){a=sre.SemanticProcessor.getInstance().factory_.makeLeafNode(a,b);if("MathML-Unit"===c)a.type=sre.SemanticAttr.Type.IDENTIFIER,a.role=sre.SemanticAttr.Role.UNIT;else if(!b&&1===a.textContent.length&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER)&&a.font===sre.SemanticAttr.Font.NORMAL)return a.font=sre.SemanticAttr.Font.ITALIC,a;a.type===sre.SemanticAttr.Type.UNKNOWN&&
(a.type=sre.SemanticAttr.Type.IDENTIFIER);sre.SemanticProcessor.exprFont_(a);return a};sre.SemanticProcessor.prototype.implicitNode_=function(a){var b=sre.SemanticProcessor.getInstance().factory_.makeMultipleContentNodes(a.length-1,sre.SemanticAttr.invisibleTimes()),c=sre.SemanticProcessor.getInstance().infixNode_(a,b[0]);c.role=sre.SemanticAttr.Role.IMPLICIT;b.forEach(function(d){d.parent=c});c.contentNodes=b;return c};
sre.SemanticProcessor.prototype.implicitNode=function(a){a=sre.SemanticProcessor.getInstance().getMixedNumbers_(a);a=sre.SemanticProcessor.getInstance().combineUnits_(a);return 1===a.length?a[0]:sre.SemanticProcessor.getInstance().implicitNode_(a)};
sre.SemanticProcessor.prototype.infixNode_=function(a,b){a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.INFIXOP,a,[b],sre.SemanticProcessor.getEmbellishedInner_(b).textContent);a.role=b.role;this.propagateSimpleFunction(a);return a};
sre.SemanticProcessor.prototype.concatNode_=function(a,b,c){if(0===b.length)return a;var d=b.map(function(e){return sre.SemanticProcessor.getEmbellishedInner_(e).textContent}).join(" ");a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(c,[a],b,d);1<b.length&&(a.role=sre.SemanticAttr.Role.MULTIOP);return a};
sre.SemanticProcessor.prototype.prefixNode_=function(a,b){b=sre.SemanticProcessor.partitionNodes_(b,sre.SemanticPred.isAttribute("role","SUBTRACTION"));a=sre.SemanticProcessor.getInstance().concatNode_(a,b.comp.pop(),sre.SemanticAttr.Type.PREFIXOP);1===a.contentNodes.length&&a.contentNodes[0].role===sre.SemanticAttr.Role.ADDITION&&"+"===a.contentNodes[0].textContent&&(a.role=sre.SemanticAttr.Role.POSITIVE);for(;0<b.rel.length;)a=sre.SemanticProcessor.getInstance().concatNode_(a,[b.rel.pop()],sre.SemanticAttr.Type.PREFIXOP),
a.role=sre.SemanticAttr.Role.NEGATIVE,a=sre.SemanticProcessor.getInstance().concatNode_(a,b.comp.pop(),sre.SemanticAttr.Type.PREFIXOP);return a};sre.SemanticProcessor.prototype.postfixNode_=function(a,b){return b.length?sre.SemanticProcessor.getInstance().concatNode_(a,b,sre.SemanticAttr.Type.POSTFIXOP):a};
sre.SemanticProcessor.prototype.text=function(a,b,c){if(!a)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();b=sre.SemanticProcessor.getInstance().factory_.makeLeafNode(a,b);b.updateContent(a,!0);b.type=sre.SemanticAttr.Type.TEXT;"MS"===c&&(b.role=sre.SemanticAttr.Role.STRING);sre.SemanticProcessor.exprFont_(b);return b};
sre.SemanticProcessor.prototype.row=function(a){a=a.filter(function(b){return!sre.SemanticPred.isAttribute("type","EMPTY")(b)});if(0===a.length)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();a=sre.SemanticProcessor.getInstance().getFencesInRow_(a);a=sre.SemanticProcessor.getInstance().tablesInRow(a);a=sre.SemanticProcessor.getInstance().getPunctuationInRow_(a);a=sre.SemanticProcessor.getInstance().getTextInRow_(a);a=sre.SemanticProcessor.getInstance().getFunctionsInRow_(a);return sre.SemanticProcessor.getInstance().relationsInRow_(a)};
sre.SemanticProcessor.prototype.combineUnits_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(g){return!sre.SemanticPred.isAttribute("role","UNIT")(g)});if(a.length===b.rel.length)return b.rel;a=[];do{var c=b.comp.shift(),d=b.rel.shift(),e=null,f=a.pop();f&&(c.length&&sre.SemanticPred.isUnitCounter(f)?c.unshift(f):a.push(f));1===c.length&&(e=c.pop());1<c.length&&(e=sre.SemanticProcessor.getInstance().implicitNode_(c),e.role=sre.SemanticAttr.Role.UNIT);e&&a.push(e);d&&a.push(d)}while(d);
return a};
sre.SemanticProcessor.prototype.getMixedNumbers_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(g){return sre.SemanticPred.isAttribute("type","FRACTION")(g)&&sre.SemanticPred.isAttribute("role","VULGAR")(g)});if(!b.rel.length)return a;a=[];for(var c=0,d;d=b.rel[c];c++){var e=b.comp[c],f=e.length-1;e[f]&&sre.SemanticPred.isAttribute("type","NUMBER")(e[f])&&sre.SemanticPred.isAttribute("role","INTEGER")(e[f])?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.NUMBER,[e[f],
d],[]),d.role=sre.SemanticAttr.Role.MIXED,a=a.concat(e.slice(0,f)),a.push(d)):(a=a.concat(e),a.push(d))}return a.concat(b.comp[b.comp.length-1])};
sre.SemanticProcessor.prototype.getTextInRow_=function(a){if(1>=a.length)return a;var b=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isAttribute("type","TEXT"));if(0===b.rel.length)return a;a=[];var c=b.comp[0];0<c.length&&a.push(sre.SemanticProcessor.getInstance().row(c));for(var d=0;c=b.rel[d];d++)a.push(c),c=b.comp[d+1],0<c.length&&a.push(sre.SemanticProcessor.getInstance().row(c));return[sre.SemanticProcessor.getInstance().dummyNode_(a)]};
sre.SemanticProcessor.prototype.relationsInRow_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isRelation),c=b.rel[0];if(!c)return sre.SemanticProcessor.getInstance().operationsInRow_(a);if(1===a.length)return a[0];a=b.comp.map(goog.bind(sre.SemanticProcessor.getInstance().operationsInRow_,this));if(b.rel.some(function(d){return!d.equals(c)}))return a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.MULTIREL,a,b.rel),b.rel.every(function(d){return d.role===
c.role})&&(a.role=c.role),a;a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.RELSEQ,a,b.rel,sre.SemanticProcessor.getEmbellishedInner_(c).textContent);a.role=c.role;return a};
sre.SemanticProcessor.prototype.operationsInRow_=function(a){if(0===a.length)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();if(1===a.length)return a[0];for(var b=[];0<a.length&&sre.SemanticPred.isOperator(a[0]);)b.push(a.shift());if(0===a.length)return sre.SemanticProcessor.getInstance().prefixNode_(b.pop(),b);if(1===a.length)return sre.SemanticProcessor.getInstance().prefixNode_(a[0],b);a=sre.SemanticProcessor.sliceNodes_(a,sre.SemanticPred.isOperator);b=sre.SemanticProcessor.getInstance().prefixNode_(sre.SemanticProcessor.getInstance().implicitNode(a.head),
b);return a.div?sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,a.div):b};
sre.SemanticProcessor.prototype.operationsTree_=function(a,b,c,d){d=d||[];if(0===a.length)return d.unshift(c),b.type===sre.SemanticAttr.Type.INFIXOP?(d=sre.SemanticProcessor.getInstance().postfixNode_(b.childNodes.pop(),d),b.appendChild(d),b):sre.SemanticProcessor.getInstance().postfixNode_(b,d);a=sre.SemanticProcessor.sliceNodes_(a,sre.SemanticPred.isOperator);if(0===a.head.length)return d.push(a.div),sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,c,d);d=sre.SemanticProcessor.getInstance().prefixNode_(sre.SemanticProcessor.getInstance().implicitNode(a.head),
d);b=sre.SemanticProcessor.getInstance().appendOperand_(b,c,d);return a.div?sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,a.div,[]):b};
sre.SemanticProcessor.prototype.appendOperand_=function(a,b,c){if(a.type!==sre.SemanticAttr.Type.INFIXOP)return sre.SemanticProcessor.getInstance().infixNode_([a,c],b);var d=this.appendDivisionOp_(a,b,c);return d?d:sre.SemanticProcessor.getInstance().appendExistingOperator_(a,b,c)?a:b.role===sre.SemanticAttr.Role.MULTIPLICATION?sre.SemanticProcessor.getInstance().appendMultiplicativeOp_(a,b,c):sre.SemanticProcessor.getInstance().appendAdditiveOp_(a,b,c)};
sre.SemanticProcessor.prototype.appendDivisionOp_=function(a,b,c){return b.role===sre.SemanticAttr.Role.DIVISION?sre.SemanticPred.isImplicit(a)?sre.SemanticProcessor.getInstance().infixNode_([a,c],b):this.appendLastOperand_(a,b,c):a.role===sre.SemanticAttr.Role.DIVISION?this.infixNode_([a,c],b):null};
sre.SemanticProcessor.prototype.appendLastOperand_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type===sre.SemanticAttr.Type.INFIXOP&&!sre.SemanticPred.isImplicit(e);)d=e,e=d.childNodes[a.childNodes.length-1];b=sre.SemanticProcessor.getInstance().infixNode_([d.childNodes.pop(),c],b);d.appendChild(b);return a};
sre.SemanticProcessor.prototype.appendMultiplicativeOp_=function(a,b,c){if(sre.SemanticPred.isImplicit(a))return sre.SemanticProcessor.getInstance().infixNode_([a,c],b);for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type===sre.SemanticAttr.Type.INFIXOP&&!sre.SemanticPred.isImplicit(e);)d=e,e=d.childNodes[a.childNodes.length-1];b=sre.SemanticProcessor.getInstance().infixNode_([d.childNodes.pop(),c],b);d.appendChild(b);return a};
sre.SemanticProcessor.prototype.appendAdditiveOp_=function(a,b,c){return sre.SemanticProcessor.getInstance().infixNode_([a,c],b)};sre.SemanticProcessor.prototype.appendExistingOperator_=function(a,b,c){return!a||a.type!==sre.SemanticAttr.Type.INFIXOP||sre.SemanticPred.isImplicit(a)?!1:a.contentNodes[0].equals(b)?(a.appendContentNode(b),a.appendChild(c),!0):sre.SemanticProcessor.getInstance().appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};
sre.SemanticProcessor.prototype.getFencesInRow_=function(a){a=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isFence);a=sre.SemanticProcessor.purgeFences_(a);var b=a.comp.shift();return sre.SemanticProcessor.getInstance().fences_(a.rel,a.comp,[],[b])};
sre.SemanticProcessor.prototype.fences_=function(a,b,c,d){if(0===a.length&&0===c.length)return d[0];var e=sre.SemanticPred.isAttribute("role","OPEN");if(0===a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),sre.SemanticProcessor.fenceToPunct_(b),a.push(b);else{c=sre.SemanticProcessor.sliceNodes_(c,e);var f=c.head.length-1,g=sre.SemanticProcessor.getInstance().neutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=
c[c.length-1];g=a[0].role;if(g===sre.SemanticAttr.Role.OPEN||g===sre.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!==f.textContent))return c.push(a.shift()),(e=b.shift())&&d.push(e),sre.SemanticProcessor.getInstance().fences_(a,b,c,d);if(f&&(g===sre.SemanticAttr.Role.CLOSE&&f.role===sre.SemanticAttr.Role.OPEN||g===sre.SemanticAttr.Role.NEUTRAL&&a[0].textContent===f.textContent))return e=sre.SemanticProcessor.getInstance().horizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],
b.shift())),sre.SemanticProcessor.getInstance().fences_(a,b,c,d);if(f&&g===sre.SemanticAttr.Role.CLOSE&&f.role===sre.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=sre.SemanticProcessor.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=sre.SemanticProcessor.getInstance().neutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=sre.SemanticProcessor.getInstance().horizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),sre.SemanticProcessor.getInstance().fences_(a,
b,c.head,d);e=a.shift();sre.SemanticProcessor.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return sre.SemanticProcessor.getInstance().fences_(a,b,c,d)};
sre.SemanticProcessor.prototype.neutralFences_=function(a,b){if(0===a.length)return a;if(1===a.length)return sre.SemanticProcessor.fenceToPunct_(a[0]),a;var c=a.shift(),d=sre.SemanticProcessor.sliceNodes_(a,function(e){return sre.SemanticProcessor.getEmbellishedInner_(e).textContent==sre.SemanticProcessor.getEmbellishedInner_(c).textContent});if(!d.div)return sre.SemanticProcessor.fenceToPunct_(c),d=b.shift(),d.unshift(c),d.concat(sre.SemanticProcessor.getInstance().neutralFences_(a,b));b=sre.SemanticProcessor.getInstance().combineFencedContent_(c,
d.div,d.head,b);return 0<d.tail.length?(a=b.shift(),d=sre.SemanticProcessor.getInstance().neutralFences_(d.tail,b),a.concat(d)):b[0]};
sre.SemanticProcessor.prototype.combineFencedContent_=function(a,b,c,d){if(0===c.length)return a=sre.SemanticProcessor.getInstance().horizontalFencedNode_(a,b,d.shift()),0<d.length?d[0].unshift(a):d=[[a]],d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=sre.SemanticProcessor.getInstance().neutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=sre.SemanticProcessor.getInstance().horizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};
sre.SemanticProcessor.FENCE_TO_PUNCT_={};sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.NEUTRAL]=sre.SemanticAttr.Role.VBAR;sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.OPEN]=sre.SemanticAttr.Role.OPENFENCE;sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.CLOSE]=sre.SemanticAttr.Role.CLOSEFENCE;
sre.SemanticProcessor.fenceToPunct_=function(a){var b=sre.SemanticProcessor.FENCE_TO_PUNCT_[a.role];if(b){for(;a.embellished;)a.embellished=sre.SemanticAttr.Type.PUNCTUATION,a.role=b,a=a.childNodes[0];a.type=sre.SemanticAttr.Type.PUNCTUATION;a.role=b}};
sre.SemanticProcessor.prototype.horizontalFencedNode_=function(a,b,c){c=sre.SemanticProcessor.getInstance().row(c);b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.FENCED,[c],[a,b]);a.role===sre.SemanticAttr.Role.OPEN?(this.classifyHorizontalFence_(b),this.propagateComposedFunction(b)):b.role=a.role;return sre.SemanticProcessor.rewriteFencedNode_(b)};
sre.SemanticProcessor.prototype.classifyHorizontalFence_=function(a){a.role=sre.SemanticAttr.Role.LEFTRIGHT;var b=a.childNodes;if(sre.SemanticPred.isSetNode(a)&&!(1<b.length))if(0===b.length||b[0].type===sre.SemanticAttr.Type.EMPTY)a.role=sre.SemanticAttr.Role.SETEMPTY;else{var c=b[0].type;if(1===b.length&&sre.SemanticPred.isSingletonSetContent(b[0]))a.role=sre.SemanticAttr.Role.SETSINGLE;else{var d=b[0].role;c===sre.SemanticAttr.Type.PUNCTUATED&&d===sre.SemanticAttr.Role.SEQUENCE&&(b[0].contentNodes[0].role===
sre.SemanticAttr.Role.COMMA?a.role=sre.SemanticAttr.Role.SETCOLLECT:1!==b[0].contentNodes.length||b[0].contentNodes[0].role!==sre.SemanticAttr.Role.VBAR&&b[0].contentNodes[0].role!==sre.SemanticAttr.Role.COLON||(a.role=sre.SemanticAttr.Role.SETEXT,this.setExtension_(a)))}}};
sre.SemanticProcessor.prototype.setExtension_=function(a){(a=a.childNodes[0].childNodes[0])&&a.type===sre.SemanticAttr.Type.INFIXOP&&1===a.contentNodes.length&&a.contentNodes[0].role===sre.SemanticAttr.Role.UNKNOWN&&(a.contentNodes[0].role=sre.SemanticAttr.Role.SETEXT)};
sre.SemanticProcessor.prototype.getPunctuationInRow_=function(a){if(1>=a.length)return a;var b=function(g){g=g.type;return"punctuation"===g||"text"===g||"operator"===g||"relation"===g},c=sre.SemanticProcessor.partitionNodes_(a,function(g){if(!sre.SemanticPred.isPunctuation(g))return!1;if(sre.SemanticPred.isPunctuation(g)&&!sre.SemanticPred.isAttribute("role","ELLIPSIS")(g))return!0;var h=a.indexOf(g);if(0===h)return a[1]&&b(a[1])?!1:!0;g=a[h-1];if(h===a.length-1)return b(g)?!1:!0;h=a[h+1];return b(g)&&
b(h)?!1:!0});if(0===c.rel.length)return a;var d=[],e=c.comp.shift();0<e.length&&d.push(sre.SemanticProcessor.getInstance().row(e));for(var f=0;0<c.comp.length;)d.push(c.rel[f++]),e=c.comp.shift(),0<e.length&&d.push(sre.SemanticProcessor.getInstance().row(e));return[sre.SemanticProcessor.getInstance().punctuatedNode_(d,c.rel)]};
sre.SemanticProcessor.prototype.punctuatedNode_=function(a,b){var c=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.PUNCTUATED,a,b);if(b.length===a.length){var d=b[0].role;if(d!==sre.SemanticAttr.Role.UNKNOWN&&b.every(function(e){return e.role===d}))return c.role=d,c}sre.SemanticPred.singlePunctAtPosition(a,b,0)?c.role=sre.SemanticAttr.Role.STARTPUNCT:sre.SemanticPred.singlePunctAtPosition(a,b,a.length-1)?c.role=sre.SemanticAttr.Role.ENDPUNCT:b.every(sre.SemanticPred.isAttribute("role",
"DUMMY"))?c.role=sre.SemanticAttr.Role.TEXT:c.role=sre.SemanticAttr.Role.SEQUENCE;return c};sre.SemanticProcessor.prototype.dummyNode_=function(a){var b=sre.SemanticProcessor.getInstance().factory_.makeMultipleContentNodes(a.length-1,sre.SemanticAttr.invisibleComma());b.forEach(function(c){c.role=sre.SemanticAttr.Role.DUMMY});return sre.SemanticProcessor.getInstance().punctuatedNode_(a,b)};
sre.SemanticProcessor.MML_TO_LIMIT_={MSUB:sre.SemanticAttr.Type.LIMLOWER,MUNDER:sre.SemanticAttr.Type.LIMLOWER,MSUP:sre.SemanticAttr.Type.LIMUPPER,MOVER:sre.SemanticAttr.Type.LIMUPPER,MSUBSUP:sre.SemanticAttr.Type.LIMBOTH,MUNDEROVER:sre.SemanticAttr.Type.LIMBOTH};
sre.SemanticProcessor.prototype.limitNode=function(a,b){var c=b[0];if(sre.SemanticPred.isLimitBase(c))a=sre.SemanticProcessor.MML_TO_LIMIT_[a];else switch(a){case "MSUB":a=sre.SemanticAttr.Type.SUBSCRIPT;break;case "MSUP":a=sre.SemanticAttr.Type.SUPERSCRIPT;break;case "MSUBSUP":var d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=sre.SemanticAttr.Role.SUBSUP;b=[d,b[2]];a=sre.SemanticAttr.Type.SUPERSCRIPT;break;case "MOVER":a=sre.SemanticAttr.Type.OVERSCORE;
sre.SemanticPred.isAccent(b[1])&&(b[1].role=sre.SemanticAttr.Role.OVERACCENT);break;case "MUNDER":a=sre.SemanticAttr.Type.UNDERSCORE;sre.SemanticPred.isAccent(b[1])&&(b[1].role=sre.SemanticAttr.Role.UNDERACCENT);break;default:d=sre.SemanticPred.isAccent(b[1]),a=sre.SemanticPred.isAccent(b[2]),d&&(b[1].role=sre.SemanticAttr.Role.UNDERACCENT),a&&(b[2].role=sre.SemanticAttr.Role.OVERACCENT),a&&!d?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.OVERSCORE,[c,b[2]],
[]),b=[d,b[1]],a=sre.SemanticAttr.Type.UNDERSCORE):(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.UNDERSCORE,[c,b[1]],[]),b=[d,b[2]],a=sre.SemanticAttr.Type.OVERSCORE),d.role=sre.SemanticAttr.Role.UNDEROVER}b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(a,b,[]);a=sre.SemanticPred.isEmbellished(c);d&&(d.embellished=a);b.embellished=a;b.role=c.role;return b};
sre.SemanticProcessor.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0===a.length)return b;var c=a.shift(),d=sre.SemanticProcessor.classifyFunction_(c,a);if(!d)return b.push(c),sre.SemanticProcessor.getInstance().getFunctionsInRow_(a,b);a=sre.SemanticProcessor.getInstance().getFunctionsInRow_(a,[]);a=sre.SemanticProcessor.getInstance().getFunctionArgs_(c,a,d);return b.concat(a)};sre.SemanticProcessor.CLASSIFY_FUNCTION_={};
sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.INTEGRAL]="integral";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.SUM]="bigop";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.PREFIXFUNC]="prefix";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.LIMFUNC]="prefix";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.SIMPLEFUNC]="prefix";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.COMPFUNC]="prefix";
sre.SemanticProcessor.classifyFunction_=function(a,b){if(a.type===sre.SemanticAttr.Type.APPL||a.type===sre.SemanticAttr.Type.BIGOP||a.type===sre.SemanticAttr.Type.INTEGRAL)return"";if(b[0]&&b[0].textContent===sre.SemanticAttr.functionApplication()){b.shift();b=sre.SemanticAttr.Role.SIMPLEFUNC;if(a.role===sre.SemanticAttr.Role.PREFIXFUNC||a.role===sre.SemanticAttr.Role.LIMFUNC)b=a.role;sre.SemanticProcessor.propagateFunctionRole_(a,b);return"prefix"}return(b=sre.SemanticProcessor.CLASSIFY_FUNCTION_[a.role])?
b:sre.SemanticPred.isSimpleFunctionHead(a)?"simple":""};sre.SemanticProcessor.propagateFunctionRole_=function(a,b){a&&(sre.SemanticPred.isAttribute("role","SUBSUP")(a)||(a.role=b),sre.SemanticProcessor.propagateFunctionRole_(a.childNodes[0],b))};
sre.SemanticProcessor.prototype.getFunctionArgs_=function(a,b,c){switch(c){case "integral":b=sre.SemanticProcessor.getInstance().getIntegralArgs_(b);if(!b.intvar&&!b.integrand.length)return b.rest.unshift(a),b.rest;c=sre.SemanticProcessor.getInstance().row(b.integrand);a=sre.SemanticProcessor.getInstance().integralNode_(a,c,b.intvar);b.rest.unshift(a);return b.rest;case "prefix":if(b[0]&&b[0].type===sre.SemanticAttr.Type.FENCED){var d=b.shift();d.role!==sre.SemanticAttr.Role.NEUTRAL&&(d.role=sre.SemanticAttr.Role.LEFTRIGHT);
a=sre.SemanticProcessor.getInstance().functionNode_(a,d);b.unshift(a);return b}c=sre.SemanticProcessor.sliceNodes_(b,sre.SemanticPred.isPrefixFunctionBoundary);if(c.head.length)d=sre.SemanticProcessor.getInstance().row(c.head),c.div&&c.tail.unshift(c.div);else{if(!c.div||!sre.SemanticPred.isAttribute("type","APPL")(c.div))return b.unshift(a),b;d=c.div}a=sre.SemanticProcessor.getInstance().functionNode_(a,d);c.tail.unshift(a);return c.tail;case "bigop":c=sre.SemanticProcessor.sliceNodes_(b,sre.SemanticPred.isBigOpBoundary);
if(!c.head.length)return b.unshift(a),b;d=sre.SemanticProcessor.getInstance().row(c.head);a=sre.SemanticProcessor.getInstance().bigOpNode_(a,d);c.div&&c.tail.unshift(c.div);c.tail.unshift(a);return c.tail;default:if(0===b.length)return[a];c=b[0];if(c.type===sre.SemanticAttr.Type.FENCED&&c.role!==sre.SemanticAttr.Role.NEUTRAL&&sre.SemanticPred.isSimpleFunctionScope(c))return c.role=sre.SemanticAttr.Role.LEFTRIGHT,sre.SemanticProcessor.propagateFunctionRole_(a,sre.SemanticAttr.Role.SIMPLEFUNC),a=sre.SemanticProcessor.getInstance().functionNode_(a,
b.shift()),b.unshift(a),b;b.unshift(a);return b}};
sre.SemanticProcessor.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0===a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(sre.SemanticPred.isGeneralFunctionBoundary(c))return{integrand:b,intvar:null,rest:a};if(sre.SemanticPred.isIntegralDxBoundarySingle(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&sre.SemanticPred.isIntegralDxBoundary(c,a[1]))return c=sre.SemanticProcessor.getInstance().prefixNode_(a[1],[c]),c.role=sre.SemanticAttr.Role.INTEGRAL,{integrand:b,intvar:c,
rest:a.slice(2)};b.push(a.shift());return sre.SemanticProcessor.getInstance().getIntegralArgs_(a,b)};
sre.SemanticProcessor.prototype.functionNode_=function(a,b){var c=sre.SemanticProcessor.getInstance().factory_.makeContentNode(sre.SemanticAttr.functionApplication());c.type=sre.SemanticAttr.Type.PUNCTUATION;c.role=sre.SemanticAttr.Role.APPLICATION;var d=sre.SemanticProcessor.getFunctionOp_(a,function(e){return sre.SemanticPred.isAttribute("type","FUNCTION")(e)||sre.SemanticPred.isAttribute("type","IDENTIFIER")(e)&&sre.SemanticPred.isAttribute("role","SIMPLEFUNC")(e)});return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.APPL,
[a,b],d,[c])};sre.SemanticProcessor.prototype.bigOpNode_=function(a,b){var c=sre.SemanticProcessor.getFunctionOp_(a,sre.SemanticPred.isAttribute("type","LARGEOP"));return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.BIGOP,[a,b],c,[])};
sre.SemanticProcessor.prototype.integralNode_=function(a,b,c){b=b||sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();c=c||sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();var d=sre.SemanticProcessor.getFunctionOp_(a,sre.SemanticPred.isAttribute("type","LARGEOP"));return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.INTEGRAL,[a,b,c],d,[])};
sre.SemanticProcessor.prototype.functionalNode_=function(a,b,c,d){var e=b[0];if(c){var f=c.parent;d.push(c)}a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(a,b,d);a.role=e.role;f&&(c.parent=f);return a};sre.SemanticProcessor.getFunctionOp_=function(a,b){if(b(a))return a;for(var c=0,d;d=a.childNodes[c];c++)if(d=sre.SemanticProcessor.getFunctionOp_(d,b))return d;return null};
sre.SemanticProcessor.prototype.tablesInRow=function(a){a=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.tableIsMatrixOrVector);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(sre.SemanticProcessor.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=sre.SemanticProcessor.partitionNodes_(b,sre.SemanticPred.isTableOrMultiline);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();sre.SemanticPred.tableIsCases(d,e)&&sre.SemanticProcessor.tableToCases_(d,e.pop());b=b.concat(e);
b.push(d)}return b.concat(a.comp.shift())};sre.SemanticProcessor.tableToMatrixOrVector_=function(a){var b=a.childNodes[0];sre.SemanticPred.isAttribute("type","MULTILINE")(b)?sre.SemanticProcessor.tableToVector_(a):sre.SemanticProcessor.tableToMatrix_(a);a.contentNodes.forEach(goog.bind(b.appendContentNode,b));a=0;for(var c;c=b.childNodes[a];a++)sre.SemanticProcessor.assignRoleToRow_(c,sre.SemanticProcessor.getComponentRoles_(b));b.parent=null;return b};
sre.SemanticProcessor.tableToVector_=function(a){var b=a.childNodes[0];b.type=sre.SemanticAttr.Type.VECTOR;1===b.childNodes.length?sre.SemanticProcessor.tableToSquare_(a):sre.SemanticProcessor.binomialForm_(b)};sre.SemanticProcessor.binomialForm_=function(a){sre.SemanticPred.isBinomial(a)&&(a.role=sre.SemanticAttr.Role.BINOMIAL,a.childNodes[0].role=sre.SemanticAttr.Role.BINOMIAL,a.childNodes[1].role=sre.SemanticAttr.Role.BINOMIAL)};
sre.SemanticProcessor.tableToMatrix_=function(a){var b=a.childNodes[0];b.type=sre.SemanticAttr.Type.MATRIX;b.childNodes&&0<b.childNodes.length&&b.childNodes[0].childNodes&&b.childNodes.length===b.childNodes[0].childNodes.length?sre.SemanticProcessor.tableToSquare_(a):b.childNodes&&1===b.childNodes.length&&(b.role=sre.SemanticAttr.Role.ROWVECTOR)};
sre.SemanticProcessor.tableToSquare_=function(a){var b=a.childNodes[0];sre.SemanticPred.isAttribute("role","NEUTRAL")(a)?b.role=sre.SemanticAttr.Role.DETERMINANT:b.role=sre.SemanticAttr.Role.SQUAREMATRIX};sre.SemanticProcessor.getComponentRoles_=function(a){var b=a.role;return b&&b!==sre.SemanticAttr.Role.UNKNOWN?b:sre.SemanticAttr.Role[a.type.toUpperCase()]||sre.SemanticAttr.Role.UNKNOWN};
sre.SemanticProcessor.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)sre.SemanticProcessor.assignRoleToRow_(d,sre.SemanticAttr.Role.CASES);a.type=sre.SemanticAttr.Type.CASES;a.appendContentNode(b);sre.SemanticPred.tableIsMultiline(a)&&sre.SemanticProcessor.binomialForm_(a);return a};
sre.SemanticProcessor.tableToMultiline=function(a){if(sre.SemanticPred.tableIsMultiline(a)){a.type=sre.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)sre.SemanticProcessor.rowToLine_(c,sre.SemanticAttr.Role.MULTILINE);1===a.childNodes.length&&sre.SemanticPred.isFencedElement(a.childNodes[0].childNodes[0])&&sre.SemanticProcessor.tableToMatrixOrVector_(sre.SemanticProcessor.rewriteFencedLine_(a));sre.SemanticProcessor.binomialForm_(a);sre.SemanticProcessor.classifyMultiline(a)}else sre.SemanticProcessor.classifyTable(a)};
sre.SemanticProcessor.rewriteFencedLine_=function(a){var b=a.childNodes[0],c=a.childNodes[0].childNodes[0],d=a.childNodes[0].childNodes[0].childNodes[0];c.parent=a.parent;a.parent=c;d.parent=b;c.childNodes=[a];b.childNodes=[d];return c};
sre.SemanticProcessor.rowToLine_=function(a,b){b=b||sre.SemanticAttr.Role.UNKNOWN;sre.SemanticPred.isAttribute("type","ROW")(a)&&(a.type=sre.SemanticAttr.Type.LINE,a.role=b,1===a.childNodes.length&&sre.SemanticPred.isAttribute("type","CELL")(a.childNodes[0])&&(a.childNodes=a.childNodes[0].childNodes,a.childNodes.forEach(function(c){c.parent=a})))};
sre.SemanticProcessor.assignRoleToRow_=function(a,b){if(sre.SemanticPred.isAttribute("type","LINE")(a))a.role=b;else if(sre.SemanticPred.isAttribute("type","ROW")(a)){a.role=b;var c=sre.SemanticPred.isAttribute("type","CELL");a.childNodes.forEach(function(d){c(d)&&(d.role=b)})}};
sre.SemanticProcessor.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};sre.SemanticProcessor.partitionNodes_=function(a,b){var c=[],d=[];do{var e=sre.SemanticProcessor.sliceNodes_(a,b);d.push(e.head);c.push(e.div);a=e.tail}while(e.div);c.pop();return{rel:c,comp:d}};
sre.SemanticProcessor.prototype.mfenced=function(a,b,c,d){if(c&&0<d.length){var e=sre.SemanticProcessor.nextSeparatorFunction_(c),f=[d.shift()];d.forEach(goog.bind(function(g){f.push(sre.SemanticProcessor.getInstance().factory_.makeContentNode(e()));f.push(g)},this));d=f}if(a&&b)return sre.SemanticProcessor.getInstance().horizontalFencedNode_(sre.SemanticProcessor.getInstance().factory_.makeContentNode(a),sre.SemanticProcessor.getInstance().factory_.makeContentNode(b),d);a&&d.unshift(sre.SemanticProcessor.getInstance().factory_.makeContentNode(a));
b&&d.push(sre.SemanticProcessor.getInstance().factory_.makeContentNode(b));return sre.SemanticProcessor.getInstance().row(d)};sre.SemanticProcessor.nextSeparatorFunction_=function(a){if(a){if(a.match(/^\s+$/))return null;var b=a.replace(/\s/g,"").split("").filter(function(c){return c})}else b=[","];return function(){return 1<b.length?b.shift():b[0]}};
sre.SemanticProcessor.number=function(a){if(a.type===sre.SemanticAttr.Type.UNKNOWN||a.type===sre.SemanticAttr.Type.IDENTIFIER)a.type=sre.SemanticAttr.Type.NUMBER;sre.SemanticProcessor.numberRole_(a);sre.SemanticProcessor.exprFont_(a)};
sre.SemanticProcessor.numberRole_=function(a){if(a.role===sre.SemanticAttr.Role.UNKNOWN){var b=sre.SemanticUtil.splitUnicode(a.textContent).map(sre.SemanticAttr.lookupMeaning);b.every(function(c){return c.type===sre.SemanticAttr.Type.NUMBER&&c.role===sre.SemanticAttr.Role.INTEGER||c.type===sre.SemanticAttr.Type.PUNCTUATION&&c.role===sre.SemanticAttr.Role.COMMA})?a.role=sre.SemanticAttr.Role.INTEGER:b.every(function(c){return c.type===sre.SemanticAttr.Type.NUMBER&&c.role===sre.SemanticAttr.Role.INTEGER||
c.type===sre.SemanticAttr.Type.PUNCTUATION})?a.role=sre.SemanticAttr.Role.FLOAT:a.role=sre.SemanticAttr.Role.OTHERNUMBER}};sre.SemanticProcessor.exprFont_=function(a){if(a.font===sre.SemanticAttr.Font.UNKNOWN){var b=sre.SemanticUtil.splitUnicode(a.textContent).map(sre.SemanticAttr.lookupMeaning).reduce(function(c,d){return c&&d.font&&d.font!==sre.SemanticAttr.Font.UNKNOWN&&d.font!==c?c===sre.SemanticAttr.Font.UNKNOWN?d.font:null:c},sre.SemanticAttr.Font.UNKNOWN);b&&(a.font=b)}};
sre.SemanticProcessor.prototype.fractionLikeNode=function(a,b,c,d){!d&&sre.SemanticUtil.isZeroLength(c)?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.LINE,[a],[]),b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.LINE,[b],[]),b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.MULTILINE,[d,b],[]),sre.SemanticProcessor.binomialForm_(b),sre.SemanticProcessor.classifyMultiline(b)):(b=sre.SemanticProcessor.getInstance().fractionNode_(a,
b),d&&b.addAnnotation("general","bevelled"));return b};
sre.SemanticProcessor.prototype.fractionNode_=function(a,b){a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.FRACTION,[a,b],[]);a.role=a.childNodes.every(function(c){return sre.SemanticPred.isAttribute("type","NUMBER")(c)&&sre.SemanticPred.isAttribute("role","INTEGER")(c)})?sre.SemanticAttr.Role.VULGAR:a.childNodes.every(sre.SemanticPred.isPureUnit)?sre.SemanticAttr.Role.UNIT:sre.SemanticAttr.Role.DIVISION;this.propagateSimpleFunction(a);return a};
sre.SemanticProcessor.prototype.tensor=function(a,b,c,d,e){b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.TENSOR,[a,sre.SemanticProcessor.getInstance().scriptNode_(b,sre.SemanticAttr.Role.LEFTSUB),sre.SemanticProcessor.getInstance().scriptNode_(c,sre.SemanticAttr.Role.LEFTSUPER),sre.SemanticProcessor.getInstance().scriptNode_(d,sre.SemanticAttr.Role.RIGHTSUB),sre.SemanticProcessor.getInstance().scriptNode_(e,sre.SemanticAttr.Role.RIGHTSUPER)],[]);b.role=a.role;
b.embellished=sre.SemanticPred.isEmbellished(a);return b};
sre.SemanticProcessor.prototype.pseudoTensor=function(a,b,c){var d=function(g){return!sre.SemanticPred.isAttribute("type","EMPTY")(g)},e=b.filter(d).length;d=c.filter(d).length;if(!e&&!d)return a;var f=e?d?"MSUBSUP":"MSUB":"MSUP";a=[a];e&&a.push(sre.SemanticProcessor.getInstance().scriptNode_(b,sre.SemanticAttr.Role.RIGHTSUB,!0));d&&a.push(sre.SemanticProcessor.getInstance().scriptNode_(c,sre.SemanticAttr.Role.RIGHTSUPER,!0));return sre.SemanticProcessor.getInstance().limitNode(f,a)};
sre.SemanticProcessor.prototype.scriptNode_=function(a,b,c){switch(a.length){case 0:a=sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();break;case 1:a=a[0];if(c)return a;break;default:a=sre.SemanticProcessor.getInstance().dummyNode_(a)}a.role=b;return a};sre.SemanticProcessor.getEmbellishedInner_=function(a){return a&&a.embellished&&0<a.childNodes.length?sre.SemanticProcessor.getEmbellishedInner_(a.childNodes[0]):a};
sre.SemanticProcessor.purgeFences_=function(a){var b=a.rel;a=a.comp;for(var c=[],d=[];0<b.length;){var e=b.shift(),f=a.shift();sre.SemanticPred.isElligibleEmbellishedFence(e)?(c.push(e),d.push(f)):(sre.SemanticProcessor.fenceToPunct_(e),f.push(e),f=f.concat(a.shift()),a.unshift(f))}d.push(a.shift());return{rel:c,comp:d}};
sre.SemanticProcessor.rewriteFencedNode_=function(a){var b=a.contentNodes[1],c=sre.SemanticProcessor.rewriteFence_(a,a.contentNodes[0]);a.contentNodes[0]=c.fence;c=sre.SemanticProcessor.rewriteFence_(c.node,b);a.contentNodes[1]=c.fence;a.contentNodes[0].parent=a;a.contentNodes[1].parent=a;c.node.parent=null;return c.node};
sre.SemanticProcessor.rewriteFence_=function(a,b){if(!b.embellished)return{node:a,fence:b};var c=b.childNodes[0],d=sre.SemanticProcessor.rewriteFence_(a,c);if(sre.SemanticPred.isAttribute("type","SUPERSCRIPT")(b)||sre.SemanticPred.isAttribute("type","SUBSCRIPT")(b)||sre.SemanticPred.isAttribute("type","TENSOR")(b))return sre.SemanticPred.isAttribute("role","SUBSUP")(b)||(b.role=a.role),c!==d.node&&(b.replaceChild(c,d.node),c.parent=a),sre.SemanticProcessor.propagateFencePointer_(b,c),{node:b,fence:d.fence};
b.replaceChild(c,d.fence);b.mathmlTree&&-1===b.mathml.indexOf(b.mathmlTree)&&b.mathml.push(b.mathmlTree);return{node:d.node,fence:b}};sre.SemanticProcessor.propagateFencePointer_=function(a,b){a.fencePointer=b.fencePointer||b.id.toString();a.embellished=null};
sre.SemanticProcessor.classifyMultiline=function(a){for(var b=0,c=a.childNodes.length,d;b<c&&(!(d=a.childNodes[b])||!d.childNodes.length);)b++;if(!(b>=c)){var e=d.childNodes[0].role;e!==sre.SemanticAttr.Role.UNKNOWN&&a.childNodes.every(function(f){f=f.childNodes[0];return!f||f.role===e&&(sre.SemanticPred.isAttribute("type","RELATION")(f)||sre.SemanticPred.isAttribute("type","RELSEQ")(f))})&&(a.role=e)}};
sre.SemanticProcessor.classifyTable=function(a){var b=sre.SemanticProcessor.computeColumns_(a);sre.SemanticProcessor.classifyByColumns_(a,b,"EQUALITY")||sre.SemanticProcessor.classifyByColumns_(a,b,"INEQUALITY",["EQUALITY"])||sre.SemanticProcessor.classifyByColumns_(a,b,"ARROW")};
sre.SemanticProcessor.classifyByColumns_=function(a,b,c,d){d=function(g){return sre.SemanticProcessor.isPureRelation_(g,c)};var e=function(g){return sre.SemanticProcessor.isEndRelation_(g,c)||sre.SemanticProcessor.isPureRelation_(g,c)},f=function(g){return sre.SemanticProcessor.isEndRelation_(g,c,!0)||sre.SemanticProcessor.isPureRelation_(g,c)};return 3===b.length&&sre.SemanticProcessor.testColumns_(b,1,d)||2===b.length&&(sre.SemanticProcessor.testColumns_(b,1,e)||sre.SemanticProcessor.testColumns_(b,
0,f))?(a.role=sre.SemanticAttr.Role[c],!0):!1};sre.SemanticProcessor.isEndRelation_=function(a,b,c){c=c?a.childNodes.length-1:0;return sre.SemanticPred.isAttribute("type","RELSEQ")(a)&&sre.SemanticPred.isAttribute("role",b)(a)&&sre.SemanticPred.isAttribute("type","EMPTY")(a.childNodes[c])};sre.SemanticProcessor.isPureRelation_=function(a,b){return sre.SemanticPred.isAttribute("type","RELATION")(a)&&sre.SemanticPred.isAttribute("role",b)(a)};
sre.SemanticProcessor.computeColumns_=function(a){for(var b=[],c=0,d;d=a.childNodes[c];c++)for(var e=0,f;f=d.childNodes[e];e++)b[e]?b[e].push(f):b[e]=[f];return b};sre.SemanticProcessor.testColumns_=function(a,b,c){return(a=a[b])?a.some(function(d){return d.childNodes.length&&c(d.childNodes[0])})&&a.every(function(d){return!d.childNodes.length||c(d.childNodes[0])}):!1};
sre.SemanticProcessor.MATHJAX_FONTS={"-tex-caligraphic":sre.SemanticAttr.Font.CALIGRAPHIC,"-tex-caligraphic-bold":sre.SemanticAttr.Font.CALIGRAPHICBOLD,"-tex-calligraphic":sre.SemanticAttr.Font.CALIGRAPHIC,"-tex-calligraphic-bold":sre.SemanticAttr.Font.CALIGRAPHICBOLD,"-tex-oldstyle":sre.SemanticAttr.Font.OLDSTYLE,"-tex-oldstyle-bold":sre.SemanticAttr.Font.OLDSTYLEBOLD,"-tex-mathit":sre.SemanticAttr.Font.ITALIC};
sre.SemanticProcessor.prototype.font=function(a){var b=sre.SemanticProcessor.MATHJAX_FONTS[a];return b?b:a};sre.SemanticProcessor.prototype.propagateSimpleFunction=function(a){"clearspeak"!==sre.Engine.getInstance().domain||a.type!==sre.SemanticAttr.Type.INFIXOP&&a.type!==sre.SemanticAttr.Type.FRACTION||!a.childNodes.every(sre.SemanticPred.isSimpleFunction)||(a.role=sre.SemanticAttr.Role.COMPFUNC)};
sre.SemanticProcessor.prototype.propagateComposedFunction=function(a){"clearspeak"===sre.Engine.getInstance().domain&&a.type===sre.SemanticAttr.Type.FENCED&&a.childNodes[0].role===sre.SemanticAttr.Role.COMPFUNC&&(a.role=sre.SemanticAttr.Role.COMPFUNC)};sre.SemanticProcessor.proof=function(a,b,c){b=sre.SemanticProcessor.separateSemantics(b);return sre.SemanticProcessor.getInstance().proof(a,b,c)};
sre.SemanticProcessor.prototype.proof=function(a,b,c){b.inference||b.axiom||console.log("Noise");if(b.axiom)return b=this.cleanInference(a.childNodes),b=b.length?this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,c(b),[]):this.factory_.makeEmptyNode(),b.role=sre.SemanticAttr.Role.AXIOM,b.mathmlTree=a,b;a=this.inference(a,b,c);b.proof&&(a.role=sre.SemanticAttr.Role.PROOF,a.childNodes[0].role=sre.SemanticAttr.Role.FINAL);return a};
sre.SemanticProcessor.prototype.inference=function(a,b,c){if(b.inferenceRule)return c=this.getFormulas(a,[],c),c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,[c.conclusion,c.premises],[]);var d=b.labelledRule,e=sre.DomUtil.toArray(a.childNodes);b=[];"left"!==d&&"both"!==d||b.push(this.getLabel(a,e,c,sre.SemanticAttr.Role.LEFT));"right"!==d&&"both"!==d||b.push(this.getLabel(a,e,c,sre.SemanticAttr.Role.RIGHT));c=this.getFormulas(a,e,c);c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,
[c.conclusion,c.premises],b);c.mathmlTree=a;return c};sre.SemanticProcessor.prototype.getLabel=function(a,b,c,d){a=this.findNestedRow(b,"prooflabel",d);c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.RULELABEL,c(sre.DomUtil.toArray(a.childNodes)),[]);c.role=d;c.mathmlTree=a;return c};
sre.SemanticProcessor.prototype.getFormulas=function(a,b,c){b=b.length?this.findNestedRow(b,"inferenceRule"):a;var d="up"===sre.SemanticProcessor.getSemantics(b).inferenceRule;a=d?b.childNodes[0]:b.childNodes[1];b=(d?b.childNodes[1]:b.childNodes[0]).childNodes[0].childNodes[0];var e=sre.DomUtil.toArray(b.childNodes[0].childNodes);d=[];var f=1;e=$jscomp.makeIterator(e);for(var g=e.next();!g.done;g=e.next())g=g.value,f%2&&d.push(g.childNodes[0]),f++;d=c(d);c=c(sre.DomUtil.toArray(a.childNodes[0].childNodes))[0];
d=this.factory_.makeBranchNode(sre.SemanticAttr.Type.PREMISES,d,[]);d.mathmlTree=b;c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.CONCLUSION,[c],[]);c.mathmlTree=a.childNodes[0].childNodes[0];return{conclusion:c,premises:d}};sre.SemanticProcessor.prototype.findNestedRow=function(a,b,c){return this.findNestedRow_(a,b,0,c)};
sre.SemanticProcessor.prototype.findNestedRow_=function(a,b,c,d){if(3<c)return null;for(var e=0,f;f=a[e];e++){var g=sre.DomUtil.tagName(f);if("MSPACE"!==g){if("MROW"===g)return this.findNestedRow_(sre.DomUtil.toArray(f.childNodes),b,c+1,d);if(sre.SemanticProcessor.findSemantics(f,b,d))return f}}return null};sre.SemanticProcessor.prototype.cleanInference=function(a){return sre.DomUtil.toArray(a).filter(function(b){return"MSPACE"!==sre.DomUtil.tagName(b)})};
sre.SemanticProcessor.findSemantics=function(a,b,c){c=null==c?null:c;return(a=sre.SemanticProcessor.getSemantics(a))&&a[b]?null==c?!0:a[b]===c:!1};sre.SemanticProcessor.getSemantics=function(a){return(a=a.getAttribute("semantics"))?sre.SemanticProcessor.separateSemantics(a):null};sre.SemanticProcessor.removePrefix=function(a){a=$jscomp.makeIterator(a.split("_"));a.next();return $jscomp.arrayFromIterator(a).join("_")};
sre.SemanticProcessor.separateSemantics=function(a){var b={};a.split(";").forEach(function(c){var d=$jscomp.makeIterator(c.split(":"));c=d.next().value;d=d.next().value;b[sre.SemanticProcessor.removePrefix(c)]=d});return b};sre.SemanticMathml=function(){sre.SemanticAbstractParser.call(this,"MathML");this.parseMap_={SEMANTICS:goog.bind(this.semantics_,this),MATH:goog.bind(this.rows_,this),MROW:goog.bind(this.rows_,this),MPADDED:goog.bind(this.rows_,this),MSTYLE:goog.bind(this.rows_,this),MFRAC:goog.bind(this.fraction_,this),MSUB:goog.bind(this.limits_,this),MSUP:goog.bind(this.limits_,this),MSUBSUP:goog.bind(this.limits_,this),MOVER:goog.bind(this.limits_,this),MUNDER:goog.bind(this.limits_,this),MUNDEROVER:goog.bind(this.limits_,
this),MROOT:goog.bind(this.root_,this),MSQRT:goog.bind(this.sqrt_,this),MTABLE:goog.bind(this.table_,this),MLABELEDTR:goog.bind(this.tableLabeledRow_,this),MTR:goog.bind(this.tableRow_,this),MTD:goog.bind(this.tableCell_,this),MS:goog.bind(this.text_,this),MTEXT:goog.bind(this.text_,this),"ANNOTATION-XML":goog.bind(this.text_,this),MI:goog.bind(this.identifier_,this),MN:goog.bind(this.number_,this),MO:goog.bind(this.operator_,this),MFENCED:goog.bind(this.fenced_,this),MENCLOSE:goog.bind(this.enclosed_,
this),MMULTISCRIPTS:goog.bind(this.multiscripts_,this),ANNOTATION:goog.bind(this.empty_,this),NONE:goog.bind(this.empty_,this),MACTION:goog.bind(this.action_,this)}};goog.inherits(sre.SemanticMathml,sre.SemanticAbstractParser);
sre.SemanticMathml.prototype.parse=function(a){sre.SemanticProcessor.getInstance().setNodeFactory(this.getFactory());var b=sre.DomUtil.toArray(a.childNodes),c=sre.DomUtil.tagName(a),d=this.parseMap_[c];b=(d?d:goog.bind(this.dummy_,this))(a,b);this.addAttributes(b,a);if(-1!==["MATH","MROW","MPADDED","MSTYLE","SEMANTICS"].indexOf(c))return b;b.mathml.unshift(a);b.mathmlTree=a;return b};
sre.SemanticMathml.prototype.addAttributes=function(a,b){if(b.hasAttributes()){b=b.attributes;for(var c=b.length-1;0<=c;c--){var d=b[c].name;d.match(/^ext/)&&(a.attributes[d]=b[c].value)}}};sre.SemanticMathml.prototype.semantics_=function(a,b){return b.length?this.parse(b[0]):this.getFactory().makeEmptyNode()};
sre.SemanticMathml.prototype.rows_=function(a,b){var c=a.getAttribute("semantics");if(c&&c.match("bspr_"))return sre.SemanticProcessor.proof(a,c,goog.bind(this.parseList,this));b=sre.SemanticUtil.purgeNodes(b);b=1===b.length?this.parse(b[0]):sre.SemanticProcessor.getInstance().row(this.parseList(b));b.mathml.unshift(a);return b};
sre.SemanticMathml.prototype.fraction_=function(a,b){return sre.SemanticProcessor.getInstance().fractionLikeNode(this.parse(b[0]),this.parse(b[1]),a.getAttribute("linethickness"),"true"===a.getAttribute("bevelled"))};sre.SemanticMathml.prototype.limits_=function(a,b){return sre.SemanticProcessor.getInstance().limitNode(sre.DomUtil.tagName(a),this.parseList(b))};
sre.SemanticMathml.prototype.root_=function(a,b){return this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROOT,[this.parse(b[1]),this.parse(b[0])],[])};sre.SemanticMathml.prototype.sqrt_=function(a,b){a=this.parseList(sre.SemanticUtil.purgeNodes(b));return this.getFactory().makeBranchNode(sre.SemanticAttr.Type.SQRT,[sre.SemanticProcessor.getInstance().row(a)],[])};
sre.SemanticMathml.prototype.table_=function(a,b){var c=a.getAttribute("semantics");if(c&&c.match("bspr_"))return sre.SemanticProcessor.proof(a,c,goog.bind(this.parseList,this));a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.TABLE,this.parseList(b),[]);sre.SemanticProcessor.tableToMultiline(a);return a};sre.SemanticMathml.prototype.tableRow_=function(a,b){a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROW,this.parseList(b),[]);a.role=sre.SemanticAttr.Role.TABLE;return a};
sre.SemanticMathml.prototype.tableLabeledRow_=function(a,b){if(!b.length)return this.tableRow_(a,b);a=this.parse(b[0]);a.role=sre.SemanticAttr.Role.LABEL;b=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROW,this.parseList(b.slice(1)),[a]);b.role=sre.SemanticAttr.Role.TABLE;return b};
sre.SemanticMathml.prototype.tableCell_=function(a,b){a=this.parseList(sre.SemanticUtil.purgeNodes(b));a=a.length?1===a.length&&sre.SemanticPred.isAttribute("type","EMPTY")(a[0])?a:[sre.SemanticProcessor.getInstance().row(a)]:[];a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.CELL,a,[]);a.role=sre.SemanticAttr.Role.TABLE;return a};
sre.SemanticMathml.prototype.text_=function(a,b){return sre.SemanticProcessor.getInstance().text(a.textContent,sre.SemanticProcessor.getInstance().font(a.getAttribute("mathvariant")),sre.DomUtil.tagName(a))};
sre.SemanticMathml.prototype.identifier_=function(a,b){a=sre.SemanticProcessor.getInstance().identifierNode(a.textContent,sre.SemanticProcessor.getInstance().font(a.getAttribute("mathvariant")),a.getAttribute("class"));if("clearspeak"!==sre.Engine.getInstance().domain)return a;-1!=="fghFGH".split("").indexOf(a.textContent)&&(a.role=sre.SemanticAttr.Role.SIMPLEFUNC);return a};sre.SemanticMathml.prototype.number_=function(a,b){a=this.leaf_(a);sre.SemanticProcessor.number(a);return a};
sre.SemanticMathml.prototype.operator_=function(a,b){a=this.leaf_(a);a.type===sre.SemanticAttr.Type.UNKNOWN&&(a.type=sre.SemanticAttr.Type.OPERATOR);return a};sre.SemanticMathml.prototype.fenced_=function(a,b){b=this.parseList(sre.SemanticUtil.purgeNodes(b));var c=sre.SemanticMathml.getAttribute_(a,"separators",","),d=sre.SemanticMathml.getAttribute_(a,"open","(");a=sre.SemanticMathml.getAttribute_(a,"close",")");a=sre.SemanticProcessor.getInstance().mfenced(d,a,c,b);return sre.SemanticProcessor.getInstance().tablesInRow([a])[0]};
sre.SemanticMathml.prototype.enclosed_=function(a,b){b=this.parseList(sre.SemanticUtil.purgeNodes(b));b=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ENCLOSE,[sre.SemanticProcessor.getInstance().row(b)],[]);b.role=a.getAttribute("notation")||sre.SemanticAttr.Role.UNKNOWN;return b};
sre.SemanticMathml.prototype.multiscripts_=function(a,b){if(!b.length)return this.getFactory().makeEmptyNode();a=this.parse(b.shift());if(!b.length)return a;for(var c=[],d=[],e=[],f=[],g=!1,h=0,k=0,l;l=b[k];k++)"MPRESCRIPTS"===sre.DomUtil.tagName(l)?(g=!0,h=0):(g?h&1?c.push(l):d.push(l):h&1?e.push(l):f.push(l),h++);return sre.SemanticUtil.purgeNodes(c).length||sre.SemanticUtil.purgeNodes(d).length?sre.SemanticProcessor.getInstance().tensor(a,this.parseList(d),this.parseList(c),this.parseList(f),this.parseList(e)):
sre.SemanticProcessor.getInstance().pseudoTensor(a,this.parseList(f),this.parseList(e))};sre.SemanticMathml.prototype.empty_=function(a,b){return this.getFactory().makeEmptyNode()};sre.SemanticMathml.prototype.action_=function(a,b){return 1<b.length?this.parse(b[1]):this.getFactory().makeUnprocessed(a)};sre.SemanticMathml.prototype.dummy_=function(a,b){return this.getFactory().makeUnprocessed(a)};sre.SemanticMathml.prototype.leaf_=function(a){return this.getFactory().makeLeafNode(a.textContent,sre.SemanticProcessor.getInstance().font(a.getAttribute("mathvariant")))};
sre.SemanticMathml.getAttribute_=function(a,b,c){if(!a.hasAttribute(b))return c;a=a.getAttribute(b);return a.match(/^\s*$/)?null:a};sre.SemanticTree=function(a){this.mathml=a;this.parser=new sre.SemanticMathml;this.root=this.parser.parse(a);this.collator=this.parser.getFactory().leafMap.collateMeaning();var b=this.collator.newDefault();b&&(this.parser=new sre.SemanticMathml,this.parser.getFactory().defaultMap=b,this.root=this.parser.parse(a));sre.SemanticTree.implicitVisitor_.visit(this.root,{});sre.SemanticTree.unitVisitor_.visit(this.root,{});sre.SemanticAnnotations.getInstance().annotate(this.root)};
sre.SemanticTree.implicitVisitor_=new sre.SemanticVisitor("general",function(a,b){a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.MULTIPLICATION&&a.contentNodes.every(function(c){return!c.embellished&&c.textContent===sre.SemanticAttr.invisibleTimes()})&&(a.role=sre.SemanticAttr.Role.IMPLICIT);return!1});
sre.SemanticTree.unitVisitor_=new sre.SemanticVisitor("general",function(a,b){a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.MULTIPLICATION&&(b=a.childNodes,b.length&&(sre.SemanticPred.isPureUnit(b[0])||sre.SemanticPred.isUnitCounter(b[0]))&&a.childNodes.slice(1).every(sre.SemanticPred.isPureUnit)&&(a.role=sre.SemanticAttr.Role.UNIT));return!1});sre.SemanticTree.empty=function(){var a=sre.DomUtil.parseInput("<math/>"),b=new sre.SemanticTree(a);b.mathml=a;return b};
sre.SemanticTree.fromNode=function(a,b){var c=sre.SemanticTree.empty();c.root=a;b&&(c.mathml=b);return c};sre.SemanticTree.fromRoot=function(a,b){for(;a.parent;)a=a.parent;a=sre.SemanticTree.fromNode(a);b&&(a.mathml=b);return a};sre.SemanticTree.prototype.xml=function(a){var b=sre.DomUtil.parseInput("<stree></stree>");a=this.root.xml(b.ownerDocument,a);b.appendChild(a);return b};sre.SemanticTree.prototype.toString=function(a){return(new sre.SystemExternal.xmldom.XMLSerializer).serializeToString(this.xml(a))};
sre.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return sre.DomUtil.formatXml(a)};sre.SemanticTree.prototype.displayTree=function(){this.root.displayTree()};sre.SemanticTree.prototype.replaceNode=function(a,b){var c=a.parent;c?c.replaceChild(a,b):this.root=b};sre.SemanticTree.prototype.toJson=function(){var a={};a.stree=this.root.toJson();return a};sre.Semantic={};sre.Semantic.Font=sre.SemanticAttr.Font;sre.Semantic.Role=sre.SemanticAttr.Role;sre.Semantic.Type=sre.SemanticAttr.Type;sre.Semantic.xmlTree=function(a){return sre.Semantic.getTree(a).xml()};sre.Semantic.getTree=function(a){return new sre.SemanticTree(a)};sre.Semantic.getTreeFromString=function(a){a=sre.DomUtil.parseInput(a);return sre.Semantic.getTree(a)};sre.MathspeakUtil={};sre.MathspeakUtil.spaceoutText=function(a){return a.textContent.split("").join(" ")};sre.MathspeakUtil.spaceoutNodes=function(a,b){var c=a.textContent.split(""),d=[],e=sre.SemanticProcessor.getInstance();a=a.ownerDocument;for(var f=0,g;g=c[f];f++)g=e.identifierNode(g,sre.Semantic.Font.UNKNOWN,""),b(g),d.push(g.xml(a));return d};sre.MathspeakUtil.spaceoutNumber=function(a){return sre.MathspeakUtil.spaceoutNodes(a,function(b){b.textContent.match(/\W/)||(b.type=sre.Semantic.Type.NUMBER)})};
sre.MathspeakUtil.spaceoutIdentifier=function(a){return sre.MathspeakUtil.spaceoutNodes(a,function(b){b.font=sre.Semantic.Font.UNKNOWN;b.type=sre.Semantic.Type.IDENTIFIER})};
sre.MathspeakUtil.nestingBarriers=[sre.Semantic.Type.CASES,sre.Semantic.Type.CELL,sre.Semantic.Type.INTEGRAL,sre.Semantic.Type.LINE,sre.Semantic.Type.MATRIX,sre.Semantic.Type.MULTILINE,sre.Semantic.Type.OVERSCORE,sre.Semantic.Type.ROOT,sre.Semantic.Type.ROW,sre.Semantic.Type.SQRT,sre.Semantic.Type.SUBSCRIPT,sre.Semantic.Type.SUPERSCRIPT,sre.Semantic.Type.TABLE,sre.Semantic.Type.UNDERSCORE,sre.Semantic.Type.VECTOR];sre.MathspeakUtil.nestingDepth={};
sre.MathspeakUtil.resetNestingDepth=function(a){sre.MathspeakUtil.nestingDepth={};return[a]};
sre.MathspeakUtil.getNestingDepth=function(a,b,c,d,e,f){d=d||sre.MathspeakUtil.nestingBarriers;e=e||{};f=f||function(h){return!1};var g=(new sre.SystemExternal.xmldom.XMLSerializer).serializeToString(b);sre.MathspeakUtil.nestingDepth[a]||(sre.MathspeakUtil.nestingDepth[a]={});if(sre.MathspeakUtil.nestingDepth[a][g])return sre.MathspeakUtil.nestingDepth[a][g];if(f(b)||0>c.indexOf(b.tagName))return 0;b=sre.MathspeakUtil.computeNestingDepth_(b,c,sre.BaseUtil.setdifference(d,c),e,f,0);return sre.MathspeakUtil.nestingDepth[a][g]=
b};sre.MathspeakUtil.containsAttr=function(a,b){if(!a.attributes)return!1;a=sre.DomUtil.toArray(a.attributes);for(var c=0,d;d=a[c];c++)if(b[d.nodeName]===d.nodeValue)return!0;return!1};
sre.MathspeakUtil.computeNestingDepth_=function(a,b,c,d,e,f){if(e(a)||-1<c.indexOf(a.tagName)||sre.MathspeakUtil.containsAttr(a,d))return f;-1<b.indexOf(a.tagName)&&f++;if(!a.childNodes||0===a.childNodes.length)return f;a=sre.DomUtil.toArray(a.childNodes);return Math.max.apply(null,a.map(function(g){return sre.MathspeakUtil.computeNestingDepth_(g,b,c,d,e,f)}))};
sre.MathspeakUtil.fractionNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth("fraction",a,["fraction"],sre.MathspeakUtil.nestingBarriers,{},sre.Messages.MS_FUNC.FRAC_NEST_DEPTH)};sre.MathspeakUtil.nestedFraction=function(a,b,c){a=sre.MathspeakUtil.fractionNestingDepth(a);a=Array.apply(null,Array(a)).map(function(d){return b});c&&a.push(c);return a.join(sre.Messages.REGEXP.JOINER_FRAC)};
sre.MathspeakUtil.openingFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.START,sre.Messages.MS.FRAC_V)};sre.MathspeakUtil.closingFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.END,sre.Messages.MS.FRAC_V)};sre.MathspeakUtil.overFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.FRAC_OVER)};
sre.MathspeakUtil.openingFractionBrief=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.START,sre.Messages.MS.FRAC_B)};sre.MathspeakUtil.closingFractionBrief=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.END,sre.Messages.MS.FRAC_B)};
sre.MathspeakUtil.openingFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.FRAC_S:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.FRAC_S)};
sre.MathspeakUtil.closingFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.ENDFRAC:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.ENDFRAC)};
sre.MathspeakUtil.overFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.FRAC_OVER:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.FRAC_OVER)};sre.MathspeakUtil.isSmallVulgarFraction=function(a){return sre.NumbersUtil.vulgarFractionSmall(a,10,100)?[a]:[]};
sre.MathspeakUtil.nestedSubSuper=function(a,b,c){for(;a.parentNode;){var d=a.parentNode,e=d.parentNode,f=a.getAttribute&&a.getAttribute("role");if(e.tagName===sre.Semantic.Type.SUBSCRIPT&&a===d.childNodes[1]||e.tagName===sre.Semantic.Type.TENSOR&&f&&(f===sre.Semantic.Role.LEFTSUB||f===sre.Semantic.Role.RIGHTSUB))b=c.sub+sre.Messages.REGEXP.JOINER_SUBSUPER+b;if(e.tagName===sre.Semantic.Type.SUPERSCRIPT&&a===d.childNodes[1]||e.tagName===sre.Semantic.Type.TENSOR&&f&&(f===sre.Semantic.Role.LEFTSUPER||
f===sre.Semantic.Role.RIGHTSUPER))b=c.sup+sre.Messages.REGEXP.JOINER_SUBSUPER+b;a=e}return b.trim()};sre.MathspeakUtil.subscriptVerbose=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUBSCRIPT,{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB})};sre.MathspeakUtil.subscriptBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUB,{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})};
sre.MathspeakUtil.superscriptVerbose=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUPERSCRIPT,{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB})};sre.MathspeakUtil.superscriptBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUP,{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})};
sre.MathspeakUtil.baselineVerbose=function(a){return(a=sre.MathspeakUtil.nestedSubSuper(a,"",{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB}))?a.replace(new RegExp(sre.Messages.MS.SUB+"$"),sre.Messages.MS.SUBSCRIPT).replace(new RegExp(sre.Messages.MS.SUPER+"$"),sre.Messages.MS.SUPERSCRIPT):sre.Messages.MS.BASELINE};sre.MathspeakUtil.baselineBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,"",{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})||sre.Messages.MS.BASE};
sre.MathspeakUtil.radicalNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth("radical",a,["sqrt","root"],sre.MathspeakUtil.nestingBarriers,{})};sre.MathspeakUtil.nestedRadical=function(a,b,c){var d=sre.MathspeakUtil.radicalNestingDepth(a);c=(a=sre.MathspeakUtil.getRootIndex(a))?sre.Messages.MS_FUNC.COMBINE_ROOT_INDEX(c,a):c;return 1===d?c:sre.Messages.MS_FUNC.COMBINE_NESTED_RADICAL(b,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(d-1),c)};
sre.MathspeakUtil.getRootIndex=function(a){a="sqrt"===a.tagName?"2":sre.XpathUtil.evalXPath("children/*[1]",a)[0].textContent.trim();return sre.Messages.MS_ROOT_INDEX[a]||""};sre.MathspeakUtil.openingRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.STARTROOT)};sre.MathspeakUtil.closingRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.ENDROOT)};
sre.MathspeakUtil.indexRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.ROOTINDEX)};sre.MathspeakUtil.openingRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.STARTROOT)};sre.MathspeakUtil.closingRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ENDROOT)};
sre.MathspeakUtil.indexRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ROOTINDEX)};sre.MathspeakUtil.openingRadicalSbrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ROOT)};sre.MathspeakUtil.indexRadicalSbrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.INDEX)};
sre.MathspeakUtil.underscoreNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth("underscore",a,["underscore"],sre.MathspeakUtil.nestingBarriers,{},function(b){return b.tagName&&b.tagName===sre.Semantic.Type.UNDERSCORE&&b.childNodes[0].childNodes[1].getAttribute("role")===sre.Semantic.Role.UNDERACCENT})};sre.MathspeakUtil.nestedUnderscore=function(a){a=sre.MathspeakUtil.underscoreNestingDepth(a);return Array(a).join(sre.Messages.MS.UNDER)+sre.Messages.MS.UNDERSCRIPT};
sre.MathspeakUtil.overscoreNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth("overscore",a,["overscore"],sre.MathspeakUtil.nestingBarriers,{},function(b){return b.tagName&&b.tagName===sre.Semantic.Type.OVERSCORE&&b.childNodes[0].childNodes[1].getAttribute("role")===sre.Semantic.Role.OVERACCENT})};sre.MathspeakUtil.nestedOverscore=function(a){a=sre.MathspeakUtil.overscoreNestingDepth(a);return Array(a).join(sre.Messages.MS.OVER)+sre.Messages.MS.OVERSCRIPT};
sre.MathspeakUtil.determinantIsSimple=function(a){if(a.tagName!==sre.Semantic.Type.MATRIX||a.getAttribute("role")!==sre.Semantic.Role.DETERMINANT)return[];for(var b=sre.XpathUtil.evalXPath("children/row/children/cell/children/*",a),c=0,d;d=b[c];c++)if(d.tagName!==sre.Semantic.Type.NUMBER){if(d.tagName===sre.Semantic.Type.IDENTIFIER&&(d=d.getAttribute("role"),d===sre.Semantic.Role.LATINLETTER||d===sre.Semantic.Role.GREEKLETTER||d===sre.Semantic.Role.OTHERLETTER))continue;return[]}return[a]};
sre.MathspeakUtil.generateBaselineConstraint=function(){var a=function(g){return g.map(function(h){return"ancestor::"+h})},b="not("+a(["subscript","superscript","tensor"]).join(" or ")+")",c=a(["relseq","multrel"]);a=a(["fraction","punctuation","fenced","sqrt","root"]);for(var d=[],e=0,f;f=a[e];e++)d=d.concat(c.map(function(g){return f+"/"+g}));c="not("+d.join(" | ")+")";return["ancestor::*/following-sibling::*",b,c].join(" and ")};
sre.MathspeakUtil.removeParens=function(a){if(!a.childNodes.length||!a.childNodes[0].childNodes.length||!a.childNodes[0].childNodes[0].childNodes.length)return"";a=a.childNodes[0].childNodes[0].childNodes[0].textContent;return a.match(/^\(.+\)$/)?a.slice(1,-1):a};sre.MathspeakUtil.componentString_={3:"CSFleftsuperscript",4:"CSFleftsubscript",2:"CSFbaseline",1:"CSFrightsubscript",0:"CSFrightsuperscript"};sre.MathspeakUtil.childNumber_={4:2,3:3,2:1,1:4,0:5};
sre.MathspeakUtil.generateTensorRuleStrings_=function(a){var b=[],c="",d="";a=parseInt(a,2);for(var e=0;5>e;e++){var f="children/*["+sre.MathspeakUtil.childNumber_[e]+"]";if(a&1){var g=sre.MathspeakUtil.componentString_[e%5];c="[t] "+g+"Verbose; [n] "+f+";"+c;d="[t] "+g+"Brief; [n] "+f+";"+d}else b.unshift("name("+f+')="empty"');a>>=1}b.push(c);b.push(d);return b};
sre.MathspeakUtil.generateTensorRules=function(a){var b=goog.bind(a.defineRule,a),c=goog.bind(a.defineRulesAlias,a);a=goog.bind(a.defineSpecialisedRule,a);for(var d="11111 11110 11101 11100 10111 10110 10101 10100 01111 01110 01101 01100".split(" "),e=0,f;f=d[e];e++){var g="tensor"+f;f=sre.MathspeakUtil.generateTensorRuleStrings_(f);var h=f.pop(),k=f.pop(),l=[g,"default",k,"self::tensor"].concat(f),m=[g,"brief",h,"self::tensor"].concat(f);b.apply(null,l);b.apply(null,m);a(g,"brief","sbrief");l=sre.MathspeakUtil.componentString_[2];
k+="; [t]"+l+"Verbose";h+="; [t]"+l+"Brief";g+="-baseline";l=[g,"default",k,"self::tensor","following-sibling::*"].concat(f);m=[g,"brief",h,"self::tensor","following-sibling::*"].concat(f);b.apply(null,l);b.apply(null,m);a(g,"brief","sbrief");g=[g,"self::tensor","not(following-sibling::*)","ancestor::fraction|ancestor::punctuated|ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::relseq|ancestor::multirel|@embellished"].concat(f);c.apply(null,g)}};sre.Locale={};sre.Locale.nestingToString=function(a){switch(a){case 1:return sre.Messages.MS.ONCE||"";case 2:return sre.Messages.MS.TWICE;default:return a.toString()}};sre.Locale.vulgarNestingDepth=function(a){return!!sre.MathspeakUtil.isSmallVulgarFraction(a).length};sre.Locale.combinePostfixIndex=function(a,b){return a===sre.Messages.MS.ROOTINDEX||a===sre.Messages.MS.INDEX?a:a+" "+b};sre.Locale.localFont=function(a){var b=sre.Messages.FONT[a];void 0===b&&(b=a||"");return"string"===typeof b?b:b[0]};
sre.Grammar.getInstance().setCorrection("localFont",sre.Locale.localFont);sre.Locale.localRole=function(a){return sre.Messages.ROLE[a]||a};sre.Grammar.getInstance().setCorrection("localRole",sre.Locale.localRole);sre.Locale.localEnclose=function(a){return sre.Messages.ENCLOSE[a]||a};sre.Grammar.getInstance().setCorrection("localEnclose",sre.Locale.localEnclose);sre.Locale.makePlural=function(a){var b=sre.Messages.PLURAL_UNIT[a];return b?b:sre.Messages.PLURAL(a)};
sre.Grammar.getInstance().setCorrection("plural",sre.Locale.makePlural);sre.Locale.prefixCombiner=function(a,b,c){a=c?c+" "+a:a;return b?b+" "+a:a};sre.Locale.postfixCombiner=function(a,b,c){a=c?c+" "+a:a;return b?a+" "+b:a};sre.Numbers.de={};sre.Numbers.de.onesNumbers_=" eins zwei drei vier f\u00fcnf sechs sieben acht neun zehn elf zw\u00f6lf dreizehn vierzehn f\u00fcnfzehn sechzehn siebzehn achtzehn neunzehn".split(" ");sre.Numbers.de.tensNumbers_="  zwanzig drei\u00dfig vierzig f\u00fcnfzig sechzig siebzig achtzig neunzig".split(" ");sre.Numbers.de.largeNumbers_=" tausend million milliarde billion billiarde trillion trilliard quadrillion quadrilliard quintillion quintilliarde sextillion sextilliarde".split(" ");
sre.Numbers.de.onePrefix_=function(a){return a===sre.Numbers.de.onesNumbers_[1]?"ein":a};sre.Numbers.de.hundredsToWords_=function(a){a%=1E3;var b=sre.Numbers.de.onesNumbers_[Math.floor(a/100)];var c=b?sre.Numbers.de.onePrefix_(b)+"hundert":"";if(a%=100)if(c+=c?sre.Numbers.de.NUMBERS.numSep:"",b=sre.Numbers.de.onesNumbers_[a])c+=b;else{var d=sre.Numbers.de.tensNumbers_[Math.floor(a/10)];b=sre.Numbers.de.onesNumbers_[a%10];c+=b?sre.Numbers.de.onePrefix_(b)+"und"+d:d}return c};
sre.Numbers.de.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c="";0<a;){if(a%1E3){var d=sre.Numbers.de.hundredsToWords_(a%1E3);c=sre.Numbers.de.onePrefix_(d)+(b?sre.Numbers.de.largeNumbers_[b]:"")+c}a=Math.floor(a/1E3);b++}return c.replace(/ein$/,"eins")};sre.Numbers.de.numberToOrdinal=function(a,b){return 1===a?"eintel":2===a?b?"halbe":"halb":sre.Numbers.de.wordOrdinal(a)+"l"};
sre.Numbers.de.wordOrdinal=function(a){return 1===a?"erste":3===a?"dritte":7===a?"siebte":8===a?"achte":sre.Numbers.de.numberToWords(a)+(19>a?"te":"ste")};sre.Numbers.de.simpleOrdinal=function(a){return a.toString()+"."};sre.Numbers.de.NUMBERS={wordOrdinal:sre.Numbers.de.wordOrdinal,simpleOrdinal:sre.Numbers.de.simpleOrdinal,numberToWords:sre.Numbers.de.numberToWords,numberToOrdinal:sre.Numbers.de.numberToOrdinal,vulgarSep:" ",numSep:""};var germanPrefixCombiner=function(a,b,c){"s"===c&&(b=b.split(" ").map(function(d){return d.replace(/s$/,"")}).join(" "),c="");a=c?c+" "+a:a;return b?b+" "+a:a},germanPostfixCombiner=function(a,b,c){a=c&&"s"!==c?c+" "+a:a;return b?a+" "+b:a};
sre.Locale.de={MS:{START:"Anfang",FRAC_V:"Bruch",FRAC_B:"Bruch",FRAC_S:"Bruch",END:"Ende",FRAC_OVER:"durch",TWICE:"Twice",NEST_FRAC:"geschachtelt",ENDFRAC:"Ende Bruch",SUPER:"hoch",SUB:"Index",SUP:"hoch",SUPERSCRIPT:"hoch",SUBSCRIPT:"Index",BASELINE:"Grundlinie",BASE:"Grund",NESTED:"geschachtelte",NEST_ROOT:"geschachtelte",STARTROOT:"Anfang Wurzel",ENDROOT:"Ende Wurzel",ROOTINDEX:"Wurzelexponent",ROOT:"Wurzel",INDEX:"Exponent",UNDER:"Unter",UNDERSCRIPT:"Unterschrift",OVER:"\u00dcber",OVERSCRIPT:"\u00dcberschrift"},
MS_FUNC:{FRAC_NEST_DEPTH:sre.Locale.vulgarNestingDepth,RADICAL_NEST_DEPTH:function(a){return 1<a?sre.Numbers.de.NUMBERS.numberToWords(a)+"fach":""},COMBINE_ROOT_INDEX:function(a,b){return a.replace("Wurzel",b?b+"wurzel":"")},COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){a=c.match(/exponent$/)?a+"r":a;a=(b?b+" ":"")+a;return c.match(/ /)?c.replace(/ /," "+a+" "):a+" "+c},FONT_REGEXP:function(a){a=a.split(" ").map(function(b){return b.replace(/s$/,"(|s)")}).join(" ");
return new RegExp("((^"+a+" )|( "+a+"$))")}},MS_ROOT_INDEX:{2:"Quadrat",3:"Kubik"},FONT:{bold:"fettes","bold-fraktur":"fettes Fraktur","bold-italic":"fettkursives","bold-script":"fettes Schreibschrift",caligraphic:"kalligrafisches","caligraphic-bold":"fettes kalligrafisches","double-struck":["mit Doppelstrich",germanPostfixCombiner],"double-struck-italic":["kursiv mit Doppelstrich",germanPostfixCombiner],fraktur:"Fraktur",fullwidth:"vollbreites",italic:"kursives",monospace:"nichtproportionales",normal:"normales",
oldstyle:"antiquiertes","oldstyle-bold":"antiquiertes fettes",script:"Schreibschrift","sans-serif":"serifenloses","sans-serif-italic":"serifenloses kursives","sans-serif-bold":"serifenloses fettes","sans-serif-bold-italic":"serifenloses fettkursives",unknown:"unbekannt"},EMBELLISH:{"super":"hoch",sub:"Index",circled:"eingekreistes",parenthesized:"eingeklammertes",period:["Punkt",germanPostfixCombiner],"negative-circled":"schwarz eingekreistes","double-circled":"doppelt eingekreistes","circled-sans-serif":"eingekreistes serifenloses",
"negative-circled-sans-serif":"schwarz eingekreistes serifenloses",comma:["Komma",germanPostfixCombiner],squared:"umrahmtes","negative-squared":"schwarz umrahmtes"},ROLE:{addition:"Addition",multiplication:"Multiplikation",subtraction:"Subtraktion",division:"Division",equality:"Gleichung",inequality:"Ungleichung",element:"Element",arrow:"Pfeil",determinant:"Determinante",rowvector:"Zeilenvektor",binomial:"Binomialkoeffizient",squarematrix:"quadratische Matrize",multiline:"mehrzeiligem Ausdruck",matrix:"Matrize",
vector:"Vektor",cases:"Fallunterscheidung",table:"Tabelle",unknown:"unbekannt"},ENCLOSE:{longdiv:"langer Bruchstrich",actuarial:"Bilanzsumme",radical:"Quadratwurzel",box:"rechteckige Umrandung",roundedbox:"abgerundete rechteckige Umrandung",circle:"kreis\u00e4hnliche Umrandung",left:"senkrechte Linie links",right:"senkrechte Linie rechts",top:"waagerechte Linie oberhalb",bottom:"waagerechte Linie unterhalb",updiagonalstrike:"durchgestrichen",downdiagonalstrike:"durchgestrichen",verticalstrike:"senkrecht durchgestrichen",
horizontalstrike:"durchgestrichen",madruwb:"arabisches Fakult\u00e4tssymbol",updiagonalarrow:"Pfeil von links unten nach rechts oben",phasorangle:"phasor angle",unknown:"langer Bruchstrich"},NAVIGATE:{COLLAPSIBLE:"kollabierbar",EXPANDABLE:"ausfaltbar",LEVEL:"Niveau"},REGEXP:{TEXT:"a-zA-Z\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df",NUMBER:"((\\d{1,3})(?=(.| ))((.| )\\d{3})*(\\,\\d+)?)|^\\d*\\,\\d+|^\\d+",DECIMAL_MARK:",",DIGIT_GROUP:"\\.",JOINER_SUBSUPER:" ",JOINER_FRAC:" "},PLURAL_UNIT:{Meile:"Meilen",
Yard:"Yards",Joule:"Joules",Gallone:"Gallonen",Unze:"Unzen",Tonne:"Tonnen",Minute:"Minuten",Stunde:"Stunden",Sekunde:"Sekunden"},PLURAL:function(a){return a.match(/(B|b)yte$/)?a.replace(/yte$/,"ytes"):a},NUMBERS:sre.Numbers.de.NUMBERS,ALPHABETS:{latinSmall:"abcdefghijklmnopqrstuvwxyz".split(""),latinCap:"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),greekSmall:"nabla;alpha;beta;gamma;delta;epsilon;zeta;eta;theta;iota;kappa;lambda;my;ny;xi;omikron;pi;rho;abschlie\u00dfendes sigma;sigma;tau;ypsilon;phi;chi;psi;omega;partielle Ableitung;epsilon;theta;kappa;phi;rho;pi".split(";"),
greekCap:"Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Theta Sigma Tau Ypsilon Phi Chi Psi Omega".split(" ")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?"null":sre.Numbers.de.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:"gro\u00dfes"},smallPrefix:{default:""},digitPrefix:{default:"s"}},ALPHABET_COMBINER:germanPrefixCombiner};
sre.Grammar.getInstance().setCorrection("correctOne",function(a){return a.replace(/^eins /,"ein ")});sre.Grammar.getInstance().setCorrection("localFontNumber",function(a){var b=sre.Messages.FONT[a];void 0===b&&(b=a||"");b="string"===typeof b?b:b[0];return b.split(" ").map(function(c){return c.replace(/s$/,"")}).join(" ")});sre.Grammar.getInstance().setCorrection("lowercase",function(a){return a.toLowerCase()});
sre.Grammar.getInstance().setCorrection("article",function(a){return"dative"===sre.Grammar.getInstance().getParameter("case")?{der:"dem",die:"der",das:"dem"}[a]:a});sre.Grammar.getInstance().setCorrection("masculine",function(a){return"dative"===sre.Grammar.getInstance().getParameter("case")?a+"n":a});sre.Numbers.en={};sre.Numbers.en.onesNumbers_=" one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen".split(" ");sre.Numbers.en.tensNumbers_="  twenty thirty forty fifty sixty seventy eighty ninety".split(" ");sre.Numbers.en.largeNumbers_=" thousand million billion trillion quadrillion quintillion sextillion septillion octillion nonillion decillion".split(" ");
sre.Numbers.en.hundredsToWords_=function(a){a%=1E3;var b=sre.Numbers.en.onesNumbers_[Math.floor(a/100)]?sre.Numbers.en.onesNumbers_[Math.floor(a/100)]+sre.Numbers.en.NUMBERS.numSep+"hundred":"";if(a%=100)b+=b?sre.Numbers.en.NUMBERS.numSep:"",b+=sre.Numbers.en.onesNumbers_[a]||sre.Numbers.en.tensNumbers_[Math.floor(a/10)]+(a%10?sre.Numbers.en.NUMBERS.numSep+sre.Numbers.en.onesNumbers_[a%10]:"");return b};
sre.Numbers.en.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c="";0<a;)a%1E3&&(c=sre.Numbers.en.hundredsToWords_(a%1E3)+(b?"-"+sre.Numbers.en.largeNumbers_[b]+"-":"")+c),a=Math.floor(a/1E3),b++;return c.replace(/-$/,"")};sre.Numbers.en.numberToOrdinal=function(a,b){if(1===a)return b?"oneths":"oneth";if(2===a)return b?"halves":"half";a=sre.Numbers.en.wordOrdinal(a);return b?a+"s":a};
sre.Numbers.en.wordOrdinal=function(a){a=sre.Numbers.en.numberToWords(a);return a=a.match(/one$/)?a.slice(0,-3)+"first":a.match(/two$/)?a.slice(0,-3)+"second":a.match(/three$/)?a.slice(0,-5)+"third":a.match(/five$/)?a.slice(0,-4)+"fifth":a.match(/eight$/)?a.slice(0,-5)+"eighth":a.match(/nine$/)?a.slice(0,-4)+"ninth":a.match(/twelve$/)?a.slice(0,-6)+"twelfth":a.match(/ty$/)?a.slice(0,-2)+"tieth":a+"th"};
sre.Numbers.en.simpleOrdinal=function(a){var b=a%100,c=a.toString();if(10<b&&20>b)return c+"th";switch(a%10){case 1:return c+"st";case 2:return c+"nd";case 3:return c+"rd";default:return c+"th"}};sre.Numbers.en.NUMBERS={wordOrdinal:sre.Numbers.en.wordOrdinal,simpleOrdinal:sre.Numbers.en.simpleOrdinal,numberToWords:sre.Numbers.en.numberToWords,numberToOrdinal:sre.Numbers.en.numberToOrdinal,vulgarSep:" ",numSep:" "};sre.Locale.en={MS:{START:"Start",FRAC_V:"Fraction",FRAC_B:"Frac",FRAC_S:"Frac",END:"End",FRAC_OVER:"Over",TWICE:"Twice",NEST_FRAC:"Nest",ENDFRAC:"EndFrac",SUPER:"Super",SUB:"Sub",SUP:"Sup",SUPERSCRIPT:"Superscript",SUBSCRIPT:"Subscript",BASELINE:"Baseline",BASE:"Base",NESTED:"Nested",NEST_ROOT:"Nest",STARTROOT:"StartRoot",ENDROOT:"EndRoot",ROOTINDEX:"RootIndex",ROOT:"Root",INDEX:"Index",UNDER:"Under",UNDERSCRIPT:"Underscript",OVER:"Over",OVERSCRIPT:"Overscript"},MS_FUNC:{FRAC_NEST_DEPTH:sre.Locale.vulgarNestingDepth,
RADICAL_NEST_DEPTH:sre.Locale.nestingToString,COMBINE_ROOT_INDEX:function(a,b){return a},COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){return a+b+c},FONT_REGEXP:function(a){return new RegExp("^"+a.split(/ |-/).join("( |-)")+"( |-)")}},MS_ROOT_INDEX:{},FONT:{bold:"bold","bold-fraktur":"bold fraktur","bold-italic":"bold italic","bold-script":"bold script",caligraphic:"calligraphic","caligraphic-bold":"calligraphic bold","double-struck":"double struck",
"double-struck-italic":"double struck italic",fraktur:"fraktur",fullwidth:"fullwidth",italic:"italic",monospace:"monospace",normal:"normal",oldstyle:"oldstyle","oldstyle-bold":"oldstyle bold",script:"script","sans-serif":"sans serif","sans-serif-italic":"sans serif italic","sans-serif-bold":"sans serif bold","sans-serif-bold-italic":"sans serif bold italic",unknown:"unknown"},EMBELLISH:{"super":"super",sub:"sub",circled:"circled",parenthesized:"parenthesized",period:["period",sre.Locale.postfixCombiner],
"negative-circled":"black circled","double-circled":"double circled","circled-sans-serif":"circled sans serif","negative-circled-sans-serif":"black circled sans serif",comma:["comma",sre.Locale.postfixCombiner],squared:"squared","negative-squared":"black squared"},ROLE:{addition:"addition",multiplication:"multiplication",subtraction:"subtraction",division:"division",equality:"equality",inequality:"inequality",element:"element",arrow:"arrow",determinant:"determinant",rowvector:"row vector",binomial:"binomial",
squarematrix:"square matrix",multiline:"multiple lines",matrix:"matrix",vector:"vector",cases:"case statement",table:"table",unknown:"unknown"},ENCLOSE:{longdiv:"long division",actuarial:"actuarial symbol",radical:"square root",box:"box",roundedbox:"rounded box",circle:"circle",left:"left vertical-line",right:"right vertical-line",top:"overbar",bottom:"underbar",updiagonalstrike:"crossout",downdiagonalstrike:"crossout",verticalstrike:"vertical strikeout",horizontalstrike:"crossout",madruwb:"Arabic factorial symbol",
updiagonalarrow:"diagonal arrow",phasorangle:"phasor angle",unknown:"long division"},NAVIGATE:{COLLAPSIBLE:"collapsible",EXPANDABLE:"expandable",LEVEL:"Level"},REGEXP:{TEXT:"a-zA-Z",NUMBER:"((\\d{1,3})(?=(,| ))((,| )\\d{3})*(\\.\\d+)?)|^\\d*\\.\\d+|^\\d+",DECIMAL_MARK:"\\.",DIGIT_GROUP:",",JOINER_SUBSUPER:" ",JOINER_FRAC:""},PLURAL_UNIT:{foot:"feet",inch:"inches","square foot":"square feet","square inch":"square inches","cubic foot":"cubic feet","cubic inch":"cubic inches"},NUMBERS:sre.Numbers.en.NUMBERS,
ALPHABETS:{latinSmall:"abcdefghijklmnopqrstuvwxyz".split(""),latinCap:"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),greekSmall:"nabla;alpha;beta;gamma;delta;epsilon;zeta;eta;theta;iota;kappa;lamda;mu;nu;xi;omicron;pi;rho;final sigma;sigma;tau;upsilon;phi;chi;psi;omega;partial differential;epsilon;theta;kappa;phi;rho;pi".split(";"),greekCap:"Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lamda Mu Nu Xi Omicron Pi Rho Theta Sigma Tau Upsilon Phi Chi Psi Omega".split(" ")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===
a?"zero":sre.Numbers.en.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:"cap",mathspeak:"upper"},smallPrefix:{default:""},digitPrefix:{default:""}},ALPHABET_COMBINER:sre.Locale.prefixCombiner};sre.Numbers.es={};sre.Numbers.es.onesNumbers_=" uno dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce quince diecis\u00e9is diecisiete dieciocho diecinueve veinte veintiuno veintid\u00f3s veintitr\u00e9s veinticuatro veinticinco veintis\u00e9is veintisiete veintiocho veintinueve".split(" ");sre.Numbers.es.tensNumbers_="   treinta cuarenta cincuenta sesenta setenta ochenta noventa".split(" ");sre.Numbers.es.hundredsNumbers_=" cien doscientos trescientos cuatrocientos quinientos seiscientos setecientos ochocientos novecientos".split(" ");
sre.Numbers.es.largeNumbers_=";mil;mill\u00f3n;mil mill\u00f3nes;bill\u00f3n;mil bill\u00f3nes;trill\u00f3n;mil trill\u00f3nes;cuatrill\u00f3;mil cuatrill\u00f3es;quintill\u00f3n;mil quintill\u00f3nes;sextill\u00f3n;mil sextill\u00f3nes;septill\u00f3n;mil septill\u00f3nes;octill\u00f3n;mil octill\u00f3nes;nonill\u00f3n;mil nonill\u00f3nes;decill\u00f3n;mil decill\u00f3nes".split(";");
sre.Numbers.es.tensToWords_=function(a){var b=a%100;if(30>b)return sre.Numbers.es.onesNumbers_[b];a=sre.Numbers.es.tensNumbers_[Math.floor(b/10)];b=sre.Numbers.es.onesNumbers_[b%10];return a&&b?a+" y "+b:a||b};sre.Numbers.es.hundredsToWords_=function(a){var b=a%1E3;a=Math.floor(b/100);var c=sre.Numbers.es.hundredsNumbers_[a];b=sre.Numbers.es.tensToWords_(b%100);return 1===a?b?c+"to "+b:c:c&&b?c+" "+b:c||b};
sre.Numbers.es.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c="";0<a;){var d=a%1E3;if(d){var e=sre.Numbers.es.largeNumbers_[b],f=sre.Numbers.es.hundredsToWords_(d);b?1===d?(e=e.match("/^mil( |$)/")?e:"un "+e,c=e+(c?" "+c:"")):(e=e.replace(/\u00f3n$/,"ones"),c=sre.Numbers.es.hundredsToWords_(d)+" "+e+(c?" "+c:"")):c=f}a=Math.floor(a/1E3);b++}return c};sre.Numbers.es.onesOrdinals_="primera segunda tercera cuarta quinta sexta s\u00e9ptima octava novena d\u00e9cima und\u00e9cima duod\u00e9cima".split(" ");
sre.Numbers.es.tensOrdinals_="d\u00e9cima vig\u00e9sima trig\u00e9sima cuadrag\u00e9sima quincuag\u00e9sima sexag\u00e9sima septuag\u00e9sima octog\u00e9sima nonag\u00e9sima".split(" ");sre.Numbers.es.hundredsOrdinals_="cent\u00e9sima ducent\u00e9sima tricent\u00e9sima cuadringent\u00e9sima quingent\u00e9sima sexcent\u00e9sima septingent\u00e9sima octingent\u00e9sima noningent\u00e9sima".split(" ");
sre.Numbers.es.numberToOrdinal=function(a,b){if(1999<a)return a.toString()+"a";if(12>=a)return sre.Numbers.es.onesOrdinals_[a-1];b=[];1E3<=a&&(a-=1E3,b.push("mil\u00e9sima"));if(!a)return b.join(" ");var c=Math.floor(a/100);0<c&&(b.push(sre.Numbers.es.hundredsOrdinals_[c-1]),a%=100);12>=a?b.push(sre.Numbers.es.onesOrdinals_[a-1]):(c=Math.floor(a/10),0<c&&(b.push(sre.Numbers.es.tensOrdinals_[c-1]),a%=10),0<a&&b.push(sre.Numbers.es.onesOrdinals_[a-1]));return b.join(" ")};
sre.Numbers.es.simpleOrdinal=function(a){var b=sre.Grammar.getInstance().getParameter("gender");return a.toString()+("female"===b?"a":"o")};sre.Numbers.es.NUMBERS={simpleOrdinal:sre.Numbers.es.simpleOrdinal,numberToWords:sre.Numbers.es.numberToWords,numberToOrdinal:sre.Numbers.es.numberToOrdinal,vulgarSep:"-"};var sansserifCombiner=function(a,b,c){a="sans serif "+(c?c+" "+a:a);return b?a+" "+b:a};
sre.Locale.es={MS:{START:"empezar",FRAC_V:"fracci\u00f3n",FRAC_B:"frac",FRAC_S:"frac",END:"finalizar",FRAC_OVER:"entre",TWICE:"",NEST_FRAC:"",ENDFRAC:"",SUPER:"super",SUB:"sub",SUP:"sup",SUPERSCRIPT:"super\u00edndice",SUBSCRIPT:"sub\u00edndice",BASELINE:"l\u00ednea base",BASE:"",NESTED:"",NEST_ROOT:"",STARTROOT:"empezar ra\u00edz",ENDROOT:"finalizar ra\u00edz",ROOTINDEX:"\u00edndice de ra\u00edz",ROOT:"ra\u00edz",INDEX:"",UNDER:"bajo",UNDERSCRIPT:"bajo\u00edndice",OVER:"sobre",OVERSCRIPT:"sobre\u00edndice"},
MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return""},COMBINE_ROOT_INDEX:sre.Locale.combinePostfixIndex,COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){return a+c},FONT_REGEXP:function(a){return RegExp("^"+a+" ")}},MS_ROOT_INDEX:{2:"cuadrada",3:"c\u00fabica",4:"a la cuarta",5:"a la quinta",6:"a la sexta",7:"a la s\u00e9ptima",8:"a la octava",9:"a la novena",10:"a la d\u00e9cima"},FONT:{bold:"negrita","bold-fraktur":"negrita Fraktur",
"bold-italic":"negrita cursiva","bold-script":"negrita script",caligraphic:"caligr\u00e1fica","caligraphic-bold":"caligr\u00e1fica negrita","double-struck":"negrita de pizarra","double-struck-italic":"negrita de pizarra cursiva",fraktur:"Fraktur",fullwidth:"ancho completo",italic:"cursiva",monospace:"monoespacio",normal:"normal",oldstyle:"estilo antiguo","oldstyle-bold":"estilo antiguo negrita",script:"script","sans-serif":"sans serif","sans-serif-italic":"sans serif cursiva","sans-serif-bold":"sans serif negrita",
"sans-serif-bold-italic":"sans serif negrita cursiva",unknown:"desconocida"},ROLE:{addition:"adici\u00f3n",multiplication:"multiplicaci\u00f3n",subtraction:"resta",division:"divisi\u00f3n",equality:"igualdad",inequality:"desigualdad",element:"elemento",arrow:"flecha",determinant:"determinante",rowvector:"fila vector",binomial:"binomial",squarematrix:"matriz cuadrada",multiline:"l\u00edneas m\u00faltiples",matrix:"matriz",vector:"vector",cases:"declaraci\u00f3n de caso",table:"mesa",unknown:"desconocida"},
ENCLOSE:{longdiv:"divisi\u00f3n larga",actuarial:"s\u00edmbolo actuarial",radical:"ra\u00edz cuadrada",box:"caja",roundedbox:"caja redondeada",circle:"c\u00edrculo",left:"barra vertical izquierda",right:"barra vertical derecha",top:"barra",bottom:"subbarra",updiagonalstrike:"tachadura",downdiagonalstrike:"tachadura",verticalstrike:"ponchado vertical",horizontalstrike:"cruce",madruwb:"s\u00edmbolo factorial \u00e1rabe",updiagonalarrow:"flecha diagonal",phasorangle:"\u00e1ngulo de fasores",unknown:"divisi\u00f3n larga"},
EMBELLISH:{"super":"super\u00edndice",sub:"sub\u00edndice",circled:["en circulo",sre.Locale.postfixCombiner],parenthesized:["entre par\u00e9ntesis",sre.Locale.postfixCombiner],period:["punto",sre.Locale.postfixCombiner],"negative-circled":["en circulo negro",sre.Locale.postfixCombiner],"double-circled":["en doble circulo",sre.Locale.postfixCombiner],"circled-sans-serif":["en circulo",sansserifCombiner],"negative-circled-sans-serif":["en circulo negro",sansserifCombiner],comma:["coma",sre.Locale.postfixCombiner],
squared:["en cuadrado",sre.Locale.postfixCombiner],"negative-squared":["en cuadrado negro",sre.Locale.postfixCombiner]},NAVIGATE:{COLLAPSIBLE:"plegable",EXPANDABLE:"ampliable",LEVEL:"nivel"},REGEXP:{TEXT:"a-zA-Z\u00e1\u00e9\u00ed\u00f3\u00fa\u00f1\u00c1\u00c9\u00cd\u00d3\u00da\u00d1",NUMBER:"((\\d{1,3})(?=( ))(( )\\d{3})*(,\\d+)?)|^\\d*,\\d+|^\\d+",DECIMAL_MARK:",",DIGIT_GROUP:"",JOINER_SUBSUPER:" ",JOINER_FRAC:" "},PLURAL_UNIT:{},PLURAL:function(a){return/.*s$/.test(a)?a:a+"s"},NUMBERS:sre.Numbers.es.NUMBERS,
ALPHABETS:{latinSmall:"abcdefghijklmnopqrstuvwxyz".split(""),latinCap:"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),greekSmall:"nabla;alfa;beta;gamma;delta;\u00e9psilon;zeta;eta;theta;iota;kappa;lambda;mi;ni;xi;\u00f3micron;pi;rho;sigma final;sigma;tau;\u00edpsilon;phi;ji;psi;omega;diferencial parcial;\u00e9psilon;theta;kappa;phi;rho;pi".split(";"),greekCap:"Alfa Beta Gamma Delta \u00c9psilon Zeta Eta Theta Iota Kappa Lambda Mi Ni Xi \u00d3micron Pi Rho Theta Sigma Tau \u00cdpsilon Phi Ji Psi Omega".split(" ")},
ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?"cero":sre.Numbers.es.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:"may\u00fascula"},smallPrefix:{default:""},digitPrefix:{default:""}},ALPHABET_COMBINER:sre.Locale.prefixCombiner,UNIT_TIMES:"por"};sre.Numbers.fr={};sre.Numbers.fr.SUB_ISO="fr";sre.Numbers.fr.onesNumbers_=" un deux trois quatre cinq six sept huit neuf dix onze douze treize quatorze quinze seize dix-sept dix-huit dix-neuf".split(" ");sre.Numbers.fr.tensNumbers_={fr:"  vingt trente quarante cinquante soixante soixante-dix quatre-vingts quatre-vingt-dix".split(" "),be:"  vingt trente quarante cinquante soixante septante quatre-vingts nonante".split(" "),sw:"  vingt trente quarante cinquante soixante septante huitante nonante".split(" ")};
sre.Numbers.fr.largeNumbers_=";mille;millions;milliards;billions;mille billions;trillions;mille trillions;quadrillions;mille quadrillions;quintillions;mille quintillions".split(";");
sre.Numbers.fr.hundredsToWords_=function(a){var b=a%1E3;a=sre.Numbers.fr.onesNumbers_[Math.floor(b/100)]?sre.Numbers.fr.onesNumbers_[Math.floor(b/100)]+"-cent":"";if(b%=100){a+=a?"-":"";var c=sre.Numbers.fr.onesNumbers_[b];if(c)a+=c;else{var d=sre.Numbers.fr.tensNumbers_[sre.Numbers.fr.SUB_ISO][Math.floor(b/10)];d.match(/\-dix$/)?(c=sre.Numbers.fr.onesNumbers_[b%10+10],a+=d.replace(/\-dix$/,"")+"-"+c):a+=d+(b%10?"-"+sre.Numbers.fr.onesNumbers_[b%10]:"")}}return(b=a.match(/s\-\w+$/))?a.replace(/s\-\w+$/,
b[0].slice(1)):a.replace(/\-un$/,"-et-un")};
sre.Numbers.fr.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c="";0<a;){var d=a%1E3;if(d){var e=sre.Numbers.fr.largeNumbers_[b],f=sre.Numbers.fr.hundredsToWords_(d);e&&e.match(/^mille /)?(d=e.replace(/^mille /,""),c=c.match(RegExp(d))?f+(b?"-mille-":"")+c:c.match(RegExp(d.replace(/s$/,"")))?f+(b?"-mille-":"")+c.replace(d.replace(/s$/,""),d):f+(b?"-"+e+"-":"")+c):(e=1===d&&e?e.replace(/s$/,""):e,c=f+(b?"-"+e+"-":"")+c)}a=Math.floor(a/1E3);b++}return c.replace(/-$/,
"")};sre.Numbers.fr.SMALL_ORDINAL={1:"uni\u00e8me",2:"demi",3:"tiers",4:"quart"};sre.Numbers.fr.numberToOrdinal=function(a,b){var c=sre.Numbers.fr.SMALL_ORDINAL[a]||sre.Numbers.fr.wordOrdinal(a);return 3===a?c:b?c+"s":c};sre.Numbers.fr.wordOrdinal=function(a){if(1===a)return"premi\u00e8re";a=sre.Numbers.fr.numberToWords(a);a.match(/^neuf$/)?a=a.slice(0,-1)+"v":a.match(/cinq$/)?a+="u":a.match(/trois$/)||!a.match(/e$/)&&!a.match(/s$/)||(a=a.slice(0,-1));return a+"i\u00e8me"};
sre.Numbers.fr.simpleOrdinal=function(a){var b=sre.Grammar.getInstance().getParameter("gender");return 1===a?a.toString()+("male"===b?"er":"re"):a.toString()+"e"};sre.Numbers.fr.NUMBERS={wordOrdinal:sre.Numbers.fr.wordOrdinal,simpleOrdinal:sre.Numbers.fr.simpleOrdinal,numberToWords:sre.Numbers.fr.numberToWords,numberToOrdinal:sre.Numbers.fr.numberToOrdinal,vulgarSep:"-"};sre.Locale.fr={MS:{START:"d\u00e9but",FRAC_V:"fraction",FRAC_B:"frac",FRAC_S:"frac",END:"fin",FRAC_OVER:"sur",ONCE:"1",TWICE:"2",NEST_FRAC:"imbriqu\u00e9e",ENDFRAC:"fin frac",SUPER:"sup",SUB:"sub",SUP:"sup",SUPERSCRIPT:"exposant",SUBSCRIPT:"indice",BASELINE:"position de base",BASE:"position de base",NESTED:"imbriqu\u00e9e",NEST_ROOT:"imbriqu\u00e9e",STARTROOT:"d\u00e9but racine",ENDROOT:"fin racine",ROOTINDEX:"indice du radical",ROOT:"racine",INDEX:"indice",UNDER:"sous",UNDERSCRIPT:"souscript",OVER:"sus",
OVERSCRIPT:"suscript"},MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:sre.Locale.nestingToString,COMBINE_ROOT_INDEX:sre.Locale.combinePostfixIndex,COMBINE_NESTED_FRACTION:function(a,b,c){return c.replace(/ $/g,"")+b+a},COMBINE_NESTED_RADICAL:function(a,b,c){return c+" "+a},FONT_REGEXP:function(a){return RegExp(" (en |)"+a+"$")}},MS_ROOT_INDEX:{2:"carr\u00e9e",3:"cubique"},FONT:{bold:"en gras","bold-fraktur":"en gothique gras","bold-italic":"en italique gras","bold-script":"de ronde en gras",
caligraphic:"en calligraphique","caligraphic-bold":"en calligraphique gras","double-struck":"ajour\u00e9","double-struck-italic":"ajour\u00e9 en italique",fraktur:"en gothique",fullwidth:"en pleine largeur",italic:"en italique",monospace:"en chasse fixe",normal:"en normal",oldstyle:"en ancien","oldstyle-bold":"en ancien gras",script:"de ronde","sans-serif":"sans empattement","sans-serif-italic":"en italique sans empattement","sans-serif-bold":"en gras sans empattement","sans-serif-bold-italic":"en italique gras sans empattement",
unknown:"inconnu"},EMBELLISH:{"super":["exposant",sre.Locale.prefixCombiner],sub:["indice",sre.Locale.prefixCombiner],circled:"encercl\u00e9",parenthesized:"entre parenth\u00e8ses",period:"un point","negative-circled":"encercl\u00e9 noir","double-circled":"encercl\u00e9 double","circled-sans-serif":"sans empattement encercl\u00e9","negative-circled-sans-serif":"sans empattement encercl\u00e9 noir",comma:"virgule",squared:"encadr\u00e9","negative-squared":"encadr\u00e9 inverse"},ROLE:{addition:"addition",
multiplication:"multiplication",subtraction:"soustraction",division:"division",equality:"\u00e9galit\u00e9",inequality:"in\u00e9galit\u00e9",element:"\u00e9l\u00e9ment",arrow:"fl\u00e8che",determinant:"d\u00e9terminant",rowvector:"vecteur-rang\u00e9e",binomial:"binomial",squarematrix:"matrice carr\u00e9e","set empty":"ensemble vide","set extended":"extension","set singleton":"singleton","set collection":"collection",label:"\u00e9tiquette",multiline:"multi-ligne",matrix:"matrice",vector:"vecteur",
cases:"d\u00e9claration de cas",table:"tableau",unknown:"inconnu"},ENCLOSE:{longdiv:"longue division",actuarial:"notation actuarielle",radical:"radical",box:"bo\u00eete",roundedbox:"bo\u00eete arrondie",circle:"cercle",left:"barre verticale gauche",right:"barre verticale droite",top:"trait suscrit",bottom:"trait souscrit",updiagonalstrike:"texte biff\u00e9 diagonal montant",downdiagonalstrike:"texte biff\u00e9 diagonal descendant",verticalstrike:"texte biff\u00e9 vertical",horizontalstrike:"texte biff\u00e9 horizontal",
madruwb:"symbole factorielle arabe",updiagonalarrow:"fl\u00e8che diagonale montante",phasorangle:"angle de phase",unknown:"division longue"},NAVIGATE:{COLLAPSIBLE:"compressible",EXPANDABLE:"d\u00e9compressible",LEVEL:"niveau"},REGEXP:{TEXT:"a-zA-Z\u00e0\u00e2\u00e6\u00e7\u00e9\u00e8\u00ea\u00eb\u00ee\u00ef\u00f4\u0153\u00f9\u00fb\u00fc\u00ff\u00c0\u00c2\u00c6\u00c7\u00c9\u00c8\u00ca\u00cb\u00ce\u00cf\u00d4\u0152\u00d9\u00db\u00dc\u0178",NUMBER:"((\\d{1,3})(?=( ))(( )\\d{3})*(,\\d+)?)|^\\d*,\\d+|^\\d+",
DECIMAL_MARK:",",DIGIT_GROUP:"",JOINER_SUBSUPER:"-",JOINER_FRAC:" "},PLURAL_UNIT:{foot:"feet",inch:"inches"},NUMBERS:sre.Numbers.fr.NUMBERS,ALPHABETS:{latinSmall:"abcdefghijklmnopqrstuvwxyz".split(""),latinCap:"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),greekSmall:"nabla;alpha;b\u00eata;gamma;delta;epsilon;z\u00eata;\u00eata;th\u00eata;iota;kappa;lambda;m\u00fb;n\u00fb;xi;omicron;pi;rh\u00f4;sigma final;sigma;tau;upsilon;phi;chi;psi;om\u00e9ga;d\u00e9riv\u00e9e partielle;epsilon;th\u00eata;kappa;phi;rh\u00f4;pi".split(";"),
greekCap:"Alpha B\u00eata Gamma Delta Epsilon Z\u00eata \u00cata Th\u00eata Iota Kappa Lambda M\u00fb N\u00fb Xi Omicron Pi Rh\u00f4 Th\u00eata Sigma Tau Upsilon Phi Chi Psi Om\u00e9ga".split(" ")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?"zero":sre.Numbers.fr.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:"majuscule"},smallPrefix:{default:""},
digitPrefix:{default:""}},ALPHABET_COMBINER:function(a,b,c){a=c?a+" "+c:a;return b?a+" "+b:a}};sre.Numbers.nemeth={};sre.Numbers.nemeth.oneNumbers_="\u2834\u2802\u2806\u2812\u2832\u2822\u2816\u2836\u2826\u2814".split("");sre.Numbers.nemeth.numberToWords=function(a){return a.toString().split("").map(function(b){return sre.Numbers.nemeth.oneNumbers_[parseInt(b,10)]}).join("")};sre.Numbers.nemeth.NUMBERS={numberToWords:sre.Numbers.nemeth.numberToWords,simpleOrdinal:sre.Numbers.nemeth.numberToWords};var postfixCombiner=function(a,b,c){return b?a+b:a},embellishCombiner=function(a,b,c){return b+(c?c:"\u2830")+a+"\u283b"},doubleEmbellishCombiner=function(a,b,c){return b+(c?c:"\u2830")+a+"\u283b\u283b"},parensCombiner=function(a,b,c){return b+(c?c:"\u2830")+a+"\u283e"};
sre.Locale.nemeth={MS:{FRACTION_REPEAT:"\u2820",FRACTION_START:"\u2839",FRAC_V:"\u2839",FRAC_B:"Frac",FRAC_S:"Frac",END:"\u2820",FRACTION_OVER:"\u280c",TWICE:"Twice",NEST_FRAC:"Nest",ENDFRAC:"\u283c",FRACTION_END:"\u283c",SUPER:"\u2818",SUB:"\u2830",SUP:"\u2818",SUPERSCRIPT:"\u2818",SUBSCRIPT:"\u2830",BASELINE:"\u2810",BASE:"\u2810",NESTED:"\u2828",NEST_ROOT:"Nest",STARTROOT:"\u281c",ENDROOT:"\u283b",ROOTINDEX:"\u2823",ROOT:"\u2828",INDEX:"\u2823",UNDER:"\u2829",UNDERSCRIPT:"\u2829",OVER:"\u2823",
OVERSCRIPT:"\u2823"},MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return""},COMBINE_ROOT_INDEX:function(a,b){return a},FONT_REGEXP:function(a){return RegExp("^"+a)}},MS_ROOT_INDEX:{},FONT:{bold:"\u2838","bold-fraktur":"\u2838\u2800\u2838","bold-italic":"\u2838\u2828","bold-script":"\u2838\u2808",caligraphic:"\u2808","caligraphic-bold":"\u2808\u2838","double-struck":"\u2838","double-struck-italic":"\u2838\u2828",fraktur:"\u2838",italic:"\u2828",monospace:"",normal:"",
oldstyle:"","oldstyle-bold":"\u2838",script:"\u2808","sans-serif":"\u2820\u2828","sans-serif-italic":"\u2820\u2828\u2828","sans-serif-bold":"\u2820\u2828\u2838","sans-serif-bold-italic":"\u2820\u2828\u2838\u2828",unknown:""},EMBELLISH:{"super":"\u2818",sub:"\u2830",circled:["\u282b\u2809\u2838\u282b",embellishCombiner],parenthesized:["\u2837",parensCombiner],period:["\u2838\u2832",postfixCombiner],"negative-circled":["\u282b\u2838\u2809\u2838\u282b",embellishCombiner],"double-circled":["\u282b\u2809\u2838\u282b\u282b\u2809\u2838\u282b",
doubleEmbellishCombiner],"circled-sans-serif":["\u282b\u2809\u2838\u282b\u2820\u2828",embellishCombiner],"negative-circled-sans-serif":["\u282b\u2838\u2809\u2838\u282b\u2820\u2828",embellishCombiner],comma:["\u2820",postfixCombiner],squared:["\u282b\u2832\u2838\u282b",embellishCombiner],"negative-squared":["\u282b\u2838\u2832\u2838\u282b",embellishCombiner]},ROLE:{addition:"addition",multiplication:"multiplication",subtraction:"subtraction",division:"division",equality:"equality",inequality:"inequality",
element:"element",arrow:"arrow",determinant:"determinant",rowvector:"row vector",binomial:"binomial",squarematrix:"square matrix",multiline:"multiple lines",matrix:"matrix",vector:"vector",cases:"case statement",table:"table",unknown:"unknown"},ENCLOSE:{longdiv:"long division",actuarial:"actuarial symbol",radical:"square root",box:"box",roundedbox:"rounded box",circle:"circle",left:"left vertical-line",right:"right vertical-line",top:"overbar",bottom:"underbar",updiagonalstrike:"crossout",downdiagonalstrike:"crossout",
verticalstrike:"vertical strikeout",horizontalstrike:"crossout",madruwb:"Arabic factorial symbol",updiagonalarrow:"diagonal arrow",phasorangle:"phasor angle",unknown:"long division"},REGEXP:{TEXT:"a-zA-Z",NUMBER:"((\\d{1,3})(?=(,| ))((,| )\\d{3})*(\\.\\d+)?)|^\\d*\\.\\d+|^\\d+",DECIMAL_MARK:".",DIGIT_GROUP:",",JOINER_SUBSUPER:"",JOINER_FRAC:""},NAVIGATE:{COLLAPSIBLE:"collapsible",EXPANDABLE:"expandable",LEVEL:"Level"},NUMBERS:sre.Numbers.nemeth.NUMBERS,ALPHABETS:{latinSmall:"\u2801\u2803\u2809\u2819\u2811\u280b\u281b\u2813\u280a\u281a\u2805\u2807\u280d\u281d\u2815\u280f\u281f\u2817\u280e\u281e\u2825\u2827\u283a\u282d\u283d\u2835".split(""),
latinCap:"\u2820\u2801 \u2820\u2803 \u2820\u2809 \u2820\u2819 \u2820\u2811 \u2820\u280b \u2820\u281b \u2820\u2813 \u2820\u280a \u2820\u281a \u2820\u2805 \u2820\u2807 \u2820\u280d \u2820\u281d \u2820\u2815 \u2820\u280f \u2820\u281f \u2820\u2817 \u2820\u280e \u2820\u281e \u2820\u2825 \u2820\u2827 \u2820\u283a \u2820\u282d \u2820\u283d \u2820\u2835".split(" "),greekSmall:"\u2828\u282b \u2828\u2801 \u2828\u2803 \u2828\u281b \u2828\u2819 \u2828\u2811 \u2828\u2831 \u2828\u2826 \u2828\u2839 \u2828\u280a \u2828\u2805 \u2828\u2807 \u2828\u280d \u2828\u281d \u2828\u282d \u2828\u2815 \u2828\u280f \u2828\u2817 \u2828\u2812 \u2828\u280e \u2828\u281e \u2828\u2825 \u2828\u280b \u2828\u282f \u2828\u2813 \u2828\u2815 \u2808\u2819 \u2828\u2811 \u2828\u2839 \u2828\u2805 \u2828\u280b \u2828\u2817 \u2828\u280f".split(" "),
greekCap:"\u2828\u2820\u2801 \u2828\u2820\u2803 \u2828\u2820\u281b \u2828\u2820\u2819 \u2828\u2820\u2811 \u2828\u2820\u2831 \u2828\u2820\u2823 \u2828\u2820\u2839 \u2828\u2820\u280a \u2828\u2820\u2805 \u2828\u2820\u2807 \u2828\u2820\u280d \u2828\u2820\u281d \u2828\u2820\u282d \u2828\u2820\u2815 \u2828\u2820\u280f \u2828\u2820\u2817 \u2828\u2820\u2839 \u2828\u2820\u280e \u2828\u2820\u2825 \u2828\u2820\u2825 \u2828\u2820\u280b \u2828\u2820\u282f \u2828\u2820\u282b \u2828\u2820\u283a".split(" ")},ALPHABET_TRANSFORMERS:{digit:{default:sre.Numbers.nemeth.numberToWords},
letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:""},smallPrefix:{default:""},digitPrefix:{default:"\u283c"}},ALPHABET_COMBINER:function(a,b,c){return b?b+a:a}};sre.L10n={};sre.L10n.setLocale=function(){var a=sre.L10n.getLocale();if(a)for(var b in a)sre.Messages[b]=a[b]};sre.L10n.getLocale=function(){var a=sre.Engine.getInstance().locale;-1===sre.Variables.LOCALES.indexOf(a)&&(console.error("Locale "+a+" does not exist! Using en instead."),sre.Engine.getInstance().locale="en");return sre.Locale[sre.Engine.getInstance().locale]||sre.Locale.en};sre.EnrichCase=function(){};sre.EnrichCase.prototype.getMathml=function(){};sre.AbstractEnrichCase=function(a){this.semantic=a};sre.AbstractEnrichCase.prototype.getMathml=goog.abstractMethod;sre.EnrichCaseFactory=function(){};sre.EnrichCaseFactory.cases=[];sre.EnrichCaseFactory.getCase=function(a){for(var b=0,c;c=sre.EnrichCaseFactory.cases[b];b++)if(c.test(a))return new c.constr(a);return null};sre.SemanticSkeleton=function(a){this.array=a=0===a?a:a||[];this.levelsMap=this.parents=null};sre.SemanticSkeleton.prototype.populate=function(){this.parents&&this.levelsMap||(this.parents={},this.levelsMap={},this.populate_(this.array,this.array,[]))};
sre.SemanticSkeleton.prototype.populate_=function(a,b,c){if(sre.SemanticSkeleton.simpleCollapseStructure(a))this.levelsMap[a]=b,this.parents[a]=a===c[0]?c.slice(1):c;else{b=sre.SemanticSkeleton.contentCollapseStructure(a)?a.slice(1):a;c=[b[0]].concat(c);for(var d=0,e=b.length;d<e;d++)this.populate_(b[d],a,c)}};sre.SemanticSkeleton.prototype.toString=function(){return sre.SemanticSkeleton.makeSexp_(this.array)};
sre.SemanticSkeleton.makeSexp_=function(a){return sre.SemanticSkeleton.simpleCollapseStructure(a)?a.toString():sre.SemanticSkeleton.contentCollapseStructure(a)?"(c "+a.slice(1).map(sre.SemanticSkeleton.makeSexp_).join(" ")+")":"("+a.map(sre.SemanticSkeleton.makeSexp_).join(" ")+")"};sre.SemanticSkeleton.fromTree=function(a){return sre.SemanticSkeleton.fromNode(a.root)};sre.SemanticSkeleton.fromNode=function(a){return new sre.SemanticSkeleton(sre.SemanticSkeleton.fromNode_(a))};
sre.SemanticSkeleton.fromString=function(a){return new sre.SemanticSkeleton(sre.SemanticSkeleton.fromString_(a))};sre.SemanticSkeleton.fromString_=function(a){a=a.replace(/\(/g,"[");a=a.replace(/\)/g,"]");a=a.replace(/ /g,",");a=a.replace(/c/g,'"c"');return JSON.parse(a)};
sre.SemanticSkeleton.fromNode_=function(a){if(!a)return[];var b=a.contentNodes;if(b.length){var c=b.map(sre.SemanticSkeleton.fromNode_);c.unshift("c")}var d=a.childNodes;if(!d.length)return b.length?[a.id,c]:a.id;d=d.map(sre.SemanticSkeleton.fromNode_);b.length&&d.unshift(c);d.unshift(a.id);return d};sre.SemanticSkeleton.simpleCollapseStructure=function(a){return"number"===typeof a};
sre.SemanticSkeleton.contentCollapseStructure=function(a){return!!a&&!sre.SemanticSkeleton.simpleCollapseStructure(a)&&"c"===a[0]};sre.SemanticSkeleton.interleaveIds=function(a,b){return sre.BaseUtil.interleaveLists(sre.SemanticSkeleton.collapsedLeafs(a),sre.SemanticSkeleton.collapsedLeafs(b))};
sre.SemanticSkeleton.collapsedLeafs=function(a){var b=function(c){return sre.SemanticSkeleton.simpleCollapseStructure(c)?[c]:sre.SemanticSkeleton.contentCollapseStructure(c[1])?c.slice(2):c.slice(1)};return Array.prototype.slice.call(arguments,0).reduce(function(c,d){return c.concat(b(d))},[])};sre.SemanticSkeleton.fromStructure=function(a,b){return new sre.SemanticSkeleton(sre.SemanticSkeleton.tree_(a,b.root))};
sre.SemanticSkeleton.tree_=function(a,b){if(!b)return[];if(!b.childNodes.length)return b.id;var c=b.id,d=[c];c=sre.XpathUtil.evalXPath(".//self::*[@"+sre.EnrichMathml.Attribute.ID+"="+c+"]",a)[0];b=sre.SemanticSkeleton.combineContentChildren(b,b.contentNodes.map(function(f){return f}),b.childNodes.map(function(f){return f}));c&&c.setAttribute(sre.EnrichMathml.Attribute.OWNS,b.map(function(f){return f.id}).join(" "));c=0;for(var e;e=b[c];c++)d.push(sre.SemanticSkeleton.tree_(a,e));return d};
sre.SemanticSkeleton.combineContentChildren=function(a,b,c){switch(a.type){case sre.Semantic.Type.RELSEQ:case sre.Semantic.Type.INFIXOP:case sre.Semantic.Type.MULTIREL:return sre.BaseUtil.interleaveLists(c,b);case sre.Semantic.Type.PREFIXOP:return b.concat(c);case sre.Semantic.Type.POSTFIXOP:return c.concat(b);case sre.Semantic.Type.FENCED:return c.unshift(b[0]),c.push(b[1]),c;case sre.Semantic.Type.APPL:return[c[0],b[0],c[1]];case sre.Semantic.Type.ROOT:return[c[1],c[0]];case sre.Semantic.Type.ROW:case sre.Semantic.Type.LINE:return b.length&&
c.unshift(b[0]),c;default:return c}};sre.EnrichMathml={};sre.EnrichMathml.Error=function(a){Error.call(this);this.message=a||"";this.name="MathML Enrichment Error"};goog.inherits(sre.EnrichMathml.Error,Error);sre.EnrichMathml.SETTINGS={collapsed:!0,implicit:!0};sre.EnrichMathml.ATTRIBUTE_PREFIX_="data-semantic-";
sre.EnrichMathml.Attribute={ADDED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"added",ALTERNATIVE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"alternative",CHILDREN:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"children",COLLAPSED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"collapsed",CONTENT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"content",EMBELLISHED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"embellished",FENCEPOINTER:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"fencepointer",FONT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"font",ID:sre.EnrichMathml.ATTRIBUTE_PREFIX_+
"id",ANNOTATION:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"annotation",OPERATOR:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"operator",OWNS:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"owns",PARENT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"parent",PREFIX:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"prefix",ROLE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"role",SPEECH:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"speech",STRUCTURE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"structure",TYPE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+"type"};
sre.EnrichMathml.enrich=function(a,b){var c=a.cloneNode(!0);sre.EnrichMathml.walkTree(b.root);sre.Engine.getInstance().structure&&a.setAttribute(sre.EnrichMathml.Attribute.STRUCTURE,sre.SemanticSkeleton.fromStructure(a,b).toString());sre.Debugger.getInstance().generateOutput(function(){sre.EnrichMathml.formattedOutput(c,a,b,!0);return[]});return a};
sre.EnrichMathml.walkTree=function(a){var b=sre.EnrichCaseFactory.getCase(a);if(b)return b=b.getMathml(),sre.EnrichMathml.ascendNewNode(b);if(1===a.mathml.length)return sre.Debugger.getInstance().output("Walktree Case 0"),b=a.mathml[0],sre.EnrichMathml.setAttributes(b,a),sre.EnrichMathml.ascendNewNode(b);b=a.contentNodes.map(sre.EnrichMathml.cloneContentNode);sre.EnrichMathml.setOperatorAttribute_(a,b);var c=a.childNodes.map(sre.EnrichMathml.walkTree);c=sre.SemanticSkeleton.combineContentChildren(a,
b,c);b=a.mathmlTree;if(null===b)sre.Debugger.getInstance().output("Walktree Case 1"),b=sre.EnrichMathml.introduceNewLayer(c);else{var d=sre.EnrichMathml.attachedElement_(c);sre.Debugger.getInstance().output("Walktree Case 2");d?(sre.Debugger.getInstance().output("Walktree Case 2.1"),b=d.parentNode):(sre.Debugger.getInstance().output("Walktree Case 2.2"),b=sre.EnrichMathml.getInnerNode(b))}b=sre.EnrichMathml.rewriteMfenced(b);sre.EnrichMathml.mergeChildren_(b,c);sre.EnrichMathml.setAttributes(b,a);
return sre.EnrichMathml.ascendNewNode(b)};
sre.EnrichMathml.introduceNewLayer=function(a){var b=sre.EnrichMathml.mathmlLca_(a),c=b.node,d=b.type;d===sre.EnrichMathml.lcaType.VALID&&sre.SemanticUtil.hasEmptyTag(c)||(sre.Debugger.getInstance().output("Walktree Case 1.1"),c=sre.DomUtil.createElement("mrow"),d===sre.EnrichMathml.lcaType.PRUNED?(sre.Debugger.getInstance().output("Walktree Case 1.1.0"),c=sre.EnrichMathml.introduceLayerAboveLca(c,b.node,a)):a[0]&&(sre.Debugger.getInstance().output("Walktree Case 1.1.1"),b=sre.EnrichMathml.attachedElement_(a),
a=sre.EnrichMathml.childrenSubset_(b.parentNode,a),sre.DomUtil.replaceNode(b,c),a.forEach(function(e){c.appendChild(e)})));return c};
sre.EnrichMathml.introduceLayerAboveLca=function(a,b,c){var d=sre.EnrichMathml.descendNode_(b);if(sre.SemanticUtil.hasMathTag(d)){sre.Debugger.getInstance().output("Walktree Case 1.1.0.0");sre.EnrichMathml.moveSemanticAttributes_(d,a);sre.DomUtil.toArray(d.childNodes).forEach(function(f){a.appendChild(f)});var e=a;a=d;d=e}b=c.indexOf(b);c[b]=d;sre.DomUtil.replaceNode(d,a);a.appendChild(d);c.forEach(function(f){a.appendChild(f)});return a};
sre.EnrichMathml.moveSemanticAttributes_=function(a,b){for(var c in sre.EnrichMathml.Attribute){var d=sre.EnrichMathml.Attribute[c];a.hasAttribute(d)&&(b.setAttribute(d,a.getAttribute(d)),a.removeAttribute(d))}};sre.EnrichMathml.childrenSubset_=function(a,b){var c=sre.DomUtil.toArray(a.childNodes),d=Infinity,e=-Infinity;b.forEach(function(f){f=c.indexOf(f);-1!==f&&(d=Math.min(d,f),e=Math.max(e,f))});return c.slice(d,e+1)};
sre.EnrichMathml.mergeChildren_=function(a,b){var c=a.childNodes;if(c.length)for(var d=0;b.length;)c[d]===b[0]||sre.EnrichMathml.functionApplication_(c[d],b[0])?(b.shift(),d++):c[d]&&-1===b.indexOf(c[d])?d++:(sre.EnrichMathml.isDescendant_(b[0],a)||a.insertBefore(b[0],c[d]||null),b.shift());else b.forEach(function(e){a.appendChild(e)})};sre.EnrichMathml.isDescendant_=function(a,b){if(!a)return!1;do if(a=a.parentNode,a===b)return!0;while(a);return!1};
sre.EnrichMathml.functionApplication_=function(a,b){var c=sre.SemanticAttr.functionApplication();if(a&&b&&a.textContent&&b.textContent&&a.textContent===c&&b.textContent===c&&"true"===b.getAttribute(sre.EnrichMathml.Attribute.ADDED)){c=0;for(var d;d=a.attributes[c];c++)b.hasAttribute(d.nodeName)||b.setAttribute(d.nodeName,d.nodeValue);sre.DomUtil.replaceNode(a,b);return!0}return!1};sre.EnrichMathml.lcaType={VALID:"valid",INVALID:"invalid",PRUNED:"pruned"};
sre.EnrichMathml.mathmlLca_=function(a){var b=sre.EnrichMathml.attachedElement_(a);if(!b)return{type:sre.EnrichMathml.lcaType.INVALID,node:null};var c=sre.EnrichMathml.attachedElement_(a.slice().reverse());if(b===c)return{type:sre.EnrichMathml.lcaType.VALID,node:b};b=sre.EnrichMathml.pathToRoot_(b);var d=sre.EnrichMathml.prunePath_(b,a);a=sre.EnrichMathml.pathToRoot_(c,function(f){return-1!==d.indexOf(f)});c=a[0];var e=d.indexOf(c);return-1===e?{type:sre.EnrichMathml.lcaType.INVALID,node:null}:{type:d.length!==
b.length?sre.EnrichMathml.lcaType.PRUNED:sre.EnrichMathml.validLca_(d[e+1],a[1])?sre.EnrichMathml.lcaType.VALID:sre.EnrichMathml.lcaType.INVALID,node:c}};sre.EnrichMathml.prunePath_=function(a,b){for(var c=0;a[c]&&-1===b.indexOf(a[c]);)c++;return a.slice(0,c+1)};sre.EnrichMathml.attachedElement_=function(a){for(var b=0,c=null;!c&&b<a.length;)a[b].parentNode&&(c=a[b]),b++;return c};
sre.EnrichMathml.pathToRoot_=function(a,b){b=b||function(d){return!1};for(var c=[a];!b(a)&&!sre.SemanticUtil.hasMathTag(a)&&a.parentNode;)a=sre.EnrichMathml.parentNode_(a),c.unshift(a);return c};sre.EnrichMathml.validLca_=function(a,b){return!(!a||!b||a.previousSibling||b.nextSibling)};sre.EnrichMathml.ascendNewNode=function(a){for(;!sre.SemanticUtil.hasMathTag(a)&&sre.EnrichMathml.unitChild_(a);)a=sre.EnrichMathml.parentNode_(a);return a};
sre.EnrichMathml.descendNode_=function(a){var b=sre.DomUtil.toArray(a.childNodes);if(!b)return a;b=b.filter(function(c){return c.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE&&!sre.SemanticUtil.hasIgnoreTag(c)});return 1===b.length&&sre.SemanticUtil.hasEmptyTag(b[0])&&!b[0].hasAttribute(sre.EnrichMathml.Attribute.TYPE)?sre.EnrichMathml.descendNode_(b[0]):a};
sre.EnrichMathml.unitChild_=function(a){var b=sre.EnrichMathml.parentNode_(a);return b&&sre.SemanticUtil.hasEmptyTag(b)?sre.DomUtil.toArray(b.childNodes).every(function(c){return c===a||sre.EnrichMathml.isIgnorable_(c)}):!1};sre.EnrichMathml.isIgnorable_=function(a){if(!a||sre.SemanticUtil.hasIgnoreTag(a))return!0;var b=sre.DomUtil.toArray(a.childNodes);return!sre.SemanticUtil.hasEmptyTag(a)&&b.length?!1:sre.DomUtil.toArray(a.childNodes).every(sre.EnrichMathml.isIgnorable_)};
sre.EnrichMathml.parentNode_=function(a){return a.parentNode};sre.EnrichMathml.addCollapsedAttribute=function(a,b){b=new sre.SemanticSkeleton(b);a.setAttribute(sre.EnrichMathml.Attribute.COLLAPSED,b.toString())};sre.EnrichMathml.cloneContentNode=function(a){if(a.mathml.length)return sre.EnrichMathml.walkTree(a);var b=sre.EnrichMathml.SETTINGS.implicit?sre.EnrichMathml.createInvisibleOperator_(a):sre.DomUtil.createElement("mrow");a.mathml=[b];return b};sre.EnrichMathml.makeIdList=function(a){return a.map(function(b){return b.id}).join(",")};
sre.EnrichMathml.setAttributes=function(a,b){a.setAttribute(sre.EnrichMathml.Attribute.TYPE,b.type);for(var c=b.allAttributes(),d=0,e;e=c[d];d++)a.setAttribute(sre.EnrichMathml.Attribute[e[0].toUpperCase()],e[1]);b.childNodes.length&&a.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,sre.EnrichMathml.makeIdList(b.childNodes));b.contentNodes.length&&a.setAttribute(sre.EnrichMathml.Attribute.CONTENT,sre.EnrichMathml.makeIdList(b.contentNodes));b.parent&&a.setAttribute(sre.EnrichMathml.Attribute.PARENT,
b.parent.id)};sre.EnrichMathml.rewriteMfenced=function(a){if("MFENCED"!==sre.DomUtil.tagName(a))return a;for(var b=sre.DomUtil.createElement("mrow"),c=0,d;d=a.attributes[c];c++)-1===["open","close","separators"].indexOf(d.name)&&b.setAttribute(d.name,d.value);sre.DomUtil.toArray(a.childNodes).forEach(function(e){b.appendChild(e)});sre.DomUtil.replaceNode(a,b);return b};
sre.EnrichMathml.createInvisibleOperator_=function(a){var b=sre.DomUtil.createElement("mo"),c=sre.DomUtil.createTextNode(a.textContent);b.appendChild(c);sre.EnrichMathml.setAttributes(b,a);b.setAttribute(sre.EnrichMathml.Attribute.ADDED,"true");return b};sre.EnrichMathml.setOperatorAttribute_=function(a,b){var c=a.type+(a.textContent?","+a.textContent:"");b.forEach(function(d){sre.EnrichMathml.getInnerNode(d).setAttribute(sre.EnrichMathml.Attribute.OPERATOR,c)})};
sre.EnrichMathml.getInnerNode=function(a){var b=sre.DomUtil.toArray(a.childNodes);if(!b)return a;b=b.filter(function(g){return g.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE&&!sre.EnrichMathml.isIgnorable_(g)});for(var c=[],d=0,e;e=b[d];d++)if(sre.SemanticUtil.hasEmptyTag(e)){var f=sre.EnrichMathml.getInnerNode(e);f&&f!==e&&c.push(f)}else c.push(e);return 1===c.length?c[0]:a};
sre.EnrichMathml.formattedOutput=function(a,b,c,d){d=d||!1;sre.EnrichMathml.formattedOutput_(a,"Original MathML",d);sre.EnrichMathml.formattedOutput_(c,"Semantic Tree",d);sre.EnrichMathml.formattedOutput_(b,"Semantically enriched MathML",d)};sre.EnrichMathml.formattedOutput_=function(a,b,c){a=sre.DomUtil.formatXml(a.toString());c?console.info(b+":\n```html\n"+sre.EnrichMathml.removeAttributePrefix(a)+"\n```\n"):console.info(a)};
sre.EnrichMathml.removeAttributePrefix=function(a){return a.toString().replace(new RegExp(sre.EnrichMathml.ATTRIBUTE_PREFIX_,"g"),"")};sre.EnrichMathml.addPrefix=function(a){var b=a.toUpperCase();return sre.EnrichMathml.Attribute[b]||sre.EnrichMathml.ATTRIBUTE_PREFIX_+a};
sre.EnrichMathml.collapsePunctuated=function(a,b){var c=!!b;b=b||[];var d=a.parent,e=a.contentNodes.map(function(k){return k.id});e.unshift("c");e=[a.id,e];for(var f=0,g;g=a.childNodes[f];f++){var h=sre.EnrichMathml.walkTree(g);b.push(h);h=sre.EnrichMathml.getInnerNode(h);d&&!c&&h.setAttribute(sre.EnrichMathml.Attribute.PARENT,d.id);e.push(g.id)}return e};sre.EnrichMathml.printNodeList__=function(a,b){console.info(a);sre.DomUtil.toArray(b).forEach(function(c){console.info(c.toString())});console.info("<<<<<<<<<<<<<<<<<")};sre.CaseBinomial=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseBinomial,sre.AbstractEnrichCase);sre.CaseBinomial.test=function(a){return!a.mathmlTree&&a.type===sre.SemanticAttr.Type.LINE&&a.role===sre.SemanticAttr.Role.BINOMIAL};
sre.CaseBinomial.prototype.getMathml=function(){if(!this.semantic.childNodes.length)return this.mml;this.mml=sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);if(this.mml.hasAttribute(sre.EnrichMathml.Attribute.TYPE)){var a=sre.DomUtil.createElement("mrow");a.setAttribute(sre.EnrichMathml.Attribute.ADDED,"true");sre.DomUtil.replaceNode(this.mml,a);a.appendChild(this.mml);this.mml=a}sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseDoubleScript=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseDoubleScript,sre.AbstractEnrichCase);sre.CaseDoubleScript.test=function(a){if(!a.mathmlTree||!a.childNodes.length)return!1;var b=sre.DomUtil.tagName(a.mathmlTree);a=a.childNodes[0].role;return"MSUBSUP"===b&&a===sre.SemanticAttr.Role.SUBSUP||"MUNDEROVER"===b&&a===sre.SemanticAttr.Role.UNDEROVER};
sre.CaseDoubleScript.prototype.getMathml=function(){var a=this.semantic.childNodes[0],b=a.childNodes[0],c=this.semantic.childNodes[1],d=a.childNodes[1],e=sre.EnrichMathml.walkTree(c),f=sre.EnrichMathml.walkTree(b),g=sre.EnrichMathml.walkTree(d);sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,sre.EnrichMathml.makeIdList([b,d,c]));[f,g,e].forEach(goog.bind(function(h){sre.EnrichMathml.getInnerNode(h).setAttribute(sre.EnrichMathml.Attribute.PARENT,
this.mml.getAttribute(sre.EnrichMathml.Attribute.ID))},this));this.mml.setAttribute(sre.EnrichMathml.Attribute.TYPE,a.role);sre.EnrichMathml.addCollapsedAttribute(this.mml,[this.semantic.id,[a.id,b.id,d.id],c.id]);return this.mml};sre.CaseMultiindex=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseMultiindex,sre.AbstractEnrichCase);
sre.CaseMultiindex.prototype.completeMultiscript=function(a,b){var c=sre.DomUtil.toArray(this.mml.childNodes).slice(1),d=0,e=goog.bind(function(f){for(var g=0,h;h=f[g];g++){var k=c[d];if(k&&h==sre.EnrichMathml.getInnerNode(k).getAttribute(sre.EnrichMathml.Attribute.ID))sre.EnrichMathml.getInnerNode(k).setAttribute(sre.EnrichMathml.Attribute.PARENT,this.semantic.id),d++;else{var l=this.semantic.querySelectorAll(function(m){return m.id===h});this.mml.insertBefore(sre.CaseMultiindex.createNone_(l[0]),
k||null)}}},this);e(a);c[d]&&"MPRESCRIPTS"!==sre.DomUtil.tagName(c[d])?this.mml.insertBefore(c[d],sre.DomUtil.createElement("mprescripts")):d++;e(b)};sre.CaseMultiindex.createNone_=function(a){var b=sre.DomUtil.createElement("none");a&&sre.EnrichMathml.setAttributes(b,a);b.setAttribute(sre.EnrichMathml.Attribute.ADDED,"true");return b};
sre.CaseMultiindex.multiscriptIndex=function(a){if(a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.contentNodes[0].role===sre.SemanticAttr.Role.DUMMY)return sre.EnrichMathml.collapsePunctuated(a);sre.EnrichMathml.walkTree(a);return a.id};sre.CaseMultiscripts=function(a){sre.CaseMultiindex.call(this,a)};goog.inherits(sre.CaseMultiscripts,sre.CaseMultiindex);sre.CaseMultiscripts.test=function(a){return a.mathmlTree?"MMULTISCRIPTS"===sre.DomUtil.tagName(a.mathmlTree)&&(a.type===sre.SemanticAttr.Type.SUPERSCRIPT||a.type===sre.SemanticAttr.Type.SUBSCRIPT):!1};
sre.CaseMultiscripts.prototype.getMathml=function(){sre.EnrichMathml.setAttributes(this.mml,this.semantic);if(this.semantic.childNodes[0]&&this.semantic.childNodes[0].role===sre.SemanticAttr.Role.SUBSUP){var a=this.semantic.childNodes[0],b=a.childNodes[0],c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),d=sre.CaseMultiindex.multiscriptIndex(a.childNodes[1]),e=[this.semantic.id,[a.id,b.id,d],c];sre.EnrichMathml.addCollapsedAttribute(this.mml,e);this.mml.setAttribute(sre.EnrichMathml.Attribute.TYPE,
a.role);this.completeMultiscript(sre.SemanticSkeleton.interleaveIds(d,c),[])}else b=this.semantic.childNodes[0],c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),e=[this.semantic.id,b.id,c],sre.EnrichMathml.addCollapsedAttribute(this.mml,e);a=sre.SemanticSkeleton.collapsedLeafs(d||[],c);c=sre.EnrichMathml.walkTree(b);sre.EnrichMathml.getInnerNode(c).setAttribute(sre.EnrichMathml.Attribute.PARENT,this.semantic.id);a.unshift(b.id);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,
a.join(","));return this.mml};sre.CaseEmbellished=function(a){sre.AbstractEnrichCase.call(this,a);this.ofenceMml=this.ofence=this.fencedMml=this.fenced=null;this.ofenceMap={};this.cfenceMml=this.cfence=null;this.cfenceMap={};this.parentCleanup=[]};goog.inherits(sre.CaseEmbellished,sre.AbstractEnrichCase);sre.CaseEmbellished.test=function(a){return!(!a.mathmlTree||!a.fencePointer)};sre.CaseEmbellished.prototype.getMathml=function(){this.getFenced_();this.fencedMml=sre.EnrichMathml.walkTree(this.fenced);this.getFencesMml_();return this.rewrite_()};
sre.CaseEmbellished.prototype.getFenced_=function(){for(var a=this.semantic;a.type!==sre.SemanticAttr.Type.FENCED;)a=a.childNodes[0];this.fenced=a.childNodes[0];this.ofence=a.contentNodes[0];this.cfence=a.contentNodes[1];sre.CaseEmbellished.fencedMap_(this.ofence,this.ofenceMap);sre.CaseEmbellished.fencedMap_(this.cfence,this.cfenceMap)};sre.CaseEmbellished.fencedMap_=function(a,b){b[a.id]=a.mathmlTree;a.embellished&&sre.CaseEmbellished.fencedMap_(a.childNodes[0],b)};
sre.CaseEmbellished.prototype.getFencesMml_=function(){for(var a=this.semantic,b=Object.keys(this.ofenceMap),c=Object.keys(this.cfenceMap);!(this.ofenceMml&&this.cfenceMml||a===this.fenced);)-1===b.indexOf(a.fencePointer)||this.ofenceMml||(this.ofenceMml=a.mathmlTree),-1===c.indexOf(a.fencePointer)||this.cfenceMml||(this.cfenceMml=a.mathmlTree),a=a.childNodes[0];this.ofenceMml||(this.ofenceMml=this.ofence.mathmlTree);this.cfenceMml||(this.cfenceMml=this.cfence.mathmlTree);this.ofenceMml&&(this.ofenceMml=
sre.EnrichMathml.ascendNewNode(this.ofenceMml));this.cfenceMml&&(this.cfenceMml=sre.EnrichMathml.ascendNewNode(this.cfenceMml))};
sre.CaseEmbellished.prototype.rewrite_=function(){var a=this.semantic,b=null,c=this.introduceNewLayer_();for(sre.EnrichMathml.setAttributes(c,this.fenced.parent);a.type!==sre.SemanticAttr.Type.FENCED;){var d=a.mathmlTree,e=this.specialCase_(a,d);if(e)a=e;else{sre.EnrichMathml.setAttributes(d,a);e=[];for(var f=1,g;g=a.childNodes[f];f++)e.push(sre.EnrichMathml.walkTree(g));a=a.childNodes[0]}e=sre.DomUtil.createElement("dummy");f=c.parentNode;g=d.childNodes[0];sre.DomUtil.replaceNode(d,e);sre.DomUtil.replaceNode(c,
d);sre.DomUtil.replaceNode(d.childNodes[0],c);sre.DomUtil.replaceNode(e,g);d.parentNode=f;c=d.childNodes[0];b||(b=d)}sre.EnrichMathml.walkTree(this.ofence);sre.EnrichMathml.walkTree(this.cfence);this.cleanupParents_();return b||c};
sre.CaseEmbellished.prototype.specialCase_=function(a,b){var c=sre.DomUtil.tagName(b),d=null;if("MSUBSUP"===c){d=a.childNodes[0];var e=sre.CaseDoubleScript}else"MMULTISCRIPTS"===c&&(a.type===sre.SemanticAttr.Type.SUPERSCRIPT||a.type===sre.SemanticAttr.Type.SUBSCRIPT?e=sre.CaseMultiscripts:a.type===sre.SemanticAttr.Type.TENSOR&&(e=sre.CaseTensor),d=e&&a.childNodes[0]&&a.childNodes[0].role===sre.SemanticAttr.Role.SUBSUP?a.childNodes[0]:a);if(!d)return null;c=d.childNodes[0];b=sre.CaseEmbellished.makeEmptyNode_(c.id);
d.childNodes[0]=b;b=(new e(a)).getMathml();d.childNodes[0]=c;this.parentCleanup.push(b);return d.childNodes[0]};sre.CaseEmbellished.makeEmptyNode_=function(a){var b=sre.DomUtil.createElement("mrow");a=new sre.SemanticNode(a);a.type=sre.SemanticAttr.Type.EMPTY;a.mathmlTree=b;return a};
sre.CaseEmbellished.prototype.introduceNewLayer_=function(){var a=this.fullFence(this.ofenceMml),b=this.fullFence(this.cfenceMml),c=sre.DomUtil.createElement("mrow");sre.DomUtil.replaceNode(this.fencedMml,c);c.appendChild(this.fencedMml);c.insertBefore(a,this.fencedMml);c.appendChild(b);if(!c.parentNode){for(a=sre.DomUtil.createElement("mrow");0<c.childNodes.length;)a.appendChild(c.childNodes[0]);c.appendChild(a);c=a}return c};
sre.CaseEmbellished.prototype.fullFence=function(a){for(var b=this.fencedMml.parentNode;a.parentNode&&a.parentNode!==b;)a=a.parentNode;return a};sre.CaseEmbellished.prototype.cleanupParents_=function(){this.parentCleanup.forEach(function(a){var b=a.childNodes[1].getAttribute(sre.EnrichMathml.Attribute.PARENT);a.childNodes[0].setAttribute(sre.EnrichMathml.Attribute.PARENT,b)})};sre.CaseLine=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseLine,sre.AbstractEnrichCase);sre.CaseLine.test=function(a){return!!a.mathmlTree&&a.type===sre.SemanticAttr.Type.LINE};
sre.CaseLine.prototype.getMathml=function(){this.semantic.contentNodes.length&&sre.EnrichMathml.walkTree(this.semantic.contentNodes[0]);this.semantic.childNodes.length&&sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseProof=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseProof,sre.AbstractEnrichCase);sre.CaseProof.test=function(a){return!!a.mathmlTree&&(a.type===sre.SemanticAttr.Type.INFERENCE||a.type===sre.SemanticAttr.Type.PREMISES)};
sre.CaseProof.prototype.getMathml=function(){if(!this.semantic.childNodes.length)return this.mml;this.semantic.contentNodes.forEach(function(a){sre.EnrichMathml.walkTree(a);sre.EnrichMathml.setAttributes(a.mathmlTree,a)});this.semantic.childNodes.forEach(function(a){sre.EnrichMathml.walkTree(a)});sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.getAttribute("data-semantic-id")===this.mml.getAttribute("data-semantic-parent")&&this.mml.removeAttribute("data-semantic-parent");return this.mml};sre.CaseTable=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree;this.inner=[]};goog.inherits(sre.CaseTable,sre.AbstractEnrichCase);sre.CaseTable.test=function(a){return!!a.mathmlTree&&(a.type===sre.SemanticAttr.Type.MATRIX||a.type===sre.SemanticAttr.Type.VECTOR||a.type===sre.SemanticAttr.Type.CASES)};
sre.CaseTable.prototype.getMathml=function(){var a=sre.EnrichMathml.cloneContentNode(this.semantic.contentNodes[0]),b=this.semantic.contentNodes[1]?sre.EnrichMathml.cloneContentNode(this.semantic.contentNodes[1]):null;this.inner=this.semantic.childNodes.map(sre.EnrichMathml.walkTree);"MFENCED"===sre.DomUtil.tagName(this.mml)?(this.mml.insertBefore(a,this.mml.childNodes[0]||null),b&&this.mml.appendChild(b),this.mml=sre.EnrichMathml.rewriteMfenced(this.mml)):(a=[a,this.mml],b&&a.push(b),this.mml=sre.EnrichMathml.introduceNewLayer(a));
sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseTensor=function(a){sre.CaseMultiindex.call(this,a)};goog.inherits(sre.CaseTensor,sre.CaseMultiindex);sre.CaseTensor.test=function(a){return!!a.mathmlTree&&a.type===sre.SemanticAttr.Type.TENSOR};
sre.CaseTensor.prototype.getMathml=function(){sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);var a=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),b=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[2]),c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[3]),d=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[4]);sre.EnrichMathml.setAttributes(this.mml,this.semantic);sre.EnrichMathml.addCollapsedAttribute(this.mml,[this.semantic.id,this.semantic.childNodes[0].id,
a,b,c,d]);var e=sre.SemanticSkeleton.collapsedLeafs(a,b,c,d);e.unshift(this.semantic.childNodes[0].id);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,e.join(","));this.completeMultiscript(sre.SemanticSkeleton.interleaveIds(c,d),sre.SemanticSkeleton.interleaveIds(a,b));return this.mml};sre.CaseText=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseText,sre.AbstractEnrichCase);sre.CaseText.test=function(a){return a.type===sre.SemanticAttr.Type.PUNCTUATED&&(a.role===sre.SemanticAttr.Role.TEXT||a.contentNodes.every(function(b){return b.role===sre.SemanticAttr.Role.DUMMY}))};
sre.CaseText.prototype.getMathml=function(){var a=[],b=sre.EnrichMathml.collapsePunctuated(this.semantic,a);this.mml=sre.EnrichMathml.introduceNewLayer(a);sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.removeAttribute(sre.EnrichMathml.Attribute.CONTENT);sre.EnrichMathml.addCollapsedAttribute(this.mml,b);return this.mml};sre.EnrichCases=function(){};
sre.EnrichCaseFactory.cases.push({test:sre.CaseEmbellished.test,constr:sre.CaseEmbellished},{test:sre.CaseDoubleScript.test,constr:sre.CaseDoubleScript},{test:sre.CaseTensor.test,constr:sre.CaseTensor},{test:sre.CaseMultiscripts.test,constr:sre.CaseMultiscripts},{test:sre.CaseLine.test,constr:sre.CaseLine},{test:sre.CaseBinomial.test,constr:sre.CaseBinomial},{test:sre.CaseProof.test,constr:sre.CaseProof},{test:sre.CaseTable.test,constr:sre.CaseTable},{test:sre.CaseText.test,constr:sre.CaseText});sre.Enrich={};sre.Enrich.semanticMathmlNode=function(a){a=a.cloneNode(!0);var b=sre.Semantic.getTree(a);return sre.EnrichMathml.enrich(a,b)};sre.Enrich.semanticMathmlSync=function(a){a=sre.DomUtil.parseInput(a);return sre.Enrich.semanticMathmlNode(a)};sre.Enrich.semanticMathml=function(a,b){if(sre.Engine.isReady()){var c=sre.DomUtil.parseInput(a);b(sre.Enrich.semanticMathmlNode(c))}else setTimeout(function(){sre.Enrich.semanticMathml(a,b)},500)};
sre.Enrich.testTranslation__=function(a){new sre.EnrichCases;sre.Debugger.getInstance().init();a=sre.Enrich.semanticMathmlSync(sre.Enrich.prepareMmlString(a)).toString();sre.EnrichMathml.removeAttributePrefix(a);sre.Debugger.getInstance().exit();return a};sre.Enrich.prepareMmlString=function(a){a.match(/^<math/)||(a="<math>"+a);a.match(/\/math>$/)||(a+="</math>");return a};sre.ColorPicker=function(a,b){this.foreground=sre.ColorPicker.getChannelColor_(b,sre.ColorPicker.DEFAULT_FOREGROUND_);this.background=sre.ColorPicker.getChannelColor_(a,sre.ColorPicker.DEFAULT_BACKGROUND_)};sre.ColorPicker.DEFAULT_BACKGROUND_="blue";sre.ColorPicker.DEFAULT_FOREGROUND_="black";
sre.ColorPicker.namedColors_={red:{red:255,green:0,blue:0},green:{red:0,green:255,blue:0},blue:{red:0,green:0,blue:255},yellow:{red:255,green:255,blue:0},cyan:{red:0,green:255,blue:255},magenta:{red:255,green:0,blue:255},white:{red:255,green:255,blue:255},black:{red:0,green:0,blue:0}};sre.ColorPicker.getChannelColor_=function(a,b){a=a||{color:b};var c=a.color?sre.ColorPicker.namedColors_[a.color]:a;c||(c=sre.ColorPicker.namedColors_[b]);c.alpha=a.hasOwnProperty("alpha")?a.alpha:1;return sre.ColorPicker.normalizeColor_(c)};
sre.ColorPicker.normalizeColor_=function(a){var b=function(c){c=Math.max(c,0);c=Math.min(255,c);return Math.round(c)};a.red=b(a.red);a.green=b(a.green);a.blue=b(a.blue);a.alpha=Math.max(a.alpha,0);a.alpha=Math.min(1,a.alpha);return a};sre.ColorPicker.prototype.rgba=function(){var a=function(b){return"rgba("+b.red+","+b.green+","+b.blue+","+b.alpha+")"};return{background:a(this.background),foreground:a(this.foreground)}};
sre.ColorPicker.prototype.rgb=function(){var a=function(b){return"rgb("+b.red+","+b.green+","+b.blue+")"};return{background:a(this.background),alphaback:this.background.alpha.toString(),foreground:a(this.foreground),alphafore:this.foreground.alpha.toString()}};
sre.ColorPicker.prototype.hex=function(){var a=function(b){return"#"+sre.ColorPicker.toHex_(b.red)+sre.ColorPicker.toHex_(b.green)+sre.ColorPicker.toHex_(b.blue)};return{background:a(this.background),alphaback:this.background.alpha.toString(),foreground:a(this.foreground),alphafore:this.foreground.alpha.toString()}};sre.ColorPicker.toHex_=function(a){a=a.toString(16);return 1===a.length?"0"+a:a};sre.ContrastPicker=function(){this.hue=10;this.sat=100;this.incr=this.light=50};
sre.ContrastPicker.prototype.generate=function(){return sre.ColorPicker.RGB2hex_(sre.ColorPicker.rgb2RGB_(sre.ColorPicker.hsl2rgb_(this.hue,this.sat,this.light)))};sre.ContrastPicker.prototype.increment=function(){this.hue=(this.hue+this.incr)%360};
sre.ColorPicker.hsl2rgb_=function(a,b,c){c=1<c?c/100:c;var d=(1-Math.abs(2*c-1))*(1<b?b/100:b),e=d*(1-Math.abs(a/60%2-1));c-=d/2;var f=b=0,g=0;0<=a&&60>a?(a=$jscomp.makeIterator([d,e,0]),b=a.next().value,f=a.next().value,g=a.next().value):60<=a&&120>a?(a=$jscomp.makeIterator([e,d,0]),b=a.next().value,f=a.next().value,g=a.next().value):120<=a&&180>a?(a=$jscomp.makeIterator([0,d,e]),b=a.next().value,f=a.next().value,g=a.next().value):180<=a&&240>a?(a=$jscomp.makeIterator([0,e,d]),b=a.next().value,f=
a.next().value,g=a.next().value):240<=a&&300>a?(a=$jscomp.makeIterator([e,0,d]),b=a.next().value,f=a.next().value,g=a.next().value):300<=a&&360>a&&(a=$jscomp.makeIterator([d,0,e]),b=a.next().value,f=a.next().value,g=a.next().value);return{red:b+c,green:f+c,blue:g+c}};sre.ColorPicker.rgb2RGB_=function(a){return{red:Math.round(255*a.red),green:Math.round(255*a.green),blue:Math.round(255*a.blue)}};sre.ColorPicker.RGB2hex_=function(a){return"rgb("+a.red+","+a.green+","+a.blue+")"};sre.Highlighter=function(){};sre.Highlighter.prototype.highlight=function(a){};sre.Highlighter.prototype.unhighlight=function(){};sre.Highlighter.prototype.highlightAll=function(a){};sre.Highlighter.prototype.unhighlightAll=function(){};sre.Highlighter.prototype.setColor=function(a){};sre.Highlighter.prototype.addEvents=function(a,b){};sre.AbstractHighlighter=function(){this.currentHighlights_=[];this.color=null;this.mactionName=""};sre.AbstractHighlighter.ATTR="sre-highlight";sre.AbstractHighlighter.prototype.highlight=function(a){this.currentHighlights_.push(a.map(goog.bind(function(b){var c=this.highlightNode(b);this.setHighlighted(b);return c},this)))};sre.AbstractHighlighter.prototype.highlightNode=goog.abstractMethod;sre.AbstractHighlighter.prototype.highlightAll=function(a){a=this.getMactionNodes(a);for(var b=0,c;c=a[b];b++)this.highlight([c])};
sre.AbstractHighlighter.prototype.unhighlight=function(){var a=this.currentHighlights_.pop();a&&a.forEach(goog.bind(function(b){this.isHighlighted(b.node)&&(this.unhighlightNode(b),this.unsetHighlighted(b.node))},this))};sre.AbstractHighlighter.prototype.unhighlightNode=goog.abstractMethod;sre.AbstractHighlighter.prototype.unhighlightAll=function(){for(;0<this.currentHighlights_.length;)this.unhighlight()};sre.AbstractHighlighter.prototype.setColor=function(a){this.color=a};
sre.AbstractHighlighter.prototype.colorString=function(){return this.color.rgba()};sre.AbstractHighlighter.prototype.addEvents=function(a,b){a=this.getMactionNodes(a);for(var c=0,d;d=a[c];c++)for(var e in b)d.addEventListener(e,b[e])};sre.AbstractHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByClassName(this.mactionName)};sre.AbstractHighlighter.prototype.isMactionNode=function(a){return(a=a.className||a.getAttribute("class"))?a.match(new RegExp(this.mactionName)):!1};
sre.AbstractHighlighter.prototype.isHighlighted=function(a){return a.hasAttribute(sre.AbstractHighlighter.ATTR)};sre.AbstractHighlighter.prototype.setHighlighted=function(a){a.setAttribute(sre.AbstractHighlighter.ATTR,!0)};sre.AbstractHighlighter.prototype.unsetHighlighted=function(a){a.removeAttribute(sre.AbstractHighlighter.ATTR)};
sre.AbstractHighlighter.prototype.colorizeAll=function(a){sre.XpathUtil.evalXPath(".//*[@"+sre.EnrichMathml.Attribute.ID+"]",a).forEach(goog.bind(function(b){this.colorize(b)},this))};sre.AbstractHighlighter.prototype.uncolorizeAll=function(a){sre.XpathUtil.evalXPath(".//*[@"+sre.EnrichMathml.Attribute.ID+"]",a).forEach(goog.bind(function(b){this.uncolorize(b)},this))};
sre.AbstractHighlighter.prototype.colorize=function(a){var b=sre.EnrichMathml.addPrefix("foreground");a.hasAttribute(b)&&(a.setAttribute(b+"-old",a.style.color),a.style.color=a.getAttribute(b))};sre.AbstractHighlighter.prototype.uncolorize=function(a){var b=sre.EnrichMathml.addPrefix("foreground")+"-old";a.hasAttribute(b)&&(a.style.color=a.getAttribute(b))};sre.CssHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName="mjx-maction"};goog.inherits(sre.CssHighlighter,sre.AbstractHighlighter);sre.CssHighlighter.prototype.highlightNode=function(a){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color},c=this.colorString();a.style.backgroundColor=c.background;a.style.color=c.foreground;return b};sre.CssHighlighter.prototype.unhighlightNode=function(a){a.node.style.backgroundColor=a.background;a.node.style.color=a.foreground};sre.ChtmlHighlighter=function(){sre.CssHighlighter.call(this)};goog.inherits(sre.ChtmlHighlighter,sre.CssHighlighter);sre.ChtmlHighlighter.prototype.isMactionNode=function(a){return a.tagName.toUpperCase()===this.mactionName.toUpperCase()};sre.ChtmlHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};sre.HtmlHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName="maction"};goog.inherits(sre.HtmlHighlighter,sre.AbstractHighlighter);sre.HtmlHighlighter.prototype.setMode=function(a){this.mode=a};
sre.HtmlHighlighter.prototype.highlightNode=function(a){var b={node:a,foreground:a.style.color,position:a.style.position},c=this.color.rgb();a.style.color=c.foreground;a.style.position="relative";var d=a.bbox;if(d&&d.w){var e=sre.DomUtil.createElement("span"),f=parseFloat(a.style.paddingLeft||"0");e.style.backgroundColor=c.background;e.style.opacity=c.alphaback.toString();e.style.display="inline-block";e.style.height=d.h+d.d+.1+"em";e.style.verticalAlign=-d.d+"em";e.style.marginTop=e.style.marginBottom=
"-0.05em";e.style.width=d.w+0+"em";e.style.marginLeft=f-0+"em";e.style.marginRight=-d.w-f+"em";a.parentNode.insertBefore(e,a);b.box=e}return b};sre.HtmlHighlighter.prototype.unhighlightNode=function(a){var b=a.node;b.style.color=a.foreground;b.style.position=a.position;a.box&&a.box.parentNode.removeChild(a.box)};sre.MmlCssHighlighter=function(){sre.CssHighlighter.call(this);this.mactionName="maction"};goog.inherits(sre.MmlCssHighlighter,sre.CssHighlighter);sre.MmlCssHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};sre.MmlCssHighlighter.prototype.isMactionNode=function(a){return a.tagName===this.mactionName};sre.MmlHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName="maction"};goog.inherits(sre.MmlHighlighter,sre.AbstractHighlighter);sre.MmlHighlighter.prototype.highlightNode=function(a){var b=a.getAttribute("style");b+=";background-color: "+this.colorString().background;b+=";color: "+this.colorString().foreground;a.setAttribute("style",b);return{node:a}};
sre.MmlHighlighter.prototype.unhighlightNode=function(a){var b=a.node.getAttribute("style");b=b.replace(";background-color: "+this.colorString().background,"");b=b.replace(";color: "+this.colorString().foreground,"");a.node.setAttribute("style",b)};sre.MmlHighlighter.prototype.colorString=function(){return this.color.rgba()};sre.MmlHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};
sre.MmlHighlighter.prototype.isMactionNode=function(a){return a.tagName===this.mactionName};sre.SvgHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName="mjx-svg-maction"};goog.inherits(sre.SvgHighlighter,sre.AbstractHighlighter);
sre.SvgHighlighter.prototype.highlightNode=function(a){if(this.isHighlighted(a))return{node:a.previousSibling||a,background:a.style.backgroundColor,foreground:a.style.color};if("svg"===a.tagName){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color};a.style.backgroundColor=this.colorString().background;a.style.color=this.colorString().foreground;return b}b=sre.DomUtil.createElementNS("http://www.w3.org/2000/svg","rect");if("use"===a.nodeName){var c=sre.DomUtil.createElementNS("http://www.w3.org/2000/svg",
"g");a.parentNode.insertBefore(c,a);c.appendChild(a);var d=c.getBBox();c.parentNode.replaceChild(a,c)}else d=a.getBBox();b.setAttribute("x",d.x-40);b.setAttribute("y",d.y-40);b.setAttribute("width",d.width+80);b.setAttribute("height",d.height+80);(d=a.getAttribute("transform"))&&b.setAttribute("transform",d);b.setAttribute("fill",this.colorString().background);b.setAttribute(sre.AbstractHighlighter.ATTR,!0);a.parentNode.insertBefore(b,a);b={node:b,foreground:a.getAttribute("fill")};a.setAttribute("fill",
this.colorString().foreground);return b};sre.SvgHighlighter.prototype.setHighlighted=function(a){"svg"===a.tagName&&sre.SvgHighlighter.superClass_.setHighlighted.call(this,a)};sre.SvgHighlighter.prototype.unhighlightNode=function(a){"background"in a?(a.node.style.backgroundColor=a.background,a.node.style.color=a.foreground):(a.foreground?a.node.nextSibling.setAttribute("fill",a.foreground):a.node.nextSibling.removeAttribute("fill"),a.node.parentNode.removeChild(a.node))};
sre.SvgHighlighter.prototype.isMactionNode=function(a){a=a.className||a.getAttribute("class");return(a=void 0!==a.baseVal?a.baseVal:a)?a.match(new RegExp(this.mactionName)):!1};sre.SvgV3Highlighter=function(){sre.SvgHighlighter.call(this);this.mactionName="maction"};goog.inherits(sre.SvgV3Highlighter,sre.SvgHighlighter);
sre.SvgV3Highlighter.prototype.highlightNode=function(a){if(this.isHighlighted(a))return{node:a,background:this.colorString().background,foreground:this.colorString().foreground};if("svg"===a.tagName||"MJX-CONTAINER"===a.tagName){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color};a.style.backgroundColor=this.colorString().background;a.style.color=this.colorString().foreground;return b}b=sre.DomUtil.createElementNS("http://www.w3.org/2000/svg","rect");b.setAttribute("sre-highlighter-added",
!0);var c=a.getBBox();b.setAttribute("x",c.x-40);b.setAttribute("y",c.y-40);b.setAttribute("width",c.width+80);b.setAttribute("height",c.height+80);(c=a.getAttribute("transform"))&&b.setAttribute("transform",c);b.setAttribute("fill",this.colorString().background);a.parentNode.insertBefore(b,a);b={node:a,foreground:a.getAttribute("fill")};"rect"===a.nodeName?(c=new sre.ColorPicker({alpha:0,color:"black"}),a.setAttribute("fill",c.rgba().foreground)):a.setAttribute("fill",this.colorString().foreground);
return b};sre.SvgV3Highlighter.prototype.unhighlightNode=function(a){var b=a.node.previousSibling;b&&b.hasAttribute("sre-highlighter-added")?(a.foreground?a.node.setAttribute("fill",a.foreground):a.node.removeAttribute("fill"),a.node.parentNode.removeChild(b)):(a.node.style.backgroundColor=a.background,a.node.style.color=a.foreground)};sre.SvgV3Highlighter.prototype.isMactionNode=function(a){return a.getAttribute("data-mml-node")===this.mactionName};
sre.SvgV3Highlighter.prototype.getMactionNodes=function(a){return sre.XpathUtil.evalXPath('.//*[@data-mml-node="'+this.mactionName+'"]',a)};sre.HighlighterFactory={};sre.HighlighterFactory.highlighter=function(a,b,c){a=new sre.ColorPicker(a,b);c=new (sre.HighlighterFactory.highlighterMapping_["NativeMML"===c.renderer&&"Safari"===c.browser?"MML-CSS":"SVG"===c.renderer&&"v3"===c.browser?"SVG-V3":c.renderer]||sre.HighlighterFactory.highlighterMapping_.NativeMML);c.setColor(a);return c};sre.HighlighterFactory.addEvents=function(a,b,c){(c=sre.HighlighterFactory.highlighterMapping_[c.renderer])&&(new c).addEvents(a,b)};
sre.HighlighterFactory.highlighterMapping_={SVG:sre.SvgHighlighter,"SVG-V3":sre.SvgV3Highlighter,NativeMML:sre.MmlHighlighter,"HTML-CSS":sre.HtmlHighlighter,"MML-CSS":sre.MmlCssHighlighter,CommonHTML:sre.CssHighlighter,CHTML:sre.ChtmlHighlighter};sre.Span=function(a,b){this.string=a;this.attributes=b};sre.AudioUtil={};sre.AudioUtil.mergePause=function(a,b,c){return a?{pause:sre.AudioUtil.mergePause_(a.pause,b.pause,c)}:b};sre.AudioUtil.mergePause_=function(a,b,c){return(c||function(d,e){return"number"===typeof d||"number"===typeof e?d+e:"number"===typeof d?e:"number"===typeof e?d:[a,b].sort()[0]}).call(null,a,b)};sre.AudioUtil.mergeMarkup=function(a,b){delete a.open;b.close.forEach(function(d){delete a[d]});b.open.forEach(function(d){a[d]=b[d]});var c=Object.keys(a);a.open=c};
sre.AudioUtil.sortClose=function(a,b){if(1>=a.length)return a;for(var c=[],d=0,e;e=b[d],a.length;d++)e.close&&e.close.length&&e.close.forEach(function(f){var g=a.indexOf(f);-1!==g&&(c.unshift(f),a.splice(g,1))});return c};sre.AudioUtil.PersonalityRanges_={};sre.AudioUtil.LastOpen_=[];
sre.AudioUtil.personalityMarkup=function(a){sre.AudioUtil.PersonalityRanges_={};sre.AudioUtil.LastOpen_=[];for(var b=[],c={},d=0,e;e=a[d];d++){var f=null,g=e.descriptionSpan(),h=e.personality;e=h[sre.Engine.personalityProps.JOIN];delete h[sre.Engine.personalityProps.JOIN];"undefined"!==typeof h[sre.Engine.personalityProps.PAUSE]&&(f={},f[sre.Engine.personalityProps.PAUSE]=h[sre.Engine.personalityProps.PAUSE],delete h[sre.Engine.personalityProps.PAUSE]);h=sre.AudioUtil.personalityDiff_(h,c);sre.AudioUtil.appendMarkup_(b,
g,h,e,f,!0)}b=b.concat(sre.AudioUtil.finaliseMarkup_());return b=sre.AudioUtil.simplifyMarkup_(b)};
sre.AudioUtil.appendElement_=function(a,b){var c=a[a.length-1];if(c)if(sre.AudioUtil.isSpanElement(b)&&sre.AudioUtil.isSpanElement(c))if("undefined"===typeof c.join)c.span=c.span.concat(b.span);else{a=c.span.pop();var d=b.span.shift();c.span.push(a+c.join+d);c.span=c.span.concat(b.span);c.join=b.join}else sre.AudioUtil.isPauseElement(b)&&sre.AudioUtil.isPauseElement(c)?c.pause=sre.AudioUtil.mergePause_(c.pause,b.pause):a.push(b);else a.push(b)};
sre.AudioUtil.simplifyMarkup_=function(a){for(var b={},c=[],d=0,e;e=a[d];d++)if(sre.AudioUtil.isMarkupElement(e))if(!e.close||1!==e.close.length||e.open.length)sre.AudioUtil.copyValues_(e,b),c.push(e);else{var f=a[d+1];if(!f||sre.AudioUtil.isSpanElement(f))sre.AudioUtil.copyValues_(e,b),c.push(e);else{var g=sre.AudioUtil.isPauseElement(f)?f:null;g&&(f=a[d+2]);f&&sre.AudioUtil.isMarkupElement(f)&&f.open[0]===e.close[0]&&!f.close.length&&f[f.open[0]]===b[f.open[0]]?g?(sre.AudioUtil.appendElement_(c,
g),d+=2):d+=1:(sre.AudioUtil.copyValues_(e,b),c.push(e))}}else sre.AudioUtil.appendElement_(c,e);return c};sre.AudioUtil.copyValues_=function(a,b){a.rate&&(b.rate=a.rate);a.pitch&&(b.pitch=a.pitch);a.volume&&(b.volume=a.volume)};sre.AudioUtil.finaliseMarkup_=function(){for(var a=[],b=sre.AudioUtil.LastOpen_.length-1;0<=b;b--){var c=sre.AudioUtil.LastOpen_[b];if(c.length){for(var d={open:[],close:[]},e=0;e<c.length;e++){var f=c[e];d.close.push(f);d[f]=0}a.push(d)}}return a};
sre.AudioUtil.isMarkupElement=function(a){return"object"===typeof a&&a.open};sre.AudioUtil.isPauseElement=function(a){return"object"===typeof a&&1===Object.keys(a).length&&Object.keys(a)[0]===sre.Engine.personalityProps.PAUSE};sre.AudioUtil.isSpanElement=function(a){var b=Object.keys(a);return"object"===typeof a&&(1===b.length&&"span"===b[0]||2===b.length&&("span"===b[0]&&"join"===b[1]||"span"===b[1]&&"join"===b[0]))};
sre.AudioUtil.appendMarkup_=function(a,b,c,d,e,f){if(f){if(f=a[a.length-1])var g=f[sre.Engine.personalityProps.JOIN];if(f&&!b.string&&e&&sre.AudioUtil.isPauseElement(f)){var h=sre.Engine.personalityProps.PAUSE;f[h]=sre.AudioUtil.mergePause_(f[h],e[h]);e=null}f&&b.string&&0===Object.keys(c).length&&sre.AudioUtil.isSpanElement(f)&&("undefined"!==typeof g&&(h=f.span.pop(),b=new sre.Span(h.string+g+b.string,h.attributes)),f.span.push(b),b=new sre.Span("",{}),f[sre.Engine.personalityProps.JOIN]=d)}0!==
Object.keys(c).length&&a.push(c);b.string&&a.push({span:[b],join:d});e&&a.push(e)};
sre.AudioUtil.personalityDiff_=function(a,b){if(!b)return a;var c={};for(h in sre.Engine.personalityProps){var d=sre.Engine.personalityProps[h],e=a[d],f=b[d];if(!(!e&&!f||e&&f&&e===f)){var g=e||0;sre.AudioUtil.isMarkupElement(c)||(c.open=[],c.close=[]);e||c.close.push(d);f||c.open.push(d);f&&e&&(c.close.push(d),c.open.push(d));b[d]=g;c[d]=g;sre.AudioUtil.PersonalityRanges_[d]?sre.AudioUtil.PersonalityRanges_[d].push(g):sre.AudioUtil.PersonalityRanges_[d]=[g]}}if(sre.AudioUtil.isMarkupElement(c)){for(a=
c.close.slice();0<a.length;){var h=sre.AudioUtil.LastOpen_.pop();d=sre.BaseUtil.setdifference(h,a);a=sre.BaseUtil.setdifference(a,h);h=d;if(0===a.length)0!==h.length&&sre.AudioUtil.LastOpen_.push(h);else if(0!==h.length)for(c.close=c.close.concat(h),c.open=c.open.concat(h),d=0;e=h[d];d++)c[e]=b[e]}sre.AudioUtil.LastOpen_.push(c.open)}return c};sre.AudioRenderer=function(){};sre.AudioRenderer.prototype.setSeparator=function(a){};sre.AudioRenderer.prototype.getSeparator=function(){};sre.AudioRenderer.prototype.markup=function(a){};sre.AudioRenderer.prototype.error=function(a){};sre.AudioRenderer.prototype.merge=function(a){};sre.AudioRenderer.prototype.finalize=function(a){};sre.AbstractAudioRenderer=function(){this.separator_=" "};sre.AbstractAudioRenderer.prototype.setSeparator=function(a){this.separator_=a};sre.AbstractAudioRenderer.prototype.getSeparator=function(){return this.separator_};sre.AbstractAudioRenderer.prototype.markup=goog.abstractMethod;sre.AbstractAudioRenderer.prototype.error=function(a){return null};sre.AbstractAudioRenderer.prototype.merge=function(a){return a.map(function(b){return b.string}).join(this.getSeparator())};
sre.AbstractAudioRenderer.prototype.finalize=function(a){return a};sre.AbstractAudioRenderer.prototype.pauseValue=function(a){switch(a){case "long":a=750;break;case "medium":a=500;break;case "short":a=250;break;default:a=parseInt(a,10)}return Math.floor(a*parseInt(sre.Engine.getInstance().getRate(),10)/100)};sre.MarkupRenderer=function(){sre.AbstractAudioRenderer.call(this);this.scaleFunction_=null};goog.inherits(sre.MarkupRenderer,sre.AbstractAudioRenderer);sre.MarkupRenderer.prototype.setScaleFunction=function(a,b,c,d,e){var f=e||0;this.scaleFunction_=function(g){g=(g-a)/(b-a);return+(Math.round(c*(1-g)+d*g+"e+"+f)+"e-"+f)}};sre.MarkupRenderer.prototype.applyScaleFunction=function(a){return this.scaleFunction_?this.scaleFunction_(a):a};sre.MarkupRenderer.prototype.pause=goog.abstractMethod;
sre.MarkupRenderer.prototype.prosodyElement=goog.abstractMethod;sre.AcssRenderer=function(){sre.MarkupRenderer.call(this)};goog.inherits(sre.AcssRenderer,sre.MarkupRenderer);
sre.AcssRenderer.prototype.markup=function(a){this.setScaleFunction(-2,2,0,10,0);a=sre.AudioUtil.personalityMarkup(a);for(var b=[],c={open:[]},d=null,e=!1,f=0,g;g=a[f];f++)if(sre.AudioUtil.isMarkupElement(g))sre.AudioUtil.mergeMarkup(c,g);else if(sre.AudioUtil.isPauseElement(g))e&&(d=sre.AudioUtil.mergePause(d,g,Math.max));else{g='"'+this.merge(g.span)+'"';e=!0;d&&(b.push(this.pause(d)),d=null);var h=this.prosody_(c);b.push(h?"(text ("+h+") "+g+")":g)}return"(exp "+b.join(" ")+")"};
sre.AcssRenderer.prototype.error=function(a){return'(error "'+sre.EventUtil.Move[a.toString()]+'")'};sre.AcssRenderer.prototype.prosody_=function(a){for(var b=a.open,c=[],d=0,e;e=b[d];d++)c.push(this.prosodyElement(e,a[e]));return c.join(" ")};
sre.AcssRenderer.prototype.prosodyElement=function(a,b){b=this.applyScaleFunction(b);switch(a){case sre.Engine.personalityProps.RATE:return"(richness . "+b+")";case sre.Engine.personalityProps.PITCH:return"(average-pitch . "+b+")";case sre.Engine.personalityProps.VOLUME:return"(stress . "+b+")"}return"(value . "+b+")"};sre.AcssRenderer.prototype.pause=function(a){return"(pause . "+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+")"};sre.PunctuationRenderer=function(){sre.AbstractAudioRenderer.call(this)};goog.inherits(sre.PunctuationRenderer,sre.AbstractAudioRenderer);
sre.PunctuationRenderer.prototype.markup=function(a){a=sre.AudioUtil.personalityMarkup(a);for(var b="",c=null,d=!1,e=0,f;f=a[e];e++)sre.AudioUtil.isMarkupElement(f)||(sre.AudioUtil.isPauseElement(f)?d&&(c=sre.AudioUtil.mergePause(c,f,Math.max)):(c&&(b+=this.pause(c[sre.Engine.personalityProps.PAUSE]),c=null),b+=(d?this.getSeparator():"")+this.merge(f.span),d=!0));return b};sre.PunctuationRenderer.PAUSE_PUNCTUATION_={"short":",",medium:";","long":"."};
sre.PunctuationRenderer.prototype.pause=function(a){return sre.PunctuationRenderer.PAUSE_PUNCTUATION_["number"===typeof a?250>=a?"short":500>=a?"medium":"long":a]||""};sre.XmlRenderer=function(){sre.MarkupRenderer.call(this)};goog.inherits(sre.XmlRenderer,sre.MarkupRenderer);
sre.XmlRenderer.prototype.markup=function(a){this.setScaleFunction(-2,2,-100,100,2);a=sre.AudioUtil.personalityMarkup(a);for(var b=[],c=[],d=0,e;e=a[d];d++)if(e.span)b.push(this.merge(e.span));else if(sre.AudioUtil.isPauseElement(e))b.push(this.pause(e));else{if(e.close.length)for(var f=0;f<e.close.length;f++){var g=c.pop();if(-1===e.close.indexOf(g))throw new sre.Engine.Error("Unknown closing markup element: "+g);b.push(this.closeTag(g))}e.open.length&&sre.AudioUtil.sortClose(e.open.slice(),a.slice(d+
1)).forEach(goog.bind(function(h){b.push(this.prosodyElement(h,e[h]));c.push(h)},this))}return b.join(" ")};sre.XmlRenderer.prototype.closeTag=goog.abstractMethod;sre.SableRenderer=function(){sre.XmlRenderer.call(this)};goog.inherits(sre.SableRenderer,sre.XmlRenderer);sre.SableRenderer.prototype.finalize=function(a){return'<?xml version="1.0"?><!DOCTYPE SABLE PUBLIC "-//SABLE//DTD SABLE speech mark up//EN" "Sable.v0_2.dtd" []><SABLE>'+this.getSeparator()+a+this.getSeparator()+"</SABLE>"};sre.SableRenderer.prototype.pause=function(a){return'<BREAK MSEC="'+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+'"/>'};
sre.SableRenderer.prototype.prosodyElement=function(a,b){b=this.applyScaleFunction(b);switch(a){case sre.Engine.personalityProps.PITCH:return'<PITCH RANGE="'+b+'%">';case sre.Engine.personalityProps.RATE:return'<RATE SPEED="'+b+'%">';case sre.Engine.personalityProps.VOLUME:return'<VOLUME LEVEL="'+b+'%">';default:return"<"+a.toUpperCase()+' VALUE="'+b+'">'}};sre.SableRenderer.prototype.closeTag=function(a){return"</"+a.toUpperCase()+">"};sre.SsmlRenderer=function(){sre.XmlRenderer.call(this)};goog.inherits(sre.SsmlRenderer,sre.XmlRenderer);sre.SsmlRenderer.prototype.finalize=function(a){return'<?xml version="1.0"?><speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis"><prosody rate="'+sre.Engine.getInstance().getRate()+'%">'+this.getSeparator()+a+this.getSeparator()+"</prosody></speak>"};sre.SsmlRenderer.prototype.pause=function(a){return'<break time="'+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+'ms"/>'};
sre.SsmlRenderer.prototype.prosodyElement=function(a,b){b=Math.floor(this.applyScaleFunction(b));b=0>b?b.toString():"+"+b.toString();return"<prosody "+a.toLowerCase()+'="'+b+(a===sre.Engine.personalityProps.VOLUME?">":'%">')};sre.SsmlRenderer.prototype.closeTag=function(a){return"</prosody>"};sre.SsmlStepRenderer=function(){sre.SsmlRenderer.call(this)};goog.inherits(sre.SsmlStepRenderer,sre.SsmlRenderer);sre.SsmlStepRenderer.prototype.markup=function(a){sre.SsmlStepRenderer.MARKS={};return sre.SsmlStepRenderer.superClass_.markup.call(this,a)};sre.SsmlStepRenderer.CHARACTER_ATTR_="character";sre.SsmlStepRenderer.MARKS={};
sre.SsmlStepRenderer.prototype.merge=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=d.attributes.extid;e&&!sre.SsmlStepRenderer.MARKS[e]&&(b.push('<mark name="'+e+'"/>'),sre.SsmlStepRenderer.MARKS[e]=!0);1===d.string.length&&d.string.match(/[a-zA-Z]/)?b.push('<say-as interpret-as="'+sre.SsmlStepRenderer.CHARACTER_ATTR_+'">'+d.string+"</say-as>"):b.push(d.string)}return b.join(this.getSeparator())};sre.StringRenderer=function(){sre.AbstractAudioRenderer.call(this)};goog.inherits(sre.StringRenderer,sre.AbstractAudioRenderer);sre.StringRenderer.prototype.markup=function(a){var b="";a=a.filter(function(g){return g.descriptionString()});if(!a.length)return b;for(var c=0;c<a.length-1;c++){var d=a[c],e=d.personality[sre.Engine.personalityProps.JOIN],f="nemeth"===sre.Engine.getInstance().locale?"":this.getSeparator();e="undefined"===typeof e?f:e;b+=d.descriptionString()+e}return b+=a[c].descriptionString()};sre.AuralRendering=function(){};goog.addSingletonGetter(sre.AuralRendering);sre.AuralRendering.prototype.setSeparator=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];b&&b.setSeparator(a)};sre.AuralRendering.prototype.getSeparator=function(){var a=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return a?a.getSeparator():""};
sre.AuralRendering.prototype.markup=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.markup(a):""};sre.AuralRendering.prototype.merge=function(a){var b=a.map(function(d){return{string:d,attributes:{}}}),c=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return c?c.merge(b):a.join()};
sre.AuralRendering.prototype.finalize=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.finalize(a):a};sre.AuralRendering.prototype.error=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.error(a):""};sre.AuralRendering.registerRenderer=function(a,b){sre.AuralRendering.rendererMapping_[a]=b};
sre.AuralRendering.ofType=function(a){return sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup]instanceof a};sre.AuralRendering.rendererMapping_={};sre.AuralRendering.registerRenderer(sre.Engine.Markup.NONE,new sre.StringRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.PUNCTUATION,new sre.PunctuationRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.ACSS,new sre.AcssRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SABLE,new sre.SableRenderer);
sre.AuralRendering.xmlInstance=new sre.SsmlRenderer;sre.AuralRendering.registerRenderer(sre.Engine.Markup.VOICEXML,sre.AuralRendering.xmlInstance);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SSML,sre.AuralRendering.xmlInstance);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SSML_STEP,new sre.SsmlStepRenderer);sre.WalkerUtil={};sre.WalkerUtil.splitAttribute=function(a){return a?a.split(/,/):[]};sre.WalkerUtil.getAttribute=function(a,b){return sre.DomUtil.getDataAttribute(a,b)};sre.WalkerUtil.getSemanticRoot=function(a){if(a.hasAttribute(sre.EnrichMathml.Attribute.TYPE)&&!a.hasAttribute(sre.EnrichMathml.Attribute.PARENT))return a;for(var b=sre.DomUtil.querySelectorAllByAttr(a,sre.EnrichMathml.Attribute.TYPE),c=0,d;d=b[c];c++)if(!d.hasAttribute(sre.EnrichMathml.Attribute.PARENT))return d;return a};
sre.WalkerUtil.getBySemanticId=function(a,b){return a.getAttribute(sre.EnrichMathml.Attribute.ID)===b?a:sre.DomUtil.querySelectorAllByAttrValue(a,sre.EnrichMathml.Attribute.ID,b)[0]};sre.RebuildStree=function(a){this.factory=new sre.SemanticNodeFactory;this.nodeDict={};this.mathml=a;this.mmlRoot=sre.WalkerUtil.getSemanticRoot(a);this.streeRoot=this.assembleTree(this.mmlRoot);this.stree=sre.SemanticTree.fromNode(this.streeRoot,this.mathml);this.xml=this.stree.xml();sre.SemanticProcessor.getInstance().setNodeFactory(this.factory)};sre.RebuildStree.prototype.getTree=function(){return this.stree};
sre.RebuildStree.prototype.assembleTree=function(a){var b=this.makeNode(a),c=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CHILDREN)),d=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CONTENT));if(0===d.length&&0===c.length)return b.textContent=a.textContent,b;if(0<d.length){var e=sre.WalkerUtil.getBySemanticId(a,d[0]);e&&(e=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(e,sre.EnrichMathml.Attribute.OPERATOR)),
1<e.length&&(b.textContent=e[1]))}e=function(f){f=sre.WalkerUtil.getBySemanticId(a,f);f=this.assembleTree(f);f.parent=b;return f};b.contentNodes=d.map(goog.bind(e,this));b.childNodes=c.map(goog.bind(e,this));return(c=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.COLLAPSED))?this.postProcess(b,c):b};
sre.RebuildStree.prototype.makeNode=function(a){var b=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.TYPE),c=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ROLE),d=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.FONT),e=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ANNOTATION)||"",f=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ID),g=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.EMBELLISHED);a=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.FENCEPOINTER);
f=this.createNode(parseInt(f,10));f.type=b;f.role=c;f.font=d?d:sre.SemanticAttr.Font.UNKNOWN;f.parseAnnotation(e);a&&(f.fencePointer=a);g&&(f.embellished=g);return f};sre.RebuildStree.isPunctuated=function(a){return!sre.SemanticSkeleton.simpleCollapseStructure(a)&&a[1]&&sre.SemanticSkeleton.contentCollapseStructure(a[1])};sre.RebuildStree.prototype.makePunctuation=function(a){a=this.createNode(a);a.updateContent(sre.SemanticAttr.invisibleComma());a.role=sre.SemanticAttr.Role.DUMMY;return a};
sre.RebuildStree.prototype.makePunctuated=function(a,b,c){var d=this.createNode(b[0]);d.type=sre.SemanticAttr.Type.PUNCTUATED;d.embellished=a.embellished;d.fencePointer=a.fencePointer;d.role=c;a=b.splice(1,1)[0].slice(1);d.contentNodes=a.map(goog.bind(this.makePunctuation,this));this.collapsedChildren_(b)};sre.RebuildStree.prototype.makeEmpty=function(a,b,c){b=this.createNode(b);b.type=sre.SemanticAttr.Type.EMPTY;b.embellished=a.embellished;b.fencePointer=a.fencePointer;b.role=c};
sre.RebuildStree.prototype.makeIndex=function(a,b,c){sre.RebuildStree.isPunctuated(b)?this.makePunctuated(a,b,c):sre.SemanticSkeleton.simpleCollapseStructure(b)&&!this.nodeDict[b.toString()]&&this.makeEmpty(a,b,c)};
sre.RebuildStree.prototype.postProcess=function(a,b){b=sre.SemanticSkeleton.fromString(b).array;if(a.type===sre.SemanticAttr.Role.SUBSUP){var c=this.createNode(b[1][0]);c.type=sre.SemanticAttr.Type.SUBSCRIPT;c.role=sre.SemanticAttr.Role.SUBSUP;a.type=sre.SemanticAttr.Type.SUPERSCRIPT;c.embellished=a.embellished;c.fencePointer=a.fencePointer;this.makeIndex(a,b[1][2],sre.SemanticAttr.Role.RIGHTSUB);this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUPER);this.collapsedChildren_(b);return a}if(a.type===
sre.SemanticAttr.Type.SUBSCRIPT)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUB),this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.SUPERSCRIPT)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUPER),this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.TENSOR)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.LEFTSUB),this.makeIndex(a,b[3],sre.SemanticAttr.Role.LEFTSUPER),this.makeIndex(a,b[4],sre.SemanticAttr.Role.RIGHTSUB),this.makeIndex(a,b[5],sre.SemanticAttr.Role.RIGHTSUPER),
this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.PUNCTUATED)return sre.RebuildStree.isPunctuated(b)&&(b=b.splice(1,1)[0].slice(1),a.contentNodes=b.map(goog.bind(this.makePunctuation,this))),a;a.type===sre.SemanticAttr.Role.UNDEROVER&&(c=this.createNode(b[1][0]),a.childNodes[1].role===sre.SemanticAttr.Role.OVERACCENT?(c.type=sre.SemanticAttr.Type.OVERSCORE,a.type=sre.SemanticAttr.Type.UNDERSCORE):(c.type=sre.SemanticAttr.Type.UNDERSCORE,a.type=sre.SemanticAttr.Type.OVERSCORE),c.role=
sre.SemanticAttr.Role.UNDEROVER,c.embellished=a.embellished,c.fencePointer=a.fencePointer,this.collapsedChildren_(b));return a};sre.RebuildStree.prototype.createNode=function(a){var b=this.factory.makeNode(a);return this.nodeDict[a.toString()]=b};
sre.RebuildStree.prototype.collapsedChildren_=function(a){var b=goog.bind(function(c){var d=this.nodeDict[c[0]];d.childNodes=[];for(var e=1,f=c.length;e<f;e++){var g=c[e];d.childNodes.push(sre.SemanticSkeleton.simpleCollapseStructure(g)?this.nodeDict[g]:b(g))}return d},this);b(a)};sre.SpeechGenerator=function(){};sre.SpeechGenerator.prototype.getSpeech=function(a,b){};sre.SpeechGenerator.prototype.getRebuilt=function(){};sre.SpeechGenerator.prototype.setRebuilt=function(a){};sre.SpeechGenerator.prototype.setOptions=function(a){};sre.SpeechGenerator.prototype.getOptions=function(){};sre.SpeechGenerator.prototype.start=function(){};sre.SpeechGenerator.prototype.end=function(){};sre.AuditoryDescription=function(a){this.context=a.context||"";this.text=a.text||"";this.userValue=a.userValue||"";this.annotation=a.annotation||"";this.attributes=a.attributes||{};this.personality=a.personality||{}};sre.AuditoryDescription.create=function(a,b){a.text=sre.Grammar.getInstance().apply(a.text,b||{});return new sre.AuditoryDescription(a)};sre.AuditoryDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};
sre.AuditoryDescription.prototype.clone=function(){if(this.personality){var a={};for(var b in this.personality)a=this.personality[b]}if(this.attributes){var c={};for(b in this.attributes)c=this.attributes[b]}return new sre.AuditoryDescription({context:this.context,text:this.text,userValue:this.userValue,annotation:this.annotation,personality:a,attributes:c})};
sre.AuditoryDescription.prototype.toString=function(){return'AuditoryDescription(context="'+this.context+'"  text="'+this.text+'"  userValue="'+this.userValue+'"  annotation="'+this.annotation+'")'};sre.AuditoryDescription.prototype.descriptionString=function(){return this.context&&this.text?this.context+" "+this.text:this.context||this.text};sre.AuditoryDescription.prototype.descriptionSpan=function(){return new sre.Span(this.descriptionString(),this.attributes)};
sre.AuditoryDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};sre.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d;this.context=null};sre.SpeechRule.prototype.toString=function(){return this.name+" | "+this.dynamicCstr.toString()+" | "+this.precondition.toString()+" ==> "+this.action.toString()};sre.SpeechRule.Type={NODE:"NODE",MULTI:"MULTI",TEXT:"TEXT",PERSONALITY:"PERSONALITY"};
sre.SpeechRule.Type.fromString=function(a){switch(a){case "[n]":return sre.SpeechRule.Type.NODE;case "[m]":return sre.SpeechRule.Type.MULTI;case "[t]":return sre.SpeechRule.Type.TEXT;case "[p]":return sre.SpeechRule.Type.PERSONALITY;default:throw"Parse error: "+a;}};
sre.SpeechRule.Type.toString=function(a){switch(a){case sre.SpeechRule.Type.NODE:return"[n]";case sre.SpeechRule.Type.MULTI:return"[m]";case sre.SpeechRule.Type.TEXT:return"[t]";case sre.SpeechRule.Type.PERSONALITY:return"[p]";default:throw"Unknown type error: "+a;}};sre.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content;this.attributes=a.attributes;this.grammar=a.grammar};
sre.SpeechRule.Component.fromString=function(a){var b={};b.type=sre.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trim();if(!a)throw new sre.SpeechRule.OutputError("Missing content.");switch(b.type){case sre.SpeechRule.Type.TEXT:if('"'==a[0]){var c=sre.SpeechRule.splitString_(a,"\\(")[0].trim();if('"'!=c.slice(-1))throw new sre.SpeechRule.OutputError("Invalid string syntax.");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf("(")&&(a="");break}case sre.SpeechRule.Type.NODE:case sre.SpeechRule.Type.MULTI:c=
a.indexOf(" ("),-1==c?(b.content=a.trim(),a=""):(b.content=a.substring(0,c).trim(),a=a.slice(c).trim())}a&&(a=sre.SpeechRule.Component.attributesFromString(a),a.grammar&&(b.grammar=a.grammar,delete a.grammar),Object.keys(a).length&&(b.attributes=a));return b=new sre.SpeechRule.Component(b)};sre.SpeechRule.Component.prototype.toString=function(){var a=""+sre.SpeechRule.Type.toString(this.type);a+=this.content?" "+this.content:"";var b=this.attributesToString();return a+(b?" "+b:"")};
sre.SpeechRule.Component.grammarFromString=function(a){return sre.Grammar.parseInput(a)};sre.SpeechRule.Component.prototype.grammarToString=function(){return this.getGrammar().join(":")};sre.SpeechRule.Component.prototype.getGrammar=function(){var a=[],b;for(b in this.grammar)!0===this.grammar[b]?a.push(b):!1===this.grammar[b]?a.push("!"+b):a.push(b+"="+this.grammar[b]);return a};
sre.SpeechRule.Component.attributesFromString=function(a){if("("!=a[0]||")"!=a.slice(-1))throw new sre.SpeechRule.OutputError("Invalid attribute expression: "+a);var b={};a=sre.SpeechRule.splitString_(a.slice(1,-1),",");for(var c=0,d=a.length;c<d;c++){var e=a[c],f=e.indexOf(":");if(-1==f)b[e.trim()]="true";else{var g=e.substring(0,f).trim();e=e.slice(f+1).trim();b[g]="grammar"===g?sre.SpeechRule.Component.grammarFromString(e):b[g]=e}}return b};
sre.SpeechRule.Component.prototype.attributesToString=function(){var a=this.getAttributes(),b=this.grammarToString();b&&a.push("grammar:"+b);return 0<a.length?"("+a.join(", ")+")":""};sre.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this.attributes){var c=this.attributes[b];"true"===c?a.push(b):a.push(b+":"+c)}return a};sre.SpeechRule.Action=function(a){this.components=a};
sre.SpeechRule.Action.fromString=function(a){a=sre.SpeechRule.splitString_(a,";").filter(function(f){return f.match(/\S/)}).map(function(f){return f.trim()});for(var b=[],c=0,d=a.length;c<d;c++){var e=sre.SpeechRule.Component.fromString(a[c]);e&&b.push(e)}return new sre.SpeechRule.Action(b)};sre.SpeechRule.Action.prototype.toString=function(){return this.components.map(function(a){return a.toString()}).join("; ")};sre.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};
sre.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(", ");return this.query+", "+a};
sre.SpeechRule.splitString_=function(a,b){for(var c=[],d="";""!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/"/g)||[]).length%2)throw new sre.SpeechRule.OutputError("Invalid string in expression: "+a);c.push(d+a);a=d=""}else if(0==(a.substring(0,e).match(/"/g)||[]).length%2)c.push(d+a.substring(0,e)),d="",a=a.substring(e+1);else{var f=a.substring(e).search('"');if(-1==f)throw new sre.SpeechRule.OutputError("Invalid string in expression: "+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&c.push(d);
return c};sre.SpeechRule.OutputError=function(a){sre.Engine.Error.call(this,a);this.name="RuleError"};goog.inherits(sre.SpeechRule.OutputError,sre.Engine.Error);sre.SpeechRuleFunctions=function(){};sre.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};sre.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};sre.SpeechRuleFunctions.Store_.prototype.addStore=function(a){for(var b=Object.keys(a.store_),c=0,d;d=b[c];c++)this.add(d,a.store_[d])};sre.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};
sre.SpeechRuleFunctions.CustomQueries=function(){sre.SpeechRuleFunctions.Store_.call(this,"CQF",{})};goog.inherits(sre.SpeechRuleFunctions.CustomQueries,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.CustomStrings=function(){sre.SpeechRuleFunctions.Store_.call(this,"CSF",{})};goog.inherits(sre.SpeechRuleFunctions.CustomStrings,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.ContextFunctions=function(){sre.SpeechRuleFunctions.Store_.call(this,"CTXF",{})};
goog.inherits(sre.SpeechRuleFunctions.ContextFunctions,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){return a.match(new RegExp("^"+this.prefix_))?!0:(console.error("FunctionError: Invalid function name. Expected prefix "+this.prefix_),!1)};sre.SpeechRuleContext=function(){this.customQueries=new sre.SpeechRuleFunctions.CustomQueries;this.customStrings=new sre.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new sre.SpeechRuleFunctions.ContextFunctions};sre.SpeechRuleContext.prototype.applyCustomQuery=function(a,b){return(b=this.customQueries.lookup(b))?b(a):null};sre.SpeechRuleContext.prototype.applySelector=function(a,b){return this.applyCustomQuery(a,b)||sre.XpathUtil.evalXPath(b,a)};
sre.SpeechRuleContext.prototype.applyQuery=function(a,b){a=this.applySelector(a,b);return 0<a.length?a[0]:null};sre.SpeechRuleContext.prototype.applyConstraint=function(a,b){return!!this.applyQuery(a,b)||sre.XpathUtil.evaluateBoolean(b,a)};sre.SpeechRuleContext.prototype.constructString=function(a,b){if(!b)return"";if('"'==b.charAt(0))return b.slice(1,-1);var c=this.customStrings.lookup(b);return c?c(a):sre.XpathUtil.evaluateString(b,a)};
sre.SpeechRuleContext.prototype.parse=function(a){for(var b=0,c;c=a[b];b++)({CQF:this.customQueries,CSF:this.customStrings,CTXF:this.contextFunctions})[c[0]].add(c[1],c[2])};sre.SpeechRuleEvaluator=function(){};sre.SpeechRuleEvaluator.prototype.evaluateDefault=goog.abstractMethod;sre.SpeechRuleStore=function(){};sre.SpeechRuleStore.prototype.addRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.deleteRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.findRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.findAllRules=goog.abstractMethod;sre.SpeechRuleStore.prototype.lookupRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.defineRule=goog.abstractMethod;sre.TrieNode=function(){};sre.TrieNode.prototype.getConstraint=function(){};sre.TrieNode.prototype.getKind=function(){};sre.TrieNode.prototype.applyTest=function(a){};sre.TrieNode.prototype.addChild=function(a){};sre.TrieNode.prototype.getChild=function(a){};sre.TrieNode.prototype.getChildren=function(){};sre.TrieNode.prototype.findChildren=function(a){};sre.TrieNode.Kind={ROOT:"root",DYNAMIC:"dynamic",QUERY:"query",BOOLEAN:"boolean",STATIC:"static"};sre.AbstractTrieNode=function(a,b){this.constraint=a;this.test=b;this.children_={};this.kind=sre.TrieNode.Kind.ROOT};sre.AbstractTrieNode.prototype.getConstraint=function(){return this.constraint};sre.AbstractTrieNode.prototype.getKind=function(){return this.kind};sre.AbstractTrieNode.prototype.applyTest=function(a){return this.test(a)};sre.AbstractTrieNode.prototype.addChild=function(a){var b=a.getConstraint(),c=this.children_[b];this.children_[b]=a;return c};
sre.AbstractTrieNode.prototype.getChild=function(a){return this.children_[a]};sre.AbstractTrieNode.prototype.getChildren=function(){var a=[],b;for(b in this.children_)a.push(this.children_[b]);return a};sre.AbstractTrieNode.prototype.findChildren=function(a){var b=[],c;for(c in this.children_){var d=this.children_[c];d.applyTest(a)&&b.push(d)}return b};sre.AbstractTrieNode.prototype.toString=function(){return this.constraint};
sre.StaticTrieNode=function(a,b){sre.AbstractTrieNode.call(this,a,b);this.kind=sre.TrieNode.Kind.STATIC;this.rule_=null};goog.inherits(sre.StaticTrieNode,sre.AbstractTrieNode);sre.StaticTrieNode.prototype.getRule=function(){return this.rule_};sre.StaticTrieNode.prototype.setRule=function(a){this.rule_&&sre.Debugger.getInstance().output("Replacing rule "+this.rule_+" with "+a);this.rule_=a};
sre.StaticTrieNode.prototype.toString=function(){return this.getRule()?this.constraint+"\n==> "+this.getRule().action:this.constraint};sre.TrieNodeFactory={};sre.TrieNodeFactory.getNode=function(a,b,c){switch(a){case sre.TrieNode.Kind.ROOT:return new sre.RootTrieNode;case sre.TrieNode.Kind.DYNAMIC:return new sre.DynamicTrieNode(b);case sre.TrieNode.Kind.QUERY:return new sre.QueryTrieNode(b,c);case sre.TrieNode.Kind.BOOLEAN:return new sre.BooleanTrieNode(b,c);default:return null}};sre.RootTrieNode=function(){sre.AbstractTrieNode.call(this,"",function(){return!0});this.kind=sre.TrieNode.Kind.ROOT};goog.inherits(sre.RootTrieNode,sre.AbstractTrieNode);
sre.DynamicTrieNode=function(a){sre.AbstractTrieNode.call(this,a,function(b){return b===a});this.kind=sre.TrieNode.Kind.DYNAMIC};goog.inherits(sre.DynamicTrieNode,sre.AbstractTrieNode);
sre.TrieNodeFactory.constraintTest_=function(a){if(a.match(/^self::\*$/))return function(f){return!0};if(a.match(/^self::\w+$/)){var b=a.slice(6).toUpperCase();return function(f){return f.tagName&&sre.DomUtil.tagName(f)===b}}if(a.match(/^self::\w+:\w+$/)){a=a.split(":");var c=sre.XpathUtil.resolveNameSpace(a[2]);if(!c)return null;b=a[3].toUpperCase();return function(f){return f.localName&&f.localName.toUpperCase()===b&&f.namespaceURI===c}}if(a.match(/^@\w+$/)){var d=a.slice(1);return function(f){return f.hasAttribute&&
f.hasAttribute(d)}}if(a.match(/^@\w+="[\w\d ]+"$/)){a=a.split("=");d=a[0].slice(1);var e=a[1].slice(1,-1);return function(f){return f.hasAttribute&&f.hasAttribute(d)&&f.getAttribute(d)===e}}return a.match(/^@\w+!="[\w\d ]+"$/)?(a=a.split("!="),d=a[0].slice(1),e=a[1].slice(1,-1),function(f){return!f.hasAttribute||!f.hasAttribute(d)||f.getAttribute(d)!==e}):a.match(/^contains\(\s*@grammar\s*,\s*"[\w\d ]+"\s*\)$/)?(a=a.split('"'),e=a[1],function(f){return sre.Grammar.getInstance().getParameter(e)}):
a.match(/^not\(\s*contains\(\s*@grammar\s*,\s*"[\w\d ]+"\s*\)\s*\)$/)?(a=a.split('"'),e=a[1],function(f){return!sre.Grammar.getInstance().getParameter(e)}):null};sre.QueryTrieNode=function(a,b){this.context_=b;sre.StaticTrieNode.call(this,a,sre.TrieNodeFactory.constraintTest_(a));this.kind=sre.TrieNode.Kind.QUERY};goog.inherits(sre.QueryTrieNode,sre.StaticTrieNode);sre.QueryTrieNode.prototype.applyTest=function(a){return this.test?this.test(a):this.context_.applyQuery(a,this.constraint)===a};
sre.BooleanTrieNode=function(a,b){this.context_=b;sre.StaticTrieNode.call(this,a,sre.TrieNodeFactory.constraintTest_(a));this.kind=sre.TrieNode.Kind.BOOLEAN};goog.inherits(sre.BooleanTrieNode,sre.StaticTrieNode);sre.BooleanTrieNode.prototype.applyTest=function(a){return this.test?this.test(a):this.context_.applyConstraint(a,this.constraint)};sre.Trie=function(a){this.store=a;this.root=sre.TrieNodeFactory.getNode(sre.TrieNode.Kind.ROOT,"",this.store.context)};sre.Trie.prototype.addRule=function(a){for(var b=this.root,c=a.context,d=a.dynamicCstr.getValues(),e=0,f=d.length;e<f;e++)b=this.addNode_(b,d[e],sre.TrieNode.Kind.DYNAMIC,c);b=this.addNode_(b,a.precondition.query,sre.TrieNode.Kind.QUERY,c);d=a.precondition.constraints;e=0;for(f=d.length;e<f;e++)b=this.addNode_(b,d[e],sre.TrieNode.Kind.BOOLEAN,c);b.setRule(a)};
sre.Trie.prototype.addNode_=function(a,b,c,d){var e=a.getChild(b);e||(e=sre.TrieNodeFactory.getNode(c,b,d),a.addChild(e));return e};
sre.Trie.prototype.lookupRules=function(a,b){for(var c=[this.root],d=[];b.length;){for(var e=b.shift(),f=[];c.length;){var g=c.shift();g=g.getChildren();g.forEach(function(h){h.getKind()===sre.TrieNode.Kind.DYNAMIC&&-1===e.indexOf(h.getConstraint())||f.push(h)})}c=f.slice()}for(;c.length;)g=c.shift(),g.getRule&&(b=g.getRule())&&d.push(b),g=g.findChildren(a),c=c.concat(g);return d};
sre.Trie.prototype.hasSubtrie=function(a){for(var b=this.root,c=0,d=a.length;c<d;c++)if(b=b.getChild(a[c]),!b)return!1;return!0};sre.Trie.prototype.toString=function(){return sre.Trie.printWithDepth_(this.root,0,"")};sre.Trie.prototype.collectRules=function(){return sre.Trie.collectRules_(this.root)};sre.Trie.prototype.order=function(){return sre.Trie.order_(this.root)};
sre.Trie.printWithDepth_=function(a,b,c){var d=Array(b+2).join(b)+": ";c+=d+a.toString()+"\n";a=a.getChildren();d=0;for(var e;e=a[d];d++)c=sre.Trie.printWithDepth_(e,b+1,c);return c};sre.Trie.order_=function(a){a=a.getChildren();if(!a.length)return 0;var b=Math.max.apply(null,a.map(sre.Trie.order_));return Math.max(a.length,b)};
sre.Trie.collectRules_=function(a){var b=[];for(a=[a];a.length;){var c=a.shift();if(c.getKind()===sre.TrieNode.Kind.QUERY||c.getKind()===sre.TrieNode.Kind.BOOLEAN){var d=c.getRule();d&&b.unshift(d)}a=a.concat(c.getChildren())}return b};sre.Trie.prototype.enumerate=function(a){return this.enumerate_(this.root,a)};
sre.Trie.prototype.enumerate_=function(a,b){b=b||{};a=a.getChildren();for(var c=0,d;d=a[c];c++)d.kind===sre.TrieNode.Kind.DYNAMIC&&(b[d.getConstraint()]=this.enumerate_(d,b[d.getConstraint()]));return b};sre.BaseRuleStore=function(){this.context=new sre.SpeechRuleContext;this.customQueries=this.context.customQueries;this.customStrings=this.context.customStrings;this.contextFunctions=this.context.contextFunctions;this.speechRules_=[];this.trie=new sre.Trie(this);this.parseOrder=sre.DynamicCstr.DEFAULT_ORDER;this.parser=new sre.DynamicCstr.Parser(this.parseOrder);this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY];
this.domain=null;this.initialized=!1;this.parseMethods={Rule:goog.bind(this.defineRule,this)}};sre.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=sre.DomUtil.NodeType.ELEMENT_NODE&&a.nodeType!=sre.DomUtil.NodeType.TEXT_NODE)return null;a=this.trie.lookupRules(a,b.allProperties());return 0<a.length?this.pickMostConstraint_(b,a):null};
sre.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=sre.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new sre.SpeechRule.Precondition(d,g),k=this.parseCstr(b);var l=new sre.SpeechRule(a,k,h,f)}catch(m){if("RuleError"==m.name)return console.error("Rule Error ",d,"("+b+"):",m.message),null;throw m;}this.addRule(l);return l};sre.BaseRuleStore.prototype.addRule=function(a){a.context=this.context;this.trie.addRule(a);this.speechRules_.unshift(a)};
sre.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};sre.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};sre.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};sre.BaseRuleStore.prototype.evaluateDefault=function(a){return[sre.AuditoryDescription.create({text:a.textContent})]};
sre.BaseRuleStore.prototype.debugSpeechRule=function(a,b){var c=a.precondition,d=a.context.applyQuery(b,c.query);sre.Debugger.getInstance().output(c.query,d?d.toString():d);c.constraints.forEach(goog.bind(function(e){sre.Debugger.getInstance().output(e,a.context.applyConstraint(b,e))},this))};sre.BaseRuleStore.prototype.initialize=goog.abstractMethod;
sre.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&a.dynamicCstr.equal(c.dynamicCstr)&&sre.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};
sre.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){var c=sre.Engine.getInstance().comparator;b.sort(function(d,e){return c.compare(d.dynamicCstr,e.dynamicCstr)||e.precondition.constraints.length-d.precondition.constraints.length});sre.Debugger.getInstance().generateOutput(goog.bind(function(){return b.map(function(d){return d.name+"("+d.dynamicCstr.toString()+")"})},this));return b[0]};
sre.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};sre.BaseRuleStore.comparePreconditions_=function(a,b){a=a.precondition;b=b.precondition;return a.query!=b.query?!1:sre.BaseRuleStore.compareStaticConstraints_(a.constraints,b.constraints)};sre.BaseRuleStore.prototype.getSpeechRules=function(){return this.speechRules_};sre.BaseRuleStore.prototype.setSpeechRules=function(a){this.speechRules_=a};
sre.BaseRuleStore.prototype.parseCstr=function(a){return this.parser.parse(this.locale+"."+this.modality+(this.domain?"."+this.domain:"")+"."+a)};sre.BaseRuleStore.prototype.parse=function(a){this.modality=a.modality||this.modality;this.locale=a.locale||this.locale;this.domain=a.domain||this.domain;this.context.parse(a.functions||[]);this.parseRules(a.rules||[])};sre.BaseRuleStore.prototype.parseRules=function(a){for(var b=0,c;c=a[b];b++){var d=c[0],e=this.parseMethods[d];d&&e&&e.apply(this,c.slice(1))}};sre.MathStore=function(){sre.BaseRuleStore.call(this);this.initializer=[];this.parseMethods.Alias=goog.bind(this.defineRuleAlias,this);this.parseMethods.Aliases=goog.bind(this.defineRulesAlias,this);this.parseMethods.UniqueAlias=goog.bind(this.defineUniqueRuleAlias,this);this.parseMethods.SpecializedRule=goog.bind(this.defineSpecialisedRule,this)};goog.inherits(sre.MathStore,sre.BaseRuleStore);
sre.MathStore.prototype.initialize=function(){if(!this.initialized){for(var a=0,b;b=this.initializer[a];a++)b(this);this.setSpeechRules(this.trie.collectRules());this.initialized=!0}};
sre.MathStore.prototype.defineUniqueRuleAlias=function(a,b,c,d){var e=this.parseCstr(b),f=this.findRule(goog.bind(function(g){return g.name==a&&e.equal(g.dynamicCstr)},this));if(!f)throw new sre.SpeechRule.OutputError("Rule named "+a+" with style "+b+" does not exist.");this.addAlias_(f,c,Array.prototype.slice.call(arguments,3))};
sre.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(e){return e.name==a});if(!d)throw new sre.SpeechRule.OutputError("Rule with named "+a+" does not exist.");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};
sre.MathStore.prototype.defineRulesAlias=function(a,b,c){var d=this.findAllRules(function(g){return g.name==a});if(0==d.length)throw new sre.SpeechRule.OutputError("Rule with name "+a+" does not exist.");var e=Array.prototype.slice.call(arguments,2),f=[];d.forEach(goog.bind(function(g){a:{var h=g.dynamicCstr.toString();for(var k=g.action.toString(),l=0,m;m=f[l];l++)if(m.action===k&&m.cstr===h){h=!1;break a}f.push({cstr:h,action:k});h=!0}h&&this.addAlias_(g,b,e)},this))};
sre.MathStore.prototype.addAlias_=function(a,b,c){b=new sre.SpeechRule.Precondition(b,c);b=new sre.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};
sre.MathStore.prototype.defineSpecialisedRule=function(a,b,c,d){var e=this.parseCstr(b),f=this.findRule(goog.bind(function(g){return g.name==a&&e.equal(g.dynamicCstr)},this));if(!f)throw new sre.SpeechRule.OutputError("Rule named "+a+" with style "+b+" does not exist.");b=this.parseCstr(c);d=d?sre.SpeechRule.Action.fromString(d):f.action;f=new sre.SpeechRule(f.name,b,f.precondition,d);this.addRule(f)};sre.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};
sre.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\s+$/))return b;var c=this.matchNumber_(a);if(c&&c.length===a.length)return b.push(this.evaluate_(c.number)),b;a=sre.BaseUtil.removeEmpty(a.replace(/\s/g," ").split(" "));for(var d=0;c=a[d];d++)if(1==c.length)b.push(this.evaluate_(c));else if(c.match(new RegExp("^["+sre.Messages.REGEXP.TEXT+"]+$")))b.push(this.evaluate_(c));else for(var e=c;e;){c=this.matchNumber_(e);var f=e.match(new RegExp("^["+sre.Messages.REGEXP.TEXT+"]+"));
c?(b.push(this.evaluate_(c.number)),e=e.substring(c.length)):f?(b.push(this.evaluate_(f[0])),e=e.substring(f[0].length)):(c=e[0].charCodeAt(0),55296<=c&&56319>=c&&1<e.length&&!isNaN(e.charCodeAt(1))?(b.push(this.evaluate_(e.slice(0,2))),e=e.substring(2)):(b.push(this.evaluate_(e[0])),e=e.substring(1)))}return b};
sre.MathStore.prototype.matchNumber_=function(a){var b=a.match(new RegExp("^"+sre.Messages.REGEXP.NUMBER)),c=a.match(new RegExp("^"+sre.Locale.en.REGEXP.NUMBER));if(!b&&!c)return null;var d=c&&c[0]===a;return b&&b[0]===a||!d?{number:b[0],length:b[0].length}:{number:c[0].replace(new RegExp(sre.Locale.en.REGEXP.DIGIT_GROUP,"g"),"X").replace(new RegExp(sre.Locale.en.REGEXP.DECIMAL_MARK,"g"),sre.Messages.REGEXP.DECIMAL_MARK).replace(/X/g,sre.Messages.REGEXP.DIGIT_GROUP.replace(/\\/g,"")),length:c[0].length}};
sre.MathStore.prototype.evaluate_=function(a){return sre.AuditoryDescription.create({text:a},{adjust:!0,translate:!0})};sre.MathStore.prototype.parse=function(a){sre.MathStore.superClass_.parse.call(this,a);this.initializer=a.initialize||[]};sre.BrailleStore=function(){sre.MathStore.call(this);this.modality="braille"};goog.inherits(sre.BrailleStore,sre.MathStore);
sre.BrailleStore.prototype.evaluateDefault=function(a){a=a.textContent.slice(0);var b=[];if(a.match(/^\s+$/))return b;for(;a;){var c=a[0],d=c.charCodeAt(0);55296<=d&&56319>=d&&1<a.length&&!isNaN(a.charCodeAt(1))?(b.push(sre.AuditoryDescription.create({text:a.slice(0,2)},{adjust:!0,translate:!0})),a=a.substring(2)):(b.push(sre.AuditoryDescription.create({text:c},{adjust:!0,translate:!0})),a=a.substring(1))}return b};sre.ClearspeakPreferences=function(a,b){sre.DynamicCstr.call(this,a);this.preference=b};goog.inherits(sre.ClearspeakPreferences,sre.DynamicCstr);sre.ClearspeakPreferences.prototype.equal=function(a){if(!sre.ClearspeakPreferences.superClass_.equal.call(this,a))return!1;var b=Object.keys(this.preference);a=a.preference;if(b.length!==Object.keys(a).length)return!1;for(var c=0,d;d=b[c];c++)if(this.preference[d]!==a[d])return!1;return!0};sre.ClearspeakPreferences.AUTO="Auto";
sre.ClearspeakPreferences.PREFERENCES=new sre.DynamicProperties({AbsoluteValue:["Auto","AbsEnd","Cardinality","Determinant"],Bar:["Auto","Conjugate"],Caps:["Auto","SayCaps"],CombinationPermutation:["Auto","ChoosePermute"],Currency:["Auto","Position","Prefix"],Ellipses:["Auto","AndSoOn"],Exponent:["Auto","AfterPower","Ordinal","OrdinalPower","Exponent"],Fraction:"Auto EndFrac FracOver General GeneralEndFrac Ordinal Over OverEndFrac Per".split(" "),Functions:["Auto","None","Reciprocal"],ImpliedTimes:["Auto",
"MoreImpliedTimes","None"],Log:["Auto","LnAsNaturalLog"],Matrix:"Auto Combinatoric EndMatrix EndVector SilentColNum SpeakColNum Vector".split(" "),MultiLineLabel:"Auto Case Constraint Equation Line None Row Step".split(" "),MultiLineOverview:["Auto","None"],MultiLinePausesBetweenColumns:["Auto","Long","Short"],MultsymbolDot:["Auto","Dot"],MultsymbolX:["Auto","By","Cross"],Paren:"Auto CoordPoint Interval Silent Speak SpeakNestingLevel".split(" "),Prime:["Auto","Angle","Length"],Roots:["Auto","PosNegSqRoot",
"PosNegSqRootEnd","RootEnd"],SetMemberSymbol:["Auto","Belongs","Element","Member"],Sets:["Auto","SilentBracket","woAll"],TriangleSymbol:["Auto","Delta"],Trig:["Auto","ArcTrig","TrigInverse","Reciprocal"],VerticalLine:["Auto","Divides","Given","SuchThat"]});
sre.ClearspeakPreferences.comparator=function(){return new sre.ClearspeakPreferences.Comparator(sre.Engine.getInstance().dynamicCstr,sre.DynamicProperties.create([sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]]))};
sre.ClearspeakPreferences.Comparator=function(a,b){sre.DynamicCstr.DefaultComparator.call(this,a,b);this.preference=a.preference||{}};goog.inherits(sre.ClearspeakPreferences.Comparator,sre.DynamicCstr.DefaultComparator);sre.ClearspeakPreferences.Comparator.prototype.match=function(a){if(!sre.ClearspeakPreferences.Comparator.superClass_.match.call(this,a))return!1;if(!a.preference)return!0;for(var b=Object.keys(a.preference),c=0,d;d=b[c];c++)if(this.preference[d]!==a.preference[d])return!1;return!0};
sre.ClearspeakPreferences.Comparator.prototype.compare=function(a,b){var c=sre.ClearspeakPreferences.Comparator.superClass_.compare.call(this,a,b);if(0!==c)return c;if(!a.preference&&b.preference)return 1;if(a.preference&&!b.preference)return-1;if(!a.preference&&!b.preference)return 0;a=Object.keys(a.preference).length;b=Object.keys(b.preference).length;return a>b?-1:a<b?1:0};
sre.ClearspeakPreferences.Parser=function(){sre.DynamicCstr.Parser.call(this,[sre.DynamicCstr.Axis.LOCALE,sre.DynamicCstr.Axis.MODALITY,sre.DynamicCstr.Axis.DOMAIN,sre.DynamicCstr.Axis.STYLE])};goog.inherits(sre.ClearspeakPreferences.Parser,sre.DynamicCstr.Parser);
sre.ClearspeakPreferences.Parser.prototype.parse=function(a){var b=sre.ClearspeakPreferences.Parser.superClass_.parse.call(this,a);a=b.getValue(sre.DynamicCstr.Axis.STYLE);b=b.getValue(sre.DynamicCstr.Axis.LOCALE);var c={};a!==sre.DynamicCstr.DEFAULT_VALUE&&(c=this.fromPreference(a),a=this.toPreference(c));return new sre.ClearspeakPreferences({locale:b,modality:sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY],domain:"clearspeak",style:a},c)};
sre.ClearspeakPreferences.Parser.prototype.fromPreference=function(a){return sre.ClearspeakPreferences.fromPreference(a)};sre.ClearspeakPreferences.fromPreference=function(a){a=a.split(":");for(var b={},c=sre.ClearspeakPreferences.PREFERENCES.getProperties(),d=Object.keys(c),e=0,f;f=a[e];e++)if(f=f.split("_"),-1!==d.indexOf(f[0])){var g=f[1];g&&g!==sre.ClearspeakPreferences.AUTO&&-1!==c[f[0]].indexOf(g)&&(b[f[0]]=f[1])}return b};sre.ClearspeakPreferences.Parser.prototype.toPreference=function(a){return sre.ClearspeakPreferences.toPreference(a)};
sre.ClearspeakPreferences.toPreference=function(a){for(var b=Object.keys(a),c=[],d=0;d<b.length;d++)c.push(b[d]+"_"+a[b[d]]);return c.length?c.join(":"):sre.DynamicCstr.DEFAULT_VALUE};sre.ClearspeakPreferences.LOCALE_PREFERENCES=null;
sre.ClearspeakPreferences.getLocalePreferences=function(a){sre.ClearspeakPreferences.LOCALE_PREFERENCES||(a=a||sre.MathCompoundStore.getInstance().enumerate(sre.SpeechRuleEngine.getInstance().enumerate()),sre.ClearspeakPreferences.LOCALE_PREFERENCES=sre.ClearspeakPreferences.getLocalePreferences_(a));return sre.ClearspeakPreferences.LOCALE_PREFERENCES};
sre.ClearspeakPreferences.getLocalePreferences_=function(a){var b={},c;for(c in a)if(a[c].speech&&a[c].speech.clearspeak){var d=Object.keys(a[c].speech.clearspeak),e=b[c]={},f;for(f in sre.ClearspeakPreferences.PREFERENCES.getProperties()){var g=sre.ClearspeakPreferences.PREFERENCES.getProperties()[f],h=[f+"_Auto"];if(g){g=$jscomp.makeIterator(g);for(var k=g.next();!k.done;k=g.next())k=k.value,-1!==d.indexOf(f+"_"+k)&&h.push(f+"_"+k)}e[f]=h}}return b};
sre.ClearspeakPreferences.getSpeechExplorer=function(a){return(a=a.attached)&&a.length?a.find(function(b){return b.speechGenerator&&"speech"===b.speechGenerator.getOptions().modality}):null};
sre.ClearspeakPreferences.smartPreferences=function(a,b){b=sre.ClearspeakPreferences.getLocalePreferences()[b];if(!b)return[];a=sre.ClearspeakPreferences.getSpeechExplorer(a);if(!a)return[{type:"radio",content:"Standard",id:"clearspeak-default",variable:"speechRules"}];a=sre.ClearspeakPreferences.relevantPreferences(a.walker.getFocus().getSemanticPrimary());var c=sre.Engine.DOMAIN_TO_STYLES.clearspeak;return[{type:"radio",content:"No Preferences",id:"clearspeak-default",variable:"speechRules"},{type:"radio",
content:"Current Preferences",id:"clearspeak-"+c,variable:"speechRules"},{type:"rule"},{type:"label",content:"Preferences for "+a},{type:"rule"}].concat(b[a].map(function(d){d=d.split("_");return{type:"radio",content:d[1],id:"clearspeak-"+sre.ClearspeakPreferences.addPreference(c,d[0],d[1]),variable:"speechRules"}}))};sre.ClearspeakPreferences.relevantPreferences=function(a){var b=sre.ClearspeakPreferences.SEMANTIC_MAPPING_[a.type];return b?b[a.role]||b[""]||"ImpliedTimes":"ImpliedTimes"};
sre.ClearspeakPreferences.REVERSE_MAPPING_=[["AbsoluteValue",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.NEUTRAL],["Bar",sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Role.OVERACCENT],["Caps",sre.SemanticAttr.Type.IDENTIFIER,sre.SemanticAttr.Role.LATINLETTER],["CombinationPermutation",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.UNKNOWN],["Ellipses",sre.SemanticAttr.Type.PUNCTUATION,sre.SemanticAttr.Role.ELLIPSIS],["Exponent",sre.SemanticAttr.Type.SUPERSCRIPT,""],["Fraction",sre.SemanticAttr.Type.FRACTION,
""],["Functions",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.SIMPLEFUNC],["ImpliedTimes",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.IMPLICIT],["Log",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.PREFIXFUNC],["Matrix",sre.SemanticAttr.Type.MATRIX,""],["Matrix",sre.SemanticAttr.Type.VECTOR,""],["MultiLineLabel",sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.LABEL],["MultiLineOverview",sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.TABLE],["MultiLinePausesBetweenColumns",
sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.TABLE],["MultiLineLabel",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.LABEL],["MultiLineOverview",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.TABLE],["MultiLinePausesBetweenColumns",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.TABLE],["MultiLineLabel",sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Role.LABEL],["MultiLineOverview",sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Role.TABLE],["MultiLinePausesBetweenColumns",sre.SemanticAttr.Type.CASES,
sre.SemanticAttr.Role.TABLE],["MultsymbolDot",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.MULTIPLICATION],["MultsymbolX",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.MULTIPLICATION],["Paren",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.LEFTRIGHT],["Prime",sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Role.PRIME],["Roots",sre.SemanticAttr.Type.ROOT,""],["Roots",sre.SemanticAttr.Type.SQRT,""],["SetMemberSymbol",sre.SemanticAttr.Type.RELATION,sre.SemanticAttr.Role.ELEMENT],
["Sets",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.SETEXT],["TriangleSymbol",sre.SemanticAttr.Type.IDENTIFIER,sre.SemanticAttr.Role.GREEKLETTER],["Trig",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.PREFIXFUNC],["VerticalLine",sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Role.VBAR]];sre.ClearspeakPreferences.SEMANTIC_MAPPING_=function(){for(var a={},b=0,c;c=sre.ClearspeakPreferences.REVERSE_MAPPING_[b];b++){var d=c[0],e=a[c[1]];e||(e={},a[c[1]]=e);e[c[2]]=d}return a}();
sre.ClearspeakPreferences.findPreference=function(a,b){return"default"===a?sre.ClearspeakPreferences.AUTO:sre.ClearspeakPreferences.fromPreference(a)[b]||sre.ClearspeakPreferences.AUTO};sre.ClearspeakPreferences.addPreference=function(a,b,c){if("default"===a)return b+"_"+c;a=sre.ClearspeakPreferences.fromPreference(a);a[b]=c;return sre.ClearspeakPreferences.toPreference(a)};sre.Engine.getInstance().comparators.clearspeak=sre.ClearspeakPreferences.comparator;
sre.Engine.getInstance().parsers.clearspeak=new sre.ClearspeakPreferences.Parser;sre.AlphabetGenerator={};sre.AlphabetGenerator.Font={BOLD:"bold",BOLDFRAKTUR:"bold-fraktur",BOLDITALIC:"bold-italic",BOLDSCRIPT:"bold-script",DOUBLESTRUCK:"double-struck",FULLWIDTH:"fullwidth",FRAKTUR:"fraktur",ITALIC:"italic",MONOSPACE:"monospace",NORMAL:"normal",SCRIPT:"script",SANSSERIF:"sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLD:"sans-serif-bold",SANSSERIFBOLDITALIC:"sans-serif-bold-italic"};
sre.AlphabetGenerator.Embellish={SUPER:"super",SUB:"sub",CIRCLED:"circled",PARENTHESIZED:"parenthesized",PERIOD:"period",NEGATIVECIRCLED:"negative-circled",DOUBLECIRCLED:"double-circled",CIRCLEDSANSSERIF:"circled-sans-serif",NEGATIVECIRCLEDSANSSERIF:"negative-circled-sans-serif",COMMA:"comma",SQUARED:"squared",NEGATIVESQUARED:"negative-squared"};sre.AlphabetGenerator.Base={LATINCAP:"latinCap",LATINSMALL:"latinSmall",GREEKCAP:"greekCap",GREEKSMALL:"greekSmall",DIGIT:"digit"};
sre.AlphabetGenerator.Domains_={small:["default"],capital:["default"],digit:["default"]};
sre.AlphabetGenerator.makeDomains_=function(){var a=sre.Messages.ALPHABET_PREFIXES,b=sre.Messages.ALPHABET_TRANSFORMERS,c=function(d,e){var f={};Object.keys(d).forEach(function(g){f[g]=!0});Object.keys(e).forEach(function(g){f[g]=!0});return Object.keys(f)};sre.AlphabetGenerator.Domains_.small=c(a.smallPrefix,b.letter);sre.AlphabetGenerator.Domains_.capital=c(a.capPrefix,b.letter);sre.AlphabetGenerator.Domains_.digit=c(a.digitPrefix,b.digit)};
sre.AlphabetGenerator.generate=function(a,b){var c=sre.Engine.getInstance().locale;sre.Engine.getInstance().locale=a;sre.L10n.setLocale();b.addSymbolRules({locale:a});sre.AlphabetGenerator.makeDomains_();a=sre.AlphabetGenerator.INTERVALS;for(var d=0,e;e=a[d];d++){var f=sre.AlphabetGenerator.makeInterval(e.interval,e.subst),g=f.map(function(h){return sre.SemanticUtil.numberToUnicode(parseInt(h,16))});"offset"in e?sre.AlphabetGenerator.numberRules(b,f,g,e.font,e.category,e.offset||0):sre.AlphabetGenerator.alphabetRules(b,
f,g,sre.Messages.ALPHABETS[e.base],e.font,e.category,!!e.capital)}sre.Engine.getInstance().locale=c;sre.L10n.setLocale()};sre.AlphabetGenerator.makeInterval=function(a,b){var c=parseInt(a[0],16);a=parseInt(a[1],16);for(var d=[];c<=a;c++){var e=c.toString(16).toUpperCase();e=3<e.length?e:("000"+e).slice(-4);!1!==b[e]&&(e=b[e]||e,d.push(e))}return d};
sre.AlphabetGenerator.getFont=function(a){a="normal"===a||"fullwidth"===a?"":sre.Messages.FONT[a]||sre.Messages.EMBELLISH[a]||"";return"string"===typeof a?{font:a,combiner:sre.Messages.ALPHABET_COMBINER}:{font:a[0],combiner:a[1]}};
sre.AlphabetGenerator.alphabetRules=function(a,b,c,d,e,f,g){e=sre.AlphabetGenerator.getFont(e);for(var h=0,k,l,m;k=b[h],l=c[h],m=d[h];h++)sre.AlphabetGenerator.makeLetter(a,e.combiner,k,l,m,e.font,g?sre.Messages.ALPHABET_PREFIXES.capPrefix:sre.Messages.ALPHABET_PREFIXES.smallPrefix,f,sre.Messages.ALPHABET_TRANSFORMERS.letter,g?sre.AlphabetGenerator.Domains_.capital:sre.AlphabetGenerator.Domains_.small)};
sre.AlphabetGenerator.numberRules=function(a,b,c,d,e,f){d=sre.AlphabetGenerator.getFont(d);for(var g=0,h,k;h=b[g],k=c[g];g++)sre.AlphabetGenerator.makeLetter(a,d.combiner,h,k,g+f,d.font,sre.Messages.ALPHABET_PREFIXES.digitPrefix,e,sre.Messages.ALPHABET_TRANSFORMERS.digit,sre.AlphabetGenerator.Domains_.digit)};
sre.AlphabetGenerator.makeLetter=function(a,b,c,d,e,f,g,h,k,l){for(var m=0,n;n=l[m];m++){var p=n in g?g[n]:g["default"];a.defineRule(c.toString(),n,"default",h,d,b((n in k?k[n]:k["default"])(e),f,p))}};
sre.AlphabetGenerator.INTERVALS=[{interval:["1D400","1D419"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.BOLD},{interval:["1D41A","1D433"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.BOLD},{interval:["1D56C","1D585"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.BOLDFRAKTUR},{interval:["1D586","1D59F"],base:sre.AlphabetGenerator.Base.LATINSMALL,
subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.BOLDFRAKTUR},{interval:["1D468","1D481"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:["1D482","1D49B"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:["1D4D0","1D4E9"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.BOLDSCRIPT},
{interval:["1D4EA","1D503"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.BOLDSCRIPT},{interval:["1D538","1D551"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{"1D53A":"2102","1D53F":"210D","1D545":"2115","1D547":"2119","1D548":"211A","1D549":"211D","1D551":"2124"},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:["1D552","1D56B"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",
font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:["1D504","1D51D"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{"1D506":"212D","1D50B":"210C","1D50C":"2111","1D515":"211C","1D51D":"2128"},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.FRAKTUR},{interval:["1D51E","1D537"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.FRAKTUR},{interval:["FF21","FF3A"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",
font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:["FF41","FF5A"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:["1D434","1D44D"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.ITALIC},{interval:["1D44E","1D467"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{"1D455":"210E"},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.ITALIC},{interval:["1D670",
"1D689"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:["1D68A","1D6A3"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:["0041","005A"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.NORMAL},{interval:["0061","007A"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,
category:"Ll",font:sre.AlphabetGenerator.Font.NORMAL},{interval:["1D49C","1D4B5"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{"1D49D":"212C","1D4A0":"2130","1D4A1":"2131","1D4A3":"210B","1D4A4":"2110","1D4A7":"2112","1D4A8":"2133","1D4AD":"211B"},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.SCRIPT},{interval:["1D4B6","1D4CF"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{"1D4BA":"212F","1D4BC":"210A","1D4C4":"2134"},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SCRIPT},
{interval:["1D5A0","1D5B9"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:["1D5BA","1D5D3"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:["1D608","1D621"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.SANSSERIFITALIC},{interval:["1D622","1D63B"],base:sre.AlphabetGenerator.Base.LATINSMALL,
subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SANSSERIFITALIC},{interval:["1D5D4","1D5ED"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:["1D5EE","1D607"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:["1D63C","1D655"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},
{interval:["1D656","1D66F"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},{interval:["0391","03A9"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{"03A2":"03F4"},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.NORMAL},{interval:["03B0","03D0"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{"03B0":"2207","03CA":"2202","03CB":"03F5","03CC":"03D1","03CD":"03F0","03CE":"03D5","03CF":"03F1","03D0":"03D6"},
capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.NORMAL},{interval:["1D6A8","1D6C0"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.BOLD},{interval:["1D6C1","1D6E1"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.BOLD},{interval:["1D6E2","1D6FA"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.ITALIC},{interval:["1D6FB",
"1D71B"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.ITALIC},{interval:["1D71C","1D734"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:["1D735","1D755"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:["1D756","1D76E"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,
category:"Lu",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:["1D76F","1D78F"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:["1D790","1D7A8"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:"Lu",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},{interval:["1D7A9","1D7C9"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:"Ll",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},
{interval:["0030","0039"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"Nd",font:sre.AlphabetGenerator.Font.NORMAL},{interval:["2070","2079"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2071:"00B9",2072:"00B2",2073:"00B3"},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.SUPER},{interval:["2080","2089"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.SUB},{interval:["245F","2473"],base:sre.AlphabetGenerator.Base.DIGIT,
subst:{"245F":"24EA"},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:["3251","325F"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:21,category:"No",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:["32B1","32BF"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:36,category:"No",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:["2474","2487"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:1,category:"No",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},
{interval:["2487","249B"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2487:"1F100"},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.PERIOD},{interval:["2775","277F"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2775:"24FF"},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED},{interval:["24EB","24F4"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:11,category:"No",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED},{interval:["24F5","24FE"],base:sre.AlphabetGenerator.Base.DIGIT,
subst:{},offset:1,category:"No",font:sre.AlphabetGenerator.Embellish.DOUBLECIRCLED},{interval:["277F","2789"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{"277F":"1F10B"},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.CIRCLEDSANSSERIF},{interval:["2789","2793"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2789:"1F10C"},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLEDSANSSERIF},{interval:["FF10","FF19"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,
category:"Nd",font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:["1D7CE","1D7D7"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"Nd",font:sre.AlphabetGenerator.Font.BOLD},{interval:["1D7D8","1D7E1"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"Nd",font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:["1D7E2","1D7EB"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"Nd",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:["1D7EC","1D7F5"],
base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"Nd",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:["1D7F6","1D7FF"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"Nd",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:["1F101","1F10A"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:"No",font:sre.AlphabetGenerator.Embellish.COMMA},{interval:["24B6","24CF"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"So",
font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:["24D0","24E9"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"So",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:["1F110","1F129"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"So",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},{interval:["249C","24B5"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:"So",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},
{interval:["1F130","1F149"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"So",font:sre.AlphabetGenerator.Embellish.SQUARED},{interval:["1F170","1F189"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"So",font:sre.AlphabetGenerator.Embellish.NEGATIVESQUARED},{interval:["1F150","1F169"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:"So",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED}];sre.MathSimpleStore=function(){sre.MathStore.call(this);this.category=""};goog.inherits(sre.MathSimpleStore,sre.MathStore);sre.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d])this.defineRuleFromStrings(a,d,e,b,c[d][e])};sre.MathSimpleStore.prototype.defineRuleFromStrings=function(a,b,c,d,e){this.defineRule(a,b+"."+c,'[t] "'+e+'"',"self::text()",'"'===d?"self::text() = '"+d+"'":'self::text() = "'+d+'"')};
sre.MathSimpleStore.prototype.lookupRule=function(a,b){a=this.getSpeechRules().filter(function(c){return sre.MathSimpleStore.testDynamicConstraints_(b,c)});return a.length?a.sort(function(c,d){return sre.Engine.getInstance().comparator.compare(c.dynamicCstr,d.dynamicCstr)})[0]:null};sre.MathSimpleStore.testDynamicConstraints_=function(a,b){return sre.Engine.getInstance().strict?b.dynamicCstr.equal(a):sre.Engine.getInstance().comparator.match(b.dynamicCstr)};
sre.MathCompoundStore=function(){this.subStores_={};this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]};goog.addSingletonGetter(sre.MathCompoundStore);sre.MathCompoundStore.prototype.getSubStore_=function(a){var b=this.subStores_[a];if(b)return sre.Debugger.getInstance().output("Store exists! "+a),b;b=new sre.MathSimpleStore;return this.subStores_[a]=b};
sre.MathCompoundStore.prototype.setupStore_=function(a,b){a.locale=this.locale;a.modality=this.modality;b&&(a.category=b)};sre.MathCompoundStore.prototype.defineRules=function(a,b,c,d){var e=this.getSubStore_(b);this.setupStore_(e,c);e.defineRulesFromMappings(a,b,d)};sre.MathCompoundStore.prototype.defineRule=function(a,b,c,d,e,f){var g=this.getSubStore_(e);this.setupStore_(g,d);g.defineRuleFromStrings(a,b,c,e,f)};
sre.MathCompoundStore.prototype.changeLocale_=function(a){if(!a.locale&&!a.modality)return!1;this.locale=a.locale||this.locale;this.modality=a.modality||this.modality;return!0};sre.MathCompoundStore.prototype.addSymbolRules=function(a){if(!this.changeLocale_(a)){var b=sre.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.category,a.mappings)}};
sre.MathCompoundStore.prototype.addFunctionRules=function(a){if(!this.changeLocale_(a)){var b=a.names,c=a.mappings;a=a.category;for(var d=0,e;e=b[d];d++)this.defineRules(e,e,a,c)}};sre.MathCompoundStore.prototype.addUnitRules=function(a){if(!this.changeLocale_(a)){var b=a.names;b&&(a.names=b.map(function(c){return c+":unit"}));this.addFunctionRules(a)}};sre.MathCompoundStore.prototype.lookupRule=function(a,b){return(a=this.subStores_[a])?a.lookupRule(null,b):null};
sre.MathCompoundStore.prototype.lookupCategory=function(a){return(a=this.subStores_[a])?a.category:""};sre.MathCompoundStore.prototype.lookupString=function(a,b){return(a=this.lookupRule(a,b))?a.action.components.map(function(c){return c.content.slice(1,-1)}).join(" "):""};sre.MathCompoundStore.prototype.enumerate=function(a){a=a||{};for(var b in this.subStores_)a=this.subStores_[b].trie.enumerate(a);return a};
sre.MathSimpleStore.parseUnicode_=function(a){a=parseInt(a,16);if(65536>a)return String.fromCharCode(a);a-=65536;return String.fromCharCode((a>>10)+55296,(a&1023)+56320)};sre.MathMap=function(){this.store=sre.MathCompoundStore.getInstance();this.loaded_=[];this.addRules={functions:goog.bind(this.store.addFunctionRules,this.store),symbols:goog.bind(this.store.addSymbolRules,this.store),units:goog.bind(this.store.addUnitRules,this.store)}};goog.addSingletonGetter(sre.MathMap);sre.MathMap.oldInst_=sre.MathMap.getInstance;sre.MathMap.getInstance=function(){var a=sre.MathMap.oldInst_();a.loadLocale();return a};
sre.MathMap.prototype.loadLocale=function(){var a=sre.Engine.getInstance().locale;if(-1===this.loaded_.indexOf(a)){var b=sre.Engine.getInstance().mode===sre.Engine.Mode.ASYNC;b&&(sre.Engine.getInstance().mode=sre.Engine.Mode.SYNC);this.loaded_.push(a);this.retrieveMaps(a);b&&(sre.Engine.getInstance().mode=sre.Engine.Mode.ASYNC)}};sre.MathMap.toFetch_=0;sre.Engine.registerTest(function(){return sre.MathMap.getInstance()&&!sre.MathMap.toFetch_});
sre.MathMap.prototype.retrieveFiles=function(a){a=sre.BaseUtil.makePath(sre.SystemExternal.jsonPath)+a+".js";switch(sre.Engine.getInstance().mode){case sre.Engine.Mode.ASYNC:sre.MathMap.toFetch_++;var b=goog.bind(this.parseMaps,this);sre.MathMap.fromFile_(a,function(c,d){sre.MathMap.toFetch_--;c||b(d)});break;case sre.Engine.Mode.HTTP:sre.MathMap.toFetch_++;this.getJsonAjax_(a);break;default:a=sre.MathMap.loadFile(a),this.parseMaps(a)}};
sre.MathMap.prototype.parseMaps=function(a){a=JSON.parse(a);this.addMaps(a)};sre.MathMap.prototype.addMaps=function(a,b){for(var c=0,d;d=Object.keys(a)[c];c++){var e=d.split("/");b&&b!==e[0]||a[d].forEach(this.addRules[e[1]])}};sre.MathMap.prototype.retrieveMaps=function(a){sre.AlphabetGenerator.generate(a,this.store);sre.Engine.getInstance().isIE&&sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP?this.getJsonIE_(a):this.retrieveFiles(a)};
sre.MathMap.prototype.getJsonIE_=function(a,b){var c=b||1;sre.BrowserUtil.mapsForIE?this.addMaps(sre.BrowserUtil.mapsForIE,a):5>=c&&setTimeout(goog.bind(function(){this.getJsonIE_(a,c++)},this),300)};sre.MathMap.fromFile_=function(a,b){return sre.SystemExternal.fs.readFile(a,"utf8",b)};sre.MathMap.loadFile=function(a){try{return sre.MathMap.readJSON_(a)}catch(b){console.error("Unable to load file: "+a+"\n"+b)}return"{}"};sre.MathMap.readJSON_=function(a){return sre.SystemExternal.fs.readFileSync(a)};
sre.MathMap.prototype.getJsonAjax_=function(a){var b=new XMLHttpRequest,c=goog.bind(this.parseMaps,this);b.onreadystatechange=function(){4===b.readyState&&(sre.MathMap.toFetch_--,200===b.status&&c(b.responseText))};b.open("GET",a,!0);b.send()};sre.StoreUtil={};sre.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e="");return function(){d<c&&(d+=1);return e+" "+d}};sre.StoreUtil.pauseSeparator=function(a,b){a=parseFloat(b);var c=isNaN(a)?b:a;return function(){return[sre.AuditoryDescription.create({text:"",personality:{pause:c}})]}};
sre.StoreUtil.contentIterator=function(a,b){var c=0<a.length?sre.XpathUtil.evalXPath("../../content/*",a[0]):[];return function(){var d=c.shift(),e=b?[sre.AuditoryDescription.create({text:b},{translate:!0})]:[];if(!d)return e;d=sre.SpeechRuleEngine.getInstance().evaluateNode(d);return e.concat(d)}};sre.ClearspeakUtil={};sre.ClearspeakUtil.numbersToAlpha=function(a){return a.match(/\d+/)?sre.Messages.NUMBERS.numberToWords(parseInt(a,10)):a};sre.ClearspeakUtil.nodeCounter=function(a,b){b=b.split("-");var c=sre.StoreUtil.nodeCounter(a,b[0]||""),d=b[1]||"",e=b[2]||"",f=!0;return function(){var g=c();return f?(f=!1,e+g+d):g+d}};
sre.ClearspeakUtil.isSimpleExpression=function(a){return sre.ClearspeakUtil.isSimpleNumber_(a)||sre.ClearspeakUtil.isSimpleLetters_(a)||sre.ClearspeakUtil.isSimpleDegree_(a)||sre.ClearspeakUtil.isSimpleNegative_(a)||sre.ClearspeakUtil.isSimpleFunction_(a)};
sre.ClearspeakUtil.isSimpleFunction_=function(a){return a.type===sre.SemanticAttr.Type.APPL&&(a.childNodes[0].role===sre.SemanticAttr.Role.PREFIXFUNC||a.childNodes[0].role===sre.SemanticAttr.Role.SIMPLEFUNC)&&(sre.ClearspeakUtil.isSimple_(a.childNodes[1])||a.childNodes[1].type===sre.SemanticAttr.Type.FENCED&&sre.ClearspeakUtil.isSimple_(a.childNodes[1].childNodes[0]))};
sre.ClearspeakUtil.isSimpleNegative_=function(a){return a.type===sre.SemanticAttr.Type.PREFIXOP&&a.role===sre.SemanticAttr.Role.NEGATIVE&&sre.ClearspeakUtil.isSimple_(a.childNodes[0])&&a.childNodes[0].type!==sre.SemanticAttr.Type.PREFIXOP&&a.childNodes[0].type!==sre.SemanticAttr.Type.APPL&&a.childNodes[0].type!==sre.SemanticAttr.Type.PUNCTUATED};
sre.ClearspeakUtil.isSimpleDegree_=function(a){return a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.role===sre.SemanticAttr.Role.ENDPUNCT&&2===a.childNodes.length&&a.childNodes[1].role===sre.SemanticAttr.Role.DEGREE&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0])||sre.ClearspeakUtil.isNumber_(a.childNodes[0])||a.childNodes[0].type===sre.SemanticAttr.Type.PREFIXOP&&a.childNodes[0].role===sre.SemanticAttr.Role.NEGATIVE&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0].childNodes[0])||sre.ClearspeakUtil.isNumber_(a.childNodes[0].childNodes[0])))};
sre.ClearspeakUtil.isSimpleLetters_=function(a){return sre.ClearspeakUtil.isLetter_(a)||a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.IMPLICIT&&(2===a.childNodes.length&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0])||sre.ClearspeakUtil.isSimpleNumber_(a.childNodes[0]))&&sre.ClearspeakUtil.isLetter_(a.childNodes[1])||3===a.childNodes.length&&sre.ClearspeakUtil.isSimpleNumber_(a.childNodes[0])&&sre.ClearspeakUtil.isLetter_(a.childNodes[1])&&sre.ClearspeakUtil.isLetter_(a.childNodes[2]))};
sre.ClearspeakUtil.isSimple_=function(a){return a.hasAnnotation("clearspeak","simple")};sre.ClearspeakUtil.isLetter_=function(a){return a.type===sre.SemanticAttr.Type.IDENTIFIER&&(a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER||a.role===sre.SemanticAttr.Role.OTHERLETTER||a.role===sre.SemanticAttr.Role.SIMPLEFUNC)};sre.ClearspeakUtil.isNumber_=function(a){return a.type===sre.SemanticAttr.Type.NUMBER&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.FLOAT)};
sre.ClearspeakUtil.isSimpleNumber_=function(a){return sre.ClearspeakUtil.isNumber_(a)||sre.ClearspeakUtil.isSimpleFraction_(a)};
sre.ClearspeakUtil.isSimpleFraction_=function(a){if(sre.ClearspeakUtil.hasPreference("Fraction_Over")||sre.ClearspeakUtil.hasPreference("Fraction_FracOver")||a.type!==sre.SemanticAttr.Type.FRACTION||a.role!==sre.SemanticAttr.Role.VULGAR)return!1;if(sre.ClearspeakUtil.hasPreference("Fraction_Ordinal"))return!0;var b=parseInt(a.childNodes[0].textContent,10);a=parseInt(a.childNodes[1].textContent,10);return 0<b&&20>b&&0<a&&11>a};
sre.ClearspeakUtil.hasPreference=function(a){return sre.Engine.getInstance().style===a};sre.ClearspeakUtil.simpleExpression=function(){return new sre.SemanticAnnotator("clearspeak",function(a){return sre.ClearspeakUtil.isSimpleExpression(a)?"simple":""})};sre.ClearspeakUtil.simpleNode=function(a){if(!a.hasAttribute("annotation"))return!1;a=a.getAttribute("annotation");return!!/clearspeak:simple$|clearspeak:simple;/.exec(a)};
sre.ClearspeakUtil.simpleCell_=function(a){if(sre.ClearspeakUtil.simpleNode(a))return!0;if(a.tagName!==sre.SemanticAttr.Type.SUBSCRIPT)return!1;a=a.childNodes[0].childNodes;var b=a[1];return a[0].tagName===sre.SemanticAttr.Type.IDENTIFIER&&(sre.ClearspeakUtil.isInteger_(b)||b.tagName===sre.SemanticAttr.Type.INFIXOP&&b.hasAttribute("role")&&b.getAttribute("role")===sre.SemanticAttr.Role.IMPLICIT&&sre.ClearspeakUtil.allIndices_(b))};
sre.ClearspeakUtil.isInteger_=function(a){return a.tagName===sre.SemanticAttr.Type.NUMBER&&a.hasAttribute("role")&&a.getAttribute("role")===sre.SemanticAttr.Role.INTEGER};sre.ClearspeakUtil.allIndices_=function(a){return sre.XpathUtil.evalXPath("children/*",a).every(function(b){return sre.ClearspeakUtil.isInteger_(b)||b.tagName===sre.SemanticAttr.Type.IDENTIFIER})};
sre.ClearspeakUtil.allCellsSimple=function(a){return sre.XpathUtil.evalXPath(a.tagName===sre.SemanticAttr.Type.MATRIX?"children/row/children/cell/children/*":"children/line/children/*",a).every(sre.ClearspeakUtil.simpleCell_)?[a]:[]};sre.ClearspeakUtil.isSmallVulgarFraction=function(a){return sre.NumbersUtil.vulgarFractionSmall(a,20,11)?[a]:[]};
sre.ClearspeakUtil.isUnitExpression=function(a){return a.type===sre.SemanticAttr.Type.TEXT||a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.role===sre.SemanticAttr.Role.TEXT&&sre.ClearspeakUtil.isNumber_(a.childNodes[0])&&sre.ClearspeakUtil.allTextLastContent_(a.childNodes.slice(1))||a.type===sre.SemanticAttr.Type.IDENTIFIER&&a.role===sre.SemanticAttr.Role.UNIT||a.type===sre.SemanticAttr.Type.INFIXOP&&(a.role===sre.SemanticAttr.Role.IMPLICIT||a.role===sre.SemanticAttr.Role.UNIT)};
sre.ClearspeakUtil.allTextLastContent_=function(a){for(var b=0;b<a.length-1;b++)if(a[b].type!==sre.SemanticAttr.Type.TEXT||""!==a[b].textContent)return!1;return a[a.length-1].type===sre.SemanticAttr.Type.TEXT};sre.ClearspeakUtil.unitExpression=function(){return new sre.SemanticAnnotator("clearspeak",function(a){return sre.ClearspeakUtil.isUnitExpression(a)?"unit":""})};
sre.ClearspeakUtil.ordinalExponent=function(a){var b=parseInt(a.textContent,10);return isNaN(b)?a.textContent:10<b?sre.Messages.NUMBERS.simpleOrdinal(b):sre.Messages.NUMBERS.wordOrdinal(b)};sre.ClearspeakUtil.isCapitalLetter=function(a){return"Lu"===sre.MathCompoundStore.getInstance().lookupCategory(a.textContent)?[a]:[]};sre.ClearspeakUtil.NESTING_DEPTH=null;
sre.ClearspeakUtil.nestingDepth=function(a){var b=0,c=a.textContent,d="open"===a.getAttribute("role")?0:1;for(a=a.parentNode;a;)a.tagName===sre.SemanticAttr.Type.FENCED&&a.childNodes[0].childNodes[d].textContent===c&&b++,a=a.parentNode;sre.ClearspeakUtil.NESTING_DEPTH=1<b?sre.Messages.NUMBERS.wordOrdinal(b):"";return sre.ClearspeakUtil.NESTING_DEPTH};
sre.ClearspeakUtil.matchingFences=function(a){var b=a.previousSibling;if(b)var c=a;else b=a,c=a.nextSibling;return c?sre.SemanticAttr.isMatchingFence(b.textContent,c.textContent)?[a]:[]:[]};sre.ClearspeakUtil.insertNesting=function(a,b){if(!b||!a)return a;var c=a.match(/^(open|close) /);return c?c[0]+b+" "+a.substring(c[0].length):b+" "+a};sre.Grammar.getInstance().setCorrection("insertNesting",sre.ClearspeakUtil.insertNesting);
sre.ClearspeakUtil.fencedArguments=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes),c=sre.XpathUtil.evalXPath("../../children/*",a);b=b.indexOf(a);return sre.ClearspeakUtil.fencedFactor_(c[b])||sre.ClearspeakUtil.fencedFactor_(c[b+1])?[a]:[]};
sre.ClearspeakUtil.simpleArguments=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes),c=sre.XpathUtil.evalXPath("../../children/*",a);b=b.indexOf(a);return sre.ClearspeakUtil.simpleFactor_(c[b])&&c[b+1]&&(sre.ClearspeakUtil.simpleFactor_(c[b+1])||c[b+1].tagName===sre.SemanticAttr.Type.ROOT||c[b+1].tagName===sre.SemanticAttr.Type.SQRT||c[b+1].tagName===sre.SemanticAttr.Type.SUPERSCRIPT&&c[b+1].childNodes[0].childNodes[0]&&(c[b+1].childNodes[0].childNodes[0].tagName===sre.SemanticAttr.Type.NUMBER||
c[b+1].childNodes[0].childNodes[0].tagName===sre.SemanticAttr.Type.IDENTIFIER)&&("2"===c[b+1].childNodes[0].childNodes[1].textContent||"3"===c[b+1].childNodes[0].childNodes[1].textContent))?[a]:[]};sre.ClearspeakUtil.simpleFactor_=function(a){return!!a&&(a.tagName===sre.SemanticAttr.Type.NUMBER||a.tagName===sre.SemanticAttr.Type.IDENTIFIER||a.tagName===sre.SemanticAttr.Type.FUNCTION||a.tagName===sre.SemanticAttr.Type.APPL||a.tagName===sre.SemanticAttr.Type.FRACTION)};
sre.ClearspeakUtil.fencedFactor_=function(a){return a&&(a.tagName===sre.SemanticAttr.Type.FENCED||a.hasAttribute("role")&&a.getAttribute("role")===sre.SemanticAttr.Role.LEFTRIGHT||sre.ClearspeakUtil.layoutFactor_(a))};sre.ClearspeakUtil.layoutFactor_=function(a){return!!a&&(a.tagName===sre.SemanticAttr.Type.MATRIX||a.tagName===sre.SemanticAttr.Type.VECTOR)};
sre.ClearspeakUtil.isHyperbolic=function(a){if(a.tagName===sre.SemanticAttr.Type.APPL){var b=sre.XpathUtil.evalXPath("children/*[1]",a)[0];if(b&&b.tagName===sre.SemanticAttr.Type.FUNCTION&&"Hyperbolic"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent))return[a]}return[]};
sre.ClearspeakUtil.isLogarithmWithBase=function(a){if(a.tagName===sre.SemanticAttr.Type.SUBSCRIPT){var b=sre.XpathUtil.evalXPath("children/*[1]",a)[0];if(b&&b.tagName===sre.SemanticAttr.Type.FUNCTION&&"Logarithm"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent))return[a]}return[]};sre.ClearspeakUtil.wordOrdinal=function(a){return sre.Messages.NUMBERS.wordOrdinal(parseInt(a.textContent,10))};
sre.ClearspeakUtil.firstCurrency=function(a){var b=sre.XpathUtil.evalXPath("children/*[1]",a)[0];return b&&"currency"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent+":unit")?[a]:[]};sre.ClearspeakUtil.lastCurrency=function(a){var b=sre.XpathUtil.evalXPath("children/*[last()]",a)[0];return b&&"currency"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent+":unit")?[a]:[]};
sre.ClearspeakUtil.addAnnotators=function(){sre.SemanticAnnotations.getInstance().register(sre.ClearspeakUtil.simpleExpression());sre.SemanticAnnotations.getInstance().register(sre.ClearspeakUtil.unitExpression())};sre.ClearspeakFrench={locale:"fr",domain:"clearspeak",functions:[["CTXF","CTXFpauseSeparator",sre.StoreUtil.pauseSeparator],["CTXF","CTXFnodeCounter",sre.ClearspeakUtil.nodeCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CSF","CSFvulgarFraction",sre.NumbersUtil.vulgarFraction],["CQF","CQFvulgarFractionSmall",sre.ClearspeakUtil.isSmallVulgarFraction],["CQF","CQFcellsSimple",sre.ClearspeakUtil.allCellsSimple],["CSF","CSFordinalExponent",sre.ClearspeakUtil.ordinalExponent],["CSF",
"CSFwordOrdinal",sre.Messages.NUMBERS.wordOrdinal],["CQF","CQFisCapital",sre.ClearspeakUtil.isCapitalLetter],["CQF","CQFmatchingFences",sre.ClearspeakUtil.matchingFences],["CSF","CSFnestingDepth",sre.ClearspeakUtil.nestingDepth],["CQF","CQFfencedArguments",sre.ClearspeakUtil.fencedArguments],["CQF","CQFsimpleArguments",sre.ClearspeakUtil.simpleArguments],["CQF","CQFisHyperbolic",sre.ClearspeakUtil.isHyperbolic],["CQF","CQFisLogarithm",sre.ClearspeakUtil.isLogarithmWithBase],["CQF","CQFspaceoutNumber",
sre.MathspeakUtil.spaceoutNumber]],rules:['Rule{collapsed{default{[t] "compress\u00e9e"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),["Rule","stree","default","[n] ./*[1]","self::stree"],["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::number;contains(@grammar, "protected")'.split(";"),["Rule","omit-empty","default",'[p] (pause:"short")',
"self::empty"],'Rule{font{default{[n] . (grammar:ignoreFont=@font);  [t] @font (grammar:localFont,pause:"short"){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier{default{[n] . (grammar:ignoreFont=@font);  [t] @font (grammar:localFont,pause:"short"){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),
["Rule","text","default","[n] text()","self::text"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps="majuscule");self::identifier;@role="latinletter" or @role="greekletter" or @role="simple function";CQFisCapital'.split(";"),'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role="latinletter" or @role="greekletter";CQFisCapital'.split(";"),'Rule{capital{Caps_SayCaps{[p] (pause:"short"); [n] text(){self::identifier{@role="latinletter" or @role="greekletter"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])="function"){not(contains(@grammar, "angle"))'.split("{"),
'Rule;capital;Caps_SayCaps;[n] text() (pause:"short");self::identifier;@role="latinletter" or @role="greekletter";CQFisCapital;following-sibling::*[1]'.split(";"),'Rule{capital{Caps_SayCaps{[p] (pause:"short"); [n] text() (pause:"short"){self::identifier{@role="latinletter" or @role="greekletter"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])="function"){not(contains(@grammar, "angle"))'.split("{"),'Rule,punctuation-lr,default,[p] (pause:"short"); [n] text() (pause:"short"),self::punctuation,@role="comma"'.split(","),
'Rule;punctuation;default;[n] text();self::punctuation;@role="comma";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(";"),'Rule,punctuation-l,default,[p] (pause:"short"); [n] text(),self::punctuation,@role="comma",not(following-sibling::*[1]/children)'.split(","),'Rule;punctuation-r;default;[n] text() (pause:"short");self::punctuation;@role="comma";not(preceding-sibling::*[1]/children)'.split(";"),'Rule;ellipsis;Ellipses_AndSoOn;[t] "et ainsi de suite";self::punctuation;@role="ellipsis";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role="ellipsis"])'.split(";"),
'Rule;ellipsis;Ellipses_AndSoOn;[t] "et ainsi de suite jusqu\'\u00e0";self::punctuation;@role="ellipsis";preceding-sibling::*[1];following-sibling::*[1]'.split(";"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:"short"); [t] "\u00e9valu\u00e9 \u00e0"; [n] content/*[1]/children/*[2]; [p] (pause:"short"),self::punctuated,@role="endpunct",content/*[1][@role="vbar"],content/*[1][@embellished],name(content/*[1])="subscript"'.split(","),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:"short"); [t] "\u00e9valu\u00e9 \u00e0"; [n] content/*[1]/children/*[2]; [p] (pause:"short"); [t] "moins la m\u00eame expression \u00e9valu\u00e9e \u00e0"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:"short"),self::punctuated,@role="endpunct",content/*[1][@role="vbar"],content/*[1][@embellished],name(content/*[1])="superscript",name(content/*[1]/children/*[1])="subscript"'.split(","),
'Rule;vbar-such-that;VerticalLine_SuchThat;[t] "tel que";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;vbar-such-that;VerticalLine_Divides;[t] "diviseur de";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;vbar-such-that;VerticalLine_Given;[t] "sachant";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;set-member;default;[t] "est un";self::operator;@role="set extended";text()="\u2208" or text()="\u220a"'.split(";"),
["SpecializedRule","set-member","default","SetMemberSymbol_Member",'[t] "appartient \u00e0"'],["SpecializedRule","set-member","default","SetMemberSymbol_Element",'[t] "est un \u00e9l\u00e9ment de"'],["SpecializedRule","set-member","default","SetMemberSymbol_Belongs",'[t] "est dans"'],'Rule;set-not-member;default;[t] "n\'est pas un";self::operator;@role="set extended";text()="\u2209"'.split(";"),["SpecializedRule","set-not-member","default","SetMemberSymbol_Member",'[t] "n\'appartient pas \u00e0"'],
["SpecializedRule","set-not-member","default","SetMemberSymbol_Element",'[t] "n\'est pas un \u00e9l\u00e9ment de"'],["SpecializedRule","set-not-member","default","SetMemberSymbol_Belongs",'[t] "n\'est pas dans"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"],self::*'.split(","),'Rule,feet,default,[n] children/*[1]; [t] "feet",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2032"],not(preceding-sibling::*[@role="degree"])'.split(","),
'Rule,foot,default,[n] children/*[1]; [t] "foot",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2032"],children/*[1][text()="1"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,inches,default,[n] children/*[1]; [t] "inches",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2033"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,inch,default,[n] children/*[1]; [t] "inch",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2033"],children/*[1][text()="1"],not(preceding-sibling::*[@role="degree"])'.split(","),
'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] "minutes",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2032"]'.split(","),'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] "minute",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] "seconds",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2033"]'.split(","),
'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] "second",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] "degrees"; [p] (pause:short),self::punctuation,@role="degree"'.split(","),'Rule,degree-angle,Prime_Angle,[n] children/*[1]; [t] "degree"; [p] (pause:short),self::punctuation,@role="degree",children/*[1][text()="1"]'.split(","),
'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] "minutes"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2032"]'.split("{"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] "minute"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),
'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] "seconds"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2033"]'.split("{"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] "second"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),
'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] "feet"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2032"]'.split("{"),'Rule,foot-length,Prime_Length,[n] children/*[1]; [t] "foot"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),
'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] "inches"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2033"]'.split("{"),'Rule,inch-length,Prime_Length,[n] children/*[1]; [t] "inch"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),
["Rule","punctuated","default","[m] children/*","self::punctuated"],["Rule","function","default","[n] text()","self::function"],["Rule","appl","default",'[n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:"short")',"self::appl"],'Rule,appl-simple,default,[n] children/*[1]; [t] "de"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="simple function",name(children/*[2])="appl"'.split(","),'Rule,appl-simple,default,[n] children/*[1]; [t] "de"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="simple function",name(children/*[2])="fenced",name(children/*[2]/children/*[1])="appl"'.split(","),
["Rule","appl","Functions_None",'[p] (pause:"short"); [n] children/*[1]; [t] "fois"; [n] children/*[2]; [p] (pause:"short")',"self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role="prefix function"'.split(","),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:"short"){self::appl{@role="prefix function"{parent::*/parent::infixop[@role="implicit"]{following-sibling::*{not(contains(@grammar, "impliedTimes"))'.split("{"),
'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role="prefix function"{name(children/*[2])="fenced"{contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){name(children/*[2]/children/*[1])!="number"{name(children/*[2]/children/*[1])!="identifier"{name(children/*[2]/children/*[1])!="appl"'.split("{"),'Rule,function-prefix-embell,default,[p] (pause:"short"); [n] children/*[1]; [n] children/*[2]; [p] (pause:"short"); ,self::appl,@role="prefix function",name(children/*[1])!="function"'.split(","),
'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:"short"); [n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or name(children/*[2])="fraction" or (name(children/*[2])!="fenced" and not(contains(children/*[2]/@annotation, "clearspeak:simple"))){self::*'.split("{"),'Rule,function-prefix-subscript,default,[p] (pause:"short"); [n] children/*[1]; [t] "de"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",name(children/*[1])="subscript",self::*'.split(","),
'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(following-sibling::*){not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-ln{default{[n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{name(children/*[2])="fenced"{not(contains(@grammar, "NatLog"))'.split("{"),
'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role="prefix function";content/*[2][text()="ln"];not(following-sibling::*);not(contains(@grammar, "NatLog"))'.split(";"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] "de"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(parent::*/parent::*)="superscript"{not(following-sibling::*){(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or name(children/*[2])="fraction" or (name(children/*[2])!="fenced" and not(contains(children/*[2]/@annotation, "clearspeak:simple")))'.split("{"),
'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] "de"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",name(parent::*/parent::*)="superscript",not(following-sibling::*),name(children/*[1])="subscript"'.split(","),'Rule,function-prefix-hyper,default,[p] (pause:"short"); [n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",CQFisHyperbolic'.split(","),'Rule{function-prefix-inverse{default{[p] (pause:"short");  [n] children/*[1]/children/*[1]; [t] "inverse de"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),
'Rule{function-prefix-inverse{Trig_Reciprocal{[p] (pause:"short"); [t] "la reciproque de"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule{function-prefix-inverse{Trig_Reciprocal{[p] (pause:"short"); [t] "la reciproque de"; [n] children/*[1]/children/*[1];[n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{contains(children/*[2]/@annotation, "clearspeak:simple"){children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),
'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:"short"); [n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",name(children/*[1])="superscript",name(children/*[1]/children/*[2])="prefixop",children/*[1]/children/*[2][@role="negative"],children/*[1]/children/*[2]/children/*[1][text()="1"]'.split(","),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:"short"); [t] "arc"; [n] children/*[1]/children/*[1]; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),
'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:"short"); [t] "arc"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{name(children/*[2])="fenced"{children/*[2]/children/*[1][@role="prefix function"]{contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){not(contains(@grammar, "functions_none"))'.split("{"),
'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:"short"); [t] "arc"; [n] children/*[1]/children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none")){(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or (name(children/*[2])="fraction" and children/*[2][@role!="vulgar"])'.split("{"),
'Rule{function-inverse{default{[n] children/*[1]; [t] "inverse"{self::superscript{@role="prefix function" or @role="simple function"{name(children/*[2])="prefixop"{children/*[2][@role="negative"]{children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule{function-inverse{Functions_Reciprocal{[t] "la reciproque de"; [n] children/*[1]{self::superscript{@role="prefix function" or @role="simple function"{name(children/*[2])="prefixop"{children/*[2][@role="negative"]{children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),
'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role="prefix function" or @role="simple function";name(children/*[2])="prefixop";children/*[2][@role="negative"];children/*[2]/children/*[1][text()="1"];not(contains(@grammar, "functions_none"))'.split(";"),["Rule","superscript","default",'[n] children/*[1]; [t] "\u00e0 l\'exposant" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "fin exposant" (pause:"short")',"self::superscript"],'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] "\u00e0 la puissance"; [n] children/*[2]; [p] (pause:"medium"),self::superscript,not(descendant::superscript)'.split(","),
'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] "\u00e0 la puissance"; [n] children/*[2]; [p] (pause:"medium") ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(","),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="number";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),
'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="fraction";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),["Aliases","superscript-simple-exponent","self::superscript",'children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"]','name(children/superscript/children/*[1])="identifier"'],
'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role="implicit"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, "simple");name(children/*[2]/children/*[2])="superscript";(name(children/*[2]/children/*[2]/children/*[1])="number" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple")) or name(children/*[2]/children/*[2]/children/*[1])="identifier";children/*[2]/children/*[2]/children/*[2][text()="2"] or children/*[2]/children/*[2]/children/*[2][text()="3"]'.split(";"),
'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])="identifier";children/*[1][@role="simple function"];not(contains(@grammar, "functions_none"))'.split(";"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] "\u00e0 la"; [n] children/*[2] (grammar:ordinal); [t] "puissance" (pause:"medium"),self::superscript,name(children/*[2])="identifier",children/*[2][@role="latinletter"]'.split(","),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] "\u00e0 la puissance"; [n] children/*[2]; [p] (pause:"medium"),self::superscript,name(children/*[2])="identifier",children/*[2][@role="latinletter"],CQFisCaptial'.split(","),
'Rule{exponent{default{[n] text() (join:"-"); [t] "i\u00e8me"{self::identifier{contains(@grammar, "ordinal")'.split("{"),'Rule;exponent;default;[t] CSFordinalExponent;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),'Rule;exponent;Exponent_Ordinal;[t] CSFwordOrdinal;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),'Rule;exponent;Exponent_Ordinal;[t] "zero";self::number;@role="integer";contains(@grammar, "ordinal");text()="0"'.split(";"),
'Rule;exponent;Exponent_OrdinalPower;[t] CSFwordOrdinal;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),'Rule;exponent;Exponent_OrdinalPower;[t] "zero";self::number;@role="integer";contains(@grammar, "ordinal");text()="0"'.split(";"),'Rule,square,default,[n] children/*[1]; [t] "au carr\u00e9",self::superscript,children/*[2][text()="2"],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),self::*,self::*'.split(","),
'Rule,cube,default,[n] children/*[1]; [t] "au cube",self::superscript,children/*[2][text()="3"],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),self::*,self::*'.split(","),'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role="leftright";contains(children/*[1]/@annotation, "clearspeak:simple");name(../..)!="superscript" and name(../..)!="subscript"'.split(";"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role="leftright";name(../..)="superscript";children/*[1][@role="integer"] or children/*[1][@role="float"] or (children/*[1][@role="vulgar"] and contains(children/*[1]/@annotation, "clearspeak:simple")) or children/*[1][@role="latinletter"] or children/*[1][@role="greekletter"] or children/*[1][@role="otherletter"]'.split(";"),
'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role="leftright";name(../*[1])="identifier" or name(../*[1])="function";parent::*/parent::*[@role="simple function" or @role="prefix function"];children/*[1][@role="simple function" or @role="prefix function"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple") or name(children/*[1]/children/*[2]/children/*[1])="subscript" or name(children/*[1]/children/*[2]/children/*[1])="superscript" or children/*[1]/children/*[2]/children/*[1][@role="vulgar"] '.split(";"),
'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{children/*[1][@role="simple function" or @role="prefix function"]{name(children/*[1]/children/*[1])="identifier" or name(children/*[1]/children/*[1])="function"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){name(children/*[1]/children/*[2]/children/*[1])="identifier" or name(children/*[1]/children/*[2]/children/*[1])="number"'.split("{"),
'Rule,fences-open-close,default,[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"),self::fenced,@role="leftright"'.split(","),'Rule{paren-simple-nested-func{default{[p] (pause:"short"); [n] content/*[1]; [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2]; [p] (pause:"short"){self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{not(contains(children/*[1]/@annotation, "clearspeak:simple"))'.split("{"),
'Rule{paren-simple-nested-func{Functions_None{[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"){self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{children/*[1][@role="simple function" or @role="prefix function"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple") or name(children/*[1]/children/*[2]/children/*[1])="subscript" or name(children/*[1]/children/*[2]/children/*[1])="superscript" or children/*[1]/children/*[2]/children/*[1][@role="vulgar"] '.split("{"),
["SpecializedRule","fences-open-close","default","Paren_Speak"],["Aliases","fences-open-close","self::fenced",'@role="composed function"'],["Rule","fence-silent","Paren_Silent",'[p] (pause:"short"); [n] children/*[1]; [p] (pause:"short")',"self::fenced"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"),self::fenced,@role="leftright",parent::*/parent::*[@role!="simple function"],parent::*/parent::*[@role!="prefix function"]'.split(","),
'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, "spokenFence");CQFmatchingFences'.split(";"),["Rule","fence-no-nesting","Paren_SpeakNestingLevel","[n] text()","self::fence"],'Rule,fences-points,Paren_CoordPoint,[t] "le point avec coordon\u00e9es"; [n] children/*[1],self::fenced,name(children/*[1])="punctuated",children/*[1][@role="sequence"]'.split(","),'Rule{fences-interval{Paren_Interval{[t] "un intervalle de"; [n] children/*[1]/children/*[1]; [t] "\u00e0"; [n] children/*[1]/children/*[3]; [p] (pause:"short"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, "interval")){name(children/*[1])="punctuated"{children/*[1][@role="sequence"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role="comma"]'.split("{"),
'Rule{interval-open{Paren_Interval{[t] "sans inclure"; [n] children/*[1]/children/*[1]; [t] "ni"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"'.split("{"),'Rule{interval-closed-open{Paren_Interval{[t] "avec"; [n] children/*[1]/children/*[1]; [t] "inclus"; [p] (pause:"short"); [t] "mais sans inclure"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()=")"'.split("{"),
'Rule{interval-open-closed{Paren_Interval{[t] "sans inclure"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [t] "mais avec"; [n] children/*[1]/children/*[3]; [t] "inclus"{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()="]"'.split("{"),'Rule{interval-closed{Paren_Interval{[t] "avec"; [n] children/*[1]/children/*[1]; [t] "et"; [n] children/*[1]/children/*[3]; [t] "inclus"{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()="]"'.split("{"),
'Rule{interval-open-inf-r{Paren_Interval{[t] "sans inclure"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"{children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e")'.split("{"),'Rule{interval-open-inf-l{Paren_Interval{[t] "sans inclure"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"{children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split("{"),
'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, "interval");content/*[1]/text()="(";content/*[2]/text()=")";children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e");children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split(";"),'Rule{interval-closed-open-inf{Paren_Interval{[t] "avec"; [n] children/*[1]/children/*[1]; [t] "inclus"{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()=")"{children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e")'.split("{"),
'Rule{interval-open-closed-inf{Paren_Interval{[t] "avec"; [n] children/*[1]/children/*[3]; [t] "inclus"{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()="]"{children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split("{"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:"short"); [n] content/*[1]; [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2]; [p] (pause:"short"),self::fenced,@role="leftright",name(../..)="appl",name(children/*[1]) = "appl",preceding-sibling::*/descendant-or-self::*[@role="subsup"] or children/*[1]/descendant-or-self::*[@role="subsup"]'.split(","),
'Rule;set-empty;default;[t] "ensemble vide";self::fenced;@role="set empty"'.split(";"),'Rule,set-extended,default,[t] "ensemble des"; [n] children/*[1]/children/*[1]; [t] "tel que"; [n] children/*[1]/children/*[3],self::fenced,@role="set extended"'.split(","),'Rule,set-collection,default,[t] "ensemble"; [n] children/*[1],self::fenced,@role="set collection"'.split(","),["Aliases","set-collection","self::fenced",'@role="set singleton"'],'Rule,set-extended,Sets_woAll,[t] "ensemble de"; [n] children/*[1]/children/*[1]; [t] "tel que"; [n] children/*[1]/children/*[3],self::fenced,@role="set extended"'.split(","),
'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role="set collection"'.split(";"),["Rule","subscript","default",'[p] (pause:short); [n] children/*[1]; [t] "sub"; [n] children/*[2]; [p] (pause:short)',"self::subscript"],'Rule,subscript-base,default,[n] children/*[1]; [t] "base"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(","),'Rule{subscript-index{default{[n] children/*[1]; [t] "sub"; [n] children/*[2]{self::subscript{contains(@grammar, "simpleDet")'.split("{"),
["Rule","fraction","default",'[p] (pause:short); [t] "fraction avec num\u00e9rateur"; [n] children/*[1]; [p] (pause:short); [t] "et d\u00e9nominateur"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],'Rule,fraction,Functions_None,[p] (pause:short); [t] "fraction avec num\u00e9rateur"; [n] children/*[1]; [p] (pause:short); [t] "et d\u00e9nominateur"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="appl" or name(children/*[2])="appl"'.split(","),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, "clearspeak:simple") or contains(children/*[1]/@annotation, "clearspeak:unit"){contains(children/*[2]/@annotation, "clearspeak:simple") or contains(children/*[2]/@annotation, "clearspeak:unit")'.split("{"),
'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short),self::fraction,@role="vulgar"'.split(","),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="text",name(children/*[2])="text"'.split(","),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="infixop",children/*[1][@role="unit"],name(children/*[2])="text"'.split(","),
'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["Rule","fraction","Fraction_Over",'[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_OverEndFrac",'[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short); [t] "fin fraction"; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_FracOver",'[p] (pause:short); [t] "fraction"; [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short)',
"self::fraction"],["Rule","fraction","Fraction_Per",'[p] (pause:short); [n] children/*[1]; [t] "par"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_GeneralEndFrac",'[p] (pause:short); [t] "fraction avec num\u00e9rateur"; [n] children/*[1]; [p] (pause:short); [t] "et d\u00e9nominateur"; [n] children/*[2]; [p] (pause:short); [t] "fin fraction"; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_General",'[p] (pause:short); [t] "fraction avec num\u00e9rateur"; [n] children/*[1]; [p] (pause:short); [t] "et d\u00e9nominateur"; [n] children/*[2]; [p] (pause:short)',
"self::fraction"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction;self::fraction;@role="vulgar"'.split(";"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] "fin fraction"; [p] (pause:short){self::fraction{not(contains(@grammar, "endfrac")){not(contains(children/*[1]/@annotation, "clearspeak:unit")){not(contains(children/*[2]/@annotation, "clearspeak:unit"))'.split("{"),'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])="fraction"{name(children/*[2])="fraction"{contains(children/*[1]/@annotation, "clearspeak:simple"){contains(children/*[2]/@annotation, "clearspeak:simple")'.split("{"),
'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction;self::fraction;@role="vulgar";contains(@annotation, "clearspeak:simple");self::*'.split(";"),["Rule","sqrt","default",'[t] "la racine carr\u00e9e de"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',"self::sqrt"],'Rule,sqrt-nested,default,[p] (pause: "short"); [t] "la racine carr\u00e9e de"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),
'Rule,negative-sqrt,default,[t] "la racine carr\u00e9e n\u00e9gative de"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role="negative",name(children/*[1])="sqrt"'.split(","),'Rule,negative-sqrt,default,[p] (pause: "short"); [t] "la racine carr\u00e9e n\u00e9gative de"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role="negative",name(children/*[1])="sqrt",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),
'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] "la racine carr\u00e9e positive de"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: "short"); [t] "la racine carr\u00e9e positive de"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),
'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] "la racine carr\u00e9e positive de"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: "short"); [t] "la racine carr\u00e9e positive de"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),
'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "fin racine"; [p] (pause:short){self::sqrt{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "fin racine"; [p] (pause:short){self::prefixop{@role="negative"{name(children/*[1])="sqrt"{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "fin racine"; [p] (pause:short){self::sqrt{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "fin racine"; [p] (pause:short){self::prefixop{@role="negative"{name(children/*[1])="sqrt"{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule,cube,default,[t] "la racine cubique de"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()="3"]'.split(","),'Rule,cube-nested,default,[p] (pause:short); [t] "la racine cubique de"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()="3"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),
["Rule","root","default",'[t] "la"; [n] children/*[1] (grammar:ordinal); [t] "racine de"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',"self::root"],'Rule,root-nested,default,[p] (pause:short); [t] "la"; [n] children/*[1] (grammar:ordinal); [t] "racine de"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "fin racine"; [p] (pause:short){self::root{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "fin racine"; [p] (pause:short){self::root{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule,negative,default,[t] "n\u00e9gatif"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),'Rule,positive,default,[t] "positif"; [n] children/*[1],self::prefixop,@role="positive"'.split(","),'Rule,angle-measure,default,[t] "la mesure de l\'" (join:""); [n] content/*[1]; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()="\u2220",children/*[1][text()="m"]'.split(","),
["Rule","prefix","default","[m] content/* (grammar:prefix); [n] children/*[1]","self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [m] content/* (grammar:postfix)","self::postfixop"],'Rule{set-prefix-operators{default{[t] "le"; [n] self::* (grammar:!prefix); [t] "de"{self::*{contains(@grammar,"prefix"){descendant-or-self::*/text()="\u2229" or descendant-or-self::*/text()="\u222a"{self::*{self::*{self::*'.split("{"),["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);",
"self::infixop"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role="implicit"'.split(","),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role="implicit",name(children/*[1])="appl"'.split(","),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role="implicit",name(children/*[last()])="appl"'.split(","),
'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role="implicit",name(children/*[1])="appl",name(children/*[last()])="appl"'.split(","),'Rule;implicit-times;default;[p] (pause:short);self::operator;@role="multiplication";text()="\u2062"'.split(";"),'Rule implicit-times default  self::operator @role="multiplication" text()="\u2062" CQFsimpleArguments'.split(" "),'Rule;implicit-times;default;[n] text();self::operator;@role="multiplication";text()="\u2062";CQFfencedArguments'.split(";"),
'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role="multiplication";text()="\u2062"'.split(";"),'Rule implicit-times ImpliedTimes_None  self::operator @role="multiplication" text()="\u2062"'.split(" "),'Rule{binary-operation-simple{default{[m] children/* (rate:"0.5"); [p] (pause:short){self::infixop{@role="implicit"{contains(@annotation, "clearspeak:simple"){not(contains(@grammar, "inFrac"))'.split("{"),'Rule;simple-in-fraction;default;[n] . (rate:"0.5",grammar:inFrac);self::*;contains(@annotation, "clearspeak:simple");not(contains(@grammar, "inFrac"));name(.)!="identifier";name(.)!="function";name(.)!="number";name(parent::*/parent::*)="fraction";not(preceding-sibling::*)'.split(";"),
'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:"0.5");self::infixop;@role="implicit";contains(@grammar, "afterPower")'.split(";"),["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],'Rule;natural-numbers;default;[t] "les nombres entier naturel";self::identifier;text()="\u2115" or (text()="N" and @font="double-struck");self::*;self::*;self::*'.split(";"),
'Rule;integers;default;[t] "les nombres entiers";self::identifier;text()="\u2124" or (text()="Z" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule;rational-numbers;default;[t] "les Nombres rationnels";self::identifier;text()="\u211a" or (text()="Q" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule;real-numbers;default;[t] "les nombres r\u00e9els";self::identifier;text()="\u211d" or (text()="R" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule;complex-numbers;default;[t] "les nombres complexes";self::identifier;text()="\u2102" or (text()="C" and @font="double-struck");self::*;self::*;self::*'.split(";"),
'Rule,natural-numbers-super,default,[t] "n" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2115" or (children/*[1]/text()="N" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule,integers-super,default,[t] "z" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule,rational-numbers-super,default,[t] "q" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck"),self::*,self::*,self::*'.split(","),
'Rule,real-numbers-super,default,[t] "r" (join:"-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u211d" or (children/*[1]/text()="R" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule,complex-numbers-super,default,[t] "c" (join:"-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2102" or (children/*[1]/text()="C" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule;natural-numbers-with-zero;default;[t] "les nombres entiers naturel avec zero";self::subscript;children/*[1]/text()="\u2115" or (children/*[1]/text()="N" and @font="double-struck");children/*[2]/text()="0"'.split(";"),
'Rule;positive-integers;default;[t] "les nombres entiers positif";self::superscript;children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck");children/*[2]/text()="+";self::*;self::*;self::*'.split(";"),'Rule;positive-integers;default;[t] "les nombres entiers n\u00e9gatif";self::superscript;children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck");children/*[2]/text()="-";self::*;self::*;self::*'.split(";"),'Rule;positive-rational-numbers;default;[t] "les nombres rationnels positif";self::superscript;children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck");children/*[2]/text()="+";self::*;self::*;self::*'.split(";"),
'Rule;negative-rational-numbers;default;[t] "les nombres rationnels n\u00e9gatif";self::superscript;children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck");children/*[2]/text()="-";self::*;self::*;self::*'.split(";"),'Rule,fences-neutral,default,[p] (pause:short); [t] "la valeur absolue de"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] "la valeur absolue de"; [n] children/*[1]; [p] (pause: short); [t] "fin de valeur absolue"; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] "la cardinalit\u00e9 de"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] "le d\u00e9terminant de"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["Rule","matrix","default",'[t] "la matrice de dimension"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:"); [p] (pause:long)',"self::matrix"],'Rule{matrix-simple{default{[t] "la matrice de dimension"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*);  [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
'Rule,matrix-trivial,default,[t] "la matrice de dimension 1 par 1 avec \u00e9l\u00e9ment"; [n] children/*[1]; [p] (pause:long),self::vector,@role="squarematrix"'.split(","),'Rule{determinant{default{[t] "le d\u00e9terminant de la matrice de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="determinant"{count(children/*)<4{CQFcellsSimple'.split("{"),
'Rule{determinant-simple{default{[t] "le d\u00e9terminant de la matrice de dimension"; [t] count(children/*);  [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:"); [p] (pause:long){self::matrix{@role="determinant"'.split("{"),["Rule","matrix-vector","default",'[t] "la matrice colonne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:",grammar:simpleDet); [p] (pause:long)',
"self::vector"],["SpecializedRule","matrix-vector","default","Matrix_SpeakColNum"],'Rule{matrix-vector-simple{default{[t] "la matrice colonne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!="squarematrix"'.split("{"),["Rule","matrix-vector-simple","Matrix_SilentColNum",'[t] "la matrice colonne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long)',
"self::vector"],'Rule{matrix-row-vector{default{[t] "la matrice ligne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:"colonne-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),["SpecializedRule","matrix-row-vector","default","Matrix_SpeakColNum"],'Rule{matrix-row-vector-simple{default{[t] "la matrice ligne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] "la matrice ligne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short");self::row;contains(@grammar, "simpleDet")'.split(";"),["Rule","matrix-row-simple",
"Matrix_SilentColNum",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short")',"self::row"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, "simpleDet")'.split(";"),["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"colonne-,- ",sepFunc:CTXFpauseSeparator,separator:"medium"); [p] (pause:long)',"self::row"],["SpecializedRule","matrix-row","default","Matrix_SpeakColNum"],["Rule","matrix-cell","default","[n] children/*[1]","self::cell"],
'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "fin matrice"{self::matrix{not(contains(@grammar, "EndMatrix"))'.split("{"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "fin matrice"{self::vector{not(contains(@grammar, "EndMatrix"))'.split("{"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "fin d\u00e9terminant"{self::matrix{@role="determinant"{not(contains(@grammar, "EndMatrix"))'.split("{"),["Rule","vector","Matrix_Vector",
'[t] "le vecteur colonne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:",grammar:simpleDet); [p] (pause:long)',"self::vector"],["SpecializedRule","vector","Matrix_Vector","Matrix_EndVector"],'Rule{vector-simple{Matrix_Vector{[t] "le vecteur colonne de dimension"; [t] count(children/*); [t] "par";  [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split("{"),
["SpecializedRule","vector-simple","Matrix_Vector","Matrix_EndVector"],'Rule{row-vector{Matrix_Vector{[t] "le vecteur ligne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:"colonne-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),["SpecializedRule","row-vector","Matrix_Vector","Matrix_EndVector"],'Rule{row-vector-simple{Matrix_Vector{[t] "le vecteur ligne de dimension"; [t] count(children/*); [t] "par"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
["SpecializedRule","row-vector-simple","Matrix_Vector","Matrix_EndVector"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "fin matrice"{self::matrix{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "fin vecteur"{self::vector{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "fin vecteur"{self::matrix{@role="rowvector"{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),
'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "fin d\u00e9terminant"{self::matrix{@role="determinant"{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[2]/children/*[1]; [t] "parmi"; [n] children/*[1]/children/*[1]; ,self::vector,@role="binomial"'.split(","),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] "lignes";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary")){self::*'.split("{"),
'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, "layoutSummary"));self::*'.split(";"),["Aliases","lines-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] "cas";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, "layoutSummary"))'.split("{"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, "layoutSummary"));self::*'.split(";"),
["Rule","lines","default",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Ligne-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',"self::table"],["Aliases","lines","self::multiline"],["Rule","line","default","[n] children/*[1]","self::line"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"medium");self::row;@role="table"'.split(";"),["Aliases","row-medium","self::row",'@role="cases"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"long");self::row;@role="table"'.split(";"),
["Aliases","row-long","self::row",'@role="cases"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short");self::row;@role="table"'.split(";"),["Aliases","row-short","self::row",'@role="cases"'],'Rule;blank-cell;default;[t] "vide";self::cell;count(children/*)=0'.split(";"),'Rule;blank-empty;default;[t] "vide";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),["Rule","cases","default",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Cas-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::cases"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] "cas";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-cases-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-cases","MultiLineLabel_Case",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Cas-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',"self::table"],
["Aliases","lines-cases","self::multiline"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] "\u00e9quations";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-equations-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-equations","MultiLineLabel_Equation",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"\u00c9quation-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-equations","self::multiline"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] " \u00e9tapes";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-steps-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-steps","MultiLineLabel_Step",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:" \u00c9tape-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-steps","self::multiline"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] "colonnes";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-rows-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-rows","MultiLineLabel_Row",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"rang\u00e9e-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-rows","self::multiline"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] "contraintes";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-constraints-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-constraints","MultiLineLabel_Constraint",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Contrainte-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-constraints","self::multiline"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long){self::table{contains(@grammar, "layoutSummary")'.split("{"),["Aliases","lines-none","self::multiline",'contains(@grammar, "layoutSummary")'],["Aliases","lines-none","self::cases",'contains(@grammar, "layoutSummary")'],["Rule","bigop","default",'[t] "le"; [n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:short)',
"self::bigop"],["Rule","limboth","default",'[n] children/*[1]; [t] "de"; [n] children/*[2];[t] "\u00e0"; [n] children/*[3];',"self::limboth"],["Rule","limlower","default",'[n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short)',"self::limlower"],["Rule","limupper","default",'[n] children/*[1]; [t] "sous"; [n] children/*[2]; [p] (pause:short)',"self::limupper"],["Rule","integral","default",'[t] "le"; [n] children/*[1]; [t] "de"; [n] children/*[2]; [p] (pause:short)',"self::integral"],["Rule",
"overscript","default",'[n] children/*[1]; [t] "sous"; [n] children/*[2]; [p] (pause:short)',"self::overscore"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role="overaccent"]'.split(","),'Rule,overscript-limits,default,[n] children/*[1]; [t] "\u00e0"; [n] children/*[2],self::overscore,children/*[2][@role!="overaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role!="underaccent"]'.split(","),["Rule","underscript","default",'[n] children/*[1]; [t] "sur"; [n] children/*[2]; [p] (pause:short)',
"self::underscore"],'Rule,underscript-limits,default,[n] children/*[1]; [t] "de"; [n] children/*[2],self::underscore,@role="underover",children/*[2][@role!="underaccent"]'.split(","),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "et"; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),'Rule{number-with-chars{default{[t] "nombre"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role="othernumber"{"" != translate(text(), "0123456789.,", ""){not(contains(@grammar, "protected"))'.split("{"),
'Rule,decimal-period,default,[t] "la d\u00e9cimale"; [n] children/*[1] (grammar:spaceout); [t] "virgule suivi par les chiffres r\u00e9p\u00e9t\u00e9s";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role="sequence",count(./content/*)=1,./content/*[1][@role="fullstop"],name(children/*[1])="number",children/*[1][@role="integer"],name(children/*[3])="overscore",children/*[3][@role="integer"],children/*[3]/children/*[2][@role="overaccent"],children/*[3]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,decimal-period,default,[t] "la d\u00e9cimale"; [n] children/*[1] (grammar:spaceout); [t] "suivi par les chiffres r\u00e9p\u00e9t\u00e9s";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role="implicit",count(./children/*)=2,name(children/*[1])="number",children/*[1][@role="float"],name(children/*[2])="overscore",children/*[2][@role="integer"],children/*[2]/children/*[2][@role="overaccent"],children/*[2]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,decimal-period-singular,default,[t] "la d\u00e9cimale"; [n] children/*[1] (grammar:spaceout); [t] "virgule suivi par le chiffre r\u00e9p\u00e9t\u00e9";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role="sequence",count(./content/*)=1,./content/*[1][@role="fullstop"],name(children/*[1])="number",children/*[1][@role="integer"],name(children/*[3])="overscore",children/*[3][@role="integer"],children/*[3]/children/*[2][@role="overaccent"],children/*[3]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],string-length(./children/*[3]/children/*[1]/text())=1'.split(","),
'Rule,decimal-period-singular,default,[t] "la d\u00e9cimale"; [n] children/*[1] (grammar:spaceout); [t] "suivi par le chiffre r\u00e9p\u00e9t\u00e9";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role="implicit",count(./children/*)=2,name(children/*[1])="number",children/*[1][@role="float"],name(children/*[2])="overscore",children/*[2][@role="integer"],children/*[2]/children/*[2][@role="overaccent"],children/*[2]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],string-length(./children/*[2]/children/*[1]/text())=1'.split(","),
'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, "spaceout")'.split(";"),'Rule;decimal-point;default;[t] "point";self::punctuation;@role="fullstop";contains(@grammar,"number")'.split(";"),'Rule,line-segment,default,[t] "le segment"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role="implicit",children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],name(children/*[1])="infixop",count(./children/*[1]/children/*)=2'.split(","),
'Rule,conjugate,Bar_Conjugate,[t] "le complexe conjugu\u00e9 de"; [n] children/*[1],self::overscore,children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),'Rule;defined-by;default;[t] "est d\u00e9fini par" (pause:short);self::overscore;@role="equality";@embellished="relation";name(children/*[2])="text";children/*[2][text()]="def"'.split(";"),'Rule,adorned-sign,default,[t] "signe"; [n] children/*[1] ; [t] "avec"; [n] children/*[2]; [t] "dessus",self::overscore,@embellished,name(children/*[1])="operator" or name(children/*[1])="relation"'.split(","),
'Rule;factorial;default;[t] "factorielle";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),["Rule","tensor-base","default","[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]","self::tensor"],'Rule{left-super{default{[t] "exposant gauche"; [n] text(){self::*[@role="leftsuper"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{left-super{default{[t] "exposant gauche"; [m] children/*{self::punctuated{@role="leftsuper"{not(contains(@grammar,"combinatorics"))'.split("{"),
'Rule{left-sub{default{[t] "indice gauche"; [n] text(){self::*[@role="leftsub"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{left-sub{default{[t] "indice gauche"; [m] children/*{self::punctuated{@role="leftsub"{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-super{default{[t] "exposant droite"; [n] text(){self::*[@role="rightsuper"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-super{default{[t] "exposant droite"; [m] children/*{self::punctuated{@role="rightsuper"{not(contains(@grammar,"combinatorics"))'.split("{"),
'Rule{right-sub{default{[t] "indice droite"; [n] text(){self::*[@role="rightsub"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-sub{default{[t] "indice droite"; [m] children/*{self::punctuated{@role="rightsub"{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role="rightsub" or @role="rightsuper" or @role="leftsub" or @role="leftsuper"'.split(";"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="P" or text()="C"]'.split(","),
'Rule,choose,CombinationPermutation_ChoosePermute,[t] "combinaison de"; [n] children/*[3] (grammar:combinatorics); [t] "parmi"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="C"]'.split(","),'Rule,permute,CombinationPermutation_ChoosePermute,[t] "permutation de"; [n] children/*[2] (grammar:combinatorics); [t] "parmi"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="P"]'.split(",")]};
sre.Grammar.getInstance().setPreprocessor("numbers2alpha",sre.ClearspeakUtil.numbersToAlpha);sre.ClearspeakGerman={locale:"de",domain:"clearspeak",functions:[["CTXF","CTXFpauseSeparator",sre.StoreUtil.pauseSeparator],["CTXF","CTXFnodeCounter",sre.ClearspeakUtil.nodeCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CSF","CSFvulgarFraction",sre.NumbersUtil.vulgarFraction],["CQF","CQFvulgarFractionSmall",sre.ClearspeakUtil.isSmallVulgarFraction],["CQF","CQFcellsSimple",sre.ClearspeakUtil.allCellsSimple],["CSF","CSFwordOrdinal",sre.ClearspeakUtil.wordOrdinal],["CQF","CQFisCapital",
sre.ClearspeakUtil.isCapitalLetter],["CQF","CQFmatchingFences",sre.ClearspeakUtil.matchingFences],["CSF","CSFnestingDepth",sre.ClearspeakUtil.nestingDepth],["CQF","CQFfencedArguments",sre.ClearspeakUtil.fencedArguments],["CQF","CQFsimpleArguments",sre.ClearspeakUtil.simpleArguments],["CQF","CQFisHyperbolic",sre.ClearspeakUtil.isHyperbolic],["CQF","CQFisLogarithm",sre.ClearspeakUtil.isLogarithmWithBase],["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber]],rules:['Rule{collapsed{default{[t] "kollapiert"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),
["Rule","stree","default","[n] ./*[1]","self::stree"],["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::number;contains(@grammar, "protected")'.split(";"),["Rule","omit-empty","default",'[p] (pause:"short")',"self::empty"],'Rule{font{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:"short"){self::*{name(self::*)!="number"{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),["SpecializedRule","font",
"default","Caps_SayCaps"],'Rule{font-number{default{[t] @font (grammar:localFontNumber); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:"short"){self::identifier{string-length(text())=1 or string-length(text())=2{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),["SpecializedRule","font-identifier",
"default","Caps_SayCaps"],'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1 or string-length(text())=2;@font;not(contains(@grammar, "ignoreFont"));@font="italic";self::*'.split(";"),["SpecializedRule","omit-font","default","Caps_SayCaps"],'Rule{font-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{name(self::*)!="number"{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, "ignoreFont")){@font="double-struck"'.split("{"),
["SpecializedRule","font-double-struck","default","Caps_SayCaps"],'Rule{font-number-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFontNumber){self::number{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, "ignoreFont")){@font="double-struck"'.split("{"),["Rule","text","default","[n] text()","self::text"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps="gro\u00dfes");self::identifier;@role="latinletter" or @role="greekletter" or @role="simple function";CQFisCapital'.split(";"),
'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role="latinletter" or @role="greekletter";CQFisCapital'.split(";"),'Rule{capital{Caps_SayCaps{[p] (pause:"short"); [n] text(){self::identifier{@role="latinletter" or @role="greekletter"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])="function"){not(contains(@grammar, "angle"))'.split("{"),'Rule;capital;Caps_SayCaps;[n] text() (pause:"short");self::identifier;@role="latinletter" or @role="greekletter";CQFisCapital;following-sibling::*[1]'.split(";"),
'Rule{capital{Caps_SayCaps{[p] (pause:"short"); [n] text() (pause:"short"){self::identifier{@role="latinletter" or @role="greekletter"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])="function"){not(contains(@grammar, "angle"))'.split("{"),'Rule,punctuation-lr,default,[p] (pause:"short"); [n] text() (pause:"short"),self::punctuation,@role="comma"'.split(","),'Rule;punctuation;default;[n] text();self::punctuation;@role="comma";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(";"),
'Rule,punctuation-l,default,[p] (pause:"short"); [n] text(),self::punctuation,@role="comma",not(following-sibling::*[1]/children)'.split(","),'Rule;punctuation-r;default;[n] text() (pause:"short");self::punctuation;@role="comma";not(preceding-sibling::*[1]/children)'.split(";"),'Rule;ellipsis;Ellipses_AndSoOn;[t] "und so weiter";self::punctuation;@role="ellipsis";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role="ellipsis"])'.split(";"),'Rule;ellipsis;Ellipses_AndSoOn;[t] "und so weiter bis";self::punctuation;@role="ellipsis";preceding-sibling::*[1];following-sibling::*[1]'.split(";"),
'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:"short"); [t] "ausgewertet f\u00fcr"; [n] content/*[1]/children/*[2]; [p] (pause:"short"),self::punctuated,@role="endpunct",content/*[1][@role="vbar"],content/*[1][@embellished],name(content/*[1])="subscript"'.split(","),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:"short"); [t] "ausgewertet f\u00fcr"; [n] content/*[1]/children/*[2]; [p] (pause:"short"); [t] "minus des gleichen Ausdrucks ausgewertet f\u00fcr"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:"short"),self::punctuated,@role="endpunct",content/*[1][@role="vbar"],content/*[1][@embellished],name(content/*[1])="superscript",name(content/*[1]/children/*[1])="subscript"'.split(","),
'Rule;vbar-such-that;VerticalLine_SuchThat;[t] "so dass";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;vbar-such-that;VerticalLine_Divides;[t] "teilt";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;vbar-such-that;VerticalLine_Given;[t] "f\u00fcr die gilt";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;set-member;default;[t] "in";self::operator;@role="set extended";text()="\u2208" or text()="\u220a"'.split(";"),
["SpecializedRule","set-member","default","SetMemberSymbol_Element",'[t] "Element von"'],["SpecializedRule","set-member","default","SetMemberSymbol_Belongs",'[t] "geh\u00f6rt zu"'],'Rule;set-not-member;default;[t] "nicht in";self::operator;@role="set extended";text()="\u2209"'.split(";"),["SpecializedRule","set-not-member","default","SetMemberSymbol_Element",'[t] "kein Element von"'],["SpecializedRule","set-not-member","default","SetMemberSymbol_Belongs",'[t] "geh\u00f6rt nicht zu"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"],self::*'.split(","),
'Rule,feet,default,[n] children/*[1]; [t] "Fu\u00df",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2032"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,inches,default,[n] children/*[1]; [t] "Zoll",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2033"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] "Minuten",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2032"]'.split(","),
'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] "Minute",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] "Sekunden",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2033"]'.split(","),'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] "Sekunde",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),
'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] "Grad"; [p] (pause:short),self::punctuation,@role="degree"'.split(","),'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] "Minuten"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2032"]'.split("{"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] "Minute"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),
'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] "Sekunden"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2033"]'.split("{"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] "Sekunde"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),
'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] "Fu\u00df"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2032"]'.split("{"),'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] "Zoll"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2033"]'.split("{"),
["Rule","punctuated","default","[m] children/*","self::punctuated"],["Rule","function","default","[n] text()","self::function"],'Rule{function-article{default{[t] "der" (grammar:article); [n] text(){self::function{@role="prefix function"{contains(@grammar, "addArticle")'.split("{"),'Rule{function-article-fem{default{[t] "die" (grammar:article); [n] text(){self::function{@role="prefix function"{contains(@grammar, "addArticle"){text()="det" or text()="dim" or text()="tr"'.split("{"),["Rule","appl",
"default",'[n] children/*[1]; [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short")',"self::appl"],'Rule,appl-simple,default,[n] children/*[1]; [t] "von"; [p] (pause:"short"); [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"),self::appl,@role="simple function",name(children/*[2])="appl"'.split(","),'Rule,appl-simple,default,[n] children/*[1]; [t] "von"; [p] (pause:"short"); [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"),self::appl,@role="simple function",name(children/*[2])="fenced",name(children/*[2]/children/*[1])="appl"'.split(","),
["Rule","appl","Functions_None",'[p] (pause:"short"); [n] children/*[1]; [t] "mal"; [n] children/*[2]; [p] (pause:"short")',"self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role="prefix function"'.split(","),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:"short"){self::appl{@role="prefix function"{parent::*/parent::infixop[@role="implicit"]{following-sibling::*{not(contains(@grammar, "impliedTimes"))'.split("{"),
'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role="prefix function"{name(children/*[2])="fenced"{contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){name(children/*[2]/children/*[1])!="number"{name(children/*[2]/children/*[1])!="identifier"{name(children/*[2]/children/*[1])!="appl"'.split("{"),'Rule,function-prefix-embell,default,[p] (pause:"short"); [n] children/*[1]; [n] children/*[2]; [p] (pause:"short"); ,self::appl,@role="prefix function",name(children/*[1])!="function"'.split(","),
'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:"short"); [n] children/*[1] (grammar:addArticle); [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"){self::appl{@role="prefix function"{(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or name(children/*[2])="fraction" or (name(children/*[2])!="fenced" and not(contains(children/*[2]/@annotation, "clearspeak:simple"))){self::*'.split("{"),'Rule,function-prefix-subscript,default,[p] (pause:"short"); [n] children/*[1] (grammar:addArticle); [t] "von"; [p] (pause:"short"); [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"),self::appl,@role="prefix function",name(children/*[1])="subscript",self::*'.split(","),
'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(following-sibling::*){not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-ln{default{[n] children/*[1]; [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{name(children/*[2])="fenced"{not(contains(@grammar, "NatLog"))'.split("{"),
'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role="prefix function";content/*[2][text()="ln"];not(following-sibling::*);not(contains(@grammar, "NatLog"))'.split(";"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] "von"; [p] (pause:"short"); [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"){self::appl{@role="prefix function"{name(parent::*/parent::*)="superscript"{not(following-sibling::*){(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or name(children/*[2])="fraction" or (name(children/*[2])!="fenced" and not(contains(children/*[2]/@annotation, "clearspeak:simple")))'.split("{"),
'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] "von"; [p] (pause:"short"); [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"),self::appl,@role="prefix function",name(parent::*/parent::*)="superscript",not(following-sibling::*),name(children/*[1])="subscript"'.split(","),'Rule,function-prefix-hyper,default,[p] (pause:"short"); [n] children/*[1]; [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"),self::appl,@role="prefix function",CQFisHyperbolic'.split(","),
'Rule{function-prefix-inverse{default{[p] (pause:"short"); [t] "der" (grammar:article); [t] "inverse" (grammar:masculine); [n] children/*[1]/children/*[1]; [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:"short"); [n] children/*[1]; [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"),self::appl,@role="prefix function",name(children/*[1])="superscript",name(children/*[1]/children/*[2])="prefixop",children/*[1]/children/*[2][@role="negative"],children/*[1]/children/*[2]/children/*[1][text()="1"]'.split(","),
'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:"short"); [t] "Arkus" (join:""); [n] children/*[1]/children/*[1] (grammar:lowercase); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:"short"); [t] "Arkus" (join:""); [n] children/*[1]/children/*[1] (grammar:lowercase); [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{name(children/*[2])="fenced"{children/*[2]/children/*[1][@role="prefix function"]{contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){not(contains(@grammar, "functions_none"))'.split("{"),
'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:"short"); [t] "Arkus" (join:""); [n] children/*[1]/children/*[1] (grammar:lowercase); [t] "von"; [n] children/*[2] (grammar:case="dative"); [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none")){(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or (name(children/*[2])="fraction" and children/*[2][@role!="vulgar"])'.split("{"),
'Rule{function-inverse{default{[n] children/*[1]; [t] "invers"{self::superscript{@role="prefix function" or @role="simple function"{name(children/*[2])="prefixop"{children/*[2][@role="negative"]{children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule,superscript-prefix-function,default,[t] "die" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] "Potenz von"; [n] children/*[1],self::superscript,@role="prefix function",name(children/*[2])="number",children/*[2][@role="integer"]'.split(","),
'Rule,superscript-prefix-function,default,[t] "die" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] "Potenz von"; [n] children/*[1],self::superscript,@role="prefix function",name(children/*[2])="identifier"'.split(","),'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role="prefix function" or @role="simple function";name(children/*[2])="prefixop";children/*[2][@role="negative"];children/*[2]/children/*[1][text()="1"];not(contains(@grammar, "functions_none"))'.split(";"),
["Rule","superscript","default",'[n] children/*[1]; [t] "mit Exponent" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "Ende Exponent" (pause:"short")',"self::superscript"],'Rule,superscript-ordinal,default,[n] children/*[1]; [t] "hoch"; [n] children/*[2]; [p] (pause:"short"),self::superscript,name(children/*[2])="number",children/*[2][@role="integer"]'.split(","),'Rule,superscript-ordinal,default,[n] children/*[1]; [t] "hoch"; [n] children/*[2]; [p] (pause:"short"),self::superscript,name(children/*[2])="prefixop",children/*[2][@role="negative"],name(children/*[2]/children/*[1])="number",children/*[2]/children/*[1][@role="integer"]'.split(","),
'Rule,superscript-ordinal,default,[n] children/*[1]; [t] "hoch"; [n] children/*[2]; [p] (pause:"short"),self::superscript,name(children/*[2])="identifier",children/*[2][@role="latinletter" or @role="greekletter" or @role="otherletter"]'.split(","),'Rule,superscript-ordinal-default,default,[n] children/*[1]; [t] "mit Exponent" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "Ende Exponent" (pause:"short"),self::superscript,children//superscript'.split(","),'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] "hoch"; [n] children/*[2]; [p] (pause:"short"),self::superscript,not(descendant::superscript)'.split(","),
'Rule,superscript-simple-exponent-end,default,[n] children/*[1]; [t] "hoch"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(","),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="number";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="fraction";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),
["Aliases","superscript-simple-exponent","self::superscript",'children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"]','name(children/superscript/children/*[1])="identifier"'],'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role="implicit"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, "simple");name(children/*[2]/children/*[2])="superscript";(name(children/*[2]/children/*[2]/children/*[1])="number" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple")) or name(children/*[2]/children/*[2]/children/*[1])="identifier";children/*[2]/children/*[2]/children/*[2][text()="2"] or children/*[2]/children/*[2]/children/*[2][text()="3"]'.split(";"),
'Rule,superscript-simple-power,Exponent_OrdinalPower,[n] children/*[1]; [t] "potenziert mit"; [n] children/*[2]; [p] (pause:"short"),self::superscript,not(descendant::superscript)'.split(","),'Rule,superscript-simple-power-end,Exponent_OrdinalPower,[n] children/*[1]; [t] "potenziert mit"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(","),'Aliases;superscript-simple-power;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="number";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),
'Aliases;superscript-simple-power;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="fraction";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),["Aliases","superscript-simple-power","self::superscript",'children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"]','name(children/superscript/children/*[1])="identifier"'],
'Aliases;superscript-simple-power;self::superscript;children/*[2][@role="implicit"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, "simple");name(children/*[2]/children/*[2])="superscript";(name(children/*[2]/children/*[2]/children/*[1])="number" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple")) or name(children/*[2]/children/*[2]/children/*[1])="identifier";children/*[2]/children/*[2]/children/*[2][text()="2"] or children/*[2]/children/*[2]/children/*[2][text()="3"]'.split(";"),
'Rule{superscript-ordinal-power{Exponent_OrdinalPower{[n] children/*[1]; [t] "zur"; [n] children/*[2] (grammar:ordinal,join:""); [t] "n Potenz" (pause:"short"){self::superscript{name(children/*[2])="number"{children/*[2][@role="integer"]'.split("{"),["Aliases","superscript-ordinal-power","self::superscript",'name(children/*[2])="identifier"','children/*[2][@role="latinletter" or @role="greekletter" or @role="otherletter"]'],'Rule{superscript-non-ordinal{Exponent_OrdinalPower{[n] children/*[1]; [t] "zur negativ"; [n] children/*[2]/children/*[1] (grammar:ordinal, join:""); [t] "n Potenz" (pause:"short"){self::superscript{children/*[2][@role="negative"]{name(children/*[2]/children/*[1])="number"{children/*[2]/children/*[1][@role="integer"]'.split("{"),
'Rule{superscript-simple-function{Exponent_OrdinalPower{[t] "die" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] "Potenz von" (pause:"short"); [n] children/*[1]{self::superscript{name(children/*[1])="identifier"{children/*[1][@role="simple function"]{children/*[2][@role!="prime"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule{exponent{default{[n] text() (join:""); [t] "te"{self::identifier{contains(@grammar, "ordinal")'.split("{"),'Rule;exponent;default;[t] CSFwordOrdinal;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),
'Rule;exponent;default;[t] "nullte";self::number;@role="integer";contains(@grammar, "ordinal");text()="0"'.split(";"),'Rule,superscript-simple-exp,Exponent_Exponent,[n] children/*[1]; [t] "mit Exponent"; [n] children/*[2]; [p] (pause:"short"),self::superscript,not(descendant::superscript)'.split(","),'Rule,superscript-simple-exp-end,Exponent_Exponent,[n] children/*[1]; [t] "mit Exponent"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(","),'Aliases;superscript-simple-exp;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="number";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),
'Aliases;superscript-simple-exp;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="fraction";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),["Aliases","superscript-simple-exp","self::superscript",'children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"]','name(children/superscript/children/*[1])="identifier"'],
'Aliases;superscript-simple-exp;self::superscript;children/*[2][@role="implicit"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, "simple");name(children/*[2]/children/*[2])="superscript";(name(children/*[2]/children/*[2]/children/*[1])="number" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple")) or name(children/*[2]/children/*[2]/children/*[1])="identifier";children/*[2]/children/*[2]/children/*[2][text()="2"] or children/*[2]/children/*[2]/children/*[2][text()="3"]'.split(";"),
'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])="identifier";children/*[1][@role="simple function"];not(contains(@grammar, "functions_none"))'.split(";"),'Rule,square,default,[n] children/*[1]; [t] "Quadrat",self::superscript,children/*[2][text()="2"],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),self::*,self::*'.split(","),'Rule,cube,default,[n] children/*[1]; [t] "Kubik",self::superscript,children/*[2][text()="3"],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),self::*,self::*'.split(","),
'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role="leftright";contains(children/*[1]/@annotation, "clearspeak:simple");name(../..)!="superscript" and name(../..)!="subscript"'.split(";"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role="leftright";name(../..)="superscript";children/*[1][@role="integer"] or children/*[1][@role="float"] or (children/*[1][@role="vulgar"] and contains(children/*[1]/@annotation, "clearspeak:simple")) or children/*[1][@role="latinletter"] or children/*[1][@role="greekletter"] or children/*[1][@role="otherletter"]'.split(";"),
'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role="leftright";name(../*[1])="identifier" or name(../*[1])="function";parent::*/parent::*[@role="simple function" or @role="prefix function"];children/*[1][@role="simple function" or @role="prefix function"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple") or name(children/*[1]/children/*[2]/children/*[1])="subscript" or name(children/*[1]/children/*[2]/children/*[1])="superscript" or children/*[1]/children/*[2]/children/*[1][@role="vulgar"] '.split(";"),
'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{children/*[1][@role="simple function" or @role="prefix function"]{name(children/*[1]/children/*[1])="identifier" or name(children/*[1]/children/*[1])="function"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){name(children/*[1]/children/*[2]/children/*[1])="identifier" or name(children/*[1]/children/*[2]/children/*[1])="number"'.split("{"),
'Rule,fences-open-close,default,[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"),self::fenced,@role="leftright"'.split(","),'Rule{paren-simple-nested-func{default{[p] (pause:"short"); [n] content/*[1]; [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2]; [p] (pause:"short"){self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{not(contains(children/*[1]/@annotation, "clearspeak:simple"))'.split("{"),
'Rule{paren-simple-nested-func{Functions_None{[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"){self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{children/*[1][@role="simple function" or @role="prefix function"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple") or name(children/*[1]/children/*[2]/children/*[1])="subscript" or name(children/*[1]/children/*[2]/children/*[1])="superscript" or children/*[1]/children/*[2]/children/*[1][@role="vulgar"] '.split("{"),
["SpecializedRule","fences-open-close","default","Paren_Speak"],["Aliases","fences-open-close","self::fenced",'@role="composed function"'],["Rule","fence-silent","Paren_Silent",'[p] (pause:"short"); [n] children/*[1]; [p] (pause:"short")',"self::fenced"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"),self::fenced,@role="leftright",parent::*/parent::*[@role!="simple function"],parent::*/parent::*[@role!="prefix function"]'.split(","),
'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, "spokenFence");CQFmatchingFences'.split(";"),["Rule","fence-no-nesting","Paren_SpeakNestingLevel","[n] text()","self::fence"],'Rule,fences-points,Paren_CoordPoint,[t] "der Punkt mit Koordinaten"; [n] children/*[1],self::fenced,name(children/*[1])="punctuated",children/*[1][@role="sequence"]'.split(","),'Rule{fences-interval{Paren_Interval{[t] "das Interval von"; [n] children/*[1]/children/*[1]; [t] "bis"; [n] children/*[1]/children/*[3]; [p] (pause:"short"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, "interval")){name(children/*[1])="punctuated"{children/*[1][@role="sequence"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role="comma"]'.split("{"),
'Rule{interval-open{Paren_Interval{[t] "ohne"; [n] children/*[1]/children/*[1]; [t] "und"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"'.split("{"),'Rule{interval-closed-open{Paren_Interval{[t] "einschlie\u00dflich"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [t] "aber ohne"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()=")"'.split("{"),
'Rule{interval-open-closed{Paren_Interval{[t] "ohne"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [t] "aber einschlie\u00dflich"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()="]"'.split("{"),'Rule{interval-closed{Paren_Interval{[t] "einschlie\u00dflich"; [n] children/*[1]/children/*[1]; [t] "und"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()="]"'.split("{"),
'Rule{interval-open-inf-r{Paren_Interval{[t] "ohne"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"{children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e")'.split("{"),'Rule{interval-open-inf-l{Paren_Interval{[t] "ohne"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"{children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split("{"),
'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, "interval");content/*[1]/text()="(";content/*[2]/text()=")";children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e");children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split(";"),'Rule{interval-closed-open-inf{Paren_Interval{[t] "einschlie\u00dflich"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()=")"{children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e")'.split("{"),
'Rule{interval-open-closed-inf{Paren_Interval{[t] "einschlie\u00dflich"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()="]"{children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split("{"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:"short"); [n] content/*[1]; [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2]; [p] (pause:"short"),self::fenced,@role="leftright",name(../..)="appl",name(children/*[1]) = "appl",preceding-sibling::*/descendant-or-self::*[@role="subsup"] or children/*[1]/descendant-or-self::*[@role="subsup"]'.split(","),
'Rule;set-empty;default;[t]  "die leere Menge";self::fenced;@role="set empty"'.split(";"),'Rule,set-extended,default,[t] "die Menge aller"; [n] children/*[1]/children/*[1]; [t] "mit"; [n] children/*[1]/children/*[3],self::fenced,@role="set extended"'.split(","),'Rule,set-collection,default,[t] "die Menge"; [n] children/*[1],self::fenced,@role="set collection"'.split(","),["Aliases","set-collection","self::fenced",'@role="set singleton"'],'Rule,set-extended,Sets_woAll,[t] "die Menge von"; [n] children/*[1]/children/*[1]; [t] "mit"; [n] children/*[1]/children/*[3],self::fenced,@role="set extended"'.split(","),
'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role="set collection"'.split(";"),["Rule","subscript","default",'[p] (pause:short); [n] children/*[1]; [t] "Index"; [n] children/*[2]; [p] (pause:short)',"self::subscript"],'Rule,subscript-base,default,[n] children/*[1]; [t] "Basis"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(","),'Rule{subscript-index{default{[n] children/*[1]; [t] "Index"; [n] children/*[2]{self::subscript{contains(@grammar, "simpleDet")'.split("{"),
["Rule","fraction","default",'[p] (pause:short); [t] "Bruch mit Z\u00e4hler"; [n] children/*[1]; [p] (pause:short); [t] "und Nenner"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],'Rule,fraction,Functions_None,[p] (pause:short); [t] "Bruch mit Z\u00e4hler"; [n] children/*[1]; [p] (pause:short); [t] "und Nenner"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="appl" or name(children/*[2])="appl"'.split(","),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, "clearspeak:simple") or contains(children/*[1]/@annotation, "clearspeak:unit"){contains(children/*[2]/@annotation, "clearspeak:simple") or contains(children/*[2]/@annotation, "clearspeak:unit")'.split("{"),
'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short),self::fraction,@role="vulgar"'.split(","),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="text",name(children/*[2])="text"'.split(","),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="infixop",children/*[1][@role="unit"],name(children/*[2])="text"'.split(","),
'Rule;vulgar-fraction;default;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["Rule","fraction","Fraction_Over",'[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_OverEndFrac",'[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short); [t] "Ende Bruch"; [p] (pause:short)',"self::fraction"],["Rule","fraction",
"Fraction_FracOver",'[p] (pause:short); [t] "Bruch"; [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_Per",'[p] (pause:short); [n] children/*[1]; [t] "per"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_GeneralEndFrac",'[p] (pause:short); [t] "Bruch mit Z\u00e4hler"; [n] children/*[1]; [p] (pause:short); [t] "und Nenner"; [n] children/*[2]; [p] (pause:short); [t] "Ende Bruch"; [p] (pause:short)',
"self::fraction"],["Rule","fraction","Fraction_General",'[p] (pause:short); [t] "Bruch mit Z\u00e4hler"; [n] children/*[1]; [p] (pause:short); [t] "und Nenner"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role="vulgar"'.split(";"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] "Ende Bruch"; [p] (pause:short){self::fraction{not(contains(@grammar, "endfrac")){not(contains(children/*[1]/@annotation, "clearspeak:unit")){not(contains(children/*[2]/@annotation, "clearspeak:unit"))'.split("{"),
'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] "geteilt durch"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])="fraction"{name(children/*[2])="fraction"{contains(children/*[1]/@annotation, "clearspeak:simple"){contains(children/*[2]/@annotation, "clearspeak:simple")'.split("{"),'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role="vulgar";contains(@annotation, "clearspeak:simple");self::*'.split(";"),
["Rule","sqrt","default",'[t] "Quadratwurzel aus"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',"self::sqrt"],'Rule,sqrt-nested,default,[p] (pause: "short"); [t] "Quadratwurzel aus"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),'Rule,negative-sqrt,default,[t] "negative Quadratwurzel aus"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role="negative",name(children/*[1])="sqrt"'.split(","),
'Rule,negative-sqrt,default,[p] (pause: "short"); [t] "negative Quadratwurzel aus"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role="negative",name(children/*[1])="sqrt",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] "positive Quadratwurzel aus"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),
'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: "short"); [t] "positive Quadratwurzel aus"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] "positive Quadratwurzel aus"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),
'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: "short"); [t] "positive Quadratwurzel aus"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "Wurzel Ende"; [p] (pause:short){self::sqrt{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "Wurzel Ende"; [p] (pause:short){self::prefixop{@role="negative"{name(children/*[1])="sqrt"{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "Wurzel Ende"; [p] (pause:short){self::sqrt{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "Wurzel Ende"; [p] (pause:short){self::prefixop{@role="negative"{name(children/*[1])="sqrt"{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule,cube,default,[t] "Kubikwurzel aus"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()="3"]'.split(","),'Rule,cube-nested,default,[p] (pause:short); [t] "Kubikwurzel aus"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()="3"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),["Rule","root","default",'[t] "die" (grammar:article); [n] children/*[1] (grammar:ordinal); [t] "Wurzel aus"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',
"self::root"],'Rule,root-nested,default,[p] (pause:short); [t] "die" (grammar:article); [n] children/*[1] (grammar:ordinal); [t] "Wurzel aus"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "Wurzel Ende"; [p] (pause:short){self::root{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "Wurzel Ende"; [p] (pause:short){self::root{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule,negative,default,[t] "minus"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),'Rule,positive,default,[t] "plus"; [n] children/*[1],self::prefixop,@role="positive"'.split(","),'Rule,angle-measure,default,[t] "das Ma\u00df des Winkels"; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()="\u2220",children/*[1][text()="m"]'.split(","),["Rule","prefix","default","[m] content/* (grammar:prefix); [n] children/*[1]","self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [m] content/* (grammar:postfix)",
"self::postfixop"],'Rule{set-prefix-operators{default{[t] "der" (grammar:article); [n] self::* (grammar:!prefix); [t] "von"{self::*{contains(@grammar,"prefix"){descendant-or-self::*/text()="\u2229"{self::*{self::*{self::*'.split("{"),'Rule{set-prefix-operators{default{[t] "die" (grammar:article); [n] self::* (grammar:!prefix); [t] "von"{self::*{contains(@grammar,"prefix"){descendant-or-self::*/text()="\u222a"{self::*{self::*{self::*'.split("{"),["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);",
"self::infixop"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role="implicit"'.split(","),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role="implicit",name(children/*[1])="appl"'.split(","),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role="implicit",name(children/*[last()])="appl"'.split(","),
'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role="implicit",name(children/*[1])="appl",name(children/*[last()])="appl"'.split(","),'Rule;implicit-times;default;[p] (pause:short);self::operator;@role="multiplication";text()="\u2062"'.split(";"),'Rule implicit-times default  self::operator @role="multiplication" text()="\u2062" CQFsimpleArguments'.split(" "),'Rule;implicit-times;default;[n] text();self::operator;@role="multiplication";text()="\u2062";CQFfencedArguments'.split(";"),
'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role="multiplication";text()="\u2062"'.split(";"),'Rule implicit-times ImpliedTimes_None  self::operator @role="multiplication" text()="\u2062"'.split(" "),'Rule{binary-operation-simple{default{[m] children/* (rate:"0.5"); [p] (pause:short){self::infixop{@role="implicit"{contains(@annotation, "clearspeak:simple"){not(contains(@grammar, "inFrac"))'.split("{"),'Rule;simple-in-fraction;default;[n] . (rate:"0.5",grammar:inFrac);self::*;contains(@annotation, "clearspeak:simple");not(contains(@grammar, "inFrac"));name(.)!="identifier";name(.)!="function";name(.)!="number";name(parent::*/parent::*)="fraction";not(preceding-sibling::*)'.split(";"),
'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:"0.5");self::infixop;@role="implicit";contains(@grammar, "afterPower")'.split(";"),["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],'Rule;natural-numbers;default;[t] "die nat\u00fcrlichen Zahlen";self::identifier;text()="\u2115" or (text()="N" and @font="double-struck");self::*;self::*;self::*;self::*;self::*'.split(";"),
'Rule;integers;default;[t] "die ganzen Zahlen";self::identifier;text()="\u2124" or (text()="Z" and @font="double-struck");self::*;self::*;self::*;self::*;self::*'.split(";"),'Rule;rational-numbers;default;[t] "die rationalen Zahlen";self::identifier;text()="\u211a" or (text()="Q" and @font="double-struck");self::*;self::*;self::*;self::*;self::*'.split(";"),'Rule;real-numbers;default;[t] "die reellen Zahlen";self::identifier;text()="\u211d" or (text()="R" and @font="double-struck");self::*;self::*;self::*;self::*;self::*'.split(";"),
'Rule;complex-numbers;default;[t] "die komplexen Zahlen";self::identifier;text()="\u2102" or (text()="C" and @font="double-struck");self::*;self::*;self::*;self::*;self::*'.split(";"),'Rule,natural-numbers-super,default,[t] "n" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2115" or (children/*[1]/text()="N" and @font="double-struck"),self::*,self::*,self::*,self::*,self::*'.split(","),'Rule,integers-super,default,[t] "z" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck"),self::*,self::*,self::*,self::*,self::*'.split(","),
'Rule,rational-numbers-super,default,[t] "q" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck"),self::*,self::*,self::*,self::*,self::*'.split(","),'Rule,real-numbers-super,default,[t] "r" (join:"-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u211d" or (children/*[1]/text()="R" and @font="double-struck"),self::*,self::*,self::*,self::*,self::*'.split(","),
'Rule,complex-numbers-super,default,[t] "c" (join:"-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2102" or (children/*[1]/text()="C" and @font="double-struck"),self::*,self::*,self::*,self::*,self::*'.split(","),'Rule;natural-numbers-with-zero;default;[t] "die nat\u00fcrlichen Zahlen mit Null";self::subscript;children/*[1]/text()="\u2115" or (children/*[1]/text()="N" and @font="double-struck");children/*[2]/text()="0";self::*;self::*;self::*;self::*;self::*'.split(";"),
'Rule;positive-integers;default;[t] "die positiven ganzen Zahlen";self::superscript;children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck");children/*[2]/text()="+";self::*;self::*;self::*;self::*;self::*'.split(";"),'Rule;positive-integers;default;[t] "die negativen ganzen Zahlen";self::superscript;children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck");children/*[2]/text()="-";self::*;self::*;self::*;self::*;self::*'.split(";"),'Rule;positive-rational-numbers;default;[t] "die positiven rationalen Zahlen";self::superscript;children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck");children/*[2]/text()="+";self::*;self::*;self::*;self::*;self::*'.split(";"),
'Rule;negative-rational-numbers;default;[t] "die negativen rationalen Zahlen";self::superscript;children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck");children/*[2]/text()="-";self::*;self::*;self::*;self::*;self::*'.split(";"),'Rule,fences-neutral,default,[p] (pause:short); [t] "der Betrag von"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] "der Betrag von"; [n] children/*[1]; [p] (pause: short); [t] "Ende Betrag"; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] "die M\u00e4chtigkeit der Menge"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] "die Determinante von"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["Rule","matrix","default",'[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Matrize"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:"); [p] (pause:long)',"self::matrix"],'Rule{matrix-simple{default{[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Matrize"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
'Rule,matrix-trivial,default,[t] "die 1 mal 1 Matrize mit Element"; [n] children/*[1]; [p] (pause:long),self::vector,@role="squarematrix"'.split(","),'Rule{determinant{default{[t] "die" (grammar:article); [t] "Determinante der"; [t] count(children/*); [t] "mal"; [t] count(children/*[1]/children/*); [t] "Matrize"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="determinant"{count(children/*)<4{CQFcellsSimple'.split("{"),
'Rule{determinant-simple{default{[t] "die" (grammar:article); [t] "Determinante der"; [t] count(children/*); [t] "mal"; [t] count(children/*[1]/children/*); [t] "Matrize"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:"); [p] (pause:long){self::matrix{@role="determinant"'.split("{"),["Rule","matrix-vector","default",'[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Spaltenmatrize"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:",grammar:simpleDet); [p] (pause:long)',
"self::vector"],["SpecializedRule","matrix-vector","default","Matrix_SpeakColNum"],'Rule{matrix-vector-simple{default{[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Spaltenmatrize"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!="squarematrix"'.split("{"),["Rule","matrix-vector-simple","Matrix_SilentColNum",'[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Spaltenmatrize"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long)',
"self::vector"],'Rule{matrix-row-vector{default{[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Zeilenmatrize"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:"Spalte-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),["SpecializedRule","matrix-row-vector","default","Matrix_SpeakColNum"],'Rule{matrix-row-vector-simple{default{[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Zeilenmatrize"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] "die" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Zeilenmatrize"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short");self::row;contains(@grammar, "simpleDet")'.split(";"),["Rule",
"matrix-row-simple","Matrix_SilentColNum",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short")',"self::row"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, "simpleDet")'.split(";"),["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"Spalte-,- ",sepFunc:CTXFpauseSeparator,separator:"medium"); [p] (pause:long)',"self::row"],["SpecializedRule","matrix-row","default","Matrix_SpeakColNum"],["Rule","matrix-cell","default","[n] children/*[1]",
"self::cell"],'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "Ende Matrize"{self::matrix{not(contains(@grammar, "EndMatrix"))'.split("{"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "Ende Matrize"{self::vector{not(contains(@grammar, "EndMatrix"))'.split("{"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "Ende Determinante"{self::matrix{@role="determinant"{not(contains(@grammar, "EndMatrix"))'.split("{"),["Rule","vector",
"Matrix_Vector",'[t] "der" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Spaltenvektor"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:",grammar:simpleDet); [p] (pause:long)',"self::vector"],["SpecializedRule","vector","Matrix_Vector","Matrix_EndVector"],'Rule{vector-simple{Matrix_Vector{[t] "der" (grammar:article); [t] count(children/*);  [t] "mal"; [t] count(children/*[1]/children/*); [t] "Spaltenvektor"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split("{"),
["SpecializedRule","vector-simple","Matrix_Vector","Matrix_EndVector"],'Rule{row-vector{Matrix_Vector{[t] "der" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Zeilenvektor"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:"Spalte-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),["SpecializedRule","row-vector","Matrix_Vector","Matrix_EndVector"],'Rule{row-vector-simple{Matrix_Vector{[t] "der" (grammar:article); [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Zeilenvektor"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
["SpecializedRule","row-vector-simple","Matrix_Vector","Matrix_EndVector"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "Ende Matrize"{self::matrix{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "Ende Vektor"{self::vector{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "Ende Vektor"{self::matrix{@role="rowvector"{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),
'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "Ende Determinante"{self::matrix{@role="determinant"{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[1]/children/*[1]; [t] "\u00fcber"; [n] children/*[2]/children/*[1]; ,self::vector,@role="binomial"'.split(","),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] "Zeilen";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary")){self::*'.split("{"),
'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, "layoutSummary"));self::*'.split(";"),["Aliases","lines-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] "F\u00e4lle";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, "layoutSummary"))'.split("{"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, "layoutSummary"));self::*'.split(";"),
["Rule","lines","default",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',"self::table"],["Aliases","lines","self::multiline"],["Rule","line","default","[n] children/*[1]","self::line"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"medium");self::row;@role="table"'.split(";"),["Aliases","row-medium","self::row",'@role="cases"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"long");self::row;@role="table"'.split(";"),
["Aliases","row-long","self::row",'@role="cases"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short");self::row;@role="table"'.split(";"),["Aliases","row-short","self::row",'@role="cases"'],'Rule;blank-cell;default;[t] "leer";self::cell;count(children/*)=0'.split(";"),'Rule;blank-empty;default;[t] "leer";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),["Rule","cases","default",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Fall-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::cases"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] "F\u00e4lle";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-cases-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-cases","MultiLineLabel_Case",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Fall-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',"self::table"],
["Aliases","lines-cases","self::multiline"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] "Gleichungen";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-equations-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-equations","MultiLineLabel_Equation",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Gleichung-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-equations","self::multiline"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] "Rechenschritte";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-steps-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-steps","MultiLineLabel_Step",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Schritt-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-steps","self::multiline"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] "Zeilen";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-rows-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-rows","MultiLineLabel_Row",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Zeile-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-rows","self::multiline"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] "Bedingungen";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-constraints-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-constraints","MultiLineLabel_Constraint",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Bedingung-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-constraints","self::multiline"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long){self::table{contains(@grammar, "layoutSummary")'.split("{"),["Aliases","lines-none","self::multiline",'contains(@grammar, "layoutSummary")'],["Aliases","lines-none","self::cases",'contains(@grammar, "layoutSummary")'],["Rule","bigop","default",'[n] children/*[1]; [t] "\u00fcber"; [n] children/*[2]; [p] (pause:short)',
"self::bigop"],["Rule","limboth","default",'[n] children/*[1]; [t] "von"; [n] children/*[2];[t] "bis"; [n] children/*[3];',"self::limboth"],["Rule","limlower","default",'[n] children/*[1]; [t] "\u00fcber"; [n] children/*[2]; [p] (pause:short)',"self::limlower"],["Rule","limupper","default",'[n] children/*[1]; [t] "unter"; [n] children/*[2]; [p] (pause:short)',"self::limupper"],["Rule","integral","default",'[t] "das"; [n] children/*[1]; [t] "\u00fcber"; [n] children/*[2]; [p] (pause:short)',"self::integral"],
["Rule","overscript","default",'[n] children/*[1]; [t] "unter"; [n] children/*[2]; [p] (pause:short)',"self::overscore"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role="overaccent"]'.split(","),'Rule,overscript-limits,default,[n] children/*[1]; [t] "bis"; [n] children/*[2],self::overscore,children/*[2][@role!="overaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role!="underaccent"]'.split(","),["Rule","underscript","default",
'[n] children/*[1]; [t] "\u00fcber"; [n] children/*[2]; [p] (pause:short)',"self::underscore"],'Rule,underscript-limits,default,[n] children/*[1]; [t] "von"; [n] children/*[2],self::underscore,@role="underover",children/*[2][@role!="underaccent"]'.split(","),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),'Rule{number-with-chars{default{[t] "Zahl"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role="othernumber"{"" != translate(text(), "0123456789.,", ""){not(contains(@grammar, "protected"))'.split("{"),
'Rule,decimal-period,default,[t] "Dezimalbruch"; [n] children/*[1] (grammar:spaceout); [t] "Komma mit Periode";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role="sequence",count(./content/*)=1,./content/*[1][@role="fullstop"],name(children/*[1])="number",children/*[1][@role="integer"],name(children/*[3])="overscore",children/*[3][@role="integer"],children/*[3]/children/*[2][@role="overaccent"],children/*[3]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,decimal-period,default,[t] "Dezimalbruch"; [n] children/*[1] (grammar:spaceout); [t] "mit Periode";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role="implicit",count(./children/*)=2,name(children/*[1])="number",children/*[1][@role="float"],name(children/*[2])="overscore",children/*[2][@role="integer"],children/*[2]/children/*[2][@role="overaccent"],children/*[2]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,decimal-period-singular,default,[t] "Dezimalbruch"; [n] children/*[1] (grammar:spaceout); [t] "Komma mit Periode";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role="sequence",count(./content/*)=1,./content/*[1][@role="fullstop"],name(children/*[1])="number",children/*[1][@role="integer"],name(children/*[3])="overscore",children/*[3][@role="integer"],children/*[3]/children/*[2][@role="overaccent"],children/*[3]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],string-length(./children/*[3]/children/*[1]/text())=1'.split(","),
'Rule,decimal-period-singular,default,[t] "Dezimalbruch"; [n] children/*[1] (grammar:spaceout); [t] "mit Periode";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role="implicit",count(./children/*)=2,name(children/*[1])="number",children/*[1][@role="float"],name(children/*[2])="overscore",children/*[2][@role="integer"],children/*[2]/children/*[2][@role="overaccent"],children/*[2]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],string-length(./children/*[2]/children/*[1]/text())=1'.split(","),
'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, "spaceout")'.split(";"),'Rule;decimal-point;default;[t] "Komma";self::punctuation;@role="fullstop";contains(@grammar,"number")'.split(";"),'Rule,line-segment,default,[t] "die Strecke"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role="implicit",children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],name(children/*[1])="infixop",count(./children/*[1]/children/*)=2'.split(","),
'Rule,conjugate,Bar_Conjugate,[t] "die komplexe Konjugation von"; [n] children/*[1],self::overscore,children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),'Rule;defined-by;default;[t] "ist definiert als" (pause:short);self::overscore;@role="equality";@embellished="relation";name(children/*[2])="text";children/*[2][text()]="def"'.split(";"),'Rule,adorned-sign,default,[n] children/*[1] ; [t] "Zeichen mit dar\u00fcberstehendem"; [n] children/*[2],self::overscore,@embellished,name(children/*[1])="operator" or name(children/*[1])="relation"'.split(","),
'Rule;factorial;default;[t] "Fakult\u00e4t";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),["Rule","tensor-base","default","[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]","self::tensor"],'Rule{left-super{default{[t] "linker oberer Index"; [n] text(){self::*[@role="leftsuper"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{left-super{default{[t] "linker oberer Index"; [m] children/*{self::punctuated{@role="leftsuper"{not(contains(@grammar,"combinatorics"))'.split("{"),
'Rule{left-sub{default{[t] "linker unterer Index"; [n] text(){self::*[@role="leftsub"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{left-sub{default{[t] "linker unterer Index"; [m] children/*{self::punctuated{@role="leftsub"{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-super{default{[t] "rechter oberer Index"; [n] text(){self::*[@role="rightsuper"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-super{default{[t] "rechter oberer Index"; [m] children/*{self::punctuated{@role="rightsuper"{not(contains(@grammar,"combinatorics"))'.split("{"),
'Rule{right-sub{default{[t] "rechter unterer Index"; [n] text(){self::*[@role="rightsub"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-sub{default{[t] "rechter unterer Index"; [m] children/*{self::punctuated{@role="rightsub"{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role="rightsub" or @role="rightsuper" or @role="leftsub" or @role="leftsuper"'.split(";"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="P" or text()="C"]'.split(","),
'Rule,choose,CombinationPermutation_ChoosePermute,[n] children/*[4] (grammar:combinatorics); [t] "aus"; [n] children/*[2] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="C"]'.split(","),'Rule,permute,CombinationPermutation_ChoosePermute,[n] children/*[4] (grammar:combinatorics); [t] "Permutionen von"; [n] children/*[2] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="P"]'.split(",")]};
sre.Grammar.getInstance().setPreprocessor("numbers2alpha",sre.ClearspeakUtil.numbersToAlpha);sre.ClearspeakRules={domain:"clearspeak",functions:[["CTXF","CTXFpauseSeparator",sre.StoreUtil.pauseSeparator],["CTXF","CTXFnodeCounter",sre.ClearspeakUtil.nodeCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CSF","CSFvulgarFraction",sre.NumbersUtil.vulgarFraction],["CQF","CQFvulgarFractionSmall",sre.ClearspeakUtil.isSmallVulgarFraction],["CQF","CQFcellsSimple",sre.ClearspeakUtil.allCellsSimple],["CSF","CSFordinalExponent",sre.ClearspeakUtil.ordinalExponent],["CSF","CSFwordOrdinal",
sre.ClearspeakUtil.wordOrdinal],["CQF","CQFisCapital",sre.ClearspeakUtil.isCapitalLetter],["CQF","CQFmatchingFences",sre.ClearspeakUtil.matchingFences],["CSF","CSFnestingDepth",sre.ClearspeakUtil.nestingDepth],["CQF","CQFfencedArguments",sre.ClearspeakUtil.fencedArguments],["CQF","CQFsimpleArguments",sre.ClearspeakUtil.simpleArguments],["CQF","CQFisHyperbolic",sre.ClearspeakUtil.isHyperbolic],["CQF","CQFisLogarithm",sre.ClearspeakUtil.isLogarithmWithBase],["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber],
["CQF","CQFfirstCurrency",sre.ClearspeakUtil.firstCurrency],["CQF","CQFlastCurrency",sre.ClearspeakUtil.lastCurrency]],rules:['Rule{collapsed{default{[t] "collapsed"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),["Rule","stree","default","[n] ./*[1]","self::stree"],["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::number;contains(@grammar, "protected")'.split(";"),
["Rule","omit-empty","default",'[p] (pause:"short")',"self::empty"],'Rule{font{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:"short"){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:"short"){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),
'Rule{german-font{default{[t] "German"; [n] self::* (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font="fraktur"'.split("{"),'Rule{german-font{default{[t] "bold German"; [n] self::* (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font="bold-fraktur"'.split("{"),["Rule","text","default","[n] text()","self::text"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps="cap");self::identifier;@role="latinletter" or @role="greekletter" or @role="simple function";CQFisCapital'.split(";"),
'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role="latinletter" or @role="greekletter";CQFisCapital'.split(";"),'Rule{capital{Caps_SayCaps{[p] (pause:"short"); [n] text(){self::identifier{@role="latinletter" or @role="greekletter"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])="function"){not(contains(@grammar, "angle"))'.split("{"),'Rule;capital;Caps_SayCaps;[n] text() (pause:"short");self::identifier;@role="latinletter" or @role="greekletter";CQFisCapital;following-sibling::*[1]'.split(";"),
'Rule{capital{Caps_SayCaps{[p] (pause:"short"); [n] text() (pause:"short"){self::identifier{@role="latinletter" or @role="greekletter"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])="function"){not(contains(@grammar, "angle"))'.split("{"),'Rule,punctuation-lr,default,[p] (pause:"short"); [n] text() (pause:"short"),self::punctuation,@role="comma"'.split(","),'Rule;punctuation;default;[n] text();self::punctuation;@role="comma";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(";"),
'Rule,punctuation-l,default,[p] (pause:"short"); [n] text(),self::punctuation,@role="comma",not(following-sibling::*[1]/children)'.split(","),'Rule;punctuation-r;default;[n] text() (pause:"short");self::punctuation;@role="comma";not(preceding-sibling::*[1]/children)'.split(";"),'Rule;ellipsis;Ellipses_AndSoOn;[t] "and so on";self::punctuation;@role="ellipsis";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role="ellipsis"])'.split(";"),'Rule;ellipsis;Ellipses_AndSoOn;[t] "and so on up to";self::punctuation;@role="ellipsis";preceding-sibling::*[1];following-sibling::*[1]'.split(";"),
'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:"short"); [t] "evaluated at"; [n] content/*[1]/children/*[2]; [p] (pause:"short"),self::punctuated,@role="endpunct",content/*[1][@role="vbar"],content/*[1][@embellished],name(content/*[1])="subscript"'.split(","),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:"short"); [t] "evaluated at"; [n] content/*[1]/children/*[2]; [p] (pause:"short"); [t] "minus the same expression evaluated at"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:"short"),self::punctuated,@role="endpunct",content/*[1][@role="vbar"],content/*[1][@embellished],name(content/*[1])="superscript",name(content/*[1]/children/*[1])="subscript"'.split(","),
'Rule;vbar-such-that;VerticalLine_SuchThat;[t] "such that";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;vbar-such-that;VerticalLine_Divides;[t] "divides";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;vbar-such-that;VerticalLine_Given;[t] "given";self::punctuation;@role="vbar";not(parent::*/parent::*[@embellished="punctuation"])'.split(";"),'Rule;set-member;default;[t] "in";self::operator;@role="set extended";text()="\u2208" or text()="\u220a"'.split(";"),
["SpecializedRule","set-member","default","SetMemberSymbol_Member",'[t] "member of"'],["SpecializedRule","set-member","default","SetMemberSymbol_Element",'[t] "element of"'],["SpecializedRule","set-member","default","SetMemberSymbol_Belongs",'[t] "belonging to"'],'Rule;set-not-member;default;[t] "not in";self::operator;@role="set extended";text()="\u2209"'.split(";"),["SpecializedRule","set-not-member","default","SetMemberSymbol_Member",'[t] "not member of"'],["SpecializedRule","set-not-member","default",
"SetMemberSymbol_Element",'[t] "not element of"'],["SpecializedRule","set-not-member","default","SetMemberSymbol_Belongs",'[t] "not belonging to"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"],self::*'.split(","),'Rule,feet,default,[n] children/*[1]; [t] "feet",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2032"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,foot,default,[n] children/*[1]; [t] "foot",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2032"],children/*[1][text()="1"],not(preceding-sibling::*[@role="degree"])'.split(","),
'Rule,inches,default,[n] children/*[1]; [t] "inches",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2033"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,inch,default,[n] children/*[1]; [t] "inch",self::superscript,children/*[2][@role="prime"],name(children/*[1])="number",children/*[2][text()="\u2033"],children/*[1][text()="1"],not(preceding-sibling::*[@role="degree"])'.split(","),'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] "minutes",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2032"]'.split(","),
'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] "minute",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] "seconds",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2033"]'.split(","),'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] "second",self::superscript,children/*[2][@role="prime"],preceding-sibling::*[@role="degree"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),
'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] "degrees"; [p] (pause:short),self::punctuation,@role="degree"'.split(","),'Rule,degree-angle,Prime_Angle,[n] children/*[1]; [t] "degree"; [p] (pause:short),self::punctuation,@role="degree",children/*[1][text()="1"]'.split(","),'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] "minutes"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2032"]'.split("{"),
'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] "minute"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] "seconds"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2033"]'.split("{"),
'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] "second"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] "feet"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2032"]'.split("{"),
'Rule,foot-length,Prime_Length,[n] children/*[1]; [t] "foot"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2032"],children/*[1][text()="1"]'.split(","),'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] "inches"; [p] (pause:short){self::superscript{children/*[2][@role="prime"]{name(children/*[1])="number" or (children/*[1][@role="latinletter"] and ""=translate(children/*[1]/text(),"abcdefghijklmnopqrstuvwxyz", "")){children/*[2][text()="\u2033"]'.split("{"),
'Rule,inch-length,Prime_Length,[n] children/*[1]; [t] "inch"; [p] (pause:short),self::superscript,children/*[2][@role="prime"],children/*[2][text()="\u2033"],children/*[1][text()="1"]'.split(","),["Rule","punctuated","default","[m] children/*","self::punctuated"],["Rule","function","default","[n] text()","self::function"],'Rule{function-article{default{[t] "the"; [n] text(){self::function{@role="prefix function"{contains(@grammar, "addArticle")'.split("{"),["Rule","appl","default",'[n] children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:"short")',
"self::appl"],'Rule,appl-simple,default,[n] children/*[1]; [t] "of"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="simple function",name(children/*[2])="appl"'.split(","),'Rule,appl-simple,default,[n] children/*[1]; [t] "of"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="simple function",name(children/*[2])="fenced",name(children/*[2]/children/*[1])="appl"'.split(","),["Rule","appl","Functions_None",'[p] (pause:"short"); [n] children/*[1]; [t] "times"; [n] children/*[2]; [p] (pause:"short")',
"self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role="prefix function"'.split(","),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:"short"){self::appl{@role="prefix function"{parent::*/parent::infixop[@role="implicit"]{following-sibling::*{not(contains(@grammar, "impliedTimes"))'.split("{"),'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role="prefix function"{name(children/*[2])="fenced"{contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){name(children/*[2]/children/*[1])!="number"{name(children/*[2]/children/*[1])!="identifier"{name(children/*[2]/children/*[1])!="appl"'.split("{"),
'Rule,function-prefix-embell,default,[p] (pause:"short"); [n] children/*[1]; [n] children/*[2]; [p] (pause:"short"); ,self::appl,@role="prefix function",name(children/*[1])!="function"'.split(","),'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:"short"); [n] children/*[1] (grammar:addArticle); [t] "of"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or name(children/*[2])="fraction" or (name(children/*[2])!="fenced" and not(contains(children/*[2]/@annotation, "clearspeak:simple"))){self::*'.split("{"),
'Rule,function-prefix-subscript,default,[p] (pause:"short"); [n] children/*[1] (grammar:addArticle); [t] "of"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",name(children/*[1])="subscript",self::*'.split(","),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(following-sibling::*){not(contains(@grammar, "NatLog"))'.split("{"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(contains(@grammar, "NatLog"))'.split("{"),
'Rule{function-ln{default{[n] children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{name(children/*[2])="fenced"{not(contains(@grammar, "NatLog"))'.split("{"),'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role="prefix function";content/*[2][text()="ln"];not(following-sibling::*);not(contains(@grammar, "NatLog"))'.split(";"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:"short"){self::appl{@role="prefix function"{content/*[2][text()="ln"]{not(contains(@grammar, "NatLog"))'.split("{"),
'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] "of"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(parent::*/parent::*)="superscript"{not(following-sibling::*){(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or name(children/*[2])="fraction" or (name(children/*[2])!="fenced" and not(contains(children/*[2]/@annotation, "clearspeak:simple")))'.split("{"),'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] "of"; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",name(parent::*/parent::*)="superscript",not(following-sibling::*),name(children/*[1])="subscript"'.split(","),
'Rule,function-prefix-hyper,default,[p] (pause:"short"); [n] children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",CQFisHyperbolic'.split(","),'Rule{function-prefix-inverse{default{[p] (pause:"short"); [t] "the inverse"; [n] children/*[1]/children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),
'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:"short"); [n] children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:"short"),self::appl,@role="prefix function",name(children/*[1])="superscript",name(children/*[1]/children/*[2])="prefixop",children/*[1]/children/*[2][@role="negative"],children/*[1]/children/*[2]/children/*[1][text()="1"]'.split(","),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:"short"); [t] "arc"; [n] children/*[1]/children/*[1]; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),
'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:"short"); [t] "arc"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{name(children/*[2])="fenced"{children/*[2]/children/*[1][@role="prefix function"]{contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){not(contains(@grammar, "functions_none"))'.split("{"),
'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:"short"); [t] "arc"; [n] children/*[1]/children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:"short"){self::appl{@role="prefix function"{name(children/*[1])="superscript"{name(children/*[1]/children/*[2])="prefixop"{children/*[1]/children/*[2][@role="negative"]{children/*[1]/children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none")){(name(children/*[2])="fenced" and not(contains(children/*[2]/children/*[1]/@annotation, "clearspeak:simple"))) or (name(children/*[2])="fraction" and children/*[2][@role!="vulgar"])'.split("{"),
'Rule{function-inverse{default{[n] children/*[1]; [t] "inverse"{self::superscript{@role="prefix function" or @role="simple function"{name(children/*[2])="prefixop"{children/*[2][@role="negative"]{children/*[2]/children/*[1][text()="1"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule,superscript-prefix-function,default,[t] "the"; [n] children/*[2] (grammar:ordinal); [t] "power of"; [n] children/*[1],self::superscript,@role="prefix function",name(children/*[2])="number",children/*[2][@role="integer"]'.split(","),
'Rule,superscript-prefix-function,default,[t] "the"; [n] children/*[2] (grammar:ordinal); [t] "power of"; [n] children/*[1],self::superscript,@role="prefix function",name(children/*[2])="identifier"'.split(","),'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role="prefix function" or @role="simple function";name(children/*[2])="prefixop";children/*[2][@role="negative"];children/*[2]/children/*[1][text()="1"];not(contains(@grammar, "functions_none"))'.split(";"),
["Rule","superscript","default",'[n] children/*[1]; [t] "raised to the exponent" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "end exponent" (pause:"short")',"self::superscript"],'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] "raised to the"; [n] children/*[2]; [t] "power" (pause:"short"),self::superscript,not(descendant::superscript)'.split(","),'Rule,superscript-simple-exponent-end,default,[n] children/*[1]; [t] "raised to the"; [n] children/*[2]; [t] "power",self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(","),
'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="number";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"];name(children/superscript/children/*[1])="fraction";contains(children/superscript/children/*[1]/@annotation, "clearspeak:simple")'.split(";"),
["Aliases","superscript-simple-exponent","self::superscript",'children/superscript/children/*[2][text()="2"] or children/superscript/children/*[2][text()="3"]','name(children/superscript/children/*[1])="identifier"'],'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role="implicit"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, "simple");name(children/*[2]/children/*[2])="superscript";(name(children/*[2]/children/*[2]/children/*[1])="number" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple")) or name(children/*[2]/children/*[2]/children/*[1])="identifier";children/*[2]/children/*[2]/children/*[2][text()="2"] or children/*[2]/children/*[2]/children/*[2][text()="3"]'.split(";"),
'Rule,superscript-ordinal,default,[n] children/*[1]; [t] "to the"; [n] children/*[2] (grammar:ordinal); [t] "power" (pause:"short"),self::superscript,name(children/*[2])="number",children/*[2][@role="integer"]'.split(","),["Aliases","superscript-ordinal","self::superscript",'name(children/*[2])="identifier"','children/*[2][@role="latinletter" or @role="greekletter" or @role="otherletter"]'],'Rule,superscript-non-ordinal,default,[n] children/*[1]; [t] "to the"; [n] children/*[2]; [t] "power" (pause:"short"),self::superscript,children/*[2][@role="negative"],name(children/*[2]/children/*[1])="number",children/*[2]/children/*[1][@role="integer"]'.split(","),
'Rule{superscript-simple-function{default{[t] "the"; [n] children/*[2] (grammar:ordinal); [t] "power of" (pause:"short"); [n] children/*[1]{self::superscript{name(children/*[1])="identifier"{children/*[1][@role="simple function"]{children/*[2][@role!="prime"]{not(contains(@grammar, "functions_none"))'.split("{"),'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])="identifier";children/*[1][@role="simple function"];not(contains(@grammar, "functions_none"))'.split(";"),
'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] "to the"; [n] children/*[2] (grammar:ordinal); [p] (pause:"short"),self::superscript,name(children/*[2])="number",children/*[2][@role="integer"]'.split(","),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] "to the"; [n] children/*[2]; [p] (pause:"short"),self::superscript,name(children/*[2])="prefixop",children/*[2][@role="negative"],name(children/*[2]/children/*[1])="number",children/*[2]/children/*[1][@role="integer"]'.split(","),
'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] "to the"; [n] children/*[2] (grammar:ordinal); [p] (pause:"short"),self::superscript,name(children/*[2])="identifier",children/*[2][@role="latinletter" or @role="greekletter" or @role="otherletter"]'.split(","),'Rule,superscript-ordinal-default,Exponent_Ordinal,[n] children/*[1]; [t] "raised to the exponent" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "end exponent" (pause:"short"),self::superscript,children//superscript'.split(","),
'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] "to the"; [n] children/*[2] (grammar:ordinal); [t] "power"; [p] (pause:"short"),self::superscript,name(children/*[2])="number",children/*[2][@role="integer"]'.split(","),'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] "to the"; [n] children/*[2]; [t] "power"; [p] (pause:"short"),self::superscript,name(children/*[2])="prefixop",children/*[2][@role="negative"],name(children/*[2]/children/*[1])="number",children/*[2]/children/*[1][@role="integer"]'.split(","),
'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] "to the"; [n] children/*[2] (grammar:ordinal); [t] "power"; [p] (pause:"short"),self::superscript,name(children/*[2])="identifier",children/*[2][@role="latinletter" or @role="greekletter" or @role="otherletter"]'.split(","),'Rule,superscript-ordinal-default,Exponent_OrdinalPower,[n] children/*[1]; [t] "raised to the exponent" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "end exponent" (pause:"short"),self::superscript,children//superscript'.split(","),
["Rule","superscript-power","Exponent_AfterPower",'[n] children/*[1]; [t] "raised to the power"; [n] children/*[2] (grammar:afterPower); [p] (pause:"short")',"self::superscript"],'Rule,superscript-power-default,Exponent_AfterPower,[n] children/*[1]; [t] "raised to the exponent" (pause:"short"); [n] children/*[2]; [p] (pause:"short"); [t] "end exponent" (pause:"short"),self::superscript,children//superscript'.split(","),'Rule{exponent{default{[n] text() (join:"-"); [t] "th"{self::identifier{contains(@grammar, "ordinal")'.split("{"),
'Rule;exponent;default;[t] CSFordinalExponent;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),'Rule;exponent;Exponent_Ordinal;[t] CSFwordOrdinal;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),'Rule;exponent;Exponent_Ordinal;[t] "zero";self::number;@role="integer";contains(@grammar, "ordinal");text()="0"'.split(";"),'Rule;exponent;Exponent_OrdinalPower;[t] CSFwordOrdinal;self::number;@role="integer";contains(@grammar, "ordinal");text()!="0"'.split(";"),
'Rule;exponent;Exponent_OrdinalPower;[t] "zero";self::number;@role="integer";contains(@grammar, "ordinal");text()="0"'.split(";"),'Rule,square,default,[n] children/*[1]; [t] "squared",self::superscript,@role!="unit",children/*[2][text()="2"],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),self::*'.split(","),'Rule,cube,default,[n] children/*[1]; [t] "cubed",self::superscript,@role!="unit",children/*[2][text()="3"],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),self::*'.split(","),
'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role="leftright";contains(children/*[1]/@annotation, "clearspeak:simple");name(../..)!="superscript" and name(../..)!="subscript"'.split(";"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role="leftright";name(../..)="superscript";children/*[1][@role="integer"] or children/*[1][@role="float"] or (children/*[1][@role="vulgar"] and contains(children/*[1]/@annotation, "clearspeak:simple")) or children/*[1][@role="latinletter"] or children/*[1][@role="greekletter"] or children/*[1][@role="otherletter"]'.split(";"),
'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role="leftright";name(../*[1])="identifier" or name(../*[1])="function";parent::*/parent::*[@role="simple function" or @role="prefix function"];children/*[1][@role="simple function" or @role="prefix function"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple") or name(children/*[1]/children/*[2]/children/*[1])="subscript" or name(children/*[1]/children/*[2]/children/*[1])="superscript" or children/*[1]/children/*[2]/children/*[1][@role="vulgar"] '.split(";"),
'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{children/*[1][@role="simple function" or @role="prefix function"]{name(children/*[1]/children/*[1])="identifier" or name(children/*[1]/children/*[1])="function"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple"){name(children/*[1]/children/*[2]/children/*[1])="identifier" or name(children/*[1]/children/*[2]/children/*[1])="number"'.split("{"),
'Rule,fences-open-close,default,[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"),self::fenced,@role="leftright"'.split(","),'Rule{paren-simple-nested-func{default{[p] (pause:"short"); [n] content/*[1]; [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2]; [p] (pause:"short"){self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{not(contains(children/*[1]/@annotation, "clearspeak:simple"))'.split("{"),
'Rule{paren-simple-nested-func{Functions_None{[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"){self::fenced{@role="leftright"{name(../*[1])="identifier" or name(../*[1])="function"{parent::*/parent::*[@role="simple function" or @role="prefix function"]{children/*[1][@role="simple function" or @role="prefix function"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, "clearspeak:simple") or name(children/*[1]/children/*[2]/children/*[1])="subscript" or name(children/*[1]/children/*[2]/children/*[1])="superscript" or children/*[1]/children/*[2]/children/*[1][@role="vulgar"] '.split("{"),
["SpecializedRule","fences-open-close","default","Paren_Speak"],["Aliases","fences-open-close","self::fenced",'@role="composed function"'],["Rule","fence-silent","Paren_Silent",'[p] (pause:"short"); [n] children/*[1]; [p] (pause:"short")',"self::fenced"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:"short"); [n] content/*[1] (grammar:spokenFence); [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2] (grammar:spokenFence); [p] (pause:"short"),self::fenced,@role="leftright",parent::*/parent::*[@role!="simple function"],parent::*/parent::*[@role!="prefix function"]'.split(","),
'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, "spokenFence");CQFmatchingFences'.split(";"),["Rule","fence-no-nesting","Paren_SpeakNestingLevel","[n] text()","self::fence"],'Rule,fences-points,Paren_CoordPoint,[t] "the point with coordinates"; [n] children/*[1],self::fenced,name(children/*[1])="punctuated",children/*[1][@role="sequence"]'.split(","),'Rule{fences-interval{Paren_Interval{[t] "the interval from"; [n] children/*[1]/children/*[1]; [t] "to"; [n] children/*[1]/children/*[3]; [p] (pause:"short"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, "interval")){name(children/*[1])="punctuated"{children/*[1][@role="sequence"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role="comma"]'.split("{"),
'Rule{interval-open{Paren_Interval{[t] "not including"; [n] children/*[1]/children/*[1]; [t] "or"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"'.split("{"),'Rule{interval-closed-open{Paren_Interval{[t] "including"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [t] "but not including"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()=")"'.split("{"),
'Rule{interval-open-closed{Paren_Interval{[t] "not including"; [n] children/*[1]/children/*[1]; [p] (pause:"short"); [t] "but including"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()="]"'.split("{"),'Rule{interval-closed{Paren_Interval{[t] "including"; [n] children/*[1]/children/*[1]; [t] "and"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()="]"'.split("{"),
'Rule{interval-open-inf-r{Paren_Interval{[t] "not including"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"{children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e")'.split("{"),'Rule{interval-open-inf-l{Paren_Interval{[t] "not including"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()=")"{children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split("{"),
'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, "interval");content/*[1]/text()="(";content/*[2]/text()=")";children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e");children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split(";"),'Rule{interval-closed-open-inf{Paren_Interval{[t] "including"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="["{content/*[2]/text()=")"{children/*[1]/children/*[3]/text()="\u221e" or (name(children/*[1]/children/*[3])="prefixop" and children/*[1]/children/*[3]/children/*[1]/text()="\u221e")'.split("{"),
'Rule{interval-open-closed-inf{Paren_Interval{[t] "including"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, "interval"){content/*[1]/text()="("{content/*[2]/text()="]"{children/*[1]/children/*[1]/text()="\u221e" or (name(children/*[1]/children/*[1])="prefixop" and children/*[1]/children/*[1]/children/*[1]/text()="\u221e")'.split("{"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:"short"); [n] content/*[1]; [p] (pause:"short"); [n] children/*[1]; [p] (pause:"short"); [n] content/*[2]; [p] (pause:"short"),self::fenced,@role="leftright",name(../..)="appl",name(children/*[1]) = "appl",preceding-sibling::*/descendant-or-self::*[@role="subsup"] or children/*[1]/descendant-or-self::*[@role="subsup"]'.split(","),
'Rule;set-empty;default;[t] "the empty set";self::fenced;@role="set empty"'.split(";"),'Rule,set-extended,default,[t] "the set of all"; [n] children/*[1]/children/*[1]; [t] "such that"; [n] children/*[1]/children/*[3],self::fenced,@role="set extended"'.split(","),'Rule,set-collection,default,[t] "the set"; [n] children/*[1],self::fenced,@role="set collection"'.split(","),["Aliases","set-collection","self::fenced",'@role="set singleton"'],'Rule,set-extended,Sets_woAll,[t] "the set of"; [n] children/*[1]/children/*[1]; [t] "such that"; [n] children/*[1]/children/*[3],self::fenced,@role="set extended"'.split(","),
'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role="set collection"'.split(";"),["Rule","subscript","default",'[p] (pause:short); [n] children/*[1]; [t] "sub"; [n] children/*[2]; [p] (pause:short)',"self::subscript"],'Rule,subscript-base,default,[n] children/*[1]; [t] "base"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(","),'Rule{subscript-index{default{[n] children/*[1]; [t] "sub"; [n] children/*[2]{self::subscript{contains(@grammar, "simpleDet")'.split("{"),
["Rule","fraction","default",'[p] (pause:short); [t] "the fraction with numerator"; [n] children/*[1]; [p] (pause:short); [t] "and denominator"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],'Rule,fraction,Functions_None,[p] (pause:short); [t] "the fraction with numerator"; [n] children/*[1]; [p] (pause:short); [t] "and denominator"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="appl" or name(children/*[2])="appl"'.split(","),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, "clearspeak:simple") or contains(children/*[1]/@annotation, "clearspeak:unit"){contains(children/*[2]/@annotation, "clearspeak:simple") or contains(children/*[2]/@annotation, "clearspeak:unit")'.split("{"),
'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short),self::fraction,@role="vulgar"'.split(","),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="text",name(children/*[2])="text"'.split(","),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])="infixop",children/*[1][@role="unit"],name(children/*[2])="text"'.split(","),
'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["Rule","fraction","Fraction_Over",'[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_OverEndFrac",'[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short); [t] "end fraction"; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_FracOver",'[p] (pause:short); [t] "the fraction"; [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short)',
"self::fraction"],["Rule","fraction","Fraction_Per",'[p] (pause:short); [n] children/*[1]; [t] "per"; [n] children/*[2]; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_GeneralEndFrac",'[p] (pause:short); [t] "the fraction with numerator"; [n] children/*[1]; [p] (pause:short); [t] "and denominator"; [n] children/*[2]; [p] (pause:short); [t] "end fraction"; [p] (pause:short)',"self::fraction"],["Rule","fraction","Fraction_General",'[p] (pause:short); [t] "the fraction with numerator"; [n] children/*[1]; [p] (pause:short); [t] "and denominator"; [n] children/*[2]; [p] (pause:short)',
"self::fraction"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction;self::fraction;@role="vulgar"'.split(";"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] "end fraction"; [p] (pause:short){self::fraction{not(contains(@grammar, "endfrac")){not(contains(children/*[1]/@annotation, "clearspeak:unit")){not(contains(children/*[2]/@annotation, "clearspeak:unit"))'.split("{"),'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])="fraction"{name(children/*[2])="fraction"{contains(children/*[1]/@annotation, "clearspeak:simple"){contains(children/*[2]/@annotation, "clearspeak:simple")'.split("{"),
'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction;self::fraction;@role="vulgar";contains(@annotation, "clearspeak:simple");self::*'.split(";"),["Rule","sqrt","default",'[t] "the square root of"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',"self::sqrt"],'Rule,sqrt-nested,default,[p] (pause: "short"); [t] "the square root of"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),
'Rule,negative-sqrt,default,[t] "the negative square root of"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role="negative",name(children/*[1])="sqrt"'.split(","),'Rule,negative-sqrt,default,[p] (pause: "short"); [t] "the negative square root of"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role="negative",name(children/*[1])="sqrt",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] "the positive square root of"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),
'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: "short"); [t] "the positive square root of"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] "the positive square root of"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),
'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: "short"); [t] "the positive square root of"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role="addition"]) or (parent::*/parent::*[1]/text()!="\u00b1" and parent::*/parent::*/text()!="\u2213")'.split(","),'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "end root"; [p] (pause:short){self::sqrt{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "end root"; [p] (pause:short){self::prefixop{@role="negative"{name(children/*[1])="sqrt"{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "end root"; [p] (pause:short){self::sqrt{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "end root"; [p] (pause:short){self::prefixop{@role="negative"{name(children/*[1])="sqrt"{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule,cube,default,[t] "the cube root of"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()="3"]'.split(","),'Rule,cube-nested,default,[p] (pause:short); [t] "the cube root of"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()="3"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),["Rule","root","default",'[t] "the"; [n] children/*[1] (grammar:ordinal); [t] "root of"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',
"self::root"],'Rule,root-nested,default,[p] (pause:short); [t] "the"; [n] children/*[1] (grammar:ordinal); [t] "root of"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(","),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] "end root"; [p] (pause:short){self::root{not(contains(@grammar, "EndRoot"))'.split("{"),'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] "end root"; [p] (pause:short){self::root{not(contains(@grammar, "EndRoot"))'.split("{"),
'Rule,negative,default,[t] "negative"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),'Rule,positive,default,[t] "positive"; [n] children/*[1],self::prefixop,@role="positive"'.split(","),'Rule,angle-measure,default,[t] "the measure of"; [n] content/*[1]; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()="\u2220",children/*[1][text()="m"]'.split(","),["Rule","prefix","default","[m] content/* (grammar:prefix); [n] children/*[1]","self::prefixop"],["Rule","postfix","default",
"[n] children/*[1]; [m] content/* (grammar:postfix)","self::postfixop"],'Rule{set-prefix-operators{default{[t] "the"; [n] self::* (grammar:!prefix); [t] "of"{self::*{contains(@grammar,"prefix"){descendant-or-self::*/text()="\u2229" or descendant-or-self::*/text()="\u222a"{self::*{self::*{self::*'.split("{"),["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role="implicit"'.split(","),
'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role="implicit",name(children/*[1])="appl"'.split(","),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role="implicit",name(children/*[last()])="appl"'.split(","),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role="implicit",name(children/*[1])="appl",name(children/*[last()])="appl"'.split(","),
'Rule;implicit-times;default;[p] (pause:short);self::operator;@role="multiplication";text()="\u2062"'.split(";"),'Rule implicit-times default  self::operator @role="multiplication" text()="\u2062" CQFsimpleArguments'.split(" "),'Rule;implicit-times;default;[n] text();self::operator;@role="multiplication";text()="\u2062";CQFfencedArguments'.split(";"),'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role="multiplication";text()="\u2062"'.split(";"),'Rule implicit-times ImpliedTimes_None  self::operator @role="multiplication" text()="\u2062"'.split(" "),
'Rule{binary-operation-simple{default{[m] children/* (rate:"0.5"); [p] (pause:short){self::infixop{@role="implicit"{contains(@annotation, "clearspeak:simple"){not(contains(@grammar, "inFrac"))'.split("{"),'Rule;simple-in-fraction;default;[n] . (rate:"0.5",grammar:inFrac);self::*;contains(@annotation, "clearspeak:simple");not(contains(@grammar, "inFrac"));name(.)!="identifier";name(.)!="function";name(.)!="number";name(parent::*/parent::*)="fraction";not(preceding-sibling::*)'.split(";"),'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:"0.5");self::infixop;@role="implicit";contains(@grammar, "afterPower")'.split(";"),
["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],'Rule;natural-numbers;default;[t] "the natural numbers";self::identifier;text()="\u2115" or (text()="N" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule;integers;default;[t] "the integers";self::identifier;text()="\u2124" or (text()="Z" and @font="double-struck");self::*;self::*;self::*'.split(";"),
'Rule;rational-numbers;default;[t] "the rational numbers";self::identifier;text()="\u211a" or (text()="Q" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule;real-numbers;default;[t] "the real numbers";self::identifier;text()="\u211d" or (text()="R" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule;complex-numbers;default;[t] "the complex numbers";self::identifier;text()="\u2102" or (text()="C" and @font="double-struck");self::*;self::*;self::*'.split(";"),'Rule,natural-numbers-super,default,[t] "n" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2115" or (children/*[1]/text()="N" and @font="double-struck"),self::*,self::*,self::*'.split(","),
'Rule,integers-super,default,[t] "z" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule,rational-numbers-super,default,[t] "q" (join: "-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule,real-numbers-super,default,[t] "r" (join:"-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u211d" or (children/*[1]/text()="R" and @font="double-struck"),self::*,self::*,self::*'.split(","),
'Rule,complex-numbers-super,default,[t] "c" (join:"-"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()="\u2102" or (children/*[1]/text()="C" and @font="double-struck"),self::*,self::*,self::*'.split(","),'Rule;natural-numbers-with-zero;default;[t] "the natural numbers with zero";self::subscript;children/*[1]/text()="\u2115" or (children/*[1]/text()="N" and @font="double-struck");children/*[2]/text()="0"'.split(";"),'Rule;positive-integers;default;[t] "the positive integers";self::superscript;children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck");children/*[2]/text()="+";self::*;self::*;self::*'.split(";"),
'Rule;positive-integers;default;[t] "the negative integers";self::superscript;children/*[1]/text()="\u2124" or (children/*[1]/text()="Z" and @font="double-struck");children/*[2]/text()="-";self::*;self::*;self::*'.split(";"),'Rule;positive-rational-numbers;default;[t] "the positive rational numbers";self::superscript;children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck");children/*[2]/text()="+";self::*;self::*;self::*'.split(";"),'Rule;negative-rational-numbers;default;[t] "the negative rational numbers";self::superscript;children/*[1]/text()="\u211a" or (children/*[1]/text()="Q" and @font="double-struck");children/*[2]/text()="-";self::*;self::*;self::*'.split(";"),
'Rule,fences-neutral,default,[p] (pause:short); [t] "the absolute value of"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] "the absolute value of"; [n] children/*[1]; [p] (pause: short); [t] "end absolute value"; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] "the cardinality of"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] "the determinant of"; [n] children/*[1]; [p] (pause: short),self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["Rule","matrix","default",'[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "matrix"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:"); [p] (pause:long)',"self::matrix"],'Rule{matrix-simple{default{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "matrix"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
'Rule,matrix-trivial,default,[t] "the 1 by 1 matrix with entry"; [n] children/*[1]; [p] (pause:long),self::vector,@role="squarematrix"'.split(","),'Rule{determinant{default{[t] "the determinant of the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "matrix"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="determinant"{count(children/*)<4{CQFcellsSimple'.split("{"),'Rule{determinant-simple{default{[t] "the determinant of the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "matrix"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:"); [p] (pause:long){self::matrix{@role="determinant"'.split("{"),
["Rule","matrix-vector","default",'[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "column matrix"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:",grammar:simpleDet); [p] (pause:long)',"self::vector"],["SpecializedRule","matrix-vector","default","Matrix_SpeakColNum"],'Rule{matrix-vector-simple{default{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "column matrix"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!="squarematrix"'.split("{"),
["Rule","matrix-vector-simple","Matrix_SilentColNum",'[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "column matrix"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long)',"self::vector"],'Rule{matrix-row-vector{default{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "row matrix"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:"Column-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),
["SpecializedRule","matrix-row-vector","default","Matrix_SpeakColNum"],'Rule{matrix-row-vector-simple{default{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "row matrix"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "row matrix"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),
'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short");self::row;contains(@grammar, "simpleDet")'.split(";"),["Rule","matrix-row-simple","Matrix_SilentColNum",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short")',"self::row"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, "simpleDet")'.split(";"),["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"Column-,- ",sepFunc:CTXFpauseSeparator,separator:"medium"); [p] (pause:long)',
"self::row"],["SpecializedRule","matrix-row","default","Matrix_SpeakColNum"],["Rule","matrix-cell","default","[n] children/*[1]","self::cell"],'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "end matrix"{self::matrix{not(contains(@grammar, "EndMatrix"))'.split("{"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "end matrix"{self::vector{not(contains(@grammar, "EndMatrix"))'.split("{"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] "end determinant"{self::matrix{@role="determinant"{not(contains(@grammar, "EndMatrix"))'.split("{"),
["Rule","vector","Matrix_Vector",'[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "column vector"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:",grammar:simpleDet); [p] (pause:long)',"self::vector"],["SpecializedRule","vector","Matrix_Vector","Matrix_EndVector"],'Rule{vector-simple{Matrix_Vector{[t] "the"; [t] count(children/*);  [t] "by"; [t] count(children/*[1]/children/*); [t] "column vector"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split("{"),
["SpecializedRule","vector-simple","Matrix_Vector","Matrix_EndVector"],'Rule{row-vector{Matrix_Vector{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "row vector"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:"Column-:",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"'.split("{"),["SpecializedRule","row-vector","Matrix_Vector","Matrix_EndVector"],'Rule{row-vector-simple{Matrix_Vector{[t] "the"; [t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "row vector"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:"short",grammar:simpleDet); [p] (pause:long){self::matrix{@role="rowvector"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split("{"),
["SpecializedRule","row-vector-simple","Matrix_Vector","Matrix_EndVector"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "end matrix"{self::matrix{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "end vector"{self::vector{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "end vector"{self::matrix{@role="rowvector"{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),
'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] "end determinant"{self::matrix{@role="determinant"{not(contains(@grammar, "EndMatrix")){self::*'.split("{"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[1]/children/*[1]; [t] "choose"; [n] children/*[2]/children/*[1]; ,self::vector,@role="binomial"'.split(","),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] "lines";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary")){self::*'.split("{"),
'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, "layoutSummary"));self::*'.split(";"),["Aliases","lines-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] "cases";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, "layoutSummary"))'.split("{"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, "layoutSummary"));self::*'.split(";"),
["Rule","lines","default",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Line-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',"self::table"],["Aliases","lines","self::multiline"],["Rule","line","default","[n] children/*[1]","self::line"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"medium");self::row;@role="table"'.split(";"),["Aliases","row-medium","self::row",'@role="cases"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"long");self::row;@role="table"'.split(";"),
["Aliases","row-long","self::row",'@role="cases"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:"short");self::row;@role="table"'.split(";"),["Aliases","row-short","self::row",'@role="cases"'],'Rule;blank-cell;default;[t] "blank";self::cell;count(children/*)=0'.split(";"),'Rule;blank-empty;default;[t] "blank";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),["Rule","cases","default",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Case-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::cases"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] "cases";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-cases-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-cases","MultiLineLabel_Case",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Case-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',"self::table"],
["Aliases","lines-cases","self::multiline"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] "equations";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-equations-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-equations","MultiLineLabel_Equation",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Equation-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-equations","self::multiline"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] "steps";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-steps-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-steps","MultiLineLabel_Step",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Step-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-steps","self::multiline"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] "rows";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-rows-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-rows","MultiLineLabel_Row",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Row-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-rows","self::multiline"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] "constraints";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, "layoutSummary"))'.split("{"),["Aliases","lines-constraints-summary","self::table",'not(contains(@grammar, "layoutSummary"))'],["Rule","lines-constraints","MultiLineLabel_Constraint",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:"Constraint-:",sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long)',
"self::table"],["Aliases","lines-constraints","self::multiline"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:"long"); [p] (pause:long){self::table{contains(@grammar, "layoutSummary")'.split("{"),["Aliases","lines-none","self::multiline",'contains(@grammar, "layoutSummary")'],["Aliases","lines-none","self::cases",'contains(@grammar, "layoutSummary")'],["Rule","bigop","default",'[t] "the"; [n] children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:short)',
"self::bigop"],["Rule","limboth","default",'[n] children/*[1]; [t] "from"; [n] children/*[2];[t] "to"; [n] children/*[3];',"self::limboth"],["Rule","limlower","default",'[n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short)',"self::limlower"],["Rule","limupper","default",'[n] children/*[1]; [t] "under"; [n] children/*[2]; [p] (pause:short)',"self::limupper"],["Rule","integral","default",'[t] "the"; [n] children/*[1]; [t] "of"; [n] children/*[2]; [p] (pause:short)',"self::integral"],
["Rule","overscript","default",'[n] children/*[1]; [t] "under"; [n] children/*[2]; [p] (pause:short)',"self::overscore"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role="overaccent"]'.split(","),'Rule,overscript-limits,default,[n] children/*[1]; [t] "to"; [n] children/*[2],self::overscore,children/*[2][@role!="overaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role!="underaccent"]'.split(","),["Rule","underscript","default",
'[n] children/*[1]; [t] "over"; [n] children/*[2]; [p] (pause:short)',"self::underscore"],'Rule,underscript-limits,default,[n] children/*[1]; [t] "from"; [n] children/*[2],self::underscore,@role="underover",children/*[2][@role!="underaccent"]'.split(","),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "and"; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),'Rule{number-with-chars{default{[t] "number"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role="othernumber"{"" != translate(text(), "0123456789.,", ""){not(contains(@grammar, "protected"))'.split("{"),
'Rule,decimal-period,default,[t] "the repeating decimal"; [n] children/*[1] (grammar:spaceout); [t] "point followed by repeating digits";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role="sequence",count(./content/*)=1,./content/*[1][@role="fullstop"],name(children/*[1])="number",children/*[1][@role="integer"],name(children/*[3])="overscore",children/*[3][@role="integer"],children/*[3]/children/*[2][@role="overaccent"],children/*[3]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,decimal-period,default,[t] "the repeating decimal"; [n] children/*[1] (grammar:spaceout); [t] "followed by repeating digits";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role="implicit",count(./children/*)=2,name(children/*[1])="number",children/*[1][@role="float"],name(children/*[2])="overscore",children/*[2][@role="integer"],children/*[2]/children/*[2][@role="overaccent"],children/*[2]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,decimal-period-singular,default,[t] "the repeating decimal"; [n] children/*[1] (grammar:spaceout); [t] "point followed by repeating digit";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role="sequence",count(./content/*)=1,./content/*[1][@role="fullstop"],name(children/*[1])="number",children/*[1][@role="integer"],name(children/*[3])="overscore",children/*[3][@role="integer"],children/*[3]/children/*[2][@role="overaccent"],children/*[3]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],string-length(./children/*[3]/children/*[1]/text())=1'.split(","),
'Rule,decimal-period-singular,default,[t] "the repeating decimal"; [n] children/*[1] (grammar:spaceout); [t] "followed by repeating digit";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role="implicit",count(./children/*)=2,name(children/*[1])="number",children/*[1][@role="float"],name(children/*[2])="overscore",children/*[2][@role="integer"],children/*[2]/children/*[2][@role="overaccent"],children/*[2]/children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],string-length(./children/*[2]/children/*[1]/text())=1'.split(","),
'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, "spaceout")'.split(";"),'Rule;decimal-point;default;[t] "point";self::punctuation;@role="fullstop";contains(@grammar,"number")'.split(";"),'Rule,line-segment,default,[t] "the line segment"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role="implicit",children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"],name(children/*[1])="infixop",count(./children/*[1]/children/*)=2'.split(","),
'Rule,conjugate,Bar_Conjugate,[t] "the complex conjugate of"; [n] children/*[1],self::overscore,children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),'Rule;defined-by;default;[t] "is defined to be" (pause:short);self::overscore;@role="equality";@embellished="relation";name(children/*[2])="text";children/*[2][text()]="def"'.split(";"),'Rule,adorned-sign,default,[n] children/*[1] ; [t] "sign with"; [n] children/*[2]; [t] "over it",self::overscore,@embellished,name(children/*[1])="operator" or name(children/*[1])="relation"'.split(","),
'Rule;factorial;default;[t] "factorial";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),["Rule","tensor-base","default","[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]","self::tensor"],'Rule{left-super{default{[t] "left super"; [n] text(){self::*[@role="leftsuper"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{left-super{default{[t] "left super"; [m] children/*{self::punctuated{@role="leftsuper"{not(contains(@grammar,"combinatorics"))'.split("{"),
'Rule{left-sub{default{[t] "left sub"; [n] text(){self::*[@role="leftsub"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{left-sub{default{[t] "left sub"; [m] children/*{self::punctuated{@role="leftsub"{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-super{default{[t] "right super"; [n] text(){self::*[@role="rightsuper"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-super{default{[t] "right super"; [m] children/*{self::punctuated{@role="rightsuper"{not(contains(@grammar,"combinatorics"))'.split("{"),
'Rule{right-sub{default{[t] "right sub"; [n] text(){self::*[@role="rightsub"]{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule{right-sub{default{[t] "right sub"; [m] children/*{self::punctuated{@role="rightsub"{not(contains(@grammar,"combinatorics"))'.split("{"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role="rightsub" or @role="rightsuper" or @role="leftsub" or @role="leftsuper"'.split(";"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="P" or text()="C"]'.split(","),
'Rule,choose,CombinationPermutation_ChoosePermute,[n] children/*[2] (grammar:combinatorics); [t] "choose"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="C"]'.split(","),'Rule,permute,CombinationPermutation_ChoosePermute,[n] children/*[2] (grammar:combinatorics); [t] "permute"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])="empty",name(children/*[5])="empty",children/*[1][text()="P"]'.split(","),
'Rule;unit-singular;default;[t] text() (grammar:annotation="unit":translate);self::identifier;@role="unit"'.split(";"),'Rule;unit-plural;default;[t] text() (grammar:annotation="unit":translate:plural);self::identifier;@role="unit";not(contains(@grammar, "singularUnit"))'.split(";"),'Rule,unit-square,default,[t] "square"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=2],name(children/*[1])="identifier"'.split(","),'Rule,unit-cubic,default,[t] "cubic"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=3],name(children/*[1])="identifier"'.split(","),
'Rule,unit-reciprocal,default,[t] "reciprocal"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!="unit"]'.split(","),'Rule,unit-reciprocal,default,[t] "per"; [n] children/*[1] (grammar:singularUnit),self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role="unit"]'.split(","),
'Rule;unit-combine;default;[m] children/*;self::infixop;@role="unit"'.split(";"),'Rule,unit-combine-singular,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); [m] children/*[position()>2],self::infixop,@role="unit",name(children/*[1])="number",children/*[1][text()=1]'.split(","),'Rule,unit-divide,default,[n] children/*[1]; [t] "per"; [n] children/*[2] (grammar:singularUnit),self::fraction,@role="unit"'.split(","),'Rule{currency{default{[m] children/*[position()>1]; [n] children/*[1];{self::infixop{contains(@annotation, "clearspeak:unit"){children/*[1][@role="unit"]{CQFfirstCurrency'.split("{"),
'Rule;currency;Currency_Position;[m] children/*;self::infixop;contains(@annotation, "clearspeak:unit")'.split(";"),["SpecializedRule","currency","Currency_Position","Currency_Prefix"],'Rule{currency{Currency_Prefix{[n] children/*[last()]; [m] children/*[position()<last()]; {self::infixop{contains(@annotation, "clearspeak:unit"){children/*[last()][@role="unit"]{CQFlastCurrency'.split("{")],initialize:[sre.ClearspeakUtil.addAnnotators]};sre.Grammar.getInstance().setPreprocessor("numbers2alpha",sre.ClearspeakUtil.numbersToAlpha);sre.EmacspeakRules={domain:"emacspeak",functions:[["CTXF","CTXFnodeCounter",sre.StoreUtil.nodeCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CQF","CQFvulgarFractionSmall",sre.MathspeakUtil.isSmallVulgarFraction],["CSF","CSFvulgarFraction",sre.NumbersUtil.vulgarFraction]],rules:[["Rule","stree","default","[n] ./*[1]","self::stree"],["Rule","multrel","default",'[t] "multirelation"; [m] children/* (sepFunc:CTXFcontentIterator)',"self::multirel"],'Rule{variable-equality{default{[t] "equation sequence"; [m] children/* (context:"part",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role="equality"]{count(./children/*)>2{./children/punctuation[@role="ellipsis"]'.split("{"),
'Rule{multi-equality{default{[t] "equation sequence"; [m] children/* (context:"part",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role="equality"]{count(./children/*)>2'.split("{"),'Rule,equality,default,[t] "equation"; [t] "left hand side"; [n] children/*[1];[p] (pause:200); [n] content/*[1] (pause:200);[t] "right hand side"; [n] children/*[2],self::relseq[@role="equality"],count(./children/*)=2'.split(","),'Rule,simple-equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role="equality"],count(./children/*)=2,./children/identifier or ./children/number'.split(","),
'Rule,simple-equality2,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role="equality"],count(./children/*)=2,./children/function or ./children/appl'.split(","),["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],'Rule;implicit;default;[m] children/*;self::infixop;@role="implicit";children/*[1][@role="latinletter"] or children/*[1][@role="greekletter"] or children/*[1][@role="otherletter"] or name(children/*[1])="number";children/*[2][@role="latinletter"] or children/*[2][@role="greekletter"] or children/*[2][@role="otherletter"] or name(children/*[2])="number"'.split(";"),
["Rule","binary-operation","default","[p] (pause:100); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:100);","self::infixop"],'Rule,variable-addition,default,[t] "sum with variable number of summands";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role="addition"],count(children/*)>2,children/punctuation[@role="ellipsis"]'.split(","),["Rule","prefix","default",'[t] "prefix"; [n] text(); [t] "of" (pause 150);[n] children/*[1]',"self::prefixop"],'Rule,negative,default,[t] "negative"; [n] children/*[1],self::prefixop,self::prefixop[@role="negative"]'.split(","),
["Rule","postfix","default",'[n] children/*[1]; [t] "postfix"; [n] text() (pause 300)',"self::postfixop"],["Rule","identifier","default","[n] text()","self::identifier"],["Rule","number","default","[n] text()","self::number"],'Rule{font{default{[t] @font; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier-short{default{[t] @font; [n] CQFhideFont; [t] CSFshowFont{self::identifier{string-length(text())=1{@font{@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[t] @font; [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),'Rule,simple-fraction,default,[p] (pause:100); [n] children/*[1] (rate:0.35); [t] "over";  [n] children/*[2] (rate:0.35); [p] (pause:100),self::fraction,name(children/*[1])="number" or name(children/*[1])="identifier",name(children/*[2])="number" or name(children/*[2])="identifier"'.split(","),
'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["Rule","fraction","default",'[p] (pause:250); [n] children/*[1] (rate:0.35); [p] (pause:250); [t] "divided by"; [p] (pause:250);  [n] children/*[2] (rate:0.35); [p] (pause:250)',"self::fraction"],["Rule","superscript","default",'[n] children/*[1]; [t] "super"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',"self::superscript"],["Rule","subscript","default",'[n] children/*[1]; [t] "sub"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',
"self::subscript"],'Rule,ellipsis,default,[p] (pause:200); [t] "ellipsis"; [p] (pause:300),self::punctuation,self::punctuation[@role="ellipsis"]'.split(","),'Rule;fence-single;default;[n] text();self::punctuation;self::punctuation[@role="openfence"]'.split(";"),["Alias","fence-single","self::punctuation",'self::punctuation[@role="closefence"]'],["Alias","fence-single","self::punctuation",'self::punctuation[@role="vbar"]'],["Alias","fence-single","self::punctuation",'self::punctuation[@role="application"]'],
["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule,fences-open-close,default,[p] (pause:200); [n] children/*[1] (rate:0.35); [p] (pause:200),self::fenced,@role="leftright"'.split(","),'Rule,fences-open-close-in-appl,default,[p] (pause:200); [n] children/*[1]; [p] (pause:200);,self::fenced[@role="leftright"],./parent::children/parent::appl'.split(","),'Rule,fences-neutral,default,[p] (pause:100); [t] "absolute value of"; [n] children/*[1];[p] (pause:350);,self::fenced,self::fenced[@role="neutral"]'.split(","),
["Rule","omit-fences","default","[p] (pause:500); [n] children/*[1]; [p] (pause:200);","self::fenced"],["Rule","matrix","default",'[t] "matrix"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::matrix"],["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row[@role="matrix"]'],["Rule","matrix-cell","default","[n] children/*[1]",'self::cell[@role="matrix"]'],["Rule","vector","default",'[t] "vector"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"element",pause:100)',
"self::vector"],["Rule","cases","default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100)',"self::cases"],["Rule","cases-row","default","[m] children/*",'self::row[@role="cases"]'],["Rule","cases-cell","default","[n] children/*[1]",'self::cell[@role="cases"]'],["Rule","row","default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)',"self::row"],'Rule{cases-end{default{[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100);[t] "end cases"{self::cases{following-sibling::*'.split("{"),
["Rule","multiline","default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"line",pause:100)',"self::multiline"],["Rule","line","default","[m] children/*","self::line"],["Rule","table","default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200)',"self::table"],["Rule","table-row","default","[m] children/* (pause:100)",'self::row[@role="table"]'],["Alias","cases-cell",'self::cell[@role="table"]'],'Rule,end-punct,default,[m] children/*; [p] (pause:300),self::punctuated,@role="endpunct"'.split(","),
'Rule,start-punct,default,[n] content/*[1]; [p] (pause:200); [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule,integral-punct,default,[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2),self::punctuated,@role="integral"'.split(","),["Rule","punctuated","default","[m] children/* (pause:100)","self::punctuated"],["Rule","function","default","[n] text()","self::function"],["Rule","appl","default","[n] children/*[1]; [n] content/*[1]; [n] children/*[2]","self::appl"],
'Rule,sum-only,default,[n] children/*[1]; [t] "from"; [n] children/*[2]; [t] "to";[n] children/*[3],self::limboth,@role="sum" or @role="integral"'.split(","),["Rule","limboth","default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[t] "under"; [n] children/*[3]; [p] (pause 250);',"self::limboth"],["Rule","limlower","default",'[n] children/*[1]; [t] "over"; [n] children/*[2];',"self::limlower"],["Rule","limupper","default",'[n] children/*[1]; [t] "under"; [n] children/*[2];',
"self::limupper"],["Rule","largeop","default","[n] text()","self::largeop"],["Rule","bigop","default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',"self::bigop"],["Rule","integral","default","[n] children/*[1]; [p] (pause 100); [n] children/*[2];[p] (pause 200); [n] children/*[3] (rate:0.35);","self::integral"],["Rule","sqrt","default",'[t] "Square root of"; [n] children/*[1] (rate:0.35); [p] (pause:400)',"self::sqrt"],'Rule,square,default,[n] children/*[1]; [t] "squared" (pitch:0.35); [p] (pause:200),self::superscript,children/*[2][text()=2],name(./children/*[1])!="text"'.split(","),
'Rule,cube,default,[n] children/*[1]; [t] "cubed" (pitch:0.35); [p] (pause:200),self::superscript,children/*[2][text()=3],name(./children/*[1])!="text"'.split(","),["Rule","root","default",'[t] "root of order"; [n] children/*[1];[t] "over"; [n] children/*[1] (rate:0.35); [p] (pause:400)',"self::root"],"Rule,text-no-mult,default,[n] children/*[1]; [p] (pause:200); [n] children/*[2],self::infixop,children/text".split(","),["Rule","text","default","[n] text(); [p] (pause:200)","self::text"],'Rule;unit;default;[t] text() (annotation:unit, preprocess);self::identifier;@role="unit"'.split(";"),
'Rule,unit-square,default,[t] "square"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=2],name(children/*[1])="identifier"'.split(","),'Rule,unit-cubic,default,[t] "cubic"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=3],name(children/*[1])="identifier"'.split(","),'Rule,reciprocal,default,[t] "reciprocal"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!="unit"]'.split(","),
'Rule,reciprocal,default,[t] "per"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role="unit"]'.split(","),'Rule;unit-combine;default;[m] children/*;self::infixop;@role="unit"'.split(";"),'Rule,unit-divide,default,[n] children/*[1] (pitch:0.3); [t] "per"; [n] children/*[2] (pitch:-0.3),self::fraction,@role="unit"'.split(",")]};sre.MathspeakFrenchUtil={};sre.MathspeakFrenchUtil.smallRoot=function(a){if(!a.childNodes||0===a.childNodes.length||!a.childNodes[0].childNodes)return[];var b=a.childNodes[0].childNodes[0].textContent;if(!/^\d+$/.test(b))return[];b=parseInt(b,10);return 1<b&&3>=b?[a]:[]};sre.MathspeakFrenchUtil.baselineVerbose=function(a){return sre.MathspeakUtil.baselineVerbose(a).replace(/\-$/,"")};sre.MathspeakFrenchUtil.baselineBrief=function(a){return sre.MathspeakUtil.baselineBrief(a).replace(/\-$/,"")};
sre.MathspeakFrenchUtil.leftSuperscriptVerbose=function(a){return sre.MathspeakUtil.superscriptVerbose(a).replace(/^exposant/,"exposant gauche")};sre.MathspeakFrenchUtil.leftSubscriptVerbose=function(a){return sre.MathspeakUtil.subscriptVerbose(a).replace(/^indice/,"indice gauche")};sre.MathspeakFrenchUtil.leftSuperscriptBrief=function(a){return sre.MathspeakUtil.superscriptBrief(a).replace(/^sup/,"sup gauche")};
sre.MathspeakFrenchUtil.leftSubscriptBrief=function(a){return sre.MathspeakUtil.subscriptBrief(a).replace(/^sub/,"sub gauche")};sre.MathspeakFrench={locale:"fr",domain:"mathspeak",functions:[["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber],["CQF","CQFspaceoutIdentifier",sre.MathspeakUtil.spaceoutIdentifier],["CSF","CSFspaceoutText",sre.MathspeakUtil.spaceoutText],["CSF","CSFopenFracVerbose",sre.MathspeakUtil.openingFractionVerbose],["CSF","CSFcloseFracVerbose",sre.MathspeakUtil.closingFractionVerbose],["CSF","CSFoverFracVerbose",sre.MathspeakUtil.overFractionVerbose],["CSF","CSFopenFracBrief",sre.MathspeakUtil.openingFractionBrief],
["CSF","CSFcloseFracBrief",sre.MathspeakUtil.closingFractionBrief],["CSF","CSFopenFracSbrief",sre.MathspeakUtil.openingFractionSbrief],["CSF","CSFcloseFracSbrief",sre.MathspeakUtil.closingFractionSbrief],["CSF","CSFoverFracSbrief",sre.MathspeakUtil.overFractionSbrief],["CSF","CSFvulgarFrFraction",sre.NumbersUtil.vulgarFraction],["CQF","CQFvulgarFractionSmall",sre.MathspeakUtil.isSmallVulgarFraction],["CSF","CSFopenRadicalVerbose",sre.MathspeakUtil.openingRadicalVerbose],["CSF","CSFcloseRadicalVerbose",
sre.MathspeakUtil.closingRadicalVerbose],["CSF","CSFindexRadicalVerbose",sre.MathspeakUtil.indexRadicalVerbose],["CSF","CSFopenRadicalBrief",sre.MathspeakUtil.openingRadicalBrief],["CSF","CSFcloseRadicalBrief",sre.MathspeakUtil.closingRadicalBrief],["CSF","CSFindexRadicalBrief",sre.MathspeakUtil.indexRadicalBrief],["CSF","CSFopenRadicalSbrief",sre.MathspeakUtil.openingRadicalSbrief],["CSF","CSFindexRadicalSbrief",sre.MathspeakUtil.indexRadicalSbrief],["CQF","CQFisSmallRoot",sre.MathspeakFrenchUtil.smallRoot],
["CSF","CSFsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFbaselineVerbose",sre.MathspeakFrenchUtil.baselineVerbose],["CSF","CSFbaselineBrief",sre.MathspeakFrenchUtil.baselineBrief],["CSF","CSFleftsuperscriptVerbose",sre.MathspeakFrenchUtil.leftSuperscriptVerbose],["CSF","CSFleftsubscriptVerbose",
sre.MathspeakFrenchUtil.leftSubscriptVerbose],["CSF","CSFrightsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFrightsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFleftsuperscriptBrief",sre.MathspeakFrenchUtil.leftSuperscriptBrief],["CSF","CSFleftsubscriptBrief",sre.MathspeakFrenchUtil.leftSubscriptBrief],["CSF","CSFrightsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFrightsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFunderscript",
sre.MathspeakUtil.nestedUnderscore],["CSF","CSFoverscript",sre.MathspeakUtil.nestedOverscore],["CTXF","CTXFordinalCounter",sre.NumbersUtil.ordinalCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CQF","CQFdetIsSimple",sre.MathspeakUtil.determinantIsSimple],["CSF","CSFRemoveParens",sre.MathspeakUtil.removeParens],["CQF","CQFresetNesting",sre.MathspeakUtil.resetNestingDepth],["CQF","CQFisLogarithm",sre.ClearspeakUtil.isLogarithmWithBase]],rules:['Rule;collapsed;default;[n] . (engine:modality=summary,grammar:collapsed);self::*;@alternative;not(contains(@grammar, "collapsed"));self::*;self::*;self::*;self::*;self::*'.split(";"),
["SpecializedRule","collapsed","default","brief"],["SpecializedRule","collapsed","brief","sbrief"],"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting".split(";"),["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::*;@role="protected"'.split(";"),["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule;blank-empty;default;[t] "vide";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),'Rule{font{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),
'Rule{font-identifier-short{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont);{self::identifier{string-length(text())=1{@font{not(contains(@grammar, "ignoreFont")){@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "et"; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),
'Rule{number-with-chars{default{[t] "nombre"; [m] CQFspaceoutNumber{self::number{"" != translate(text(), "0123456789.,", ""){text() != translate(text(), "0123456789.,", "")'.split("{"),'Rule{number-as-upper-word{default{[t] "MotMajuscule"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9", "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9"){""=translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9","")'.split("{"),
'Rule{number-baseline{default{[t] "position de base"; [n] . (grammar:baseline){self::number{not(contains(@grammar, "ignoreFont")){preceding-sibling::identifier{not(contains(@grammar, "baseline")){preceding-sibling::*[1][@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline","default","brief",'[t] "base"; [n] . (grammar:baseline)'],["SpecializedRule","number-baseline","brief","sbrief"],'Rule{number-baseline-font{default{[t] "position de base"; [n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"{preceding-sibling::identifier{preceding-sibling::*[@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),
["SpecializedRule","number-baseline-font","default","brief",'[t] "base"; [n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont)'],["SpecializedRule","number-baseline-font","brief","sbrief"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!="unit";@role!="protected";not(@font) or @font="normal" or contains(@grammar, "ignoreFont");text()!=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", "")'.split(";"),
["Rule","identifier","default","[n] text()","self::identifier"],'Rule,negative,default,[t] "n\u00e9gatif"; [n] children/*[1],self::prefixop,@role="negative",children/identifier'.split(","),["Aliases","negative","self::prefixop",'@role="negative"',"children/number"],["Aliases","negative","self::prefixop",'@role="negative"','children/fraction[@role="vulgar"]'],'Rule,negative,default,[t] "n\u00e9gatif"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),["Rule","prefix","default","[m] content/*; [n] children/*[1]",
"self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [m] content/*","self::postfixop"],["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule;implicit;default;[m] children/*;self::infixop;@role="implicit"'.split(";"),["Aliases","implicit","self::infixop",'@role="leftsuper" or @role="leftsub" or @role="rightsuper" or @role="rightsub"'],'Rule,subtraction,default,[m] children/* (separator:"moins");,self::infixop,@role="subtraction"'.split(","),
["Rule","function-unknown","default","[n] children/*[1]; [n] children/*[2]","self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role="prefix function"]'.split(","),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="leftright"'.split(","),'Rule,fences-neutral,default,[t] "d\u00e9but valeur absolue"; [n] children/*[1]; [t] "fin valeur absolue",self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["SpecializedRule","fences-neutral","default","sbrief",'[t] "valeur absolue"; [n] children/*[1]; [t] "fin valeur absolue"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="neutral"'.split(","),'Rule,fences-set,default,[t] "d\u00e9but ensemble"; [n] children/*[1]; [t] "fin ensemble",self::fenced,@role="set empty" or @role="set extended" or @role="set singleton" or @role="set collection",not(name(../..)="appl")'.split(","),["SpecializedRule","fences-set",
"default","sbrief",'[t] "ensemble"; [n] children/*[1]; [t] "fin ensemble"'],["Rule","text","default","[n] text()","self::text"],'Rule;factorial;default;[t] "factorielle";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),'Rule;minus;default;[t] "moins";self::operator;text()="-"'.split(";"),'Rule;single-prime;default;[t] "prime";self::punctuated;@role="prime";count(children/*)=1'.split(";"),'Rule;double-prime;default;[t] "double prime";self::punctuated;@role="prime";count(children/*)=2'.split(";"),
'Rule;triple-prime;default;[t] "triple prime";self::punctuated;@role="prime";count(children/*)=3'.split(";"),'Rule;quadruple-prime;default;[t] "quadruple prime";self::punctuated;@role="prime";count(children/*)=4'.split(";"),'Rule,counted-prime,default,[t] count(children/*); [t] "prime",self::punctuated,@role="prime"'.split(","),["Rule","fraction","default","[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose","self::fraction"],["Rule","fraction",
"brief","[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief","self::fraction"],["Rule","fraction","sbrief","[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief","self::fraction"],'Rule;vulgar-fraction;default;[t] CSFvulgarFrFraction;self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["SpecializedRule","vulgar-fraction","default","brief"],["SpecializedRule","vulgar-fraction",
"default","sbrief"],'Rule,continued-fraction-outer,default,[t] "fraction continue"; [n] children/*[1];[t] "sur"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),["SpecializedRule","continued-fraction-outer","default","brief",'[t] "frac continue"; [n] children/*[1];[t] "sur"; [n] children/*[2]'],["SpecializedRule","continued-fraction-outer","brief","sbrief"],'Rule,continued-fraction-inner,default,[t] "d\u00e9but fraction"; [n] children/*[1];[t] "sur"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),
["SpecializedRule","continued-fraction-inner","default","brief",'[t] "d\u00e9but frac"; [n] children/*[1];[t] "sur"; [n] children/*[2]'],["SpecializedRule","continued-fraction-inner","brief","sbrief",'[t] "frac"; [n] children/*[1];[t] "sur"; [n] children/*[2]'],["Rule","sqrt","default","[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose","self::sqrt"],["Rule","sqrt","brief","[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],["Rule","sqrt","sbrief",
"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,CQFisSmallRoot".split(","),"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot".split(","),"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot".split(","),["Rule","root","default",
"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose","self::root"],["Rule","root","brief","[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief","self::root"],["Rule","root","sbrief","[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief","self::root"],'Rule,limboth,default,[n] children/*[1]; [t] "d\u00e9but"; [t] CSFunderscript; [n] children/*[2];[t] "d\u00e9but"; [t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),
'Rule,limlower,default,[n] children/*[1]; [t] "d\u00e9but"; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Rule,limupper,default,[n] children/*[1]; [t] "d\u00e9but"; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Aliases;limlower;self::underscore;@role="limit function";name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),
'Aliases;limlower;self::underscore;children/*[2][@role!="underaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),'Aliases;limupper;self::overscore;children/*[2][@role!="overaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),["Rule","limboth-end","default",'[n] children/*[1]; [t] "d\u00e9but"; [t] CSFunderscript; [n] children/*[2];[t] "d\u00e9but"; [t] CSFoverscript; [n] children/*[3]; [t] "fin scripts"',
"self::limboth"],["Rule","limlower-end","default",'[n] children/*[1]; [t] "d\u00e9but"; [t] CSFunderscript; [n] children/*[2]; [t] "fin scripts"',"self::limlower"],["Rule","limupper-end","default",'[n] children/*[1]; [t] "d\u00e9but"; [t] CSFoverscript; [n] children/*[2]; [t] "fin scripts"',"self::limupper"],["Aliases","limlower-end","self::underscore",'@role="limit function"'],["Aliases","limlower-end","self::underscore"],["Aliases","limupper-end","self::overscore"],["Rule","integral","default",
"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];","self::integral"],'Rule,integral,default,[n] children/*[1]; [t] "indice inf\u00e9rieur"; [n] children/*[2];[t] "indice sup\u00e9rieur"; [n] children/*[3]; [t] "position de base";,self::limboth,@role="integral"'.split(","),["SpecializedRule","integral","default","brief",'[n] children/*[1]; [t] "inf"; [n] children/*[2];[t] "sup"; [n] children/*[3]; [t] "position de base";'],["SpecializedRule","integral","brief","sbrief"],["Rule","bigop","default",
"[n] children/*[1]; [n] children/*[2];","self::bigop"],["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role="equality",count(./children/*)=2'.split(","),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role="equality";count(./children/*)>2'.split(";"),["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],
["Rule","subscript","default","[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]","self::subscript"],["Rule","subscript","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]","self::subscript"],["SpecializedRule","subscript","brief","sbrief"],'Rule,subscript-base,default,[n] children/*[1]; [t] "base"; [n] children/*[2],self::subscript,CQFisLogarithm,self::*,self::*,self::*'.split(","),["SpecializedRule","subscript-base","default","brief"],["SpecializedRule","subscript-base",
"default","sbrief"],'Rule,subscript-simple,brief,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])="identifier",name(./children/*[2])="number",./children/*[2][@role!="mixed"],./children/*[2][@role!="othernumber"]'.split(","),["SpecializedRule","subscript-simple","brief","sbrief"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="subscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and @role!="subsup",not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","subscript-baseline","default","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief"],["SpecializedRule","subscript-baseline","brief","sbrief"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","subscript-baseline",
"self::subscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel",sre.MathspeakUtil.generateBaselineConstraint()],["Aliases","subscript-baseline","self::subscript","not(following-sibling::*)","@embellished"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="superscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),["SpecializedRule","subscript-empty-sup",
"default","brief"],["SpecializedRule","subscript-empty-sup","brief","sbrief"],["Aliases","subscript-empty-sup","self::subscript",'name(children/*[2])="superscript"','name(children/*[2]/children/*[1])="empty"'],["Rule","superscript","default","[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]","self::superscript"],["SpecializedRule","superscript","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]"],["SpecializedRule","superscript","brief","sbrief"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="superscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","superscript-baseline","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief"],["SpecializedRule","superscript-baseline","brief","sbrief"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","superscript-baseline","self::superscript",
"not(following-sibling::*)","ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt"],["Aliases","superscript-baseline","self::superscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel","not(@embellished)",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role="prime"])'.split(" "),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="subscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),
["SpecializedRule","superscript-empty-sub","default","brief"],["SpecializedRule","superscript-empty-sub","brief","sbrief"],["Aliases","superscript-empty-sub","self::superscript",'name(children/*[2])="subscript"','name(children/*[2]/children/*[1])="empty"'],'Rule,square,default,[n] children/*[1]; [t] "au carr\u00e9",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","square","default","brief"],["SpecializedRule","square","default","sbrief"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,cube,default,[n] children/*[1]; [t] "cubique",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","cube","default","brief"],["SpecializedRule","cube","default","sbrief"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"]'.split(","),["SpecializedRule","prime","default","brief"],["SpecializedRule","prime","default","sbrief"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",not(following-sibling::*)'.split(","),
["SpecializedRule","prime-subscript","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]"],["SpecializedRule","prime-subscript","brief","sbrief"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",following-sibling::*'.split(","),
["SpecializedRule","prime-subscript-baseline","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief"],["SpecializedRule","prime-subscript-baseline","brief","sbrief"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role="prime"] name(children/*[1])="subscript" not(following-sibling::*) @embellished'.split(" "),'Rule,prime-subscript-simple,brief,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",name(children/*[1]/children/*[1])="identifier",name(children/*[1]/children/*[2])="number",children/*[1]/children/*[2][@role!="mixed"],children/*[1]/children/*[2][@role!="othernumber"]'.split(","),
["SpecializedRule","prime-subscript-simple","brief","sbrief"],'Rule,overscore,default,[t] "suscrire"; [n] children/*[1]; [t] "avec"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"]'.split(","),'Rule,double-overscore,default,[t] "sus-suscrire"; [n] children/*[1]; [t] "avec"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"],name(children/*[1])="overscore",children/*[1]/children/*[2][@role="overaccent"]'.split(","),'Rule,underscore,default,[t] "souscrire"; [n] children/*[1]; [t] "avec"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"]'.split(","),
'Rule,double-underscore,default,[t] "sous-souscrire"; [n] children/*[1]; [t] "avec"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role="underaccent"]'.split(","),'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])="matrix"'.split(","),["Rule","matrix","default",'[t] "d\u00e9but matrice"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin matrice"',
"self::matrix"],["Rule","matrix","sbrief",'[t] "matrice"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin matrice"',"self::matrix"],["Aliases","matrix","self::vector"],["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:"colonne");[p] (pause: 200)',"self::row"],'Rule{row-with-label{default{[t] "avec \u00e9tiquette"; [n] content/*[1]; [t] "fin \u00e9tiquette"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"colonne"){self::row{content'.split("{"),
'Rule{row-with-label{brief{[t] "\u00e9tiquette"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"colonne"){self::row{content'.split("{"),["SpecializedRule","row-with-label","brief","sbrief"],'Rule{row-with-text-label{sbrief{[t] "\u00e9tiquette"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:"colonne"){self::row{content{name(content/cell/children/*[1])="text"'.split("{"),'Rule;empty-row;default;[t] "vide";self::row;count(children/*)=0'.split(";"),["Rule",
"matrix-cell","default","[n] children/*[1]; [p] (pause: 300)","self::cell"],'Rule,empty-cell,default,[t] "vide"; [p] (pause: 300),self::cell,count(children/*)=0'.split(","),'Rule{determinant{default{[t] "d\u00e9but d\u00e9terminant"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [t] ""; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin d\u00e9terminant"{self::matrix{@role="determinant"'.split("{"),["SpecializedRule","determinant","default","sbrief",
'[t] "d\u00e9terminant"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin d\u00e9terminant"'],'Rule{determinant-simple{default{[t] "d\u00e9but d\u00e9terminant"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e",grammar:simpleDet); [t] "fin d\u00e9terminant"{self::matrix{@role="determinant"{CQFdetIsSimple'.split("{"),
["SpecializedRule","determinant-simple","default","sbrief",'[t] "d\u00e9terminant"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e",grammar:simpleDet); [t] "fin d\u00e9terminant"'],'Rule{row-simple{default{[m] children/*;{self::row{@role="determinant"{contains(@grammar, "simpleDet")'.split("{"),["Rule","layout","default",'[t] "d\u00e9but tableau"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin tableau"',
"self::table"],["Rule","layout","sbrief",'[t] "tableau"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin tableau"',"self::table"],'Rule,binomial,default,[t] "d\u00e9but binomiale"; [n] children/*[2]/children/*[1]; [t] "parmi"; [n] children/*[1]/children/*[1];  [t] "fin binomiale",self::vector,@role="binomial"'.split(","),'Rule,binomial,sbrief,[t] "binomiale"; [n] children/*[1]/children/*[1]; [t] "parmi"; [n] children/*[2]/children/*[1];  [t] "fin binomiale",self::vector,@role="binomial"'.split(","),
["Rule","cases","default",'[t] "d\u00e9but tableau"; [n] content/*[1]; [t] "\u00e9largie";[m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin tableau"',"self::cases"],["Rule","cases","sbrief",'[t] "tableau"; [n] content/*[1]; [t] "\u00e9largie"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"rang\u00e9e "); [t] "fin tableau"',"self::cases"],["Aliases","layout","self::multiline"],["Rule","line","default","[m] children/*","self::line"],'Rule,line-with-label,default,[t] "avec etiquette"; [n] content/*[1]; [t] "fin etiquette" (pause: 200); [m] children/*,self::line,content'.split(","),
["SpecializedRule","line-with-label","default","brief",'[t] "etiquette"; [n] content/*[1] (pause: 200); [m] children/*'],["SpecializedRule","line-with-label","brief","sbrief"],'Rule,line-with-text-label,sbrief,[t] "etiquette"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])="text"'.split(","),'Rule;empty-line;default;[t] "vide";self::line;count(children/*)=0;not(content)'.split(";"),["SpecializedRule","empty-line","default","brief"],["SpecializedRule","empty-line",
"brief","sbrief"],'Rule,empty-line-with-label,default,[t] "avec etiquette"; [n] content/*[1]; [t] "fin etiquette" (pause: 200); [t] "vide",self::line,count(children/*)=0,content'.split(","),["SpecializedRule","empty-line-with-label","default","brief",'[t] "etiquette"; [n] content/*[1] (pause: 200); [t] "vide"'],["SpecializedRule","empty-line-with-label","brief","sbrief"],["Rule","enclose","default",'[t] "d\u00e9but enfermer en"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] "fin enfermer"',
"self::enclose"],'Rule,overbar,default,[t] "d\u00e9but trait suscrit"; [n] children/*[1]; [t] "fin trait suscrit",self::enclose,@role="top"'.split(","),'Rule,underbar,default,[t] "d\u00e9but trait souscrit"; [n] children/*[1]; [t] "fin trait souscrit",self::enclose,@role="bottom"'.split(","),'Rule,leftbar,default,[t] "barre verticale"; [n] children/*[1],self::enclose,@role="left"'.split(","),'Rule,rightbar,default,[n] children/*[1]; [t] "barre verticale",self::enclose,@role="right"'.split(","),'Rule,crossout,default,[t] "d\u00e9but biff\u00e9"; [n] children/*[1]; [t] "fin biff\u00e9",self::enclose,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),
'Rule,cancel,default,[t] "d\u00e9but biff\u00e9"; [n] children/*[1]/children/*[1]; [t] "avec"; [n] children/*[2]; [t] "fin biff\u00e9",self::overscore,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),["SpecializedRule","cancel","default","brief"],["SpecializedRule","cancel","default","sbrief"],["Aliases","cancel","self::underscore",'@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'],'Rule,cancel-reverse,default,[t] "d\u00e9but biff\u00e9"; [n] children/*[2]/children/*[1]; [t] "avec"; [n] children/*[1]; [t] "fin biff\u00e9",self::overscore,name(children/*[2])="enclose",children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'.split(","),
["SpecializedRule","cancel-reverse","default","brief"],["SpecializedRule","cancel-reverse","default","sbrief"],["Aliases","cancel-reverse","self::underscore",'name(children/*[2])="enclose"','children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role="endpunct"'.split(";"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role="integral"'.split(","),
["Rule","punctuated","default","[m] children/*","self::punctuated"],'Rule;unit;default;[t] text() (grammar:annotation="unit":translate);self::identifier;@role="unit"'.split(";"),'Rule,unit-square,default,[n] children/*[1]; [t] "carr\u00e9",self::superscript,@role="unit",children/*[2][text()=2],name(children/*[1])="identifier"'.split(","),'Rule,unit-cubic,default,[n] children/*[1]; [t] "cubique",self::superscript,@role="unit",children/*[2][text()=3],name(children/*[1])="identifier"'.split(","),'Rule,reciprocal,default,[t] "r\u00e9ciproque"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!="unit"]'.split(","),
'Rule,reciprocal,default,[t] "par"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role="unit"]'.split(","),'Rule;unit-combine;default;[m] children/*;self::infixop;@role="unit"'.split(";"),'Rule,unit-divide,default,[n] children/*[1]; [t] "par"; [n] children/*[2],self::fraction,@role="unit"'.split(",")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakGerman={locale:"de",domain:"mathspeak",functions:[["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber],["CQF","CQFspaceoutIdentifier",sre.MathspeakUtil.spaceoutIdentifier],["CSF","CSFspaceoutText",sre.MathspeakUtil.spaceoutText],["CSF","CSFopenFracVerbose",sre.MathspeakUtil.openingFractionVerbose],["CSF","CSFcloseFracVerbose",sre.MathspeakUtil.closingFractionVerbose],["CSF","CSFoverFracVerbose",sre.MathspeakUtil.overFractionVerbose],["CSF","CSFopenFracBrief",sre.MathspeakUtil.openingFractionBrief],
["CSF","CSFcloseFracBrief",sre.MathspeakUtil.closingFractionBrief],["CSF","CSFopenFracSbrief",sre.MathspeakUtil.openingFractionSbrief],["CSF","CSFcloseFracSbrief",sre.MathspeakUtil.closingFractionSbrief],["CSF","CSFoverFracSbrief",sre.MathspeakUtil.overFractionSbrief],["CSF","CSFvulgarFraction",sre.NumbersUtil.vulgarFraction],["CQF","CQFvulgarFractionSmall",sre.MathspeakUtil.isSmallVulgarFraction],["CSF","CSFopenRadicalVerbose",sre.MathspeakUtil.openingRadicalVerbose],["CSF","CSFcloseRadicalVerbose",
sre.MathspeakUtil.closingRadicalVerbose],["CSF","CSFindexRadicalVerbose",sre.MathspeakUtil.indexRadicalVerbose],["CSF","CSFopenRadicalBrief",sre.MathspeakUtil.openingRadicalBrief],["CSF","CSFcloseRadicalBrief",sre.MathspeakUtil.closingRadicalBrief],["CSF","CSFindexRadicalBrief",sre.MathspeakUtil.indexRadicalBrief],["CSF","CSFopenRadicalSbrief",sre.MathspeakUtil.openingRadicalSbrief],["CSF","CSFindexRadicalSbrief",sre.MathspeakUtil.indexRadicalSbrief],["CSF","CSFsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],
["CSF","CSFsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFbaselineVerbose",sre.MathspeakUtil.baselineVerbose],["CSF","CSFbaselineBrief",sre.MathspeakUtil.baselineBrief],["CSF","CSFleftsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFleftsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFrightsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],
["CSF","CSFrightsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFleftsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFleftsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFrightsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFrightsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFunderscript",sre.MathspeakUtil.nestedUnderscore],["CSF","CSFoverscript",sre.MathspeakUtil.nestedOverscore],["CTXF","CTXFordinalCounter",sre.NumbersUtil.ordinalCounter],
["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CQF","CQFdetIsSimple",sre.MathspeakUtil.determinantIsSimple],["CSF","CSFRemoveParens",sre.MathspeakUtil.removeParens],["CQF","CQFresetNesting",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[n] . (engine:modality=summary,grammar:collapsed); [t] "kollabiert"{self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),["SpecializedRule","collapsed","default","brief"],
["SpecializedRule","collapsed","brief","sbrief"],"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting".split(";"),["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::number;contains(@grammar, "protected")'.split(";"),["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule;blank-empty;default;[t] "leer";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{name(self::*)!="number"{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),
'Rule{font-number{default{[t] @font (grammar:localFontNumber); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, "ignoreFont")){@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1 or string-length(text())=2{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1 or string-length(text())=2;@font;not(contains(@grammar, "ignoreFont"));@font="italic";self::*'.split(";"),'Rule{font-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{name(self::*)!="number"{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, "ignoreFont")){@font="double-struck"'.split("{"),
'Rule{font-number-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFontNumber){self::number{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, "ignoreFont")){@font="double-struck"'.split("{"),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),'Rule{number-with-chars{default{[t] "Zahl"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role="othernumber"{"" != translate(text(), "0123456789.,", ""){not(contains(@grammar, "protected"))'.split("{"),
'Rule{number-as-upper-word{default{[t] "Wort gro\u00df"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9", "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9"){""=translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9","")'.split("{"),
["SpecializedRule","number-as-upper-word","default","brief"],["SpecializedRule","number-as-upper-word","default","sbrief"],'Rule{number-baseline{default{[t] "Grundlinie"; [n] . (grammar:baseline){self::number{not(contains(@grammar, "ignoreFont")){preceding-sibling::identifier{not(contains(@grammar, "baseline")){preceding-sibling::*[1][@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline","default",
"brief",'[t] "Grund"; [n] . (grammar:baseline)'],["SpecializedRule","number-baseline","brief","sbrief"],'Rule{number-baseline-font{default{[t] "Grundlinie"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"{preceding-sibling::identifier{preceding-sibling::*[@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline-font",
"default","brief",'[t] "Grund"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font)'],["SpecializedRule","number-baseline-font","brief","sbrief"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!="unit";not(@font) or @font="normal" or contains(@grammar, "ignoreFont");text()!=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", "")'.split(";"),
["Rule","identifier","default","[n] text()","self::identifier"],'Rule,negative,default,[t] "minus"; [n] children/*[1],self::prefixop,@role="negative",children/identifier'.split(","),["Aliases","negative","self::prefixop",'@role="negative"',"children/number"],["Aliases","negative","self::prefixop",'@role="negative"','children/fraction[@role="vulgar"]'],'Rule,negative,default,[t] "minus"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),["Rule","prefix","default","[m] content/*; [n] children/*[1]",
"self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [m] content/*","self::postfixop"],["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule;implicit;default;[m] children/*;self::infixop;@role="implicit"'.split(";"),["Aliases","implicit","self::infixop",'@role="leftsuper" or @role="leftsub" or @role="rightsuper" or @role="rightsub"'],'Rule,subtraction,default,[m] children/* (separator:"minus");,self::infixop,@role="subtraction"'.split(","),
["Rule","function-unknown","default","[n] children/*[1]; [n] children/*[2]","self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role="prefix function"]'.split(","),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="leftright"'.split(","),'Rule,fences-neutral,default,[t] "Anfang Betrag"; [n] children/*[1]; [t] "Ende Betrag",self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["SpecializedRule","fences-neutral","default","sbrief",'[t] "Betrag"; [n] children/*[1]; [t] "Ende Betrag"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="neutral"'.split(","),'Rule,fences-set,default,[t] "Anfang Menge"; [n] children/*[1]; [t] "Ende Menge",self::fenced,@role="set empty" or @role="set extended" or @role="set singleton" or @role="set collection",not(name(../..)="appl")'.split(","),["SpecializedRule","fences-set","default","sbrief",
'[t] "Menge"; [n] children/*[1]; [t] "Ende Menge"'],["Rule","text","default","[n] text()","self::text"],'Rule;factorial;default;[t] "Fakult\u00e4t";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),'Rule;minus;default;[t] "minus";self::operator;text()="-"'.split(";"),'Rule;single-prime;default;[t] "Strich";self::punctuated;@role="prime";count(children/*)=1'.split(";"),'Rule;double-prime;default;[t] "zwei Strich";self::punctuated;@role="prime";count(children/*)=2'.split(";"),
'Rule;triple-prime;default;[t] "drei Strich";self::punctuated;@role="prime";count(children/*)=3'.split(";"),'Rule;quadruple-prime;default;[t] "vier Strich";self::punctuated;@role="prime";count(children/*)=4'.split(";"),'Rule,counted-prime,default,[t] count(children/*); [t] "Strich",self::punctuated,@role="prime"'.split(","),["Rule","fraction","default","[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose","self::fraction"],["Rule","fraction",
"brief","[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief","self::fraction"],["Rule","fraction","sbrief","[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief","self::fraction"],'Rule;vulgar-fraction;default;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["SpecializedRule","vulgar-fraction","default","brief"],["SpecializedRule",
"vulgar-fraction","default","sbrief"],'Rule,continued-fraction-outer,default,[t] "Kettenbruch"; [n] children/*[1];[t] "durch"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),'Rule,continued-fraction-inner,default,[t] "Anfang Bruch"; [n] children/*[1];[t] "durch"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),
["SpecializedRule","continued-fraction-inner","default","sbrief",'[t] "Bruch"; [n] children/*[1];[t] "durch"; [n] children/*[2]'],["Rule","sqrt","default","[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose","self::sqrt"],["Rule","sqrt","brief","[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],["Rule","sqrt","sbrief","[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,children/*[1][text()=3 or text()=2]".split(","),
"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,children/*[1][text()=3 or text()=2]".split(","),"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,children/*[1][text()=3 or text()=2]".split(","),["Rule","root","default","[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose","self::root"],["Rule","root","brief","[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief",
"self::root"],["Rule","root","sbrief","[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief","self::root"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),
'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Aliases;limlower;self::underscore;@role="limit function";name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),'Aliases;limlower;self::underscore;children/*[2][@role!="underaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),
'Aliases;limupper;self::overscore;children/*[2][@role!="overaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),["Rule","limboth-end","default",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] "Ende \u00dcberschrift"',"self::limboth"],["Rule","limlower-end","default",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] "Ende Unterschrift"',"self::limlower"],
["Rule","limupper-end","default",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] "Ende \u00dcberschrift"',"self::limupper"],["Aliases","limlower-end","self::underscore",'@role="limit function"'],["Aliases","limlower-end","self::underscore"],["Aliases","limupper-end","self::overscore"],["Rule","integral","default","[n] children/*[1]; [n] children/*[2]; [n] children/*[3];","self::integral"],'Rule,integral,default,[n] children/*[1]; [t] "Index"; [n] children/*[2];[t] "Hoch"; [n] children/*[3]; [t] "Grundlinie";,self::limboth,@role="integral"'.split(","),
["SpecializedRule","integral","default","brief",'[n] children/*[1]; [t] "Index"; [n] children/*[2];[t] "Hoch"; [n] children/*[3]; [t] "Base";'],["SpecializedRule","integral","brief","sbrief"],["Rule","bigop","default","[n] children/*[1]; [n] children/*[2];","self::bigop"],["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role="equality",count(./children/*)=2'.split(","),
'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role="equality";count(./children/*)>2'.split(";"),["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],["Rule","subscript","default","[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]","self::subscript"],["Rule","subscript","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]","self::subscript"],["SpecializedRule","subscript","brief","sbrief"],
'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])="identifier",name(./children/*[2])="number",./children/*[2][@role!="mixed"],./children/*[2][@role!="othernumber"]'.split(","),["SpecializedRule","subscript-simple","default","brief"],["SpecializedRule","subscript-simple","default","sbrief"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="subscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and @role!="subsup",not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","subscript-baseline","default","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief"],["SpecializedRule","subscript-baseline","brief","sbrief"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","subscript-baseline",
"self::subscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel",sre.MathspeakUtil.generateBaselineConstraint()],["Aliases","subscript-baseline","self::subscript","not(following-sibling::*)","@embellished"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="superscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),["SpecializedRule","subscript-empty-sup",
"default","brief"],["SpecializedRule","subscript-empty-sup","brief","sbrief"],["Aliases","subscript-empty-sup","self::subscript",'name(children/*[2])="superscript"','name(children/*[2]/children/*[1])="empty"'],["Rule","superscript","default","[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]","self::superscript"],["SpecializedRule","superscript","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]"],["SpecializedRule","superscript","brief","sbrief"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="superscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","superscript-baseline","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief"],["SpecializedRule","superscript-baseline","brief","sbrief"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","superscript-baseline","self::superscript",
"not(following-sibling::*)","ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt"],["Aliases","superscript-baseline","self::superscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel","not(@embellished)",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role="prime"])'.split(" "),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="subscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),
["SpecializedRule","superscript-empty-sub","default","brief"],["SpecializedRule","superscript-empty-sub","brief","sbrief"],["Aliases","superscript-empty-sub","self::superscript",'name(children/*[2])="subscript"','name(children/*[2]/children/*[1])="empty"'],'Rule,square,default,[n] children/*[1]; [t] "Quadrat",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","square","default","brief"],["SpecializedRule","square","default","sbrief"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,cube,default,[n] children/*[1]; [t] "Kubik",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","cube","default","brief"],["SpecializedRule","cube","default","sbrief"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"]'.split(","),["SpecializedRule","prime","default","brief"],["SpecializedRule","prime","default","sbrief"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",not(following-sibling::*)'.split(","),
["SpecializedRule","prime-subscript","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]"],["SpecializedRule","prime-subscript","brief","sbrief"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",following-sibling::*'.split(","),
["SpecializedRule","prime-subscript-baseline","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief"],["SpecializedRule","prime-subscript-baseline","brief","sbrief"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role="prime"] name(children/*[1])="subscript" not(following-sibling::*) @embellished'.split(" "),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",name(children/*[1]/children/*[1])="identifier",name(children/*[1]/children/*[2])="number",children/*[1]/children/*[2][@role!="mixed"],children/*[1]/children/*[2][@role!="othernumber"]'.split(","),
["SpecializedRule","prime-subscript-simple","default","brief"],["SpecializedRule","prime-subscript-simple","default","sbrief"],'Rule,overscore,default,[t] "modifiziert oben"; [n] children/*[1]; [t] "mit"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"]'.split(","),["SpecializedRule","overscore","default","brief",'[t] "mod oben"; [n] children/*[1]; [t] "mit"; [n] children/*[2]'],["SpecializedRule","overscore","brief","sbrief"],'Rule,double-overscore,default,[t] "modifiziert oben oben"; [n] children/*[1]; [t] "mit"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"],name(children/*[1])="overscore",children/*[1]/children/*[2][@role="overaccent"]'.split(","),
["SpecializedRule","double-overscore","default","brief",'[t] "mod oben oben"; [n] children/*[1]; [t] "mit"; [n] children/*[2]'],["SpecializedRule","double-overscore","brief","sbrief"],'Rule,underscore,default,[t] "modifiziert unten"; [n] children/*[1]; [t] "mit"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"]'.split(","),["SpecializedRule","underscore","default","brief",'[t] "mod unten"; [n] children/*[1]; [t] "mit"; [n] children/*[2]'],["SpecializedRule","underscore","brief",
"sbrief"],'Rule,double-underscore,default,[t] "modifiziert unten unten"; [n] children/*[1]; [t] "mit"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role="underaccent"]'.split(","),["SpecializedRule","double-underscore","default","brief",'[t] "mod unten unten"; [n] children/*[1]; [t] "mit"; [n] children/*[2]'],["SpecializedRule","double-underscore","brief","sbrief"],'Rule,overbar,default,[n] children/*[1]; [t] "\u00dcberstrich",self::overscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
'Rule,underbar,default,[n] children/*[1]; [t] "Unterstrich",self::underscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="underaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),'Rule,overtilde,default,[n] children/*[1]; [t] "Tilde oben",self::overscore,children/*[2][@role="overaccent"],@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][text()="~" or text()="\u02dc" or text()="\u223c" or text()="\uff5e"]'.split(","),
'Rule,undertilde,default,[n] children/*[1]; [t] "Tilde unten",self::underscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="underaccent"],children/*[2][text()="~" or text()="\u02dc" or text()="\u223c" or text()="\uff5e"]'.split(","),'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])="matrix"'.split(","),["Rule","matrix","default",'[t] "Anfang"; [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Matrize"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Matrize"',
"self::matrix"],["Rule","matrix","sbrief",'[t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Matrize"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Matrize"',"self::matrix"],["Aliases","matrix","self::vector"],["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Spalte");[p] (pause: 200)',"self::row"],'Rule{row-with-label{default{[t] "mit Bezeichner"; [n] content/*[1]; [t] "Ende Bezeichner"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Spalte"){self::row{content'.split("{"),
'Rule{row-with-label{brief{[t] "Bezeichner"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Spalte"){self::row{content'.split("{"),["SpecializedRule","row-with-label","brief","sbrief"],'Rule{row-with-text-label{sbrief{[t] "Bezeichner"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Spalte"){self::row{content{name(content/cell/children/*[1])="text"'.split("{"),'Rule;empty-row;default;[t] "Blank";self::row;count(children/*)=0'.split(";"),["Rule","matrix-cell",
"default","[n] children/*[1]; [p] (pause: 300)","self::cell"],'Rule,empty-cell,default,[t] "leer"; [p] (pause: 300),self::cell,count(children/*)=0'.split(","),'Rule{determinant{default{[t] "Anfang"; [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Determinante"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Determinante"{self::matrix{@role="determinant"'.split("{"),["SpecializedRule","determinant","default","sbrief",'[t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Determinante"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Determinante"'],
'Rule{determinant-simple{default{[t] "Anfang"; [t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Determinante"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile",grammar:simpleDet); [t] "Ende Determinante"{self::matrix{@role="determinant"{CQFdetIsSimple'.split("{"),["SpecializedRule","determinant-simple","default","sbrief",'[t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Determinante"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile",grammar:simpleDet); [t] "Ende Determinante"'],
'Rule{row-simple{default{[m] children/*;{self::row{@role="determinant"{contains(@grammar, "simpleDet")'.split("{"),["Rule","layout","default",'[t] "Anfang Anordnung"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Anordnung"',"self::table"],["Rule","layout","sbrief",'[t] "Anordnung"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Anordnung"',"self::table"],'Rule,binomial,default,[t] "Anfang Binomialkoeffizient"; [n] children/*[2]/children/*[1]; [t] "aus";  [n] children/*[1]/children/*[1]; [t] "Ende Binomialkoeffizient",self::vector,@role="binomial"'.split(","),
'Rule,binomial,brief,[t] "Anfang Binomial"; [n] children/*[2]/children/*[1]; [t] "aus";  [n] children/*[1]/children/*[1]; [t] "Ende Binomial",self::vector,@role="binomial"'.split(","),'Rule,binomial,sbrief,[t] "Binomial"; [n] children/*[2]/children/*[1]; [t] "aus";  [n] children/*[1]/children/*[1]; [t] "Ende Binomial",self::vector,@role="binomial"'.split(","),["Rule","cases","default",'[t] "Anfang Fallunterscheidung"; [t] "gro\u00dfe"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende Fallunterscheidung"',
"self::cases"],["Rule","cases","brief",'[t] "Anfang F\u00e4lle"; [t] "gro\u00dfe"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende F\u00e4lle"',"self::cases"],["Rule","cases","sbrief",'[t] "F\u00e4lle"; [t] "gro\u00dfe"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Zeile "); [t] "Ende F\u00e4lle"',"self::cases"],["Aliases","layout","self::multiline"],["Rule","line","default","[m] children/*","self::line"],'Rule,line-with-label,default,[t] "mit Bezeichner"; [n] content/*[1]; [t] "Ende Bezeichner" (pause: 200); [m] children/*,self::line,content'.split(","),
["SpecializedRule","line-with-label","default","brief",'[t] "Bezeichner"; [n] content/*[1] (pause: 200); [m] children/*'],["SpecializedRule","line-with-label","brief","sbrief"],'Rule,line-with-text-label,sbrief,[t] "Bezeichner"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])="text"'.split(","),'Rule;empty-line;default;[t] "leer";self::line;count(children/*)=0;not(content)'.split(";"),["SpecializedRule","empty-line","default","brief"],["SpecializedRule","empty-line",
"brief","sbrief"],'Rule,empty-line-with-label,default,[t] "mit Bezeichner"; [n] content/*[1]; [t] "Ende Bezeichner"(pause: 200); [t] "leer",self::line,count(children/*)=0,content'.split(","),["SpecializedRule","empty-line-with-label","default","brief",'[t] "Bezeichner"; [n] content/*[1] (pause: 200); [t] "leer"'],["SpecializedRule","empty-line-with-label","brief","sbrief"],["Rule","enclose","default",'[t] "Anfang Umschlie\u00dfung"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] "Ende Umschlie\u00dfung"',
"self::enclose"],["Aliases","overbar","self::enclose",'@role="top"'],["Aliases","underbar","self::enclose",'@role="bottom"'],'Rule,leftbar,default,[t] "senkrechter Strich"; [n] children/*[1],self::enclose,@role="left"'.split(","),'Rule,rightbar,default,[n] children/*[1]; [t] "senkrechter Strich",self::enclose,@role="right"'.split(","),'Rule,crossout,default,[t] "durchgestrichen"; [n] children/*[1]; [t] "Ende duchgestrichen",self::enclose,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),
'Rule,cancel,default,[t] "durchgestrichen"; [n] children/*[1]/children/*[1]; [t] "mit"; [n] children/*[2]; [t] "Ende duchgestrichen",self::overscore,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),["SpecializedRule","cancel","default","brief"],["SpecializedRule","cancel","default","sbrief"],["Aliases","cancel","self::underscore",'@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'],'Rule,cancel-reverse,default,[t] "durchgestrichen"; [n] children/*[2]/children/*[1]; [t] "mit"; [n] children/*[1]; [t] "Ende duchgestrichen",self::overscore,name(children/*[2])="enclose",children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'.split(","),
["SpecializedRule","cancel-reverse","default","brief"],["SpecializedRule","cancel-reverse","default","sbrief"],["Aliases","cancel-reverse","self::underscore",'name(children/*[2])="enclose"','children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role="endpunct"'.split(";"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role="integral"'.split(","),
["Rule","punctuated","default","[m] children/*","self::punctuated"],'Rule;unit;default;[t] text() (grammar:annotation="unit":translate:plural);self::identifier;@role="unit"'.split(";"),'Rule,unit-square,default,[t] "Quadrat"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=2],name(children/*[1])="identifier"'.split(","),'Rule,unit-cubic,default,[t] "Kubik"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=3],name(children/*[1])="identifier"'.split(","),'Rule,reciprocal,default,[n] children/*[1]; [t] "invers",self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!="unit"]'.split(","),
'Rule,reciprocal,default,[t] "pro"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role="unit"]'.split(","),'Rule;unit-combine;default;[m] children/*;self::infixop;@role="unit"'.split(";"),'Rule,unit-divide,default,[n] children/*[1]; [t] "pro"; [n] children/*[2],self::fraction,@role="unit"'.split(","),["Rule","inference","default",'[t] "Schlussregel"; [m] content/*; [t] "mit Folgerung"; [n] children/*[1]; [t] "aus"; [t] count(children/*[2]/children/*); [t] "Pr\u00e4missen"',
"self::inference"],'Rule,inference,default,[t] "Schlussregel"; ; [m] content/*; [t] "mit Folgerung"; [n] children/*[1]; [t] "aus"; [t] count(children/*[2]/children/*); [t] "Pr\u00e4misse",self::inference,count(children/*[2]/children/*)<2'.split(","),["Rule","premise","default",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Pr\u00e4misse ");',"self::premises"],["Rule","conclusion","default","[n] children/*[1]","self::conclusion"],["Rule","label","default",'[t] "Regel"; [n] children/*[1]',"self::rulelabel"],
'Rule,axiom,default,[t] "Axiom"; [m] children/*[1];,self::inference,@role="axiom"'.split(","),'Rule,axiom,default,[t] "leeres Axiom";,self::empty,@role="axiom"'.split(",")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakRules={domain:"mathspeak",functions:[["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber],["CQF","CQFspaceoutIdentifier",sre.MathspeakUtil.spaceoutIdentifier],["CSF","CSFspaceoutText",sre.MathspeakUtil.spaceoutText],["CSF","CSFopenFracVerbose",sre.MathspeakUtil.openingFractionVerbose],["CSF","CSFcloseFracVerbose",sre.MathspeakUtil.closingFractionVerbose],["CSF","CSFoverFracVerbose",sre.MathspeakUtil.overFractionVerbose],["CSF","CSFopenFracBrief",sre.MathspeakUtil.openingFractionBrief],
["CSF","CSFcloseFracBrief",sre.MathspeakUtil.closingFractionBrief],["CSF","CSFopenFracSbrief",sre.MathspeakUtil.openingFractionSbrief],["CSF","CSFcloseFracSbrief",sre.MathspeakUtil.closingFractionSbrief],["CSF","CSFoverFracSbrief",sre.MathspeakUtil.overFractionSbrief],["CSF","CSFvulgarFraction",sre.NumbersUtil.vulgarFraction],["CQF","CQFvulgarFractionSmall",sre.MathspeakUtil.isSmallVulgarFraction],["CSF","CSFopenRadicalVerbose",sre.MathspeakUtil.openingRadicalVerbose],["CSF","CSFcloseRadicalVerbose",
sre.MathspeakUtil.closingRadicalVerbose],["CSF","CSFindexRadicalVerbose",sre.MathspeakUtil.indexRadicalVerbose],["CSF","CSFopenRadicalBrief",sre.MathspeakUtil.openingRadicalBrief],["CSF","CSFcloseRadicalBrief",sre.MathspeakUtil.closingRadicalBrief],["CSF","CSFindexRadicalBrief",sre.MathspeakUtil.indexRadicalBrief],["CSF","CSFopenRadicalSbrief",sre.MathspeakUtil.openingRadicalSbrief],["CSF","CSFindexRadicalSbrief",sre.MathspeakUtil.indexRadicalSbrief],["CSF","CSFsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],
["CSF","CSFsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFbaselineVerbose",sre.MathspeakUtil.baselineVerbose],["CSF","CSFbaselineBrief",sre.MathspeakUtil.baselineBrief],["CSF","CSFleftsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFleftsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFrightsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],
["CSF","CSFrightsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFleftsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFleftsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFrightsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFrightsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFunderscript",sre.MathspeakUtil.nestedUnderscore],["CSF","CSFoverscript",sre.MathspeakUtil.nestedOverscore],["CTXF","CTXFordinalCounter",sre.NumbersUtil.ordinalCounter],
["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CQF","CQFdetIsSimple",sre.MathspeakUtil.determinantIsSimple],["CSF","CSFRemoveParens",sre.MathspeakUtil.removeParens],["CQF","CQFresetNesting",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[t] "collapsed"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),["SpecializedRule","collapsed","default","brief"],
["SpecializedRule","collapsed","brief","sbrief"],"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting".split(";"),["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::number;contains(@grammar, "protected")'.split(";"),["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule;blank-empty;default;[t] "Blank";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),
'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, "ignoreFont")){@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),'Rule{german-font{default{[t] "German"; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font="fraktur"'.split("{"),
'Rule{german-font{default{[t] "bold German"; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font="bold-fraktur"'.split("{"),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "and"; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),'Rule{number-with-chars{default{[t] "Number"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role="othernumber"{"" != translate(text(), "0123456789.,", ""){not(contains(@grammar, "protected"))'.split("{"),
["SpecializedRule","number-with-chars","default","brief",'[t] "Num"; [m] CQFspaceoutNumber (grammar:protected)'],["SpecializedRule","number-with-chars","brief","sbrief"],'Rule{number-as-upper-word{default{[t] "UpperWord"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9", "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9"){""=translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9","")'.split("{"),
["SpecializedRule","number-as-upper-word","default","brief"],["SpecializedRule","number-as-upper-word","default","sbrief"],'Rule{number-baseline{default{[t] "Baseline"; [n] . (grammar:baseline){self::number{not(contains(@grammar, "ignoreFont")){preceding-sibling::identifier{not(contains(@grammar, "baseline")){preceding-sibling::*[1][@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline","default",
"brief",'[t] "Base"; [n] . (grammar:baseline)'],["SpecializedRule","number-baseline","brief","sbrief"],'Rule{number-baseline-font{default{[t] "Baseline"; [t] @font; [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"{preceding-sibling::identifier{preceding-sibling::*[@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline-font","default","brief",
'[t] "Base"; [t] @font; [n] . (grammar:ignoreFont=@font)'],["SpecializedRule","number-baseline-font","brief","sbrief"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!="unit";not(@font) or @font="normal" or contains(@grammar, "ignoreFont");text()!=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", "")'.split(";"),
["Rule","identifier","default","[n] text()","self::identifier"],'Rule,negative,default,[t] "negative"; [n] children/*[1],self::prefixop,@role="negative",children/identifier'.split(","),["Aliases","negative","self::prefixop",'@role="negative"',"children/number"],["Aliases","negative","self::prefixop",'@role="negative"','children/fraction[@role="vulgar"]'],'Rule,negative,default,[t] "minus"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),["Rule","prefix","default","[m] content/*; [n] children/*[1]",
"self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [m] content/*","self::postfixop"],["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule;implicit;default;[m] children/*;self::infixop;@role="implicit"'.split(";"),["Aliases","implicit","self::infixop",'@role="leftsuper" or @role="leftsub" or @role="rightsuper" or @role="rightsub"'],'Rule,subtraction,default,[m] children/* (separator:"minus");,self::infixop,@role="subtraction"'.split(","),
["Rule","function-unknown","default","[n] children/*[1]; [n] children/*[2]","self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role="prefix function"]'.split(","),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="leftright"'.split(","),'Rule,fences-neutral,default,[t] "StartAbsoluteValue"; [n] children/*[1]; [t] "EndAbsoluteValue",self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["SpecializedRule","fences-neutral","default","sbrief",'[t] "AbsoluteValue"; [n] children/*[1]; [t] "EndAbsoluteValue"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="neutral"'.split(","),'Rule,fences-set,default,[t] "StartSet"; [n] children/*[1]; [t] "EndSet",self::fenced,@role="set empty" or @role="set extended" or @role="set singleton" or @role="set collection",not(name(../..)="appl")'.split(","),["SpecializedRule","fences-set","default",
"sbrief",'[t] "Set"; [n] children/*[1]; [t] "EndSet"'],["Rule","text","default","[n] text()","self::text"],'Rule;factorial;default;[t] "factorial";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),'Rule;minus;default;[t] "minus";self::operator;text()="-"'.split(";"),'Rule;single-prime;default;[t] "prime";self::punctuated;@role="prime";count(children/*)=1'.split(";"),'Rule;double-prime;default;[t] "double prime";self::punctuated;@role="prime";count(children/*)=2'.split(";"),
'Rule;triple-prime;default;[t] "triple prime";self::punctuated;@role="prime";count(children/*)=3'.split(";"),'Rule;quadruple-prime;default;[t] "quadruple prime";self::punctuated;@role="prime";count(children/*)=4'.split(";"),'Rule,counted-prime,default,[t] count(children/*); [t] "prime",self::punctuated,@role="prime"'.split(","),["Rule","fraction","default","[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose","self::fraction"],["Rule","fraction",
"brief","[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief","self::fraction"],["Rule","fraction","sbrief","[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief","self::fraction"],'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role="vulgar";CQFvulgarFractionSmall'.split(";"),["SpecializedRule","vulgar-fraction","default","brief"],["SpecializedRule","vulgar-fraction","default",
"sbrief"],'Rule,continued-fraction-outer,default,[t] "ContinuedFraction"; [n] children/*[1];[t] "Over"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),["SpecializedRule","continued-fraction-outer","default","brief",'[t] "ContinuedFrac"; [n] children/*[1];[t] "Over"; [n] children/*[2]'],["SpecializedRule","continued-fraction-outer","brief","sbrief"],'Rule,continued-fraction-inner,default,[t] "StartFraction"; [n] children/*[1];[t] "Over"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),
["SpecializedRule","continued-fraction-inner","default","brief",'[t] "StartFrac"; [n] children/*[1];[t] "Over"; [n] children/*[2]'],["SpecializedRule","continued-fraction-inner","brief","sbrief",'[t] "Frac"; [n] children/*[1];[t] "Over"; [n] children/*[2]'],["Rule","sqrt","default","[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose","self::sqrt"],["Rule","sqrt","brief","[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],["Rule","sqrt","sbrief",
"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],["Rule","root","default","[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose","self::root"],["Rule","root","brief","[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief","self::root"],["Rule","root","sbrief","[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief",
"self::root"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),
'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Aliases;limlower;self::underscore;@role="limit function";name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),'Aliases;limlower;self::underscore;children/*[2][@role!="underaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),
'Aliases;limupper;self::overscore;children/*[2][@role!="overaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),["Rule","limboth-end","default",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] "Endscripts"',"self::limboth"],["Rule","limlower-end","default",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] "Endscripts"',"self::limlower"],["Rule","limupper-end",
"default",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] "Endscripts"',"self::limupper"],["Aliases","limlower-end","self::underscore",'@role="limit function"'],["Aliases","limlower-end","self::underscore"],["Aliases","limupper-end","self::overscore"],["Rule","integral","default","[n] children/*[1]; [n] children/*[2]; [n] children/*[3];","self::integral"],'Rule,integral,default,[n] children/*[1]; [t] "Subscript"; [n] children/*[2];[t] "Superscript"; [n] children/*[3]; [t] "Baseline";,self::limboth,@role="integral"'.split(","),
["SpecializedRule","integral","default","brief",'[n] children/*[1]; [t] "Sub"; [n] children/*[2];[t] "Sup"; [n] children/*[3]; [t] "Base";'],["SpecializedRule","integral","brief","sbrief"],["Rule","bigop","default","[n] children/*[1]; [n] children/*[2];","self::bigop"],["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role="equality",count(./children/*)=2'.split(","),
'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role="equality";count(./children/*)>2'.split(";"),["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],["Rule","subscript","default","[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]","self::subscript"],["Rule","subscript","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]","self::subscript"],["SpecializedRule","subscript","brief","sbrief"],
'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])="identifier",name(./children/*[2])="number",./children/*[2][@role!="mixed"],./children/*[2][@role!="othernumber"]'.split(","),["SpecializedRule","subscript-simple","default","brief"],["SpecializedRule","subscript-simple","default","sbrief"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="subscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and @role!="subsup",not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","subscript-baseline","default","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief"],["SpecializedRule","subscript-baseline","brief","sbrief"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","subscript-baseline",
"self::subscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel",sre.MathspeakUtil.generateBaselineConstraint()],["Aliases","subscript-baseline","self::subscript","not(following-sibling::*)","@embellished"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="superscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),["SpecializedRule","subscript-empty-sup",
"default","brief"],["SpecializedRule","subscript-empty-sup","brief","sbrief"],["Aliases","subscript-empty-sup","self::subscript",'name(children/*[2])="superscript"','name(children/*[2]/children/*[1])="empty"'],["Rule","superscript","default","[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]","self::superscript"],["SpecializedRule","superscript","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]"],["SpecializedRule","superscript","brief","sbrief"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="superscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","superscript-baseline","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief"],["SpecializedRule","superscript-baseline","brief","sbrief"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","superscript-baseline","self::superscript",
"not(following-sibling::*)","ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt"],["Aliases","superscript-baseline","self::superscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel","not(@embellished)",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role="prime"])'.split(" "),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="subscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),
["SpecializedRule","superscript-empty-sub","default","brief"],["SpecializedRule","superscript-empty-sub","brief","sbrief"],["Aliases","superscript-empty-sub","self::superscript",'name(children/*[2])="subscript"','name(children/*[2]/children/*[1])="empty"'],'Rule,square,default,[n] children/*[1]; [t] "squared",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","square","default","brief"],["SpecializedRule","square","default","sbrief"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,cube,default,[n] children/*[1]; [t] "cubed",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","cube","default","brief"],["SpecializedRule","cube","default","sbrief"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"]'.split(","),["SpecializedRule","prime","default","brief"],["SpecializedRule","prime","default","sbrief"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",not(following-sibling::*)'.split(","),
["SpecializedRule","prime-subscript","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]"],["SpecializedRule","prime-subscript","brief","sbrief"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",following-sibling::*'.split(","),
["SpecializedRule","prime-subscript-baseline","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief"],["SpecializedRule","prime-subscript-baseline","brief","sbrief"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role="prime"] name(children/*[1])="subscript" not(following-sibling::*) @embellished'.split(" "),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",name(children/*[1]/children/*[1])="identifier",name(children/*[1]/children/*[2])="number",children/*[1]/children/*[2][@role!="mixed"],children/*[1]/children/*[2][@role!="othernumber"]'.split(","),
["SpecializedRule","prime-subscript-simple","default","brief"],["SpecializedRule","prime-subscript-simple","default","sbrief"],'Rule,overscore,default,[t] "ModifyingAbove"; [n] children/*[1]; [t] "With"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"]'.split(","),["SpecializedRule","overscore","default","brief",'[t] "ModAbove"; [n] children/*[1]; [t] "With"; [n] children/*[2]'],["SpecializedRule","overscore","brief","sbrief"],'Rule,double-overscore,default,[t] "ModifyingAbove Above"; [n] children/*[1]; [t] "With"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"],name(children/*[1])="overscore",children/*[1]/children/*[2][@role="overaccent"]'.split(","),
["SpecializedRule","double-overscore","default","brief",'[t] "ModAbove Above"; [n] children/*[1]; [t] "With"; [n] children/*[2]'],["SpecializedRule","double-overscore","brief","sbrief"],'Rule,underscore,default,[t] "ModifyingBelow"; [n] children/*[1]; [t] "With"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"]'.split(","),["SpecializedRule","underscore","default","brief",'[t] "ModBelow"; [n] children/*[1]; [t] "With"; [n] children/*[2]'],["SpecializedRule","underscore","brief",
"sbrief"],'Rule,double-underscore,default,[t] "ModifyingBelow Below"; [n] children/*[1]; [t] "With"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role="underaccent"]'.split(","),["SpecializedRule","double-underscore","default","brief",'[t] "ModBelow Below"; [n] children/*[1]; [t] "With"; [n] children/*[2]'],["SpecializedRule","double-underscore","brief","sbrief"],'Rule,overbar,default,[n] children/*[1]; [t] "overbar",self::overscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),
["SpecializedRule","overbar","default","brief",'[n] children/*[1]; [t] "overBar"'],["SpecializedRule","overbar","brief","sbrief"],'Rule,underbar,default,[n] children/*[1]; [t] "underbar",self::underscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="underaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),["SpecializedRule","underbar","default","brief",'[n] children/*[1]; [t] "underBar"'],
["SpecializedRule","underbar","brief","sbrief"],'Rule,overtilde,default,[n] children/*[1]; [t] "overTilde",self::overscore,children/*[2][@role="overaccent"],@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][text()="~" or text()="\u02dc" or text()="\u223c" or text()="\uff5e"]'.split(","),["SpecializedRule","overtilde","default","brief",'[n] children/*[1]; [t] "overtilde"'],["SpecializedRule","overtilde","brief","sbrief"],'Rule,undertilde,default,[n] children/*[1]; [t] "underTilde",self::underscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="underaccent"],children/*[2][text()="~" or text()="\u02dc" or text()="\u223c" or text()="\uff5e"]'.split(","),
["SpecializedRule","undertilde","default","brief",'[n] children/*[1]; [t] "undertilde"'],["SpecializedRule","undertilde","brief","sbrief"],'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])="matrix"'.split(","),["Rule","matrix","default",'[t] "Start"; [t] count(children/*);  [t] "By";[t] count(children/*[1]/children/*); [t] "Matrix"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndMatrix"',"self::matrix"],["Rule","matrix","sbrief",
'[t] count(children/*);  [t] "By";[t] count(children/*[1]/children/*); [t] "Matrix"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndMatrix"',"self::matrix"],["Aliases","matrix","self::vector"],["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Column");[p] (pause: 200)',"self::row"],'Rule{row-with-label{default{[t] "with Label"; [n] content/*[1]; [t] "EndLabel"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Column"){self::row{content'.split("{"),
'Rule{row-with-label{brief{[t] "Label"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Column"){self::row{content'.split("{"),["SpecializedRule","row-with-label","brief","sbrief"],'Rule{row-with-text-label{sbrief{[t] "Label"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Column"){self::row{content{name(content/cell/children/*[1])="text"'.split("{"),'Rule;empty-row;default;[t] "Blank";self::row;count(children/*)=0'.split(";"),["Rule","matrix-cell",
"default","[n] children/*[1]; [p] (pause: 300)","self::cell"],'Rule,empty-cell,default,[t] "Blank"; [p] (pause: 300),self::cell,count(children/*)=0'.split(","),'Rule{determinant{default{[t] "Start"; [t] count(children/*);  [t] "By";[t] count(children/*[1]/children/*); [t] "Determinant"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndDeterminant"{self::matrix{@role="determinant"'.split("{"),["SpecializedRule","determinant","default","sbrief",'[t] count(children/*);  [t] "By";[t] count(children/*[1]/children/*); [t] "Determinant"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndDeterminant"'],
'Rule{determinant-simple{default{[t] "Start"; [t] count(children/*);  [t] "By";[t] count(children/*[1]/children/*); [t] "Determinant"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row",grammar:simpleDet); [t] "EndDeterminant"{self::matrix{@role="determinant"{CQFdetIsSimple'.split("{"),["SpecializedRule","determinant-simple","default","sbrief",'[t] count(children/*);  [t] "By";[t] count(children/*[1]/children/*); [t] "Determinant"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row",grammar:simpleDet); [t] "EndDeterminant"'],
'Rule{row-simple{default{[m] children/*;{self::row{@role="determinant"{contains(@grammar, "simpleDet")'.split("{"),["Rule","layout","default",'[t] "StartLayout"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndLayout"',"self::table"],["Rule","layout","sbrief",'[t] "Layout"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndLayout"',"self::table"],'Rule,binomial,default,[t] "StartBinomialOrMatrix"; [n] children/*[1]/children/*[1]; [t] "Choose"; [n] children/*[2]/children/*[1];  [t] "EndBinomialOrMatrix",self::vector,@role="binomial"'.split(","),
'Rule,binomial,sbrief,[t] "BinomialOrMatrix"; [n] children/*[1]/children/*[1]; [t] "Choose"; [n] children/*[2]/children/*[1];  [t] "EndBinomialOrMatrix",self::vector,@role="binomial"'.split(","),["Rule","cases","default",'[t] "StartLayout"; [t] "Enlarged"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndLayout"',"self::cases"],["Rule","cases","sbrief",'[t] "Layout"; [t] "Enlarged"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:"Row "); [t] "EndLayout"',
"self::cases"],["Aliases","layout","self::multiline"],["Rule","line","default","[m] children/*","self::line"],'Rule,line-with-label,default,[t] "with Label"; [n] content/*[1]; [t] "EndLabel" (pause: 200); [m] children/*,self::line,content'.split(","),["SpecializedRule","line-with-label","default","brief",'[t] "Label"; [n] content/*[1] (pause: 200); [m] children/*'],["SpecializedRule","line-with-label","brief","sbrief"],'Rule,line-with-text-label,sbrief,[t] "Label"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])="text"'.split(","),
'Rule;empty-line;default;[t] "Blank";self::line;count(children/*)=0;not(content)'.split(";"),["SpecializedRule","empty-line","default","brief"],["SpecializedRule","empty-line","brief","sbrief"],'Rule,empty-line-with-label,default,[t] "with Label"; [n] content/*[1]; [t] "EndLabel"(pause: 200); [t] "Blank",self::line,count(children/*)=0,content'.split(","),["SpecializedRule","empty-line-with-label","default","brief",'[t] "Label"; [n] content/*[1] (pause: 200); [t] "Blank"'],["SpecializedRule","empty-line-with-label",
"brief","sbrief"],["Rule","enclose","default",'[t] "StartEnclose"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] "EndEnclose"',"self::enclose"],["Aliases","overbar","self::enclose",'@role="top"'],["Aliases","underbar","self::enclose",'@role="bottom"'],'Rule,leftbar,default,[t] "vertical bar"; [n] children/*[1],self::enclose,@role="left"'.split(","),'Rule,rightbar,default,[n] children/*[1]; [t] "vertical bar",self::enclose,@role="right"'.split(","),'Rule,crossout,default,[t] "CrossOut"; [n] children/*[1]; [t] "EndCrossOut",self::enclose,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),
'Rule,cancel,default,[t] "CrossOut"; [n] children/*[1]/children/*[1]; [t] "With"; [n] children/*[2]; [t] "EndCrossOut",self::overscore,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),["SpecializedRule","cancel","default","brief"],["SpecializedRule","cancel","default","sbrief"],["Aliases","cancel","self::underscore",'@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'],'Rule,cancel-reverse,default,[t] "CrossOut"; [n] children/*[2]/children/*[1]; [t] "With"; [n] children/*[1]; [t] "EndCrossOut",self::overscore,name(children/*[2])="enclose",children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'.split(","),
["SpecializedRule","cancel-reverse","default","brief"],["SpecializedRule","cancel-reverse","default","sbrief"],["Aliases","cancel-reverse","self::underscore",'name(children/*[2])="enclose"','children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role="endpunct"'.split(";"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role="integral"'.split(","),
["Rule","punctuated","default","[m] children/*","self::punctuated"],'Rule;unit;default;[t] text() (grammar:annotation="unit":translate:plural);self::identifier;@role="unit"'.split(";"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role="unit"'.split(";"),'Rule,unit-divide,default,[n] children/*[1]; [t] "per"; [n] children/*[2],self::fraction,@role="unit"'.split(","),["Rule","inference","default",'[t] "inference rule"; [m] content/*; [t] "with conclusion"; [n] children/*[1]; [t] "and"; [t] count(children/*[2]/children/*); [t] "premises"',
"self::inference"],'Rule,inference,default,[t] "inference rule"; ; [m] content/*; [t] "with conclusion"; [n] children/*[1]; [t] "and"; [t] count(children/*[2]/children/*); [t] "premise",self::inference,count(children/*[2]/children/*)<2'.split(","),["Rule","premise","default",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:"premise ");',"self::premises"],["Rule","conclusion","default","[n] children/*[1]","self::conclusion"],["Rule","label","default",'[t] "label"; [n] children/*[1]',"self::rulelabel"],
'Rule,axiom,default,[t] "axiom"; [m] children/*[1];,self::inference,@role="axiom"'.split(","),'Rule,axiom,default,[t] "empty axiom";,self::empty,@role="axiom"'.split(",")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakSpanishUtil={};sre.MathspeakSpanishUtil.ordinalCounter=function(a,b){var c=0;return function(){return sre.Messages.NUMBERS.numberToOrdinal(++c,!1)+" "+b}};sre.MathspeakSpanishUtil.smallRoot=function(a){if(!a.childNodes||0===a.childNodes.length||!a.childNodes[0].childNodes)return[];var b=a.childNodes[0].childNodes[0].textContent;if(!/^\d+$/.test(b))return[];b=parseInt(b,10);return 1<b&&10>=b?[a]:[]};sre.UnitUtil={};sre.UnitUtil.unitMultipliers=function(a,b){var c=0;return function(){var d=sre.AuditoryDescription.create({text:sre.UnitUtil.rightMostUnit(a[c])&&sre.UnitUtil.leftMostUnit(a[c+1])?sre.Messages.UNIT_TIMES:""},{});c++;return[d]}};sre.UnitUtil.SCRIPT_ELEMENTS=[sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Type.SUBSCRIPT,sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Type.UNDERSCORE];
sre.UnitUtil.rightMostUnit=function(a){for(;a;){if("unit"===a.getAttribute("role"))return!0;var b=a.tagName;a=sre.XpathUtil.evalXPath("children/*",a);a=-1!==sre.UnitUtil.SCRIPT_ELEMENTS.indexOf(b)?a[0]:a[a.length-1]}return!1};sre.UnitUtil.leftMostUnit=function(a){for(;a;){if("unit"===a.getAttribute("role"))return!0;a=sre.XpathUtil.evalXPath("children/*",a)[0]}return!1};
sre.UnitUtil.oneLeft=function(a){for(;a;){if("number"===a.tagName&&"1"===a.textContent)return[a];if("infixop"!==a.tagName||"multiplication"!==a.getAttribute("role")&&"implicit"!==a.getAttribute("role"))break;a=sre.XpathUtil.evalXPath("children/*",a)[0]}return[]};sre.MathspeakSpanish={locale:"es",domain:"mathspeak",functions:[["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber],["CQF","CQFspaceoutIdentifier",sre.MathspeakUtil.spaceoutIdentifier],["CSF","CSFspaceoutText",sre.MathspeakUtil.spaceoutText],["CSF","CSFopenFracVerbose",sre.MathspeakUtil.openingFractionVerbose],["CSF","CSFcloseFracVerbose",sre.MathspeakUtil.closingFractionVerbose],["CSF","CSFoverFracVerbose",sre.MathspeakUtil.overFractionVerbose],["CSF","CSFopenFracBrief",sre.MathspeakUtil.openingFractionBrief],
["CSF","CSFcloseFracBrief",sre.MathspeakUtil.closingFractionBrief],["CSF","CSFopenFracSbrief",sre.MathspeakUtil.openingFractionSbrief],["CSF","CSFcloseFracSbrief",sre.MathspeakUtil.closingFractionSbrief],["CSF","CSFoverFracSbrief",sre.MathspeakUtil.overFractionSbrief],["CSF","CSFopenRadicalVerbose",sre.MathspeakUtil.openingRadicalVerbose],["CSF","CSFcloseRadicalVerbose",sre.MathspeakUtil.closingRadicalVerbose],["CSF","CSFindexRadicalVerbose",sre.MathspeakUtil.indexRadicalVerbose],["CSF","CSFopenRadicalBrief",
sre.MathspeakUtil.openingRadicalBrief],["CSF","CSFcloseRadicalBrief",sre.MathspeakUtil.closingRadicalBrief],["CSF","CSFindexRadicalBrief",sre.MathspeakUtil.indexRadicalBrief],["CSF","CSFopenRadicalSbrief",sre.MathspeakUtil.openingRadicalSbrief],["CSF","CSFindexRadicalSbrief",sre.MathspeakUtil.indexRadicalSbrief],["CQF","CQFisSmallRoot",sre.MathspeakSpanishUtil.smallRoot],["CSF","CSFsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],
["CSF","CSFsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFbaselineVerbose",sre.MathspeakUtil.baselineVerbose],["CSF","CSFbaselineBrief",sre.MathspeakUtil.baselineBrief],["CSF","CSFleftsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFleftsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFrightsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFrightsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],
["CSF","CSFleftsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFleftsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFrightsuperscriptBrief",sre.MathspeakUtil.superscriptBrief],["CSF","CSFrightsubscriptBrief",sre.MathspeakUtil.subscriptBrief],["CSF","CSFunderscript",sre.MathspeakUtil.nestedUnderscore],["CSF","CSFoverscript",sre.MathspeakUtil.nestedOverscore],["CTXF","CTXFordinalCounter",sre.MathspeakSpanishUtil.ordinalCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],
["CTXF","CTXFunitMultipliers",sre.UnitUtil.unitMultipliers],["CQF","CQFdetIsSimple",sre.MathspeakUtil.determinantIsSimple],["CSF","CSFRemoveParens",sre.MathspeakUtil.removeParens],["CQF","CQFoneLeft",sre.UnitUtil.oneLeft],["CQF","CQFresetNesting",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[n] . (engine:modality=summary,grammar:collapsed); [t] "plegado";{self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),["SpecializedRule",
"collapsed","default","brief"],["SpecializedRule","collapsed","brief","sbrief"],"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting".split(";"),["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::number;contains(@grammar, "protected")'.split(";"),["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule;blank-empty;default;[t] "espacio";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),
'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, "ignoreFont")){@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "m\u00e1s"; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),
'Rule{number-with-chars{default{[t] "n\u00famero"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role="othernumber"{"" != translate(text(), "0123456789.,", ""){not(contains(@grammar, "protected"))'.split("{"),["SpecializedRule","number-with-chars","default","brief",'[t] "n\u00fam"; [m] CQFspaceoutNumber (grammar:protected)'],["SpecializedRule","number-with-chars","brief","sbrief"],'Rule{number-as-upper-word{default{[t] "may\u00fascula"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9", "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9"){""=translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9","")'.split("{"),
["SpecializedRule","number-as-upper-word","default","brief"],["SpecializedRule","number-as-upper-word","default","sbrief"],'Rule{number-baseline{default{[t] "l\u00ednea base"; [n] . (grammar:baseline){self::number{not(contains(@grammar, "ignoreFont")){preceding-sibling::identifier{not(contains(@grammar, "baseline")){preceding-sibling::*[1][@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline",
"default","brief",'[t] "base"; [n] text()'],["SpecializedRule","number-baseline","brief","sbrief"],'Rule{number-baseline-font{default{[t] "l\u00ednea base"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"{preceding-sibling::identifier{preceding-sibling::*[@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),["SpecializedRule","number-baseline-font",
"default","brief",'[t] "base"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font)'],["SpecializedRule","number-baseline-font","brief","sbrief"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!="unit";not(@font) or @font="normal" or contains(@grammar, "ignoreFont");text()!=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", "")'.split(";"),
["Rule","identifier","default","[n] text()","self::identifier"],'Rule,negative,default,[t] "menos"; [n] children/*[1],self::prefixop,@role="negative",children/identifier'.split(","),["Aliases","negative","self::prefixop",'@role="negative"',"children/number"],["Aliases","negative","self::prefixop",'@role="negative"','children/fraction[@role="vulgar"]'],'Rule,negative,default,[t] "menos"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),["Rule","prefix","default","[m] content/*; [n] children/*[1]",
"self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [m] content/*","self::postfixop"],["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule;implicit;default;[m] children/*;self::infixop;@role="implicit"'.split(";"),["Aliases","implicit","self::infixop",'@role="leftsuper" or @role="leftsub" or @role="rightsuper" or @role="rightsub"'],'Rule,subtraction,default,[m] children/* (separator:"menos");,self::infixop,@role="subtraction"'.split(","),
["Rule","function-unknown","default","[n] children/*[1]; [n] children/*[2]","self::appl"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role="prefix function"]'.split(","),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="leftright"'.split(","),'Rule,fences-neutral,default,[t] "empezar valor absoluto"; [n] children/*[1]; [t] "finalizar valor absoluto",self::fenced,@role="neutral",content/*[1][text()]="|" or content/*[1][text()]="\u2758" or content/*[1][text()]="\uff5c"'.split(","),
["SpecializedRule","fences-neutral","default","sbrief",'[t] "valor absoluto"; [n] children/*[1]; [t] "finalizar valor absoluto"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="neutral"'.split(","),'Rule,fences-set,default,[t] "empezar llave"; [n] children/*[1]; [t] "finalizar llave",self::fenced,@role="set empty" or @role="set extended" or @role="set singleton" or @role="set collection",not(name(../..)="appl")'.split(","),["SpecializedRule",
"fences-set","default","sbrief",'[t] "llave"; [n] children/*[1]; [t] "finalizar llave"'],["Rule","text","default","[n] text() (grammar:noTranslateText)","self::text"],'Rule;factorial;default;[t] "factorial";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),'Rule;minus;default;[t] "menos";self::operator;text()="-"'.split(";"),'Rule;single-prime;default;[t] "prima";self::punctuated;@role="prime";count(children/*)=1'.split(";"),'Rule;double-prime;default;[t] "doble prima";self::punctuated;@role="prime";count(children/*)=2'.split(";"),
'Rule;triple-prime;default;[t] "triple prima";self::punctuated;@role="prime";count(children/*)=3'.split(";"),'Rule;quadruple-prime;default;[t] "cuadruplicar prima";self::punctuated;@role="prime";count(children/*)=4'.split(";"),'Rule,counted-prime,default,[t] count(children/*); [t] "prime",self::punctuated,@role="prime"'.split(","),["Rule","fraction","default","[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose","self::fraction"],["Rule","fraction",
"brief","[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief","self::fraction"],["Rule","fraction","sbrief","[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief","self::fraction"],'Rule,continued-fraction-outer,default,[t] "fracci\u00f3n continua"; [n] children/*[1];[t] "entre"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),
["SpecializedRule","continued-fraction-outer","default","brief",'[t] "frac continua"; [n] children/*[1];[t] "entre"; [n] children/*[2]'],["SpecializedRule","continued-fraction-outer","brief","sbrief"],'Rule,continued-fraction-inner,default,[t] "empezar fracci\u00f3n"; [n] children/*[1];[t] "entre"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role="ellipsis" and not(following-sibling::*)]'.split(","),["SpecializedRule","continued-fraction-inner","default",
"brief",'[t] "empezar frac"; [n] children/*[1];[t] "entre"; [n] children/*[2]'],["SpecializedRule","continued-fraction-inner","brief","sbrief",'[t] "frac"; [n] children/*[1];[t] "entre"; [n] children/*[2]'],["Rule","sqrt","default","[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose","self::sqrt"],["Rule","sqrt","brief","[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief","self::sqrt"],["Rule","sqrt","sbrief","[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief",
"self::sqrt"],"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,CQFisSmallRoot".split(","),"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot".split(","),"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot".split(","),["Rule","root","default","[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose",
"self::root"],["Rule","root","brief","[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief","self::root"],["Rule","root","sbrief","[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief","self::root"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),
'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Aliases;limlower;self::underscore;@role="limit function";name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),
'Aliases;limlower;self::underscore;children/*[2][@role!="underaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),'Aliases;limupper;self::overscore;children/*[2][@role!="overaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),["Rule","limboth-end","default",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] "finalizar \u00edndices"',
"self::limboth"],["Rule","limlower-end","default",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] "finalizar \u00edndices"',"self::limlower"],["Rule","limupper-end","default",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] "finalizar \u00edndices"',"self::limupper"],["Aliases","limlower-end","self::underscore",'@role="limit function"'],["Aliases","limlower-end","self::underscore"],["Aliases","limupper-end","self::overscore"],["Rule","integral","default","[n] children/*[1]; [n] children/*[2]; [n] children/*[3];",
"self::integral"],'Rule,integral,default,[n] children/*[1]; [t] "definida"; [t] "sub\u00edndice"; [n] children/*[2];[t] "super\u00edndice"; [n] children/*[3]; [t] "l\u00ednea base";,self::limboth,@role="integral"'.split(","),["SpecializedRule","integral","default","brief",'[n] children/*[1]; [t] "Sub"; [n] children/*[2];[t] "Sup"; [n] children/*[3]; [t] "Base";'],["SpecializedRule","integral","brief","sbrief"],["Rule","bigop","default","[n] children/*[1]; [n] children/*[2];","self::bigop"],["Rule",
"relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role="equality",count(./children/*)=2'.split(","),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role="equality";count(./children/*)>2'.split(";"),["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],["Rule","subscript","default","[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]",
"self::subscript"],["Rule","subscript","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]","self::subscript"],["SpecializedRule","subscript","brief","sbrief"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="subscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and @role!="subsup",not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","subscript-baseline","default","brief","[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBriefS"],["SpecializedRule","subscript-baseline","brief","sbrief"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","subscript-baseline",
"self::subscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel",sre.MathspeakUtil.generateBaselineConstraint()],["Aliases","subscript-baseline","self::subscript","not(following-sibling::*)","@embellished"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="superscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),["SpecializedRule","subscript-empty-sup",
"default","brief"],["SpecializedRule","subscript-empty-sup","brief","sbrief"],["Aliases","subscript-empty-sup","self::subscript",'name(children/*[2])="superscript"','name(children/*[2]/children/*[1])="empty"'],["Rule","superscript","default","[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]","self::superscript"],["SpecializedRule","superscript","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]"],["SpecializedRule","superscript","brief","sbrief"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="superscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
["SpecializedRule","superscript-baseline","default","brief","[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBriefS"],["SpecializedRule","superscript-baseline","brief","sbrief"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","superscript-baseline","self::superscript",
"not(following-sibling::*)","ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt"],["Aliases","superscript-baseline","self::superscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel","not(@embellished)",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role="prime"])'.split(" "),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="subscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),
["SpecializedRule","superscript-empty-sub","default","brief"],["SpecializedRule","superscript-empty-sub","brief","sbrief"],["Aliases","superscript-empty-sub","self::superscript",'name(children/*[2])="subscript"','name(children/*[2]/children/*[1])="empty"'],'Rule,square,default,[n] children/*[1]; [t] "al cuadrado",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","square","default","brief"],["SpecializedRule","square","default","sbrief"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,cube,default,[n] children/*[1]; [t] "al cubo",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!="text" or not(name(children/*[1])="text" and (name(../../../punctuated[@role="text"]/..)="stree" or name(..)="stree")),name(children/*[1])!="subscript" or (name(children/*[1])="subscript" and name(children/*[1]/children/*[1])="identifier" and name(children/*[1]/children/*[2])="number" and children/*[1]/children/*[2][@role!="mixed"] and children/*[1]/children/*[2][@role!="othernumber"]),not(@embellished)'.split(","),
["SpecializedRule","cube","default","brief"],["SpecializedRule","cube","default","sbrief"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role="prefix operator"]'.split(";"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"]'.split(","),["SpecializedRule","prime","default","brief"],["SpecializedRule","prime","default","sbrief"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",not(following-sibling::*)'.split(","),
["SpecializedRule","prime-subscript","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]"],["SpecializedRule","prime-subscript","brief","sbrief"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",following-sibling::*'.split(","),
["SpecializedRule","prime-subscript-baseline","default","brief","[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBriefS"],["SpecializedRule","prime-subscript-baseline","brief","sbrief"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role="prime"] name(children/*[1])="subscript" not(following-sibling::*) @embellished'.split(" "),'Rule,overscore,default,[t] "modificando superior"; [n] children/*[1]; [t] "con"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"]'.split(","),
["SpecializedRule","overscore","default","brief",'[t] "mod superior"; [n] children/*[1]; [t] "con"; [n] children/*[2]'],["SpecializedRule","overscore","brief","sbrief"],'Rule,double-overscore,default,[t] "modificando superior superior"; [n] children/*[1]; [t] "con"; [n] children/*[2],self::overscore,children/*[2][@role="overaccent"],name(children/*[1])="overscore",children/*[1]/children/*[2][@role="overaccent"]'.split(","),["SpecializedRule","double-overscore","default","brief",'[t] "mod superior superior"; [n] children/*[1]; [t] "con"; [n] children/*[2]'],
["SpecializedRule","double-overscore","brief","sbrief"],'Rule,underscore,default,[t] "modificando inferior"; [n] children/*[1]; [t] "con"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"]'.split(","),["SpecializedRule","underscore","default","brief",'[t] "mod inferior"; [n] children/*[1]; [t] "con"; [n] children/*[2]'],["SpecializedRule","underscore","brief","sbrief"],'Rule,double-underscore,default,[t] "modificando inferior inferior"; [n] children/*[1]; [t] "con"; [n] children/*[2],self::underscore,children/*[2][@role="underaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role="underaccent"]'.split(","),
["SpecializedRule","double-underscore","default","brief",'[t] "mod inferior inferior"; [n] children/*[1]; [t] "con"; [n] children/*[2]'],["SpecializedRule","double-underscore","brief","sbrief"],'Rule,overbar,default,[n] children/*[1]; [t] "barra",self::overscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="overaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),["SpecializedRule","overbar",
"default","brief",'[n] children/*[1]; [t] "barra"'],["SpecializedRule","overbar","brief","sbrief"],'Rule,underbar,default,[n] children/*[1]; [t] "subbarra",self::underscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="underaccent"],children/*[2][text()="\u00af" or text()="\uffe3" or text()="\uff3f" or text()="_" or text()="\u203e"]'.split(","),["SpecializedRule","underbar","default","brief",'[n] children/*[1]; [t] "subbarra"'],["SpecializedRule","underbar",
"brief","sbrief"],'Rule,overtilde,default,[n] children/*[1]; [t] "tilde",self::overscore,children/*[2][@role="overaccent"],@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][text()="~" or text()="\u02dc" or text()="\u223c" or text()="\uff5e"]'.split(","),["SpecializedRule","overtilde","default","brief",'[n] children/*[1]; [t] "tilde"'],["SpecializedRule","overtilde","brief","sbrief"],'Rule,undertilde,default,[n] children/*[1]; [t] "subtilde",self::underscore,@role="latinletter" or @role="greekletter" or @role="otherletter",children/*[2][@role="underaccent"],children/*[2][text()="~" or text()="\u02dc" or text()="\u223c" or text()="\uff5e"]'.split(","),
["SpecializedRule","undertilde","default","brief",'[n] children/*[1]; [t] "subtilde"'],["SpecializedRule","undertilde","brief","sbrief"],'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])="matrix"'.split(","),["Rule","matrix","default",'[t] "empezar matriz"; [t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar matriz"',"self::matrix"],["Rule","matrix","sbrief",
'[t] "matriz"; [t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:" "); [t] "finalizar matriz"',"self::matrix"],["Aliases","matrix","self::vector"],["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:"columna");[p] (pause: 200)',"self::row"],'Rule{row-with-label{default{[t] "con etiqueta"; [n] content/*[1]; [t] "finalizar etiqueta" (pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"columna"){self::row{content'.split("{"),
'Rule{row-with-label{brief{[t] "etiqueta"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"columna"){self::row{content'.split("{"),["SpecializedRule","row-with-label","brief","sbrief"],'Rule{row-with-text-label{sbrief{[t] "etiqueta"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:"columna"){self::row{content{name(content/cell/children/*[1])="text"'.split("{"),'Rule;empty-row;default;[t] "espacio";self::row;count(children/*)=0'.split(";"),["Rule","matrix-cell",
"default","[n] children/*[1]; [p] (pause: 300)","self::cell"],'Rule,empty-cell,default,[t] "espacio"; [p] (pause: 300),self::cell,count(children/*)=0'.split(","),'Rule{determinant{default{[t] "empezar determinante"; [t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar determinante"{self::matrix{@role="determinant"'.split("{"),["SpecializedRule","determinant","default","sbrief",'[t] "determinante"; [t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar determinante"'],
'Rule{determinant-simple{default{[t] "empezar determinante"; [t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila",grammar:simpleDet); [t] "finalizar determinante"{self::matrix{@role="determinant"{CQFdetIsSimple'.split("{"),["SpecializedRule","determinant-simple","default","sbrief",'[t] "determinante"; [t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila",grammar:simpleDet); [t] "finalizar determinante"'],
'Rule{row-simple{default{[m] children/*;{self::row{@role="determinant"{contains(@grammar, "simpleDet")'.split("{"),["Rule","layout","default",'[t] "empezar esquema"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar esquema"',"self::table"],["Rule","layout","sbrief",'[t] "esquema"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar esquema"',"self::table"],'Rule,binomial,default,[t] "empezar binomial"; [n] children/*[1]/children/*[1]; [t] "en"; [n] children/*[2]/children/*[1];  [t] "finalizar binomial",self::vector,@role="binomial"'.split(","),
'Rule,binomial,sbrief,[t] "binomial"; [n] children/*[1]/children/*[1]; [t] "en"; [n] children/*[2]/children/*[1];  [t] "finalizar binomial",self::vector,@role="binomial"'.split(","),["Rule","cases","default",'[t] "empezar esquema"; [n] content/*[1]; [t] "alargada"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar esquema"',"self::cases"],["Rule","cases","sbrief",'[t] "esquema"; [n] content/*[1]; [t] "alargada"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:"fila "); [t] "finalizar esquema"',
"self::cases"],["Aliases","layout","self::multiline"],["Rule","line","default","[m] children/*","self::line"],'Rule,line-with-label,default,[t] "con etiqueta"; [n] content/*[1]; [t] "finalizar etiqueta" (pause: 200); [m] children/*,self::line,content'.split(","),["SpecializedRule","line-with-label","default","brief",'[t] "etiqueta"; [n] content/*[1] (pause: 200); [m] children/*'],["SpecializedRule","line-with-label","brief","sbrief"],'Rule,line-with-text-label,sbrief,[t] "etiqueta"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])="text"'.split(","),
'Rule;empty-line;default;[t] "espacio";self::line;count(children/*)=0;not(content)'.split(";"),["SpecializedRule","empty-line","default","brief"],["SpecializedRule","empty-line","brief","sbrief"],'Rule,empty-line-with-label,default,[t] "con etiqueta"; [n] content/*[1]; [t] "finalizar etiqueta" (pause: 200); [t] "espacio",self::line,count(children/*)=0,content'.split(","),["SpecializedRule","empty-line-with-label","default","brief",'[t] "etiqueta"; [n] content/*[1] (pause: 200); [t] "espacio"'],["SpecializedRule",
"empty-line-with-label","brief","sbrief"],["Rule","enclose","default",'[t] "empezar rodear"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] "finalizar rodear"',"self::enclose"],["Aliases","overbar","self::enclose",'@role="top"'],["Aliases","underbar","self::enclose",'@role="bottom"'],'Rule,leftbar,default,[t] "barra vertical"; [n] children/*[1],self::enclose,@role="left"'.split(","),'Rule,rightbar,default,[n] children/*[1]; [t] "barra vertical",self::enclose,@role="right"'.split(","),'Rule,crossout,default,[t] "tachado"; [n] children/*[1]; [t] "finalizar tachado",self::enclose,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),
'Rule,cancel,default,[t] "tachado"; [n] children/*[1]/children/*[1]; [t] "con"; [n] children/*[2]; [t] "finalizar tachado",self::overscore,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),["SpecializedRule","cancel","default","brief"],["SpecializedRule","cancel","default","sbrief"],["Aliases","cancel","self::underscore",'@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'],'Rule,cancel-reverse,default,[t] "tachado"; [n] children/*[2]/children/*[1]; [t] "con"; [n] children/*[1]; [t] "finalizar tachado",self::overscore,name(children/*[2])="enclose",children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'.split(","),
["SpecializedRule","cancel-reverse","default","brief"],["SpecializedRule","cancel-reverse","default","sbrief"],["Aliases","cancel-reverse","self::underscore",'name(children/*[2])="enclose"','children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role="endpunct"'.split(";"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role="integral"'.split(","),
["Rule","punctuated","default","[m] children/*","self::punctuated"],'Rule;unit-singular;default;[t] text() (grammar:annotation="unit":translate);self::identifier;@role="unit"'.split(";"),'Rule;unit-plural;default;[t] text() (grammar:annotation="unit":translate:plural);self::identifier;@role="unit";not(contains(@grammar, "singularUnit"))'.split(";"),'Rule,unit-square,default,[n] children/*[1]; [t] "cuadrado",self::superscript,@role="unit",children/*[2][text()=2],name(children/*[1])="identifier"'.split(","),
'Rule,unit-cubic,default,[n] children/*[1]; [t] "c\u00fabico",self::superscript,@role="unit",children/*[2][text()=3],name(children/*[1])="identifier"'.split(","),'Rule,reciprocal,default,[t] "rec\u00edproco"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!="unit"]'.split(","),'Rule,reciprocal,default,[t] "por"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role="unit"]'.split(","),
'Rule;unit-combine;default;[m] children/* (sepFunc:CTXFunitMultipliers);self::infixop;@role="unit"'.split(";"),'Rule,unit-combine-mult,default,[m] children/* (sepFunc:CTXFunitMultipliers);,self::infixop,@role="multiplication" or @role="implicit",children/*[@role="unit"]'.split(","),'Rule{unit-combiner-singular{default{[n] children/*[1]; [t] "por"; [m] children/*[position()>1] (grammar:!singularUnit, sepFunc:CTXFunitMultipliers){self::infixop{@role="unit"{name(children/*[1])!="number"{contains(@grammar, "singularUnit"){count(children/*)>1'.split("{"),
'Rule,unit-combine-singular-first,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); [t] "por"; [m] children/*[position()>2] (sepFunc:CTXFunitMultipliers),self::infixop,@role="unit",name(children/*[1])="number",children/*[1][text()=1]'.split(","),'Rule,unit-combine-singular-first,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); ,self::infixop,@role="unit",name(children/*[1])="number",children/*[1][text()=1],count(children/*)=2'.split(","),'Rule,unit-divide,default,[n] children/*[1]; [t] "por"; [n] children/*[2] (grammar:singularUnit),self::fraction,@role="unit"'.split(",")],
initialize:[sre.MathspeakUtil.generateTensorRules]};sre.NemethUtil={};sre.NemethUtil.openingFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_START};sre.NemethUtil.closingFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_END};sre.NemethUtil.overFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_OVER};
sre.NemethUtil.overBevelledFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+"\u2838"+sre.Messages.MS.FRACTION_OVER};sre.NemethUtil.nestedRadical=function(a,b){a=sre.NemethUtil.radicalNestingDepth(a);return 1===a?b:Array(a).join(sre.Messages.MS.NESTED)+b};sre.NemethUtil.radicalNestingDepth=function(a,b){b=b||0;return a.parentNode?sre.NemethUtil.radicalNestingDepth(a.parentNode,"root"===a.tagName||"sqrt"===a.tagName?b+1:b):b};
sre.NemethUtil.openingRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.STARTROOT)};sre.NemethUtil.closingRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.ENDROOT)};sre.NemethUtil.indexRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.ROOTINDEX)};
sre.NemethUtil.enlargeFence=function(a){if(1===a.length)return"\u2820"+a;var b=a.split("");return b.every(function(c){return"\u2833"===c})?"\u2820"+b.join("\u2820"):a.slice(0,1)+"\u2820"+a.slice(1)};sre.Grammar.getInstance().setCorrection("enlargeFence",sre.NemethUtil.enlargeFence);sre.NemethUtil.NUMBER_PROPAGATORS_=[sre.SemanticAttr.Type.MULTIREL,sre.SemanticAttr.Type.RELSEQ,sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Type.APPL];
sre.NemethUtil.checkParent_=function(a){a=a.parent;if(!a)return!1;var b=a.type;return-1!==sre.NemethUtil.NUMBER_PROPAGATORS_.indexOf(b)||b===sre.SemanticAttr.Type.PREFIXOP&&a.role===sre.SemanticAttr.Role.NEGATIVE?!0:!1};sre.NemethUtil.propagateNumber=function(a,b){if(!a.childNodes.length)return sre.NemethUtil.checkParent_(a)&&(b.number=!0),[b.number?"number":"",{number:!1}];sre.NemethUtil.checkParent_(a)&&(b.number=!0);return["",b]};
sre.NemethUtil.numberIndicator=function(){return new sre.SemanticVisitor("nemeth",sre.NemethUtil.propagateNumber,{number:!0})};sre.NemethUtil.addAnnotators=function(){sre.SemanticAnnotations.getInstance().register(sre.NemethUtil.numberIndicator())};sre.NemethUtil.componentString_={2:"CSFbaseline",1:"CSFsubscript",0:"CSFsuperscript"};sre.NemethUtil.childNumber_={4:2,3:3,2:1,1:4,0:5};
sre.NemethUtil.generateTensorRuleStrings_=function(a){var b=[],c="";a=parseInt(a,2);for(var d=0;5>d;d++){var e="children/*["+sre.NemethUtil.childNumber_[d]+"]";a&1?c="[t] "+sre.NemethUtil.componentString_[d%3]+"Verbose; [n] "+e+";"+c:b.unshift("name("+e+')="empty"');a>>=1}b.push(c);return b};
sre.NemethUtil.generateTensorRules=function(a){var b=goog.bind(a.defineRule,a);a=goog.bind(a.defineRulesAlias,a);for(var c="11111 11110 11101 11100 10111 10110 10101 10100 01111 01110 01101 01100".split(" "),d=0,e;e=c[d];d++){var f="tensor"+e;e=sre.NemethUtil.generateTensorRuleStrings_(e);var g=e.pop(),h=[f,"default.default",g,"self::tensor"].concat(e);b.apply(null,h);g+="; [t]"+sre.NemethUtil.componentString_[2]+"Verbose";f+="-baseline";h=[f,"default.default",g,"self::tensor","following-sibling::*"].concat(e);
b.apply(null,h);f=[f,"self::tensor","not(following-sibling::*)","ancestor::fraction|ancestor::punctuated|ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::relseq|ancestor::multirel|@embellished"].concat(e);a.apply(null,f)}};sre.NemethRules={locale:"nemeth",modality:"braille",domain:"default",functions:[["CQF","CQFspaceoutNumber",sre.MathspeakUtil.spaceoutNumber],["CQF","CQFspaceoutIdentifier",sre.MathspeakUtil.spaceoutIdentifier],["CSF","CSFspaceoutText",sre.MathspeakUtil.spaceoutText],["CSF","CSFopenFraction",sre.NemethUtil.openingFraction],["CSF","CSFcloseFraction",sre.NemethUtil.closingFraction],["CSF","CSFoverFraction",sre.NemethUtil.overFraction],["CSF","CSFoverBevFraction",sre.NemethUtil.overBevelledFraction],
["CSF","CSFopenRadicalVerbose",sre.NemethUtil.openingRadical],["CSF","CSFcloseRadicalVerbose",sre.NemethUtil.closingRadical],["CSF","CSFindexRadicalVerbose",sre.NemethUtil.indexRadical],["CSF","CSFsuperscriptVerbose",sre.MathspeakUtil.superscriptVerbose],["CSF","CSFsubscriptVerbose",sre.MathspeakUtil.subscriptVerbose],["CSF","CSFbaselineVerbose",sre.MathspeakUtil.baselineVerbose],["CSF","CSFunderscript",sre.MathspeakUtil.nestedUnderscore],["CSF","CSFoverscript",sre.MathspeakUtil.nestedOverscore],
["CTXF","CTXFordinalCounter",sre.NumbersUtil.ordinalCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator],["CQF","CQFdetIsSimple",sre.MathspeakUtil.determinantIsSimple],["CSF","CSFRemoveParens",sre.MathspeakUtil.removeParens],["CQF","CQFresetNesting",sre.MathspeakUtil.resetNestingDepth]],rules:["Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting".split(";"),["Rule","unknown","default","[n] text()","self::unknown"],'Rule;protected;default;[t] text();self::*;@role="protected"'.split(";"),
["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule;blank-empty;default;[t] "\u2800";self::empty;count(../*)=1;name(../..)="cell" or name(../..)="line"'.split(";"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, "ignoreFont")){@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;@role!="greekletter";not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),'Rule{number-indicator{default{[t] "\u283c"; [n] text() (pause:10){self::number{contains(@annotation, "nemeth:number"){not(ancestor::sqrt){not(ancestor::root){not(ancestor::fraction)'.split("{"),
["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "\u2838\u2839"; [n] children/*[2]/children/*[1]; [t] "\u280c"; [n] children/*[2]/children/*[2]; [t] "\u2838\u283c",self::number,@role="mixed"'.split(","),'Rule{number-with-chars{default{[t] "\u283c"; [m] CQFspaceoutNumber{self::number{"" != translate(text(), "0123456789.,", ""){text() != translate(text(), "0123456789.,", "")'.split("{"),'Rule{number-as-upper-word{default{[t] "UpperWord"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9", "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9"){""=translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9","")'.split("{"),
'Rule{number-baseline{default{[t] "\u2810"; [n] text(){self::number{not(contains(@grammar, "ignoreFont")){preceding-sibling::identifier{preceding-sibling::*[1][@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),'Rule{number-baseline-font{default{[t] "\u2810"; [t] @font; [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"{preceding-sibling::identifier{preceding-sibling::*[@role="latinletter" or @role="greekletter" or @role="otherletter"]{parent::*/parent::infixop[@role="implicit"]'.split("{"),
'Rule;identifier;default;[n] text();self::identifier;@role="protected"'.split(";"),'Rule,negative,default,[t] "\u2824"; [n] children/*[1],self::prefixop,@role="negative"'.split(","),["Rule","prefix","default","[n] text(); [n] children/*[1]","self::prefixop"],["Rule","postfix","default","[n] children/*[1]; [n] text()","self::postfixop"],["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule;implicit;default;[m] children/*;self::infixop;@role="implicit"'.split(";"),
["Aliases","implicit","self::infixop",'@role="leftsuper" or @role="leftsub" or @role="rightsuper" or @role="rightsub"'],["Rule","function-named","default",'[n] children/*[1]; [t] "\u2800"; [n] children/*[2]',"self::appl"],'Rule,function-prefix,default,[n] content/*[1]; [t] "\u2800"; [n] children/*[1],self::prefixop,content/*[1][@role="infix function"]'.split(","),'Rule,function-infix,default,[n] children/*[1]; [n] content/*[1]; [t] "\u2800"; [n] children/*[2],self::infixop,@role="infix function"'.split(","),
'Rule,function-simple,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role="simple function"]'.split(","),["Rule","fences-open-close","default","[n] content/*[1]; [n] children/*[1]; [n] content/*[2]","self::fenced"],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role="neutral"'.split(","),["Rule","text","default","[n] text()","self::text"],'Rule;factorial;default;[t] "\u282f";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),
'Rule;single-prime;default;[t] "\u2804";self::punctuated;@role="prime";count(children/*)=1'.split(";"),'Rule;double-prime;default;[t] "\u2804\u2804";self::punctuated;@role="prime";count(children/*)=2'.split(";"),'Rule;triple-prime;default;[t] "\u2804\u2804\u2804";self::punctuated;@role="prime";count(children/*)=3'.split(";"),'Rule;quadruple-prime;default;[t] "\u2804\u2804\u2804\u2804";self::punctuated;@role="prime";count(children/*)=4'.split(";"),["Rule","fraction","default","[t] CSFopenFraction; [n] children/*[1]; [t] CSFoverFraction; [n] children/*[2]; [t] CSFcloseFraction",
"self::fraction"],'Rule{bevelled-fraction{default{[t] CSFopenFraction; [n] children/*[1]; [t] CSFoverBevFraction; [n] children/*[2]; [t] CSFcloseFraction{self::fraction{contains(@annotation, "general:bevelled")'.split("{"),["Rule","sqrt","default","[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose","self::sqrt"],["Rule","root","default",'[t] CSFindexRadicalVerbose; [n] children/*[1];[t] "\u281c"; [n] children/*[2]; [t] CSFcloseRadicalVerbose',"self::root"],'Rule,limboth,default,[t] "\u2810"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),
'Rule,limlower,default,[t] "\u2810"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Rule,limupper,default,[t] "\u2810"; [n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)="underscore" or name(../..)="overscore",following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(","),'Aliases;limlower;self::underscore;@role="limit function";name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),
'Aliases;limlower;self::underscore;children/*[2][@role!="underaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),'Aliases;limupper;self::overscore;children/*[2][@role!="overaccent"];name(../..)="underscore" or name(../..)="overscore";following-sibling::*[@role!="underaccent" and @role!="overaccent"]'.split(";"),["Rule","limboth-end","default",'[t] "\u2810"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] "\u283b"',
"self::limboth"],["Rule","limlower-end","default",'[t] "\u2810"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] "\u283b"',"self::limlower"],["Rule","limupper-end","default",'[t] "\u2810"; [n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] "\u283b"',"self::limupper"],["Aliases","limlower-end","self::underscore",'@role="limit function"'],["Aliases","limlower-end","self::underscore"],["Aliases","limupper-end","self::overscore"],["Rule","integral","default","[n] children/*[1]; [n] children/*[2]; [n] children/*[3];",
"self::integral"],'Rule,integral,default,[n] children/*[1]; [t] "\u2830"; [n] children/*[2];[t] "\u2818"; [n] children/*[3]; [t] "\u2810",self::limboth,@role="integral"'.split(","),["Rule","bigop","default","[n] children/*[1]; [n] children/*[2];","self::bigop"],["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role="equality",count(./children/*)=2'.split(","),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role="equality";count(./children/*)>2'.split(";"),
["Rule","multrel","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::multirel"],["Rule","subscript","default","[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]","self::subscript"],'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])="identifier",name(./children/*[2])="number",./children/*[2][@role!="mixed"],./children/*[2][@role!="othernumber"],self::*'.split(","),'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,@role!="prefix function",not(name(following-sibling::subscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="subscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and @role!="subsup",not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","subscript-baseline","self::subscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel",sre.MathspeakUtil.generateBaselineConstraint()],["Aliases","subscript-baseline","self::subscript","not(following-sibling::*)",
"@embellished"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="superscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),["Aliases","subscript-empty-sup","self::subscript",'name(children/*[2])="superscript"','name(children/*[2]/children/*[1])="empty"'],["Rule","superscript","default","[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]","self::superscript"],
'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,@role!="prefix function",not(name(following-sibling::superscript/children/*[1])="empty" or (name(following-sibling::infixop[@role="implicit"]/children/*[1])="superscript" and name(following-sibling::*/children/*[1]/children/*[1])="empty")) and not(following-sibling::*[@role="rightsuper" or @role="rightsub" or @role="leftsub" or @role="leftsub"])'.split(","),
'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role="leftsuper" or @role="rightsub" or @role="rightsuper" or @role="rightsub"])'.split(";"),["Aliases","superscript-baseline","self::superscript","not(following-sibling::*)","ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt"],["Aliases","superscript-baseline","self::superscript","not(following-sibling::*)","ancestor::relseq|ancestor::multirel",
"not(@embellished)",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role="prime"])'.split(" "),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])="infixop",name(children/*[2][@role="implicit"]/children/*[1])="subscript",name(children/*[2]/children/*[1]/children/*[1])="empty"'.split(","),["Aliases","superscript-empty-sub","self::superscript",
'name(children/*[2])="subscript"','name(children/*[2]/children/*[1])="empty"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role="prime"]'.split(","),'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",not(following-sibling::*)'.split(","),'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",following-sibling::*'.split(","),
'Aliases prime-subscript-baseline self::superscript children/*[2][@role="prime"] name(children/*[1])="subscript" not(following-sibling::*) @embellished'.split(" "),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role="prime"],name(children/*[1])="subscript",name(children/*[1]/children/*[1])="identifier",name(children/*[1]/children/*[2])="number",children/*[1]/children/*[2][@role!="mixed"],children/*[1]/children/*[2][@role!="othernumber"]'.split(","),
'Rule,overscore,default,[t] "\u2810"; [n] children/*[1]; [t] "\u2823"; [n] children/*[2]; [t] "\u283b",self::overscore,children/*[2][@role="overaccent"]'.split(","),'Rule{overscore{default{[n] children/*[1]; [t] "\u2823"; [n] children/*[2]{self::overscore{children/*[2][@role="overaccent"]{contains(@grammar, "modified")'.split("{"),'Rule,double-overscore,default,[t] "\u2810"; [n] children/*[1] (grammar:"modified"); [t] "\u2823"; [n] children/*[2]; [t] "\u283b",self::overscore,children/*[2][@role="overaccent"],name(children/*[1])="overscore",children/*[1]/children/*[2][@role="overaccent"]'.split(","),
'Rule,underscore,default,[t] "\u2810"; [n] children/*[1]; [t] "\u2829"; [n] children/*[2]; [t] "\u283b",self::underscore,children/*[2][@role="underaccent"]'.split(","),'Rule{underscore{default{[n] children/*[1]; [t] "\u2829"; [n] children/*[2]{self::underscore{children/*[2][@role="underaccent"]{contains(@grammar, "modified")'.split("{"),'Rule,double-underscore,default,[t] "\u2810"; [n] children/*[1] (grammar:"modified"); [t] "\u2829"; [n] children/*[2]; [t] "\u283b",self::underscore,children/*[2][@role="underaccent"],name(children/*[1])="underscore",children/*[1]/children/*[2][@role="underaccent"]'.split(","),
'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])="matrix"'.split(","),["Rule","matrix","default",'[m] children/* (separator:"\u2800", join:"");',"self::matrix"],["Aliases","matrix","self::vector"],["Rule","matrix-row","default",'[n] ../../content/*[1] (grammar:enlargeFence); [m] children/* (separator:"\u2800"); [n] ../../content/*[2] (grammar:enlargeFence); ',"self::row"],["Aliases","matrix-row","self::line",'@role="vector"'],["Aliases","matrix-row",
"self::line",'@role="binomial"'],'Rule{row-with-label{default{[t] "with Label"; [n] content/*[1]; [t] "EndLabel"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:"Column"){self::row{content'.split("{"),'Rule;empty-row;default;[t] "\u2800" (pause:300);self::row;count(children/*)=0'.split(";"),["Rule","matrix-cell","default","[n] children/*[1]","self::cell"],'Rule;empty-cell;default;[t] "\u2800" (pause: 300);self::cell;count(children/*)=0'.split(";"),["Rule","layout","default",'[m] children/* (separator:"\u2800", join:"");',
"self::table"],["Rule","cases","default",'[n] ../../content/*[1] (grammar:enlargeFence); [m] children/* (separator:"\u2800"); [t] "\u2810"',"self::cases"],["Aliases","layout","self::multiline"],["Rule","line","default","[m] children/*","self::line"],'Rule,line-with-label,default,[t] "with Label"; [n] content/*[1]; [t] "EndLabel" (pause: 200); [m] children/*,self::line,content'.split(","),'Rule;empty-line;default;[t] "\u2800";self::line;count(children/*)=0;not(content)'.split(";"),'Rule,empty-line-with-label,default,[t] "with Label"; [n] content/*[1]; [t] "EndLabel"(pause: 200); [t] "Blank",self::line,count(children/*)=0,content'.split(","),
["Rule","enclose","default",'[t] "StartEnclose"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] "EndEnclose"',"self::enclose"],'Rule,overbar,default,[t] "\u2810"; [n] children/*[1]; [t] "\u2823\u2831\u283b",self::enclose,@role="top"'.split(","),'Rule,underbar,default,[t] "\u2810"; [n] children/*[1]; [t] "\u2829\u2831\u283b",self::enclose,@role="bottom"'.split(","),'Rule,leftbar,default,[t] "\u2833"; [n] children/*[1],self::enclose,@role="left"'.split(","),'Rule,rightbar,default,[n] children/*[1]; [t] "\u2833",self::enclose,@role="right"'.split(","),
'Rule,crossout,default,[t] "\u282a"; [n] children/*[1]; [t] "\u283b",self::enclose,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),'Rule,cancel,default,[t] "\u282a"; [n] children/*[1]/children/*[1]; [t] "\u282a"; [n] children/*[2]; [t] "\u283b",self::overscore,@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'.split(","),["Aliases","cancel","self::underscore",'@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"'],
'Rule,cancel-reverse,default,[t] "\u282a"; [n] children/*[2]/children/*[1]; [t] "\u282a"; [n] children/*[1]; [t] "\u283b",self::overscore,name(children/*[2])="enclose",children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'.split(","),["Aliases","cancel-reverse","self::underscore",'name(children/*[2])="enclose"','children/*[2][@role="updiagonalstrike" or @role="downdiagonalstrike" or @role="horizontalstrike"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role="endpunct"'.split(";"),
'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule{punctuation{default{[n] text(); [t] "\u2810"{self::punctuation{@role="fullstop"{contains(@annotation, "nemeth:number")'.split("{"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role="integral"'.split(","),["Rule","punctuated","default","[m] children/*","self::punctuated"],'Rule,punctuation-comma,default,[n] text(); [t] "\u2800",self::punctuation,parent::*/parent::punctuated,following-sibling::*,@role!="fullstop"'.split(","),
'Rule,punctuation-ellipses,default,[t] "\u2800"; [n] text(); [t] "\u2800",self::punctuation,parent::*/parent::punctuated,following-sibling::*,@role="ellipsis",name(preceding-sibling::*[1])!="punctuation"'.split(","),'Rule,punctuation-ellipses,default,[t] "\u2800"; [n] text();,self::punctuation,parent::*/parent::punctuated,@role="ellipsis",name(preceding-sibling::*[1])!="punctuation"'.split(","),'Rule,reference-sign,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[1])="text" or (name(children/*[1])="punctuated" and children/*[1][@role="text"]),name(children/*[2])="operator" or name(children/*[2])="punctuation"'.split(","),
'Rule,reference-number,default,[n] children/*[1]; [t] "\u2808\u283b"; [n] children/*[2]; [t] "\u2810",self::superscript,name(children/*[1])="text" or (name(children/*[1])="punctuated" and children/*[1][@role="text"]),name(children/*[2])="number",children/*[2][@role="integer"]'.split(",")],initialize:[sre.NemethUtil.generateTensorRules,sre.NemethUtil.addAnnotators]};sre.PrefixFrench={locale:"fr",modality:"prefix",domain:"default",functions:[["CSF","CSFordinalPosition",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] "num\u00e9rateur"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=0'.split(","),'Rule,denominator,default,[t] "d\u00e9nominateur"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=1'.split(","),'Rule,base,default,[t] "base"; [p] (pause:200),self::*,name(../..)="superscript" or name(../..)="subscript" or name(../..)="overscore" or name(../..)="underscore" or name(../..)="tensor" or name(../..)="limlower" or name(../..)="limupper",count(preceding-sibling::*)=0'.split(","),
'Rule,base-limit,default,[t] "base"; [p] (pause:200),self::*,name(../..)="limboth"'.split(","),'Rule,exponent,default,[t] "exposant"; [p] (pause:200),self::*,name(../..)="superscript",count(preceding-sibling::*)=1'.split(","),'Rule,subscript,default,[t] "indice"; [p] (pause:200),self::*,name(../..)="subscript",count(preceding-sibling::*)=1'.split(","),'Rule,overscript,default,[t] "indice suscrit"; [p] (pause:200),self::*,name(../..)="overscore" or name(../..)="limupper" or name(../..)="limboth",count(preceding-sibling::*)=1 or count(preceding-sibling::*)=2'.split(","),
'Rule,underscript,default,[t] "indice souscrit"; [p] (pause:200),self::*,name(../..)="underscore" or name(../..)="limlower" or name(../..)="limboth",count(preceding-sibling::*)=1'.split(","),'Rule,radicand,default,[t] "radicande"; [p] (pause:200),self::*,name(../..)="sqrt"'.split(","),'Rule,radicand,default,[t] "radicande"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=1'.split(","),'Rule,index,default,[t] "indice"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=0'.split(","),
'Rule,leftsub,default,[t] "indice inf\u00e9rieur gauche"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsub"'.split(","),'Rule,leftsub,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "indice inf\u00e9rieur gauche"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsub"'.split(","),'Rule,leftsuper,default,[t] "indice sup\u00e9rieur gauche"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsuper"'.split(","),'Rule,leftsuper,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "indice sup\u00e9rieur gauche"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsuper"'.split(","),
'Rule,rightsub,default,[t] "indice inf\u00e9rieur droite"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsub"'.split(","),'Rule,rightsub,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "indice inf\u00e9rieur droite"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsub"'.split(","),'Rule,rightsuper,default,[t] "indice sup\u00e9rieur droite"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsuper"'.split(","),'Rule,rightsuper,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "indice sup\u00e9rieur droite"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsuper"'.split(","),
'Rule,choice,default,[t] "nombre d\'\u00e9l\u00e9ments choisis"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(","),'Rule,select,default,[t] "nombre d\'\u00e9l\u00e9ments disponibles"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(","),["Rule","row","default",'[t] CSFordinalPosition (grammar:gender="female"); [t] "rang\u00e9e"; [p] (pause:200)',"self::row"],["Aliases","row","self::line"],
'Rule{cell{default{[n] ../..; [t] CSFordinalPosition (grammar:gender="female"); [t] "colonne"; [p] (pause:200){self::cell{contains(@grammar,"depth")'.split("{"),["Rule","cell","default",'[t] CSFordinalPosition (grammar:gender="female"); [t] "colonne"; [p] (pause:200)',"self::cell"]]};sre.PrefixGerman={modality:"prefix",locale:"de",domain:"default",functions:[["CSF","CSFordinalPosition",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] "Z\u00e4hler"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=0'.split(","),'Rule,denominator,default,[t] "Nenner"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=1'.split(","),'Rule,base,default,[t] "Basis"; [p] (pause:200),self::*,name(../..)="superscript" or name(../..)="subscript" or name(../..)="overscore" or name(../..)="underscore" or name(../..)="tensor",count(preceding-sibling::*)=0'.split(","),
'Rule,exponent,default,[t] "Exponent"; [p] (pause:200),self::*,name(../..)="superscript",count(preceding-sibling::*)=1'.split(","),'Rule,subscript,default,[t] "Index"; [p] (pause:200),self::*,name(../..)="subscript",count(preceding-sibling::*)=1'.split(","),'Rule,overscript,default,[t] "Oberer Grenzwert"; [p] (pause:200),self::*,name(../..)="overscore",count(preceding-sibling::*)=1'.split(","),'Rule,underscript,default,[t] "Unterer Grenzwert"; [p] (pause:200),self::*,name(../..)="underscore",count(preceding-sibling::*)=1'.split(","),
'Rule,radicand,default,[t] "Radikand"; [p] (pause:200),self::*,name(../..)="sqrt"'.split(","),'Rule,radicand,default,[t] "Radikand"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=1'.split(","),'Rule,index,default,[t] "Wurzelexponent"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=0'.split(","),'Rule,leftsub,default,[t] "linker unterer Index"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsub"'.split(","),'Rule,leftsub,default,[t] CSFordinalPosition; [t] "linker unterer Index"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsub"'.split(","),
'Rule,leftsuper,default,[t] "linker oberer Index"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsuper"'.split(","),'Rule,leftsuper,default,[t] CSFordinalPosition; [t] "linker oberer Index"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsuper"'.split(","),'Rule,rightsub,default,[t] "rechter unterer Index"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsub"'.split(","),'Rule,rightsub,default,[t] CSFordinalPosition; [t] "rechter unterer Index"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsub"'.split(","),
'Rule,rightsuper,default,[t] "rechter oberer Index"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsuper"'.split(","),'Rule,rightsuper,default,[t] CSFordinalPosition; [t] "rechter oberer Index"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsuper"'.split(","),'Rule,choice,default,[t] "Grundgesamtheit"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(","),'Rule,select,default,[t] "Stichprobengr\u00f6\u00dfe"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(","),
["Rule","row","default",'[t] CSFordinalPosition; [t] "Zeile"; [p] (pause:200)',"self::row"],["Aliases","row","self::line"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition; [t] "Spalte"; [p] (pause:200){self::cell{contains(@grammar,"depth")'.split("{"),["Rule","cell","default",'[t] CSFordinalPosition; [t] "Spalte"; [p] (pause:200)',"self::cell"]]};sre.PrefixRules={modality:"prefix",domain:"default",functions:[["CSF","CSFordinalPosition",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] "Numerator"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=0'.split(","),'Rule,denominator,default,[t] "Denominator"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=1'.split(","),'Rule,base,default,[t] "Base"; [p] (pause:200),self::*,name(../..)="superscript" or name(../..)="subscript" or name(../..)="overscore" or name(../..)="underscore" or name(../..)="tensor",count(preceding-sibling::*)=0'.split(","),
'Rule,exponent,default,[t] "Exponent"; [p] (pause:200),self::*,name(../..)="superscript",count(preceding-sibling::*)=1'.split(","),'Rule,subscript,default,[t] "Subscript"; [p] (pause:200),self::*,name(../..)="subscript",count(preceding-sibling::*)=1'.split(","),'Rule,overscript,default,[t] "Overscript"; [p] (pause:200),self::*,name(../..)="overscore",count(preceding-sibling::*)=1'.split(","),'Rule,underscript,default,[t] "Underscript"; [p] (pause:200),self::*,name(../..)="underscore",count(preceding-sibling::*)=1'.split(","),
'Rule,radicand,default,[t] "Radicand"; [p] (pause:200),self::*,name(../..)="sqrt"'.split(","),'Rule,radicand,default,[t] "Radicand"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=1'.split(","),'Rule,index,default,[t] "Index"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=0'.split(","),'Rule,leftsub,default,[t] "Left Subscript"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsub"'.split(","),'Rule,leftsub,default,[t] CSFordinalPosition; [t] "Left Subscript"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsub"'.split(","),
'Rule,leftsuper,default,[t] "Left Superscript"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsuper"'.split(","),'Rule,leftsuper,default,[t] CSFordinalPosition; [t] "Left Superscript"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsuper"'.split(","),'Rule,rightsub,default,[t] "Right Subscript"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsub"'.split(","),'Rule,rightsub,default,[t] CSFordinalPosition; [t] "Right Subscript"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsub"'.split(","),
'Rule,rightsuper,default,[t] "Right Superscript"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsuper"'.split(","),'Rule,rightsuper,default,[t] CSFordinalPosition; [t] "Right Superscript"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsuper"'.split(","),'Rule,choice,default,[t] "Choice Quantity"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(","),'Rule,select,default,[t] "Selection Quantity"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(","),
["Rule","row","default",'[t] CSFordinalPosition; [t] "Row"; [p] (pause:200)',"self::row"],["Aliases","row","self::line"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition; [t] "Column"; [p] (pause:200){self::cell{contains(@grammar,"depth")'.split("{"),["Rule","cell","default",'[t] CSFordinalPosition; [t] "Column"; [p] (pause:200)',"self::cell"]]};sre.PrefixSpanish={locale:"es",modality:"prefix",domain:"default",functions:[["CSF","CSFordinalPosition",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] "numerador"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=0'.split(","),'Rule,denominator,default,[t] "denominador"; [p] (pause:200),self::*,name(../..)="fraction",count(preceding-sibling::*)=1'.split(","),'Rule,base,default,[t] "base"; [p] (pause:200),self::*,name(../..)="superscript" or name(../..)="subscript" or name(../..)="overscore" or name(../..)="underscore" or name(../..)="tensor",count(preceding-sibling::*)=0'.split(","),
'Rule,exponent,default,[t] "exponente"; [p] (pause:200),self::*,name(../..)="superscript",count(preceding-sibling::*)=1'.split(","),'Rule,subscript,default,[t] "sub\u00edndice"; [p] (pause:200),self::*,name(../..)="subscript",count(preceding-sibling::*)=1'.split(","),'Rule,overscript,default,[t] "sobre\u00edndice"; [p] (pause:200),self::*,name(../..)="overscore",count(preceding-sibling::*)=1'.split(","),'Rule,underscript,default,[t] "bajo\u00edndice"; [p] (pause:200),self::*,name(../..)="underscore",count(preceding-sibling::*)=1'.split(","),
'Rule,radicand,default,[t] "radicand"; [p] (pause:200),self::*,name(../..)="sqrt"'.split(","),'Rule,radicand,default,[t] "radicand"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=1'.split(","),'Rule,index,default,[t] "\u00edndice"; [p] (pause:200),self::*,name(../..)="root",count(preceding-sibling::*)=0'.split(","),'Rule,leftsub,default,[t] "sub\u00edndice izquierdo"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsub"'.split(","),'Rule,leftsub,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "sub\u00edndice izquierdo"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsub"'.split(","),
'Rule,leftsuper,default,[t] "super\u00edndice izquierdo"; [p] (pause:200),self::*,name(../..)="tensor",@role="leftsuper"'.split(","),'Rule,leftsuper,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "super\u00edndice izquierdo"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="leftsuper"'.split(","),'Rule,rightsub,default,[t] "sub\u00edndice derecho"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsub"'.split(","),'Rule,rightsub,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "sub\u00edndice derecho"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsub"'.split(","),
'Rule,rightsuper,default,[t] "super\u00edndice derecho"; [p] (pause:200),self::*,name(../..)="tensor",@role="rightsuper"'.split(","),'Rule,rightsuper,default,[t] CSFordinalPosition (grammar:gender="male"); [t] "super\u00edndice derecho"; [p] (pause:200),self::*,name(../..)="punctuated",name(../../../..)="tensor",../../@role="rightsuper"'.split(","),'Rule,choice,default,[t] "cantidad de elecci\u00f3n"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(","),
'Rule,select,default,[t] "cantidad de selecci\u00f3n"; [p] (pause:200),self::line,@role="binomial",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(","),["Rule","row","default",'[t] CSFordinalPosition (grammar:gender="female"); [t] "fila"; [p] (pause:200)',"self::row"],["Aliases","row","self::line"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition (grammar:gender="female"); [t] "columna"; [p] (pause:200){self::cell{contains(@grammar,"depth")'.split("{"),["Rule","cell","default",'[t] CSFordinalPosition (grammar:gender="female"); [t] "columna"; [p] (pause:200)',
"self::cell"]]};sre.SemanticTreeRules={domain:"default",functions:[["CTXF","CTXFnodeCounter",sre.StoreUtil.nodeCounter],["CTXF","CTXFcontentIterator",sre.StoreUtil.contentIterator]],rules:['Rule{collapsed{default{[t] "collapsed"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, "collapsed")){self::*{self::*{self::*{self::*{self::*'.split("{"),["Rule","stree","default","[n] ./*[1]","self::stree"],'Rule;factorial;default;[t] "factorial";self::punctuation;text()="!";name(preceding-sibling::*[1])!="text"'.split(";"),
["Rule","multrel","default",'[t] "multirelation"; [m] children/* (sepFunc:CTXFcontentIterator)',"self::multirel"],'Rule{variable-equality{default{[t] "equation sequence"; [m] children/* (context:"part",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role="equality"]{count(./children/*)>2{./children/punctuation[@role="ellipsis"]'.split("{"),'Rule{multi-equality{default{[t] "equation sequence"; [m] children/* (context:"part",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role="equality"]{count(./children/*)>2'.split("{"),
'Rule,equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role="equality"],count(./children/*)=2'.split(","),'Rule,simple-equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role="equality"],count(./children/*)=2,./children/identifier or ./children/number'.split(","),'Rule,simple-equality2,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role="equality"],count(./children/*)=2,./children/function or ./children/appl'.split(","),
["Rule","relseq","default","[m] children/* (sepFunc:CTXFcontentIterator)","self::relseq"],["Rule","binary-operation","default","[m] children/* (sepFunc:CTXFcontentIterator);","self::infixop"],'Rule,variable-addition,default,[t] "sum with variable number of summands";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role="addition"],count(children/*)>2,children/punctuation[@role="ellipsis"]'.split(","),'Rule,multi-addition,default,[t] "sum with"; [t] count(./children/*); [t] "summands";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role="addition"],count(./children/*)>2'.split(","),
["Rule","prefix","default",'[t] "prefix"; [m] content/* (pause 150);[n] children/*[1]',"self::prefixop"],'Rule,negative,default,[t] "negative"; [n] children/*[1],self::prefixop,self::prefixop[@role="negative"]'.split(","),["Rule","postfix","default",'[n] children/*[1]; [t] "postfix"; [m] content/* (pause 300)',"self::postfixop"],["Rule","identifier","default","[n] text()","self::identifier"],["Rule","number","default","[n] text()","self::number"],'Rule,mixed-number,default,[n] children/*[1]; [t] "and"; [n] children/*[2]; ,self::number,@role="mixed"'.split(","),
'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, "ignoreFont")){@font!="normal"'.split("{"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, "ignoreFont")){@font="normal"{""=translate(text(), "abcdefghijklmnopqrstuvwxyz\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9", ""){@role!="unit"'.split("{"),
'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font="normal"{not(contains(@grammar, "ignoreFont")){@role!="unit"'.split("{"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, "ignoreFont"));@font="italic"'.split(";"),["Rule","fraction","default",'[p] (pause:250); [n] children/*[1] (rate:0.35); [p] (pause:250); [t] "divided by"; [n] children/*[2] (rate:-0.35); [p] (pause:400)',
"self::fraction"],["Rule","superscript","default",'[n] children/*[1]; [t] "super"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',"self::superscript"],["Rule","subscript","default",'[n] children/*[1]; [t] "sub"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',"self::subscript"],'Rule,ellipsis,default,[p] (pause:200); [t] "ellipsis"; [p] (pause:300),self::punctuation,self::punctuation[@role="ellipsis"]'.split(","),'Rule;fence-single;default;[n] text();self::punctuation;self::punctuation[@role="openfence"]'.split(";"),
["Aliases","fence-single","self::punctuation",'self::punctuation[@role="closefence"]'],["Aliases","fence-single","self::punctuation",'self::punctuation[@role="vbar"]'],["Aliases","fence-single","self::punctuation",'self::punctuation[@role="application"]'],["Rule","omit-empty","default","[p] (pause:100)","self::empty"],'Rule,fences-open-close,default,[p] (pause:100); [n] content/*[1]; [n] children/*[1]; [n] content/*[2]; [p] (pause:100),self::fenced,@role="leftright"'.split(","),'Rule,fences-open-close-in-appl,default,[p] (pause:200); [n] children/*[1]; [p] (pause:200);,self::fenced[@role="leftright"],./parent::children/parent::appl'.split(","),
'Rule,fences-neutral,default,[p] (pause:100); [t] "absolute value of"; [n] children/*[1];[p] (pause:350);,self::fenced,self::fenced[@role="neutral"]'.split(","),["Rule","omit-fences","default","[p] (pause:500); [n] children/*[1]; [p] (pause:200);","self::fenced"],["Rule","matrix","default",'[t] "matrix"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::matrix"],["Rule","matrix-row","default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row[@role="matrix"]'],
["Rule","matrix-cell","default","[n] children/*[1]",'self::cell[@role="matrix"]'],["Rule","vector","default",'[t] "vector"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"element",pause:100)',"self::vector"],["Rule","cases","default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100)',"self::cases"],["Rule","cases-row","default","[m] children/*",'self::row[@role="cases"]'],["Rule","cases-cell","default","[n] children/*[1]",'self::cell[@role="cases"]'],["Rule",
"row","default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)',"self::row"],'Rule{cases-end{default{[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100);[t] "end cases"{self::cases{following-sibling::*'.split("{"),["Rule","multiline","default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"line",pause:100)',"self::multiline"],'Rule{multiline-ineq{default{[t] "multiline inequality";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100){self::multiline{@role="inequality"'.split("{"),
["Rule","line","default","[m] children/*","self::line"],["Rule","table","default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200)',"self::table"],'Rule{table-ineq{default{[t] "multiline inequality";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200){self::table{@role="inequality"'.split("{"),["Rule","table-row","default","[m] children/* (pause:100)",'self::row[@role="table"]'],["Aliases","cases-cell",'self::cell[@role="table"]'],'Rule;empty-cell;default;[t] "Blank";self::cell;count(children/*)=0'.split(";"),
'Rule,end-punct,default,[m] children/*; [p] (pause:300),self::punctuated,@role="endpunct"'.split(","),'Rule,start-punct,default,[n] content/*[1]; [p] (pause:200); [m] children/*[position()>1],self::punctuated,@role="startpunct"'.split(","),'Rule,integral-punct,default,[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2),self::punctuated,@role="integral"'.split(","),["Rule","punctuated","default","[m] children/* (pause:100)","self::punctuated"],["Rule","function","default","[n] text()","self::function"],
["Rule","appl","default","[n] children/*[1]; [n] content/*[1]; [n] children/*[2]","self::appl"],'Rule,sum-only,default,[n] children/*[1]; [t] "from"; [n] children/*[2]; [t] "to";[n] children/*[3],self::limboth,self::limboth[@role="sum"]'.split(","),["Rule","limboth","default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[t] "under"; [n] children/*[3]; [p] (pause 250);',"self::limboth"],["Rule","limlower","default",'[n] children/*[1]; [t] "over"; [n] children/*[2];',"self::limlower"],
["Rule","limupper","default",'[n] children/*[1]; [t] "under"; [n] children/*[2];',"self::limupper"],["Rule","largeop","default","[n] text()","self::largeop"],["Rule","bigop","default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',"self::bigop"],["Rule","integral","default","[n] children/*[1]; [p] (pause 100); [n] children/*[2];[p] (pause 200); [n] children/*[3] (rate:0.35);","self::integral"],["Rule","sqrt","default",'[t] "Square root of"; [n] children/*[1] (rate:0.35); [p] (pause:400)',
"self::sqrt"],'Rule,square,default,[n] children/*[1]; [t] "squared" (pitch:0.35); [p] (pause:300),self::superscript,children/*[2][text()=2],name(./children/*[1])!="text"'.split(","),'Rule,cube,default,[n] children/*[1]; [t] "cubed" (pitch:0.35); [p] (pause:300),self::superscript,children/*[2][text()=3],name(./children/*[1])!="text"'.split(","),["Rule","root","default",'[t] "root of order"; [n] children/*[1];[t] "over"; [n] children/*[2] (rate:0.35); [p] (pause:400)',"self::root"],["Rule","text","default",
"[n] text(); [p] (pause:200)","self::text"],'Rule;unit;default;[t] text() (grammar:annotation="unit":translate:plural);self::identifier;@role="unit"'.split(";"),'Rule,unit-square,default,[t] "square"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=2],name(children/*[1])="identifier"'.split(","),'Rule,unit-cubic,default,[t] "cubic"; [n] children/*[1],self::superscript,@role="unit",children/*[2][text()=3],name(children/*[1])="identifier"'.split(","),'Rule,reciprocal,default,[t] "reciprocal"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!="unit"]'.split(","),
'Rule,reciprocal,default,[t] "per"; [n] children/*[1],self::superscript,@role="unit",name(children/*[1])="identifier",name(children/*[2])="prefixop",children/*[2][@role="negative"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role="unit"]'.split(","),'Rule;unit-combine;default;[m] children/*;self::infixop;@role="unit"'.split(";"),'Rule,unit-divide,default,[n] children/*[1] (pitch:0.3); [t] "per"; [n] children/*[2] (pitch:-0.3),self::fraction,@role="unit"'.split(",")]};sre.SummaryFrench={locale:"fr",modality:"summary",rules:[["Rule","collapsed-masculine","default.masculine",'[t] "compress\u00e9"','contains(@grammar, "collapsed")'],["Rule","collapsed-feminine","default.feminine",'[t] "compress\u00e9e"','contains(@grammar, "collapsed")'],["Rule","no-collapsed","default.masculine",'[t] ""','not(contains(@grammar, "collapsed"))'],["Rule","no-collapsed","default.feminine",'[t] ""','not(contains(@grammar, "collapsed"))'],["Rule","stree","default.default","[n] ./*[1]",
"self::stree"],'Rule{abstr-identifier{default.default{[t] "identifiant long"; [n] . (engine:style=masculine){self::identifier{contains(@grammar, "collapsed")'.split("{"),["Rule","abstr-identifier","default.default",'[t] "identifiant"; [n] . (engine:style=masculine)',"self::identifier"],'Rule{abstr-number{default.default{[t] "nombre long"; [n] . (engine:style=masculine){self::number{contains(@grammar, "collapsed")'.split("{"),["Rule","abstr-number","default.default",'[t] "nombre"; [n] . (engine:style=masculine)',
"self::number"],'Rule{abstr-mixed-number{default.default{[t] "nombre fractionnaire long"; [n] . (engine:style=masculine){self::number{@role="mixed"{contains(@grammar, "collapsed")'.split("{"),'Rule,abstr-mixed-number,default.default,[t] "nombre fractionnaire"; [n] . (engine:style=masculine),self::number,@role="mixed"'.split(","),["Rule","abstr-text","default.default",'[t] "texte"; [n] . (engine:style=masculine)',"self::text"],["Rule","abstr-function","default.default",'[t] "expression fonctionnelle"; [n] . (engine:style=feminine)',
"self::function"],["Rule","abstr-function","mathspeak.brief",'[t] "fonction"; [n] . (engine:style=feminine)',"self::function"],["SpecializedRule","abstr-function","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-lim,default.default,[t] "fonction de limitation"; [n] . (engine:style=feminine),self::function,@role="limit function"'.split(","),'Rule,abstr-lim,mathspeak.brief,[t] "lim"; [n] . (engine:style=feminine),self::function,@role="limit function"'.split(","),["SpecializedRule","abstr-lim","mathspeak.brief",
"mathspeak.sbrief"],["Rule","abstr-fraction","default.default",'[t] "fraction"; [n] . (engine:style=feminine)',"self::fraction"],["Rule","abstr-fraction","mathspeak.brief",'[t] "frac"; [n] . (engine:style=feminine)',"self::fraction"],["SpecializedRule","abstr-fraction","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-continued-fraction,default.default,[t] "fraction continue"; [n] . (engine:style=feminine),self::fraction,children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(","),'Rule,abstr-continued-fraction,mathspeak.brief,[t] "frac continue"; [n] . (engine:style=feminine),self::fraction,children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(","),
["SpecializedRule","abstr-continued-fraction","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-sqrt","default.default",'[t] "racine carr\u00e9e"; [n] . (engine:style=feminine)',"self::sqrt"],'Rule,abstr-sqrt-nested,default.default,[t] "racine carr\u00e9e imbriqu\u00e9e"; [n] . (engine:style=feminine),self::sqrt,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(","),'Rule{abstr-root{default.default{[t] "racine d\'indice"; [n] children/*[1] (engine:modality="speech"); [t] "fin indice"; [n] . (engine:style=feminine);{self::root{contains(@grammar, "collapsed"){following-sibling::* or ancestor::*/following-sibling::*'.split("{"),
["Rule","abstr-root","default.default",'[t] "racine d\'indice"; [n] children/*[1] (engine:modality=speech); [n] . (engine:style=feminine)',"self::root"],["Rule","abstr-root","mathspeak.brief",'[t] "racine"; [n] . (engine:style=feminine)',"self::root"],["SpecializedRule","abstr-root","mathspeak.brief","mathspeak.sbrief"],'Rule{abstr-root-nested{default.default{[t] "racine imbriqu\u00e9e d\'indice"; [n] children/*[1] (engine:modality=speech); [t] "fin indice"; [n] . (engine:style=feminine);{self::root{contains(@grammar, "collapsed"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split("{"),
'Rule,abstr-root-nested,default.default,[t] "racine imbriqu\u00e9e d\'indice"; [n] children/*[1] (engine:modality=speech); [n] . (engine:style=feminine),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(","),'Rule,abstr-root-nested,mathspeak.brief,[t] "racine imbriqu\u00e9e"; [n] . (engine:style=feminine),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(","),["SpecializedRule","abstr-root-nested","mathspeak.brief",
"mathspeak.sbrief"],["Rule","abstr-superscript","default.default",'[t] "puissance"; [n] . (engine:style=feminine)',"self::superscript"],["Rule","abstr-subscript","default.default",'[t] "indice"; [n] . (engine:style=masculine)',"self::subscript"],'Rule,abstr-subsup,default.default,[t] "puissance avec index"; [n] . (engine:style=feminine),self::superscript,name(children/*[1])="subscript"'.split(","),["Rule","abstr-infixop","default.default",'[t] @role (grammar:localRole); [t] "avec"; [t] count(./children/*); [t] "\u00e9l\u00e9ments"; [n] . (engine:style=masculine)',
"self::infixop"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] "avec un nombre d\'\u00e9l\u00e9ments variable"; [n] . (engine:style=masculine),self::infixop,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),["Rule","abstr-infixop","mathspeak.brief","[t] @role (grammar:localRole); [n] . (engine:style=masculine)","self::infixop"],["SpecializedRule","abstr-infixop","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-addition,default.default,[t] "somme avec"; [t] count(./children/*); [t] "op\u00e9randes"; [n] . (engine:style=feminine),self::infixop,@role="addition"'.split(","),
'Rule,abstr-addition,mathspeak.brief,[t] "somme"; [n] . (engine:style=feminine),self::infixop,@role="addition"'.split(","),["SpecializedRule","abstr-addition","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-addition,default.default,[t] "somme avec un nombre variable d\'op\u00e9randes"; [n] . (engine:style=feminine),self::infixop,@role="addition",count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),'Rule,abstr-multiplication,default.default,[t] "produit avec"; [t] count(./children/*); [t] "facteurs"; [n] . (engine:style=masculine);,self::infixop,@role="multiplication"'.split(","),
'Rule,abstr-multiplication,mathspeak.brief,[t] "produit"; [n] . (engine:style=masculine),self::infixop,@role="multiplication"'.split(","),["SpecializedRule","abstr-multiplication","mathspeak.brief","mathspeak.sbrief"],["Aliases","abstr-multiplication","self::infixop",'@role="implicit"'],'Rule,abstr-var-multiplication,default.default,[t] "produit avec un nombre de facteurs variable"; [n] . (engine:style=masculine),self::infixop,@role="multiplication",count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),
'Aliases abstr-var-multiplication self::infixop @role="implicit" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),["Rule","abstr-vector","default.default",'[t] "vecteur de dimension"; [t] count(./children/*); [n] . (engine:style=masculine)',"self::vector"],["Rule","abstr-vector","mathspeak.brief",'[t] "vecteur"; [n] . (engine:style=masculine)',"self::vector"],["SpecializedRule","abstr-vector","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-vector,default.default,[t] "vecteur colonne de dimension n"; [n] . (engine:style=masculine),self::vector,./children/*/children/punctuation[@role="ellipsis"]'.split(","),
'Rule,abstr-binomial,default.default,[t] "binomial"; [n] . (engine:style=masculine),self::vector,@role="binomial"'.split(","),["SpecializedRule","abstr-binomial","default.default","mathspeak.brief"],["SpecializedRule","abstr-binomial","default.default","mathspeak.sbrief"],'Rule,abstr-determinant,default.default,[t] "d\u00e9terminant de dimension"; [t] count(./children/*); [n] . (engine:style=masculine),self::matrix,@role="determinant"'.split(","),'Rule,abstr-determinant,mathspeak.brief,[t] "d\u00e9terminant"; [n] . (engine:style=masculine),self::matrix,@role="determinant"'.split(","),
["SpecializedRule","abstr-determinant","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-determinant,default.default,[t] "d\u00e9terminant de dimension n"; [n] . (engine:style=masculine),self::matrix,@role="determinant",./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(","),'Rule,abstr-squarematrix,default.default,[t] "matrice carr\u00e9e de dimension"; [t] count(./children/*); [n] . (engine:style=feminine),self::matrix,@role="squarematrix"'.split(","),'Rule,abstr-squarematrix,mathspeak.brief,[t] "matrice carr\u00e9e"; [n] . (engine:style=feminine),self::matrix,@role="squarematrix"'.split(","),
["SpecializedRule","abstr-squarematrix","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-rowvector,default.default,[t] "vecteur ligne de dimension"; [t] count(./children/row/children/*); [n] . (engine:style=masculine),self::matrix,@role="rowvector"'.split(","),'Rule,abstr-rowvector,mathspeak.brief,[t] "vecteur ligne"; [n] . (engine:style=masculine),self::matrix,@role="rowvector"'.split(","),["SpecializedRule","abstr-rowvector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "vecteur ligne de dimension n";self::matrix;@role="rowvector";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),
["Rule","abstr-matrix","default.default",'[t] "matrice"; [t] count(children/*);  [t] "par";[t] count(children/*[1]/children/*); [n] . (engine:style=feminine)',"self::matrix"],["Rule","abstr-matrix","mathspeak.brief",'[t] "matrice"; [n] . (engine:style=feminine)',"self::matrix"],["SpecializedRule","abstr-matrix","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-matrix,default.default,[t] "matrice de dimension n par m"; [n] . (engine:style=feminine),self::matrix,./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(","),
["Rule","abstr-cases","default.default",'[t] "d\u00e9claration de cas";[t] "avec"; [t] count(children/*); [t] "cas"; [n] . (engine:style=feminine)',"self::cases"],["Rule","abstr-cases","mathspeak.brief",'[t] "d\u00e9claration de cas"; [n] . (engine:style=feminine)',"self::cases"],["SpecializedRule","abstr-cases","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-cases,default.default,[t] "d\u00e9claration de cas variable"; [n] . (engine:style=feminine),self::cases,./children/row/children/cell/children/punctuation[@role="ellipsis"]or ./children/line/children/punctuation[@role="ellipsis"]'.split(","),
["Rule","abstr-punctuated","default.default",'[t] "liste de longueur"; [t] count(children/*) - count(content/*); [t] "s\u00e9par\u00e9e par des"; [n] content/*[1] (join:""); [t] "s"; [n] . (engine:style=feminine)',"self::punctuated"],["Rule","abstr-punctuated","mathspeak.brief",'[t] "liste s\u00e9par\u00e9e par des"; [n] content/*[1] (join:""); [t] "s"; [n] . (engine:style=feminine)',"self::punctuated"],["SpecializedRule","abstr-punctuated","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-punctuated,default.default,[t] "liste de longueur variable s\u00e9par\u00e9e par des"; [n] content/*[1] (join:""); [t] "s"; [n] . (engine:style=feminine),self::punctuated,./children/punctuation[@role="ellipsis"]'.split(","),
["Rule","abstr-bigop","default.default","[n] content/*[1]; [n] . (engine:style=masculine)","self::bigop"],["Rule","abstr-integral","default.default",'[t] "int\u00e9grale"; [n] . (engine:style=feminine)','@role="integral"'],"Rule,abstr-relation,default.default,[t] @role (grammar:localRole); [n] . (engine:style=masculine);,self::relseq,count(./children/*)=2".split(","),'Rule,abstr-relation-seq,default.default,[t] @role (grammar:localRole); [t] "s\u00e9quence"; [t] "avec"; [t] count(./children/*); [t] "\u00e9l\u00e9ments"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2'.split(","),
'Rule,abstr-relation-seq,mathspeak.brief,[t] @role (grammar:localRole); [t] "s\u00e9quence"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2'.split(","),["SpecializedRule","abstr-relation-seq","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-relation,default.default,[t] @role (grammar:localRole); [t] "s\u00e9quence"; [t] "avec un nombre de \u00e9l\u00e9ments variable"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),
'UniqueAlias abstr-relation default.default self::multirel @role!="unknown" count(./children/*)>2'.split(" "),'Aliases abstr-var-relation self::multirel @role!="unknown" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),'Rule,abstr-multirel,default.default,[t] "s\u00e9quence de relation"; [t] "avec"; [t] count(./children/*); [t] "\u00e9l\u00e9ments"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2'.split(","),'Rule,abstr-multirel,mathspeak.brief,[t] "s\u00e9quence de relation"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2'.split(","),
["SpecializedRule","abstr-multirel","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-multirel,default.default,[t] "s\u00e9quence de relation avec un nombre de \u00e9l\u00e9ments variable"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),["Rule","abstr-table","default.default",'[t] "table avec"; [t] count(children/*); [t] "lignes et";[t] count(children/*[1]/children/*); [t] "colonnes"; [n] . (engine:style=feminine);',"self::table"],
["Rule","abstr-line","default.default",'[t] "dans"; [t] @role (grammar:localRole); [n] . (engine:style=masculine)',"self::line"],["Rule","abstr-row","default.default",'[t] "dans"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] "avec";[t] count(children/*); [t] "colonnes"; [n] . (engine:style=feminine)',"self::row"],["Rule","abstr-cell","default.default",'[t] "dans"; [t] @role (grammar:localRole); [n] . (engine:style=feminine);',"self::cell"]]};sre.SummaryGerman={modality:"summary",locale:"de",rules:['Rule;abstr-identifier;default.default;[t] "langer Bezeichner";self::identifier;contains(@grammar, "collapsed")'.split(";"),["Rule","abstr-identifier","default.default",'[t] "Bezeichner"',"self::identifier"],'Rule;abstr-number;default.default;[t] "lange Zahl";self::number;contains(@grammar, "collapsed")'.split(";"),["Rule","abstr-number","default.default",'[t] "Zahl"',"self::number"],'Rule;abstr-mixed-number;default.default;[t] "langer gemischter Bruch";self::number;@role="mixed";contains(@grammar, "collapsed")'.split(";"),
'Rule;abstr-mixed-number;default.default;[t] "gemischter Bruch";self::number;@role="mixed"'.split(";"),["Rule","abstr-text","default.default",'[t] "Text"',"self::text"],["Rule","abstr-function","default.default",'[t] "Funktionsausdruck"',"self::function"],["Rule","abstr-function","mathspeak.brief",'[t] "Funktion"',"self::function"],["SpecializedRule","abstr-function","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-lim;default.default;[t] "Grenzwertfunktion";self::function;@role="limit function"'.split(";"),
'Rule;abstr-lim;mathspeak.brief;[t] "Grenzwert";self::function;@role="limit function"'.split(";"),["SpecializedRule","abstr-lim","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-fraction","default.default",'[t] "Bruch"',"self::fraction"],'Rule;abstr-continued-fraction;default.default;[t] "Kettenbruch";self::fraction;children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(";"),["Rule","abstr-sqrt","default.default",'[t] "Quadratwurzel"',"self::sqrt"],'Rule;abstr-sqrt-nested;default.default;[t] "verschachtelte Quadratwurzel";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(";"),
'Rule{abstr-root{default.default{[t] "Wurzel mit Exponent"; [n] children/*[1] (engine:modality=speech); [t] "Exponentende"{self::root{contains(@grammar, "collapsed"){following-sibling::* or ancestor::*/following-sibling::*'.split("{"),["Rule","abstr-root","default.default",'[t] "Wurzel mit Exponent"; [n] children/*[1] (engine:modality=speech)',"self::root"],["Rule","abstr-root","mathspeak.brief",'[t] "Wurzel"',"self::root"],["SpecializedRule","abstr-root","mathspeak.brief","mathspeak.sbrief"],'Rule{abstr-root-nested{default.default{[t] "verschachtelte Wurzel mit Wurzelexponent"; [n] children/*[1] (engine:modality="speech"); [t] "Ende Wurzelexponent"{self::root{contains(@grammar, "collapsed"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split("{"),
'Rule,abstr-root-nested,default.default,[t] "verschachtelte Wurzel mit Exponent"; [n] children/*[1] (engine:modality="speech"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(","),'Rule;abstr-root-nested;mathspeak.brief;[t] "verschachtelte Wurzel";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(";"),["SpecializedRule","abstr-root-nested","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-superscript","default.default",
'[t] "Potenz"',"self::superscript"],["Rule","abstr-subscript","default.default",'[t] "Index"',"self::subscript"],'Rule;abstr-subsup;default.default;[t] "Potenz mit Index";self::superscript;name(children/*[1])="subscript"'.split(";"),["Rule","abstr-infixop","default.default",'[t] @role (grammar:localRole); [t] "mit"; [t] count(./children/*); [t] "Elementen"',"self::infixop"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] "mit ver\u00e4nderlicher Anzahl an Elementen",self::infixop,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),
["Rule","abstr-infixop","mathspeak.brief","[t] @role (grammar:localRole)","self::infixop"],["SpecializedRule","abstr-infixop","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-addition,default.default,[t] "Summe mit"; [t] count(./children/*); [t] "Summanden",self::infixop,@role="addition"'.split(","),'Rule;abstr-addition;mathspeak.brief;[t] "Summe";self::infixop;@role="addition"'.split(";"),["SpecializedRule","abstr-addition","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-addition;default.default;[t] "Summe mit ver\u00e4nderlicher Anzahl an Summanden";self::infixop;@role="addition";count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
'Rule,abstr-multiplication,default.default,[t] "Produkt mit"; [t] count(./children/*); [t] "Faktoren",self::infixop,@role="multiplication"'.split(","),'Rule;abstr-multiplication;mathspeak.brief;[t] "Produkt";self::infixop;@role="multiplication"'.split(";"),["SpecializedRule","abstr-multiplication","mathspeak.brief","mathspeak.sbrief"],["Aliases","abstr-multiplication","self::infixop",'@role="implicit"'],'Rule;abstr-var-multiplication;default.default;[t] "Produkt mit ver\u00e4nderlicher Anzahl an Faktoren";self::infixop;@role="multiplication";count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
'Aliases abstr-var-multiplication self::infixop @role="implicit" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),["Rule","abstr-vector","default.default",'[t] count(./children/*) ; [t] "dimensionaler Vektor"',"self::vector"],["Rule","abstr-vector","mathspeak.brief",'[t] "Vektor"',"self::vector"],["SpecializedRule","abstr-vector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-vector;default.default;[t] "n dimensionaler Vektor";self::vector;./children/*/children/punctuation[@role="ellipsis"]'.split(";"),
'Rule;abstr-binomial;default.default;[t] "Binomialkoeffizient";self::vector;@role="binomial"'.split(";"),["SpecializedRule","abstr-binomial","default.default","mathspeak.brief"],["SpecializedRule","abstr-binomial","default.default","mathspeak.sbrief"],'Rule,abstr-determinant,default.default,[t] count(./children/*); [t] "dimensionale Determinante",self::matrix,@role="determinant"'.split(","),'Rule;abstr-determinant;mathspeak.brief;[t] "Determinante";self::matrix;@role="determinant"'.split(";"),["SpecializedRule",
"abstr-determinant","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-determinant;default.default;[t] "n dimensionale Determinante";self::matrix;@role="determinant";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),'Rule,abstr-squarematrix,default.default,[t] count(./children/*); [t] "dimensionale quadratische Matrize",self::matrix,@role="squarematrix"'.split(","),'Rule;abstr-squarematrix;mathspeak.brief;[t] "quadratische Matrize";self::matrix;@role="squarematrix"'.split(";"),
["SpecializedRule","abstr-squarematrix","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-rowvector,default.default,[t] count(./children/row/children/*); [t] "dimensionaler Zeilenvektor",self::matrix,@role="rowvector"'.split(","),'Rule;abstr-rowvector;mathspeak.brief;[t] "Zeilenvektor";self::matrix;@role="rowvector"'.split(";"),["SpecializedRule","abstr-rowvector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "n dimensionaler Zeilenvektor";self::matrix;@role="rowvector";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),
["Rule","abstr-matrix","default.default",'[t] count(children/*);  [t] "mal";[t] count(children/*[1]/children/*); [t] "Matrize"',"self::matrix"],["Rule","abstr-matrix","mathspeak.brief",'[t] "Matrize"',"self::matrix"],["SpecializedRule","abstr-matrix","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "n mal m dimensionale Matrize";self::matrix;./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-cases","default.default",'[t] "Fallunterscheidung";[t] "mit"; [t] count(children/*); [t] "F\u00e4llen"',
"self::cases"],["Rule","abstr-cases","mathspeak.brief",'[t] "Fallunterscheidung"',"self::cases"],["SpecializedRule","abstr-cases","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-cases;default.default;[t] "Fallunterscheidung mit ver\u00e4nderlicher Anzahl an F\u00e4llen";self::cases;./children/row/children/cell/children/punctuation[@role="ellipsis"]or ./children/line/children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-punctuated","default.default",'[t] "mit"; [n] content/*[1]; [t] "getrennte Liste der L\u00e4nge"; [t] count(children/*) - count(content/*)',
"self::punctuated"],["Rule","abstr-punctuated","mathspeak.brief",'[t] "mit"; [n] content/*[1]; [t] "getrennte Liste";',"self::punctuated"],["SpecializedRule","abstr-punctuated","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-punctuated,default.default,[t] "mit"; [n] content/*[1]; [t] "getrennte Liste";[t] "ver\u00e4nderlicher L\u00e4nge",self::punctuated,./children/punctuation[@role="ellipsis"]'.split(","),["Rule","abstr-bigop","default.default","[n] content/*[1]","self::bigop"],["Rule","abstr-integral",
"default.default",'[t] "Integral"','@role="integral"'],"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2".split(","),'Rule{abstr-relation-seq{default.default{[t] @role (grammar:localRole, join:""); [t] "ssequenz"; [t] "mit"; [t] count(./children/*); [t] "Elementen"{self::relseq{count(./children/*)>2'.split("{"),'Rule{abstr-relation-seq{mathspeak.brief{[t] @role (grammar:localRole, join:""); [t] "ssequenz"{self::relseq{count(./children/*)>2'.split("{"),
["SpecializedRule","abstr-relation-seq","mathspeak.brief","mathspeak.sbrief"],'Rule{abstr-var-relation{default.default{[t] @role (grammar:localRole, join:""); [t] "ssequenz";[t] "mit ver\u00e4nderlicher Anzahl an Elementen"{self::relseq{count(./children/*)>2{./children/punctuation[@role="ellipsis"]'.split("{"),'UniqueAlias abstr-relation default.default self::multirel @role!="unknown" count(./children/*)>2'.split(" "),'Aliases abstr-var-relation self::multirel @role!="unknown" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),
'Rule,abstr-multirel,default.default,[t] "Relationsequenz"; [t] "mit"; [t] count(./children/*); [t] "Elementen",self::multirel,count(./children/*)>2'.split(","),'Rule;abstr-multirel;mathspeak.brief;[t] "Relationsequenz";self::multirel;count(./children/*)>2'.split(";"),["SpecializedRule","abstr-multirel","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-multirel;default.default;[t] "Relationsequenz mit ver\u00e4nderlicher Anzahl an Elementen";self::multirel;count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
["Rule","abstr-table","default.default",'[t] "Tabelle mit"; [t] count(children/*); [t] "Zeilen und";[t] count(children/*[1]/children/*); [t] "Spalten"',"self::table"],["Rule","abstr-line","default.default",'[t] "in"; [t] @role (grammar:localRole);',"self::line"],["Rule","abstr-row","default.default",'[t] "in"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] "mit";[t] count(children/*); [t] "Spalten"',"self::row"],["Rule","abstr-cell","default.default",'[t] "in"; [t] @role (grammar:localRole);',
"self::cell"]]};sre.SummaryRules={modality:"summary",rules:['Rule;abstr-identifier;default.default;[t] "long identifier";self::identifier;contains(@grammar, "collapsed")'.split(";"),["Rule","abstr-identifier","default.default",'[t] "identifier"',"self::identifier"],'Rule;abstr-number;default.default;[t] "long number";self::number;contains(@grammar, "collapsed")'.split(";"),["Rule","abstr-number","default.default",'[t] "number"',"self::number"],'Rule;abstr-mixed-number;default.default;[t] "long mixed number";self::number;@role="mixed";contains(@grammar, "collapsed")'.split(";"),
'Rule;abstr-mixed-number;default.default;[t] "mixed number";self::number;@role="mixed"'.split(";"),["Rule","abstr-text","default.default",'[t] "text"',"self::text"],["Rule","abstr-function","default.default",'[t] "functional expression"',"self::function"],["Rule","abstr-function","mathspeak.brief",'[t] "function"',"self::function"],["SpecializedRule","abstr-function","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-lim;default.default;[t] "limit function";self::function;@role="limit function"'.split(";"),
'Rule;abstr-lim;mathspeak.brief;[t] "lim";self::function;@role="limit function"'.split(";"),["SpecializedRule","abstr-lim","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-fraction","default.default",'[t] "fraction"',"self::fraction"],["Rule","abstr-fraction","mathspeak.brief",'[t] "frac"',"self::fraction"],["SpecializedRule","abstr-fraction","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-continued-fraction;default.default;[t] "continued fraction";self::fraction;children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(";"),
'Rule;abstr-continued-fraction;mathspeak.brief;[t] "continued frac";self::fraction;children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(";"),["SpecializedRule","abstr-continued-fraction","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-sqrt","default.default",'[t] "square root"',"self::sqrt"],'Rule;abstr-sqrt-nested;default.default;[t] "nested square root";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(";"),'Rule{abstr-root{default.default{[t] "root of index"; [n] children/*[1] (engine:modality="speech"); [t] "endindex"{self::root{contains(@grammar, "collapsed"){following-sibling::* or ancestor::*/following-sibling::*'.split("{"),
["Rule","abstr-root","default.default",'[t] "root of index"; [n] children/*[1] (engine:modality=speech)',"self::root"],["Rule","abstr-root","mathspeak.brief",'[t] "root"',"self::root"],["SpecializedRule","abstr-root","mathspeak.brief","mathspeak.sbrief"],'Rule{abstr-root-nested{default.default{[t] "nested root of index"; [n] children/*[1] (engine:modality="speech"); [t] "endindex"{self::root{contains(@grammar, "collapsed"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split("{"),
'Rule,abstr-root-nested,default.default,[t] "nested root of index"; [n] children/*[1] (engine:modality="speech"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(","),'Rule;abstr-root-nested;mathspeak.brief;[t] "nested root";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(";"),["SpecializedRule","abstr-root-nested","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-superscript","default.default",'[t] "power"',
"self::superscript"],["Rule","abstr-subscript","default.default",'[t] "subscript"',"self::subscript"],'Rule;abstr-subsup;default.default;[t] "power with subscript";self::superscript;name(children/*[1])="subscript"'.split(";"),["Rule","abstr-infixop","default.default",'[t] @role (grammar:localRole); [t] "with"; [t] count(./children/*); [t] "elements"',"self::infixop"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] "with variable number of elements",self::infixop,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),
["Rule","abstr-infixop","mathspeak.brief","[t] @role (grammar:localRole)","self::infixop"],["SpecializedRule","abstr-infixop","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-addition,default.default,[t] "sum with"; [t] count(./children/*); [t] "summands",self::infixop,@role="addition"'.split(","),'Rule;abstr-addition;mathspeak.brief;[t] "sum";self::infixop;@role="addition"'.split(";"),["SpecializedRule","abstr-addition","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-addition;default.default;[t] "sum with variable number of summands";self::infixop;@role="addition";count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
'Rule,abstr-multiplication,default.default,[t] "product with"; [t] count(./children/*); [t] "factors",self::infixop,@role="multiplication"'.split(","),'Rule;abstr-multiplication;mathspeak.brief;[t] "product";self::infixop;@role="multiplication"'.split(";"),["SpecializedRule","abstr-multiplication","mathspeak.brief","mathspeak.sbrief"],["Aliases","abstr-multiplication","self::infixop",'@role="implicit"'],'Rule;abstr-var-multiplication;default.default;[t] "product with variable number of factors";self::infixop;@role="multiplication";count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
'Aliases abstr-var-multiplication self::infixop @role="implicit" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),["Rule","abstr-vector","default.default",'[t] count(./children/*) ; [t] "dimensional vector"',"self::vector"],["Rule","abstr-vector","mathspeak.brief",'[t] "vector"',"self::vector"],["SpecializedRule","abstr-vector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-vector;default.default;[t] "n dimensional vector";self::vector;./children/*/children/punctuation[@role="ellipsis"]'.split(";"),
'Rule;abstr-binomial;default.default;[t] "binomial";self::vector;@role="binomial"'.split(";"),["SpecializedRule","abstr-binomial","default.default","mathspeak.brief"],["SpecializedRule","abstr-binomial","default.default","mathspeak.sbrief"],'Rule,abstr-determinant,default.default,[t] count(./children/*); [t] "dimensional determinant",self::matrix,@role="determinant"'.split(","),'Rule;abstr-determinant;mathspeak.brief;[t] "determinant";self::matrix;@role="determinant"'.split(";"),["SpecializedRule",
"abstr-determinant","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-determinant;default.default;[t] "n dimensional determinant";self::matrix;@role="determinant";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),'Rule,abstr-squarematrix,default.default,[t] count(./children/*); [t] "dimensional square matrix",self::matrix,@role="squarematrix"'.split(","),'Rule;abstr-squarematrix;mathspeak.brief;[t] "square matrix";self::matrix;@role="squarematrix"'.split(";"),["SpecializedRule",
"abstr-squarematrix","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-rowvector,default.default,[t] count(./children/row/children/*); [t] "dimensional row vector",self::matrix,@role="rowvector"'.split(","),'Rule;abstr-rowvector;mathspeak.brief;[t] "row vector";self::matrix;@role="rowvector"'.split(";"),["SpecializedRule","abstr-rowvector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "n dimensional row vector";self::matrix;@role="rowvector";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),
["Rule","abstr-matrix","default.default",'[t] count(children/*);  [t] "by";[t] count(children/*[1]/children/*); [t] "matrix"',"self::matrix"],["Rule","abstr-matrix","mathspeak.brief",'[t] "matrix"',"self::matrix"],["SpecializedRule","abstr-matrix","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "n by m dimensional matrix";self::matrix;./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-cases","default.default",'[t] "case statement";[t] "with"; [t] count(children/*); [t] "cases"',
"self::cases"],["Rule","abstr-cases","mathspeak.brief",'[t] "case statement"',"self::cases"],["SpecializedRule","abstr-cases","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-cases;default.default;[t] "case statement with variable number of cases";self::cases;./children/row/children/cell/children/punctuation[@role="ellipsis"]or ./children/line/children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-punctuated","default.default",'[n] content/*[1]; [t] "separated list"; [t] "of length"; [t] count(children/*) - count(content/*)',
"self::punctuated"],["Rule","abstr-punctuated","mathspeak.brief",'[n] content/*[1]; [t] "separated list"',"self::punctuated"],["SpecializedRule","abstr-punctuated","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-punctuated,default.default,[n] content/*[1]; [t] "separated list";[t] "of variable length",self::punctuated,./children/punctuation[@role="ellipsis"]'.split(","),["Rule","abstr-bigop","default.default","[n] content/*[1]","self::bigop"],["Rule","abstr-integral","default.default",'[t] "integral"',
'@role="integral"'],"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2".split(","),'Rule,abstr-relation-seq,default.default,[t] @role (grammar:localRole); [t] "sequence"; [t] "with"; [t] count(./children/*); [t] "elements",self::relseq,count(./children/*)>2'.split(","),'Rule,abstr-relation-seq,mathspeak.brief,[t] @role (grammar:localRole); [t] "sequence",self::relseq,count(./children/*)>2'.split(","),["SpecializedRule","abstr-relation-seq","mathspeak.brief",
"mathspeak.sbrief"],'Rule,abstr-var-relation,default.default,[t] @role (grammar:localRole); [t] "sequence"; [t] "with variable number of elements",self::relseq,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),'UniqueAlias abstr-relation default.default self::multirel @role!="unknown" count(./children/*)>2'.split(" "),'Aliases abstr-var-relation self::multirel @role!="unknown" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),'Rule,abstr-multirel,default.default,[t] "relation sequence"; [t] "with"; [t] count(./children/*); [t] "elements",self::multirel,count(./children/*)>2'.split(","),
'Rule;abstr-multirel;mathspeak.brief;[t] "relation sequence";self::multirel;count(./children/*)>2'.split(";"),["SpecializedRule","abstr-multirel","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-multirel;default.default;[t] "relation sequence with variable number of elements";self::multirel;count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-table","default.default",'[t] "table with"; [t] count(children/*); [t] "rows and";[t] count(children/*[1]/children/*); [t] "columns"',
"self::table"],["Rule","abstr-line","default.default",'[t] "in"; [t] @role (grammar:localRole);',"self::line"],["Rule","abstr-row","default.default",'[t] "in"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] "with";[t] count(children/*); [t] "columns"',"self::row"],["Rule","abstr-cell","default.default",'[t] "in"; [t] @role (grammar:localRole);',"self::cell"]]};sre.SummarySpanish={locale:"es",modality:"summary",rules:[["Rule","stree","default.default","[n] ./*[1]","self::stree"],'Rule;abstr-identifier;default.default;[t] "identificador largo";self::identifier;contains(@grammar, "collapsed")'.split(";"),["Rule","abstr-identifier","default.default",'[t] "identificador"',"self::identifier"],'Rule;abstr-number;default.default;[t] "n\u00famero largo";self::number;contains(@grammar, "collapsed")'.split(";"),["Rule","abstr-number","default.default",'[t] "n\u00famero"',
"self::number"],'Rule;abstr-mixed-number;default.default;[t] "n\u00famero largo mixto";self::number;@role="mixed";contains(@grammar, "collapsed")'.split(";"),'Rule;abstr-mixed-number;default.default;[t] "n\u00famero mixto";self::number;@role="mixed"'.split(";"),["Rule","abstr-text","default.default",'[t] "texto"',"self::text"],["Rule","abstr-function","default.default",'[t] "expresi\u00f3n funcional"',"self::function"],["Rule","abstr-function","mathspeak.brief",'[t] "funci\u00f3n"',"self::function"],
["SpecializedRule","abstr-function","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-lim;default.default;[t] "funci\u00f3n de l\u00edmite";self::function;@role="limit function"'.split(";"),'Rule;abstr-lim;mathspeak.brief;[t] "l\u00edmite";self::function;@role="limit function"'.split(";"),["SpecializedRule","abstr-lim","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-fraction","default.default",'[t] "fracci\u00f3n"',"self::fraction"],["Rule","abstr-fraction","mathspeak.brief",'[t] "frac"',"self::fraction"],
["SpecializedRule","abstr-fraction","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-continued-fraction;default.default;[t] "fracci\u00f3n continua";self::fraction;children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(";"),'Rule;abstr-continued-fraction;mathspeak.brief;[t] "frac continua";self::fraction;children/*[2]/descendant-or-self::*[@role="ellipsis"]'.split(";"),["SpecializedRule","abstr-continued-fraction","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-sqrt","default.default",
'[t] "ra\u00edz cuadrada"',"self::sqrt"],'Rule;abstr-sqrt-nested;default.default;[t] "ra\u00edz cuadrada anidada";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(";"),'Rule{abstr-root{default.default{[t] "ra\u00edz del \u00edndice"; [n] children/*[1] (engine:modality="speech"); [t] "finalizar de \u00edndice"{self::root{contains(@grammar, "collapsed"){following-sibling::* or ancestor::*/following-sibling::*'.split("{"),["Rule","abstr-root","default.default",
'[t] "ra\u00edz del \u00edndice"; [n] children/*[1] (engine:modality=speech)',"self::root"],["Rule","abstr-root","mathspeak.brief",'[t] "ra\u00edz"',"self::root"],["SpecializedRule","abstr-root","mathspeak.brief","mathspeak.sbrief"],'Rule{abstr-root-nested{default.default{[t] "ra\u00edz anidada del \u00edndice"; [n] children/*[1] (engine:modality="speech"); [t] "finalizar de \u00edndice"{self::root{contains(@grammar, "collapsed"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split("{"),
'Rule,abstr-root-nested,default.default,[t] "ra\u00edz anidada del \u00edndice"; [n] children/*[1] (engine:modality="speech"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(","),'Rule;abstr-root-nested;mathspeak.brief;[t] "ra\u00edz anidada";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(";"),["SpecializedRule","abstr-root-nested","mathspeak.brief","mathspeak.sbrief"],["Rule","abstr-superscript","default.default",
'[t] "potencia"',"self::superscript"],["Rule","abstr-subscript","default.default",'[t] "sub\u00edndice"',"self::subscript"],'Rule;abstr-subsup;default.default;[t] "potencia con sub\u00edndice";self::superscript;name(children/*[1])="subscript"'.split(";"),["Rule","abstr-infixop","default.default",'[t] @role (grammar:localRole); [t] "con"; [t] count(./children/*); [t] "elementos"',"self::infixop"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] "con una cantidad variable de elementos",self::infixop,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),
["Rule","abstr-infixop","mathspeak.brief","[t] @role (grammar:localRole)","self::infixop"],["SpecializedRule","abstr-infixop","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-addition,default.default,[t] "suma con"; [t] count(./children/*); [t] "sumandos",self::infixop,@role="addition"'.split(","),'Rule;abstr-addition;mathspeak.brief;[t] "suma";self::infixop;@role="addition"'.split(";"),["SpecializedRule","abstr-addition","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-addition;default.default;[t] "suma con n\u00famero variable de sumandos";self::infixop;@role="addition";count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
'Rule,abstr-multiplication,default.default,[t] "producto con"; [t] count(./children/*); [t] "factores",self::infixop,@role="multiplication"'.split(","),'Rule;abstr-multiplication;mathspeak.brief;[t] "producto";self::infixop;@role="multiplication"'.split(";"),["SpecializedRule","abstr-multiplication","mathspeak.brief","mathspeak.sbrief"],["Aliases","abstr-multiplication","self::infixop",'@role="implicit"'],'Rule;abstr-var-multiplication;default.default;[t] "producto con una cantidad variable de factores";self::infixop;@role="multiplication";count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
'Aliases abstr-var-multiplication self::infixop @role="implicit" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),["Rule","abstr-vector","default.default",'[t] "vector de dimensi\u00f3n"; [t] count(./children/*)',"self::vector"],["Rule","abstr-vector","mathspeak.brief",'[t] "vector"',"self::vector"],["SpecializedRule","abstr-vector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-vector;default.default;[t] "vector de dimensi\u00f3n n";self::vector;./children/*/children/punctuation[@role="ellipsis"]'.split(";"),
'Rule;abstr-binomial;default.default;[t] "binomio";self::vector;@role="binomial"'.split(";"),["SpecializedRule","abstr-binomial","default.default","mathspeak.brief"],["SpecializedRule","abstr-binomial","default.default","mathspeak.sbrief"],'Rule,abstr-determinant,default.default,[t] "determinante de dimensi\u00f3n"; [t] count(./children/*),self::matrix,@role="determinant"'.split(","),'Rule;abstr-determinant;mathspeak.brief;[t] "determinante";self::matrix;@role="determinant"'.split(";"),["SpecializedRule",
"abstr-determinant","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-determinant;default.default;[t] "determinante de dimensi\u00f3n n";self::matrix;@role="determinant";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),'Rule,abstr-squarematrix,default.default,[t] "matriz cuadrada de dimensi\u00f3n"; [t] count(./children/*),self::matrix,@role="squarematrix"'.split(","),'Rule;abstr-squarematrix;mathspeak.brief;[t] "matriz cuadrada";self::matrix;@role="squarematrix"'.split(";"),
["SpecializedRule","abstr-squarematrix","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-rowvector,default.default,[t] "vector fila de dimensi\u00f3n"; [t] count(./children/row/children/*),self::matrix,@role="rowvector"'.split(","),'Rule;abstr-rowvector;mathspeak.brief;[t] "vector fila";self::matrix;@role="rowvector"'.split(";"),["SpecializedRule","abstr-rowvector","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "vector fila de dimensi\u00f3n n";self::matrix;@role="rowvector";./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),
["Rule","abstr-matrix","default.default",'[t] count(children/*);  [t] "por";[t] count(children/*[1]/children/*); [t] "matriz"',"self::matrix"],["Rule","abstr-matrix","mathspeak.brief",'[t] "matriz"',"self::matrix"],["SpecializedRule","abstr-matrix","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-matrix;default.default;[t] "matriz de dimensi\u00f3n n por m";self::matrix;./children/*/children/*/children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-cases","default.default",'[t] "declaraci\u00f3n de caso";[t] "con"; [t] count(children/*); [t] "casos"',
"self::cases"],["Rule","abstr-cases","mathspeak.brief",'[t] "declaraci\u00f3n de caso"',"self::cases"],["SpecializedRule","abstr-cases","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-cases;default.default;[t] "declaraci\u00f3n de caso con n\u00famero variable de casos";self::cases;./children/row/children/cell/children/punctuation[@role="ellipsis"]or ./children/line/children/punctuation[@role="ellipsis"]'.split(";"),["Rule","abstr-punctuated","default.default",'[t] "lista separada por"; [n] content/*[1]; [t] "de longitud"; [t] count(children/*) - count(content/*)',
"self::punctuated"],["Rule","abstr-punctuated","mathspeak.brief",'[t] "lista separada por"; [n] content/*[1]',"self::punctuated"],["SpecializedRule","abstr-punctuated","mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-punctuated,default.default,[t] "lista separada por"; [n] content/*[1],[t] "de longitud variable",self::punctuated,./children/punctuation[@role="ellipsis"]'.split(","),["Rule","abstr-bigop","default.default","[n] content/*[1]","self::bigop"],["Rule","abstr-integral","default.default",
'[t] "integral"','@role="integral"'],"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2".split(","),'Rule,abstr-relation-seq,default.default,[t] "secuencia de"; [t] @role (grammar:localRole); [t] "con"; [t] count(./children/*); [t] "elementos",self::relseq,count(./children/*)>2'.split(","),'Rule,abstr-relation-seq,mathspeak.brief,[t] "secuencia de"; [t] @role (grammar:localRole),self::relseq,count(./children/*)>2'.split(","),["SpecializedRule","abstr-relation-seq",
"mathspeak.brief","mathspeak.sbrief"],'Rule,abstr-var-relation,default.default,[t] "secuencia de"; [t] @role (grammar:localRole); [t] "con una cantidad variable de elementos",self::relseq,count(./children/*)>2,./children/punctuation[@role="ellipsis"]'.split(","),'UniqueAlias abstr-relation default.default self::multirel @role!="unknown" count(./children/*)>2'.split(" "),'Aliases abstr-var-relation self::multirel @role!="unknown" count(./children/*)>2 ./children/punctuation[@role="ellipsis"]'.split(" "),
'Rule,abstr-multirel,default.default,[t] "secuencia de relaci\u00f3n"; [t] "con"; [t] count(./children/*); [t] "elementos",self::multirel,count(./children/*)>2'.split(","),'Rule;abstr-multirel;mathspeak.brief;[t] "secuencia de relaci\u00f3n";self::multirel;count(./children/*)>2'.split(";"),["SpecializedRule","abstr-multirel","mathspeak.brief","mathspeak.sbrief"],'Rule;abstr-var-multirel;default.default;[t] "secuencia de relaci\u00f3n con n\u00famero variable de elementos";self::multirel;count(./children/*)>2;./children/punctuation[@role="ellipsis"]'.split(";"),
["Rule","abstr-table","default.default",'[t] "mesa con"; [t] count(children/*); [t] "filas y";[t] count(children/*[1]/children/*); [t] "columnas"',"self::table"],["Rule","abstr-line","default.default",'[t] "en"; [t] @role (grammar:localRole);',"self::line"],["Rule","abstr-row","default.default",'[t] "en"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] "con";[t] count(children/*); [t] "columnas"',"self::row"],["Rule","abstr-cell","default.default",'[t] "en"; [t] @role (grammar:localRole);',
"self::cell"]]};sre.SpeechRuleStores={};
sre.SpeechRuleStores.RULE_SETS_={SemanticTreeRules:sre.SemanticTreeRules,MathspeakFrench:sre.MathspeakFrench,MathspeakGerman:sre.MathspeakGerman,MathspeakRules:sre.MathspeakRules,MathspeakSpanish:sre.MathspeakSpanish,NemethRules:sre.NemethRules,ClearspeakFrench:sre.ClearspeakFrench,ClearspeakGerman:sre.ClearspeakGerman,ClearspeakRules:sre.ClearspeakRules,EmacspeakRules:sre.EmacspeakRules,SummaryFrench:sre.SummaryFrench,SummaryGerman:sre.SummaryGerman,SummaryRules:sre.SummaryRules,SummarySpanish:sre.SummarySpanish,
PrefixFrench:sre.PrefixFrench,PrefixGerman:sre.PrefixGerman,PrefixRules:sre.PrefixRules,PrefixSpanish:sre.PrefixSpanish};sre.SpeechRuleStores.availableSets=function(){return Object.keys(sre.SpeechRuleStores.RULE_SETS_)};sre.SpeechRuleStores.getConstructor=function(a){return(a=sre.SpeechRuleStores.RULE_SETS_[a])?a:null};sre.SpeechRuleEngine=function(){this.activeStore_=null;this.cache_={};this.ready_=!0;this.combinedStores_={};this.evaluators_={};this.ruleSets_={};sre.Engine.registerTest(goog.bind(function(a){return this.ready_},this))};goog.addSingletonGetter(sre.SpeechRuleEngine);
sre.SpeechRuleEngine.prototype.parameterize=function(a){for(var b={},c=0,d=a.length;c<d;c++){var e=a[c];if(this.ruleSets_[e])b[e]=this.ruleSets_[e];else{var f=sre.SpeechRuleStores.getConstructor(e);if(f&&f.getInstance)b[e]=f.getInstance(),this.ruleSets_[e]=f.getInstance();else if(f){var g=this.storeFactory_(f.modality);g.parse(f);this.ruleSets_[e]=g;b[e]=g}}}this.parameterize_(b)};
sre.SpeechRuleEngine.prototype.storeFactory_=function(a){return new ({braille:sre.BrailleStore,speech:sre.MathStore}[a]||sre.MathStore)};sre.SpeechRuleEngine.prototype.parameterize_=function(a){try{this.activeStore_=this.combineStores_(a)}catch(b){if("StoreError"==b.name)console.error("Store Error:",b.message);else throw b;}this.updateEngine()};sre.SpeechRuleEngine.prototype.clearCache=function(){this.cache_={}};sre.SpeechRuleEngine.prototype.forCache=function(a){for(var b in this.cache_)a(b,this.cache_[b])};
sre.SpeechRuleEngine.prototype.getCacheForNode_=function(a){if(!a||!a.getAttribute)return null;a=a.getAttribute("id");return"undefined"===a||""===a?null:this.getCache(a)};sre.SpeechRuleEngine.prototype.getCache=function(a){return(a=this.cache_[a])?this.cloneCache(a):a};sre.SpeechRuleEngine.prototype.cloneCache=function(a){return a.map(function(b){return b.clone()})};
sre.SpeechRuleEngine.prototype.pushCache_=function(a,b){sre.Engine.getInstance().cache&&a.getAttribute&&(a=a.getAttribute("id"))&&(this.cache_[a]=this.cloneCache(b))};sre.SpeechRuleEngine.prototype.evaluateNode=function(a){var b=(new Date).getTime();a=this.evaluateNode_(a);var c=(new Date).getTime();sre.Debugger.getInstance().output("Time:",c-b);return a};sre.SpeechRuleEngine.prototype.evaluateNode_=function(a){if(!a)return[];this.updateConstraint_();return this.evaluateTree_(a)};
sre.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=sre.Engine.getInstance();sre.Debugger.getInstance().output(b.mode!==sre.Engine.Mode.HTTP?a.toString():a);if(b.cache){var c=this.getCacheForNode_(a);if(c)return a.attributes&&this.addPersonality_(c,{},!1,a),c}sre.Grammar.getInstance().setAttribute(a);var d=this.activeStore_.lookupRule(a,b.dynamicCstr);if(!d){if(b.strict)return[];c=this.getEvaluator(b.locale,b.modality)(a);a.attributes&&this.addPersonality_(c,{},!1,a);this.pushCache_(a,
c);return c}sre.Debugger.getInstance().generateOutput(goog.bind(function(){return["Apply Rule:",d.name,d.dynamicCstr.toString(),b.mode!==sre.Engine.Mode.HTTP?a.toString():a]},this));var e=d.context||this.activeStore_.context,f=d.action.components;c=[];for(var g=0,h;h=f[g];g++){var k=[],l=h.content||"",m=h.attributes||{},n=!1;h.grammar&&this.processGrammar(e,a,h.grammar);var p=null,q=null;if(m.engine){p=sre.Engine.getInstance().dynamicCstr.getComponents();var r=sre.Grammar.parseInput(m.engine);q=this.cache_;
this.clearCache();sre.Engine.getInstance().setDynamicCstr(r)}switch(h.type){case sre.SpeechRule.Type.NODE:(l=e.applyQuery(a,l))&&(k=this.evaluateTree_(l));break;case sre.SpeechRule.Type.MULTI:n=!0;l=e.applySelector(a,l);0<l.length&&(k=this.evaluateNodeList_(e,l,m.sepFunc,e.constructString(a,m.separator),m.ctxtFunc,e.constructString(a,m.context)));break;case sre.SpeechRule.Type.TEXT:(l=e.constructString(a,l))&&(k=[sre.AuditoryDescription.create({text:l},{adjust:!0})]);break;default:k=[sre.AuditoryDescription.create({text:l})]}k[0]&&
!n&&(m.context&&(k[0].context=e.constructString(a,m.context)+(k[0].context||"")),m.annotation&&(k[0].annotation=m.annotation));h.grammar&&sre.Grammar.getInstance().popState();c=c.concat(this.addPersonality_(k,m,n,a));p&&(this.cache_=q,sre.Engine.getInstance().setDynamicCstr(p))}this.pushCache_(a,c);return c};
sre.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e,f){if(b==[])return[];var g=d||"",h=f||"";d=(d=a.contextFunctions.lookup(e))?d(b,h):function(){return h};a=(a=a.contextFunctions.lookup(c))?a(b,g):function(){return sre.AuditoryDescription.create({text:g},{translate:!0})};c=[];for(e=0;f=b[e];e++)f=this.evaluateTree_(f),0<f.length&&(f[0].context=d()+(f[0].context||""),c=c.concat(f),e<b.length-1&&(f=a(),c=c.concat(f)));return c};
sre.SpeechRuleEngine.prototype.addPersonality_=function(a,b,c,d){var e={},f;for(f in sre.Engine.personalityProps){var g=b[sre.Engine.personalityProps[f]];if("undefined"!==typeof g){var h=parseFloat(g);e[sre.Engine.personalityProps[f]]=isNaN(h)?'"'==g.charAt(0)?g.slice(1,-1):g:h}}for(b=0;f=a[b];b++)this.addRelativePersonality_(f,e),this.addExternalAttributes_(f,d);c&&a.length&&delete a[a.length-1].personality[sre.Engine.personalityProps.JOIN];return a};
sre.SpeechRuleEngine.prototype.addExternalAttributes_=function(a,b){if(b.hasAttributes()){b=b.attributes;for(var c=b.length-1;0<=c;c--){var d=b[c].name;!a.attributes[d]&&d.match(/^ext/)&&(a.attributes[d]=b[c].value)}}};sre.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&"number"==typeof c[d]&&"number"==typeof b[d]?c[d]+b[d]:b[d];return a};sre.SpeechRuleEngine.prototype.toString=function(){return this.activeStore_.findAllRules(function(a){return!0}).map(function(a){return a.toString()}).join("\n")};
sre.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=sre.SpeechRuleEngine.getInstance().activeStore_;c&&c.debugSpeechRule(a,b)};sre.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){var c=sre.SpeechRuleEngine.getInstance().activeStore_;if(c)for(var d=c.findAllRules(function(g){return g.name==a}),e=0,f;f=d[e];e++)sre.Debugger.getInstance().output("Rule",a,"DynamicCstr:",f.dynamicCstr.toString(),"number",e),c.debugSpeechRule(f,b)};
sre.SpeechRuleEngine.prototype.runInSetting=function(a,b){var c=sre.Engine.getInstance(),d={},e=null,f;for(f in a)"rules"===f?(e=this.activeStore_,c.ruleSets=a[f],this.parameterize(c.ruleSets)):(d[f]=c[f],c[f]=a[f]);c.setDynamicCstr();a=b();for(f in d)c[f]=d[f];e&&(this.activeStore_=e);c.setDynamicCstr();return a};
sre.SpeechRuleEngine.prototype.combineStores_=function(a){var b=this.cachedStore_(a);if(b)return b;b=new sre.MathStore;for(var c in a){var d=a[c];d.initialize();d.getSpeechRules().forEach(function(e){b.trie.addRule(e)});this.addEvaluator(d)}b.setSpeechRules(b.trie.collectRules());return this.combinedStores_[this.combinedStoreName_(Object.keys(a))]=b};sre.SpeechRuleEngine.prototype.combinedStoreName_=function(a){return a.sort().join("-")};
sre.SpeechRuleEngine.prototype.cachedStore_=function(a){var b=Object.keys(a);return b.some(function(c){return!a[c].initialized})?null:this.combinedStores_[this.combinedStoreName_(b)]};sre.SpeechRuleEngine.prototype.updateEngine=function(){this.ready_=!0;var a=sre.MathMap.getInstance();sre.Engine.isReady()?sre.Engine.getInstance().evaluator=goog.bind(a.store.lookupString,a.store):(this.ready_=!1,setTimeout(goog.bind(this.updateEngine,this),250))};
sre.SpeechRuleEngine.prototype.processGrammar=function(a,b,c){var d={},e;for(e in c){var f=c[e];d[e]="string"===typeof f?a.constructString(b,f):f}sre.Grammar.getInstance().pushState(d)};
sre.SpeechRuleEngine.prototype.updateConstraint_=function(){var a=sre.Engine.getInstance().dynamicCstr,b=sre.Engine.getInstance().strict,c=this.activeStore_.trie,d={},e=a.getValue(sre.DynamicCstr.Axis.LOCALE),f=a.getValue(sre.DynamicCstr.Axis.MODALITY),g=a.getValue(sre.DynamicCstr.Axis.DOMAIN);c.hasSubtrie([e,f,g])||(e=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE],c.hasSubtrie([e,f,g])||(f=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY],c.hasSubtrie([e,f,g])||(g=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN])));
d[sre.DynamicCstr.Axis.LOCALE]=[e];d[sre.DynamicCstr.Axis.MODALITY]=["summary"!==f?f:sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]];d[sre.DynamicCstr.Axis.DOMAIN]=["speech"!==f?sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]:g];c=a.getOrder();for(e=0;f=c[e];e++)if(!d[f]){g=a.getValue(f);var h=this.makeSet_(g,a.preference),k=sre.DynamicCstr.DEFAULT_VALUES[f];b||g===k||h.push(k);d[f]=h}a.updateProperties(d)};
sre.SpeechRuleEngine.prototype.makeSet_=function(a,b){return b&&Object.keys(b).length?a.split(":"):[a]};sre.SpeechRuleEngine.prototype.addEvaluator=function(a){var b=goog.bind(a.evaluateDefault,a),c=this.evaluators_[a.locale];c?c[a.modality]=b:(c={},c[a.modality]=b,this.evaluators_[a.locale]=c)};sre.SpeechRuleEngine.prototype.getEvaluator=function(a,b){return(b=(a=this.evaluators_[a])?a[b]:null)?b:goog.bind(this.activeStore_.evaluateDefault,this.activeStore_)};
sre.SpeechRuleEngine.prototype.enumerate=function(a){return this.activeStore_.trie.enumerate(a)};sre.SpeechGeneratorUtil={};sre.SpeechGeneratorUtil.computeSpeech=function(a){var b=sre.SpeechRuleEngine.getInstance();b.clearCache();return b.evaluateNode(a)};sre.SpeechGeneratorUtil.recomputeSpeech=function(a){a=sre.SemanticTree.fromNode(a);return sre.SpeechRuleEngine.getInstance().evaluateNode(a.xml())};
sre.SpeechGeneratorUtil.computeSpeechWithoutCache=function(a){var b=sre.Engine.getInstance().cache;sre.Engine.getInstance().cache=!1;a=sre.SpeechRuleEngine.getInstance().evaluateNode(a);sre.Engine.getInstance().cache=b;return a};sre.SpeechGeneratorUtil.retrieveSpeech=function(a){var b=null;sre.Engine.getInstance().cache&&(b=sre.SpeechRuleEngine.getInstance().getCache(a.id.toString()));b||(b=sre.SpeechGeneratorUtil.recomputeSpeech(a));return sre.AuralRendering.getInstance().markup(b)};
sre.SpeechGeneratorUtil.addSpeech=function(a,b,c){b=sre.SpeechGeneratorUtil.retrieveSpeech(b);a.setAttribute(c||sre.EnrichMathml.Attribute.SPEECH,b)};sre.SpeechGeneratorUtil.addPrefix=function(a,b){(b=sre.SpeechGeneratorUtil.retrievePrefix(b))&&a.setAttribute(sre.EnrichMathml.Attribute.PREFIX,b)};sre.SpeechGeneratorUtil.retrievePrefix=function(a){a=sre.SpeechGeneratorUtil.computePrefix_(a);return sre.AuralRendering.getInstance().markup(a)};
sre.SpeechGeneratorUtil.computePrefix_=function(a){var b=sre.SemanticTree.fromRoot(a),c=sre.XpathUtil.evalXPath('.//*[@id="'+a.id+'"]',b.xml())[0];return c?sre.SpeechRuleEngine.getInstance().runInSetting({modality:"prefix",domain:"default",style:"default",strict:!0,cache:!1,speech:!0},function(){return sre.SpeechRuleEngine.getInstance().evaluateNode(c)}):[]};
sre.SpeechGeneratorUtil.connectMactions=function(a,b,c){b=sre.DomUtil.querySelectorAll(b,"maction");for(var d=0,e;e=b[d];d++){var f=e.getAttribute("id");if(f=sre.DomUtil.querySelectorAllByAttrValue(a,"id",f)[0]){var g=e.childNodes[1];e=g.getAttribute(sre.EnrichMathml.Attribute.ID);var h=sre.WalkerUtil.getBySemanticId(a,e);h&&"dummy"!==h.getAttribute(sre.EnrichMathml.Attribute.TYPE)||(h=f.childNodes[0],h.getAttribute("sre-highlighter-added")||((f=g.getAttribute(sre.EnrichMathml.Attribute.PARENT))&&
h.setAttribute(sre.EnrichMathml.Attribute.PARENT,f),h.setAttribute(sre.EnrichMathml.Attribute.TYPE,"dummy"),h.setAttribute(sre.EnrichMathml.Attribute.ID,e),sre.DomUtil.querySelectorAllByAttrValue(c,"id",e)[0].setAttribute("alternative",e)))}}};
sre.SpeechGeneratorUtil.connectAllMactions=function(a,b){a=sre.DomUtil.querySelectorAll(a,"maction");for(var c=0,d;d=a[c];c++)d=d.childNodes[1].getAttribute(sre.EnrichMathml.Attribute.ID),sre.DomUtil.querySelectorAllByAttrValue(b,"id",d)[0].setAttribute("alternative",d)};sre.SpeechGeneratorUtil.retrieveSummary=function(a){a=sre.SpeechGeneratorUtil.computeSummary_(a);return sre.AuralRendering.getInstance().markup(a)};
sre.SpeechGeneratorUtil.computeSummary_=function(a){return a?sre.SpeechRuleEngine.getInstance().runInSetting({modality:"summary",strict:!1,cache:!1,speech:!0},function(){return sre.SpeechRuleEngine.getInstance().evaluateNode(a)}):[]};sre.AbstractSpeechGenerator=function(){this.rebuilt_=null;this.options_={};this.modality=sre.EnrichMathml.addPrefix("speech")};sre.AbstractSpeechGenerator.prototype.getRebuilt=function(){return this.rebuilt_};sre.AbstractSpeechGenerator.prototype.setRebuilt=function(a){this.rebuilt_=a};sre.AbstractSpeechGenerator.prototype.setOptions=function(a){this.options_=a||{};this.modality=sre.EnrichMathml.addPrefix(this.options_.modality||"speech")};sre.AbstractSpeechGenerator.prototype.getOptions=function(){return this.options_};
sre.AbstractSpeechGenerator.prototype.getSpeech=goog.abstractMethod;sre.AbstractSpeechGenerator.prototype.start=function(){};sre.AbstractSpeechGenerator.prototype.end=function(){};sre.AbstractSpeechGenerator.prototype.generateSpeech=function(a,b){this.rebuilt_||(this.rebuilt_=new sre.RebuildStree(b));sre.System.getInstance().setupEngine(this.options_);a=sre.SpeechGeneratorUtil.computeSpeech(this.getRebuilt().xml);return sre.AuralRendering.getInstance().markup(a)};sre.AdhocSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.AdhocSpeechGenerator,sre.AbstractSpeechGenerator);sre.AdhocSpeechGenerator.prototype.getSpeech=function(a,b){b=this.generateSpeech(a,b);a.setAttribute(this.modality,b);return b};sre.ColorGenerator=function(){sre.AbstractSpeechGenerator.call(this);this.modality=sre.EnrichMathml.addPrefix("foreground");this.contrast=new sre.ContrastPicker};goog.inherits(sre.ColorGenerator,sre.AbstractSpeechGenerator);sre.ColorGenerator.prototype.getSpeech=function(a,b){return sre.WalkerUtil.getAttribute(a,this.modality)};
sre.ColorGenerator.prototype.generateSpeech=function(a,b){this.getRebuilt()||this.setRebuilt(new sre.RebuildStree(a));this.colorLeaves_(a);return sre.WalkerUtil.getAttribute(a,this.modality)};
sre.ColorGenerator.prototype.colorLeaves_=function(a){var b=this,c=[];sre.ColorGenerator.visitStree_(this.getRebuilt().streeRoot,c,{});var d={};c=$jscomp.makeIterator(c);for(var e=c.next();!e.done;d={$jscomp$loop$prop$color$5:d.$jscomp$loop$prop$color$5},e=c.next()){e=e.value;d.$jscomp$loop$prop$color$5=this.contrast.generate();var f=!1;(f=Array.isArray(e)?e.map(function(g){return function(h){return b.colorLeave_(a,h,g.$jscomp$loop$prop$color$5)}}(d)).reduce(function(g,h){return g||h},!1):this.colorLeave_(a,
e,d.$jscomp$loop$prop$color$5))&&this.contrast.increment()}};sre.ColorGenerator.prototype.colorLeave_=function(a,b,c){return(a=sre.WalkerUtil.getBySemanticId(a,b))?(a.setAttribute(this.modality,c),!0):!1};
sre.ColorGenerator.visitStree_=function(a,b,c){if(a.childNodes.length){if(a.contentNodes.length&&("punctuated"===a.type&&a.contentNodes.forEach(function(h){return c[h.id]=!0}),"implicit"!==a.role&&b.push(a.contentNodes.map(function(h){return h.id}))),a.childNodes.length)if("implicit"===a.role){var d=[],e=[];a=$jscomp.makeIterator(a.childNodes);for(var f=a.next();!f.done;f=a.next()){var g=[];sre.ColorGenerator.visitStree_(f.value,g,c);2>=g.length&&d.push(g.shift());e=e.concat(g)}b.push(d);e.forEach(function(h){return b.push(h)})}else a.childNodes.forEach(function(h){return sre.ColorGenerator.visitStree_(h,
b,c)})}else c[a.id]||b.push(a.id)};sre.DirectSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.DirectSpeechGenerator,sre.AbstractSpeechGenerator);sre.DirectSpeechGenerator.prototype.getSpeech=function(a,b){return sre.WalkerUtil.getAttribute(a,this.modality)};sre.DummySpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.DummySpeechGenerator,sre.AbstractSpeechGenerator);sre.DummySpeechGenerator.prototype.getSpeech=function(a,b){return""};sre.TreeSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.TreeSpeechGenerator,sre.AbstractSpeechGenerator);
sre.TreeSpeechGenerator.prototype.getSpeech=function(a,b){var c=this.generateSpeech(a,b);a.setAttribute(this.modality,c);var d=this.getRebuilt().nodeDict,e;for(e in d){var f=d[e],g=sre.WalkerUtil.getBySemanticId(b,e),h=sre.WalkerUtil.getBySemanticId(a,e);g&&h&&(sre.SpeechGeneratorUtil.addSpeech(h,f,this.modality),this.modality===sre.EnrichMathml.Attribute.SPEECH&&sre.SpeechGeneratorUtil.addPrefix(h,f))}return c};sre.NodeSpeechGenerator=function(){sre.TreeSpeechGenerator.call(this)};goog.inherits(sre.NodeSpeechGenerator,sre.TreeSpeechGenerator);sre.NodeSpeechGenerator.prototype.getSpeech=function(a,b){var c=sre.WalkerUtil.getAttribute(a,this.modality);return c?c:sre.NodeSpeechGenerator.superClass_.getSpeech.call(this,a,b)};sre.SummarySpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.SummarySpeechGenerator,sre.AbstractSpeechGenerator);sre.SummarySpeechGenerator.prototype.getSpeech=function(a,b){sre.SpeechGeneratorUtil.connectAllMactions(b,this.getRebuilt().xml);return this.generateSpeech(a,b)};sre.SpeechGeneratorFactory={};sre.SpeechGeneratorFactory.generator=function(a){return new (sre.SpeechGeneratorFactory.generatorMapping_[a]||sre.SpeechGeneratorFactory.generatorMapping_.Direct)};sre.SpeechGeneratorFactory.generatorMapping_={Adhoc:sre.AdhocSpeechGenerator,Color:sre.ColorGenerator,Direct:sre.DirectSpeechGenerator,Dummy:sre.DummySpeechGenerator,Node:sre.NodeSpeechGenerator,Summary:sre.SummarySpeechGenerator,Tree:sre.TreeSpeechGenerator};sre.EventUtil={};sre.EventUtil.KeyCode={ENTER:13,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,TAB:9,LESS:188,GREATER:190,DASH:189,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90};sre.EventUtil.Move=function(){var a={},b;for(b in sre.EventUtil.KeyCode)a[sre.EventUtil.KeyCode[b]]=b;return a}();
sre.EventUtil.EventType={CLICK:"click",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",SELECTSTART:"selectstart",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",TOUCHCANCEL:"touchcancel"};sre.EventUtil.Event=function(a,b,c){this.src=a;this.type=b;this.callback=c};sre.EventUtil.Event.prototype.add=function(){this.src.addEventListener(this.type,this.callback)};
sre.EventUtil.Event.prototype.remove=function(){this.src.removeEventListener(this.type,this.callback)};sre.Focus=function(a,b){this.semanticNodes_=a;this.semanticPrimary_=b;this.domNodes_=[];this.domPrimary_=null;this.allNodes_=[]};sre.Focus.prototype.getSemanticPrimary=function(){return this.semanticPrimary_};sre.Focus.prototype.getSemanticNodes=function(){return this.semanticNodes_};sre.Focus.prototype.getNodes=function(){return this.allNodes_};sre.Focus.prototype.getDomNodes=function(){return this.domNodes_};sre.Focus.prototype.getDomPrimary=function(){return this.domPrimary_};
sre.Focus.prototype.toString=function(){return"Primary:"+this.domPrimary_+" Nodes:"+this.domNodes_};sre.Focus.prototype.clone=function(){var a=new sre.Focus(this.semanticNodes_,this.semanticPrimary_);a.domNodes_=this.domNodes_;a.domPrimary_=this.domPrimary_;a.allNodes_=this.allNodes_;return a};
sre.Focus.factory=function(a,b,c,d){var e=function(h){return sre.WalkerUtil.getBySemanticId(d,h)},f=c.nodeDict;c=e(a);e=b.map(e);var g=b.map(function(h){return f[h]});a=new sre.Focus(g,f[a]);a.domNodes_=e;a.domPrimary_=c;a.allNodes_=sre.Focus.generateAllVisibleNodes_(b,e,f,d);return a};
sre.Focus.generateAllVisibleNodes_=function(a,b,c,d){for(var e=function(m){return sre.WalkerUtil.getBySemanticId(d,m)},f=[],g=0,h=a.length;g<h;g++)if(b[g])f.push(b[g]);else{var k=c[a[g]];if(k){k=k.childNodes.map(function(m){return m.id.toString()});var l=k.map(e);f=f.concat(sre.Focus.generateAllVisibleNodes_(k,l,c,d))}}return f};sre.Levels=function(){this.level_=[]};sre.Levels.prototype.push=function(a){this.level_.push(a)};sre.Levels.prototype.pop=function(){return this.level_.pop()};sre.Levels.prototype.peek=function(){return this.level_[this.level_.length-1]||null};sre.Levels.prototype.indexOf=function(a){var b=this.peek();return b?b.indexOf(a):null};sre.Levels.prototype.find=function(a){var b=this.peek();if(!b)return null;for(var c=0,d=b.length;c<d;c++)if(a(b[c]))return b[c];return null};
sre.Levels.prototype.get=function(a){var b=this.peek();return!b||0>a||a>=b.length?null:b[a]};sre.Levels.prototype.depth=function(){return this.level_.length};sre.Levels.prototype.clone=function(){var a=new sre.Levels;a.level_=this.level_.slice(0);return a};sre.Levels.prototype.toString=function(){for(var a="",b=0,c;c=this.level_[b];b++)a+="\n"+c.map(function(d){return d.toString()});return a};sre.Walker=function(){};sre.Walker.prototype.isActive=function(){};sre.Walker.prototype.activate=function(){};sre.Walker.prototype.deactivate=function(){};sre.Walker.prototype.speech=function(){};sre.Walker.prototype.getXml=function(){};sre.Walker.prototype.getRebuilt=function(){};sre.Walker.prototype.getFocus=function(a){};sre.Walker.prototype.setFocus=function(a){};sre.Walker.prototype.getDepth=function(){};sre.Walker.prototype.move=function(a){};sre.Walker.prototype.update=function(a){};
sre.Walker.move={UP:"up",DOWN:"down",LEFT:"left",RIGHT:"right",REPEAT:"repeat",DEPTH:"depth",ENTER:"enter",EXPAND:"expand",HOME:"home",SUMMARY:"summary",DETAIL:"detail",ROW:"row",CELL:"cell"};sre.Walker.STATE_={};sre.Walker.resetState=function(a){delete sre.Walker.STATE_[a]};sre.Walker.setState=function(a,b){sre.Walker.STATE_[a]=b};sre.Walker.getState=function(a){return sre.Walker.STATE_[a]};sre.AbstractWalker=function(a,b,c,d){this.node=a;this.node.id?this.id=this.node.id:this.node.hasAttribute(sre.AbstractWalker.SRE_ID_ATTR)?this.id=this.node.getAttribute(sre.AbstractWalker.SRE_ID_ATTR):(this.node.setAttribute(sre.AbstractWalker.SRE_ID_ATTR,sre.AbstractWalker.ID_COUNTER),this.id=sre.AbstractWalker.ID_COUNTER++);this.generator=b;this.highlighter=c;this.rootNode=sre.WalkerUtil.getSemanticRoot(a);this.rootId=this.rootNode.getAttribute(sre.EnrichMathml.Attribute.ID);this.xmlString_=d;this.focus_=
this.rebuilt_=this.xml_=null;this.keyMapping={};this.keyMapping[sre.EventUtil.KeyCode.UP]=goog.bind(this.up,this);this.keyMapping[sre.EventUtil.KeyCode.DOWN]=goog.bind(this.down,this);this.keyMapping[sre.EventUtil.KeyCode.RIGHT]=goog.bind(this.right,this);this.keyMapping[sre.EventUtil.KeyCode.LEFT]=goog.bind(this.left,this);this.keyMapping[sre.EventUtil.KeyCode.TAB]=goog.bind(this.repeat,this);this.keyMapping[sre.EventUtil.KeyCode.DASH]=goog.bind(this.expand,this);this.keyMapping[sre.EventUtil.KeyCode.SPACE]=
goog.bind(this.depth,this);this.keyMapping[sre.EventUtil.KeyCode.HOME]=goog.bind(this.home,this);this.keyMapping[sre.EventUtil.KeyCode.X]=goog.bind(this.summary,this);this.keyMapping[sre.EventUtil.KeyCode.Z]=goog.bind(this.detail,this);this.keyMapping[sre.EventUtil.KeyCode.V]=goog.bind(this.virtualize,this);this.keyMapping[sre.EventUtil.KeyCode.P]=goog.bind(this.previous,this);this.keyMapping[sre.EventUtil.KeyCode.U]=goog.bind(this.undo,this);this.keyMapping[sre.EventUtil.KeyCode.LESS]=goog.bind(this.previousRules,
this);this.keyMapping[sre.EventUtil.KeyCode.GREATER]=goog.bind(this.nextRules,this);this.active_=!1;this.moved=sre.Walker.move.ENTER;this.cursors=[]};sre.AbstractWalker.prototype.getXml=function(){this.xml_||(this.xml_=sre.DomUtil.parseInput(this.xmlString_));return this.xml_};sre.AbstractWalker.prototype.getRebuilt=function(){this.rebuilt_||(this.rebuilt_=this.rebuildStree());return this.rebuilt_};sre.AbstractWalker.ID_COUNTER=0;sre.AbstractWalker.SRE_ID_ATTR="sre-explorer-id";
sre.AbstractWalker.prototype.isActive=function(){return this.active_};sre.AbstractWalker.prototype.toggleActive_=function(){this.active_=!this.active_};sre.AbstractWalker.prototype.activate=function(){this.isActive()||(this.generator.start(),this.toggleActive_())};sre.AbstractWalker.prototype.deactivate=function(){this.isActive()&&(sre.Walker.setState(this.id,this.primaryId()),this.generator.end(),this.toggleActive_())};
sre.AbstractWalker.prototype.getFocus=function(a){this.focus_||(this.focus_=sre.Focus.factory(this.rootId,[this.rootId],this.getRebuilt(),this.node));a&&this.updateFocus();return this.focus_};sre.AbstractWalker.prototype.setFocus=function(a){this.focus_=a};sre.AbstractWalker.prototype.getDepth=function(){return this.levels.depth()-1};sre.AbstractWalker.prototype.isSpeech=function(){return this.generator.modality===sre.EnrichMathml.Attribute.SPEECH};
sre.AbstractWalker.prototype.speech=function(){var a=this.getFocus().getDomNodes();if(!a.length)return"";var b=this.specialMove();if(null!==b)return b;switch(this.moved){case sre.Walker.move.DEPTH:return this.depth_();case sre.Walker.move.SUMMARY:return this.summary_();case sre.Walker.move.DETAIL:return this.detail_();default:b=[];for(var c=this.getFocus().getSemanticNodes(),d=0,e=a.length;d<e;d++){var f=a[d],g=c[d];b.push(f?this.generator.getSpeech(f,this.getXml()):sre.SpeechGeneratorUtil.retrieveSpeech(g))}return this.mergePrefix_(b)}};
sre.AbstractWalker.prototype.mergePrefix_=function(a,b){b=b||[];var c=this.isSpeech()?this.prefix_():"",d=sre.AuralRendering.getInstance();c&&a.unshift(c);return d.finalize(d.merge(b.concat(a)))};sre.AbstractWalker.prototype.prefix_=function(){var a=this.getFocus().getDomNodes(),b=this.getFocus().getSemanticNodes();return a[0]?sre.WalkerUtil.getAttribute(a[0],sre.EnrichMathml.Attribute.PREFIX):sre.SpeechGeneratorUtil.retrievePrefix(b[0])};
sre.AbstractWalker.prototype.move=function(a){a=this.keyMapping[a];if(!a)return null;a=a();if(!a||a===this.getFocus())return!1;this.setFocus(a);this.moved===sre.Walker.move.HOME&&(this.levels=this.initLevels());return!0};sre.AbstractWalker.prototype.up=function(){this.moved=sre.Walker.move.UP;return this.getFocus()};sre.AbstractWalker.prototype.down=function(){this.moved=sre.Walker.move.DOWN;return this.getFocus()};sre.AbstractWalker.prototype.left=function(){this.moved=sre.Walker.move.LEFT;return this.getFocus()};
sre.AbstractWalker.prototype.right=function(){this.moved=sre.Walker.move.RIGHT;return this.getFocus()};sre.AbstractWalker.prototype.repeat=function(){this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.AbstractWalker.prototype.depth=function(){this.moved=this.isSpeech()?sre.Walker.move.DEPTH:sre.Walker.move.REPEAT;return this.getFocus().clone()};
sre.AbstractWalker.prototype.depth_=function(){var a=sre.Grammar.getInstance().getParameter("depth");sre.Grammar.getInstance().setParameter("depth",!0);var b=this.getFocus().getDomPrimary();b=this.expandable(b)&&[sre.Messages.NAVIGATE.EXPANDABLE]||this.collapsible(b)&&[sre.Messages.NAVIGATE.COLLAPSIBLE]||[];var c=[sre.AuralRendering.getInstance().markup([new sre.AuditoryDescription({text:sre.Messages.NAVIGATE.LEVEL+" "+this.getDepth(),personality:{}})])],d=this.getFocus().getSemanticNodes();d=sre.SpeechGeneratorUtil.retrievePrefix(d[0]);
var e=sre.AuralRendering.getInstance();d&&c.push(d);sre.Grammar.getInstance().setParameter("depth",a);return e.finalize(e.merge(c.concat(b)))};sre.AbstractWalker.prototype.home=function(){this.moved=sre.Walker.move.HOME;return sre.Focus.factory(this.rootId,[this.rootId],this.getRebuilt(),this.node)};sre.AbstractWalker.prototype.getBySemanticId=function(a){return sre.WalkerUtil.getBySemanticId(this.node,a)};sre.AbstractWalker.prototype.primaryId=function(){return this.getFocus().getSemanticPrimary().id.toString()};
sre.AbstractWalker.prototype.expand=function(){var a=this.getFocus().getDomPrimary();a=this.actionable_(a);if(!a)return this.getFocus();this.moved=sre.Walker.move.EXPAND;a.dispatchEvent(new Event("click"));return this.getFocus().clone()};sre.AbstractWalker.prototype.actionable_=function(a){return a&&a.parentNode&&this.highlighter.isMactionNode(a.parentNode)?a.parentNode:null};sre.AbstractWalker.prototype.expandable=function(a){return!!this.actionable_(a)&&0===a.childNodes.length};
sre.AbstractWalker.prototype.collapsible=function(a){return!!this.actionable_(a)&&0<a.childNodes.length};sre.AbstractWalker.prototype.restoreState=function(){if(this.highlighter){var a=sre.Walker.getState(this.id);if(a){var b=this.getRebuilt().nodeDict[a];for(a=[];b;)a.push(b.id),b=b.parent;for(a.pop();0<a.length;){this.down();b=a.pop();b=this.findFocusOnLevel(b);if(!b)break;this.setFocus(b)}this.moved=sre.Walker.move.ENTER}}};
sre.AbstractWalker.prototype.updateFocus=function(){this.setFocus(sre.Focus.factory(this.getFocus().getSemanticPrimary().id.toString(),this.getFocus().getSemanticNodes().map(function(a){return a.id}),this.getRebuilt(),this.node))};sre.AbstractWalker.prototype.findFocusOnLevel=goog.abstractMethod;sre.AbstractWalker.prototype.initLevels=goog.abstractMethod;
sre.AbstractWalker.prototype.rebuildStree=function(){var a=new sre.RebuildStree(this.getXml());this.rootId=a.stree.root.id.toString();this.generator.setRebuilt(a);this.focus_=sre.Focus.factory(this.rootId,[this.rootId],a,this.node);this.levels=this.initLevels();sre.SpeechGeneratorUtil.connectMactions(this.node,this.getXml(),a.xml);return a};
sre.AbstractWalker.prototype.previousLevel=function(){var a=this.getFocus().getDomPrimary();return a?sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.PARENT):this.getFocus().getSemanticPrimary().parent.id.toString()};
sre.AbstractWalker.prototype.nextLevel=function(){var a=this.getFocus().getDomPrimary();if(a){var b=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CHILDREN)),c=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CONTENT)),d=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.TYPE);a=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ROLE);return this.combineContentChildren(d,a,c,b)}c=function(e){return e.id.toString()};
d=this.getRebuilt().nodeDict[this.primaryId()];b=d.childNodes.map(c);c=d.contentNodes.map(c);return 0===b.length?[]:this.combineContentChildren(d.type,d.role,c,b)};sre.AbstractWalker.prototype.combineContentChildren=goog.abstractMethod;sre.AbstractWalker.prototype.singletonFocus=function(a){return this.focusFromId(a,[a])};sre.AbstractWalker.prototype.focusFromId=function(a,b){return sre.Focus.factory(a,b,this.getRebuilt(),this.node)};
sre.AbstractWalker.prototype.summary=function(){this.moved=this.isSpeech()?sre.Walker.move.SUMMARY:sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.AbstractWalker.prototype.summary_=function(){var a=this.getFocus().getSemanticPrimary().id.toString();a=this.getRebuilt().xml.getAttribute("id")===a?this.getRebuilt().xml:sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,"id",a)[0];a=sre.SpeechGeneratorUtil.retrieveSummary(a);return this.mergePrefix_([a])};
sre.AbstractWalker.prototype.detail=function(){this.moved=this.isSpeech()?sre.Walker.move.DETAIL:sre.Walker.move.REPEAT;return this.getFocus().clone()};
sre.AbstractWalker.prototype.detail_=function(){var a=this.getFocus().getSemanticPrimary().id.toString();a=this.getRebuilt().xml.getAttribute("id")===a?this.getRebuilt().xml:sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,"id",a)[0];var b=a.getAttribute("alternative");a.removeAttribute("alternative");var c=sre.SpeechGeneratorUtil.computeSpeechWithoutCache(a);c=sre.AuralRendering.getInstance().markup(c);c=this.mergePrefix_([c]);a.setAttribute("alternative",b);return c};
sre.AbstractWalker.prototype.specialMove=function(){return null};sre.AbstractWalker.prototype.virtualize=function(a){this.cursors.push({focus:this.getFocus(),levels:this.levels,undo:a||!this.cursors.length});this.levels=this.levels.clone();return this.getFocus().clone()};sre.AbstractWalker.prototype.previous=function(){var a=this.cursors.pop();if(!a)return this.getFocus();this.levels=a.levels;return a.focus};
sre.AbstractWalker.prototype.undo=function(){do var a=this.cursors.pop();while(a&&!a.undo);if(!a)return this.getFocus();this.levels=a.levels;return a.focus};sre.AbstractWalker.prototype.update=function(a){this.generator.setOptions(a);sre.System.getInstance().setupEngine(a);sre.SpeechGeneratorFactory.generator("Tree").getSpeech(this.node,this.getXml())};
sre.AbstractWalker.prototype.nextRules=function(){var a=this.generator.getOptions();if("speech"!==a.modality)return this.getFocus();sre.Engine.DOMAIN_TO_STYLES[a.domain]=a.style;a.domain="mathspeak"===a.domain?"clearspeak":"mathspeak";a.style=sre.Engine.DOMAIN_TO_STYLES[a.domain];this.update(a);this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};
sre.AbstractWalker.prototype.nextStyle=function(a,b){if("mathspeak"===a){a=["default","brief","sbrief"];var c=a.indexOf(b);return-1===c?b:c>=a.length-1?a[0]:a[c+1]}if("clearspeak"===a){var d=sre.ClearspeakPreferences.getLocalePreferences().en;if(!d)return"default";a=sre.ClearspeakPreferences.relevantPreferences(this.getFocus().getSemanticPrimary());c=sre.ClearspeakPreferences.findPreference(b,a);d=d[a].map(function(e){return e.split("_")[1]});c=d.indexOf(c);return-1===c?b:sre.ClearspeakPreferences.addPreference(b,
a,c>=d.length-1?d[0]:d[c+1])}return b};sre.AbstractWalker.prototype.previousRules=function(){var a=this.generator.getOptions();if("speech"!==a.modality)return this.getFocus();a.style=this.nextStyle(a.domain,a.style);this.update(a);this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.DummyWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d)};goog.inherits(sre.DummyWalker,sre.AbstractWalker);sre.DummyWalker.prototype.up=function(){};sre.DummyWalker.prototype.down=function(){};sre.DummyWalker.prototype.left=function(){};sre.DummyWalker.prototype.right=function(){};sre.DummyWalker.prototype.repeat=function(){};sre.DummyWalker.prototype.depth=function(){};sre.DummyWalker.prototype.home=function(){};sre.DummyWalker.prototype.getDepth=function(){return 0};
sre.DummyWalker.prototype.initLevels=function(){};sre.SemanticWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d);this.levels=null;this.restoreState()};goog.inherits(sre.SemanticWalker,sre.AbstractWalker);sre.SemanticWalker.prototype.initLevels=function(){var a=new sre.Levels;a.push([this.getFocus()]);return a};
sre.SemanticWalker.prototype.up=function(){sre.SemanticWalker.superClass_.up.call(this);var a=this.previousLevel();if(!a)return null;this.levels.pop();return this.levels.find(function(b){return b.getSemanticNodes().some(function(c){return c.id.toString()===a})})};sre.SemanticWalker.prototype.down=function(){sre.SemanticWalker.superClass_.down.call(this);var a=this.nextLevel();if(0===a.length)return null;this.levels.push(a);return a[0]};
sre.SemanticWalker.prototype.combineContentChildren=function(a,b,c,d){switch(a){case sre.SemanticAttr.Type.RELSEQ:case sre.SemanticAttr.Type.INFIXOP:case sre.SemanticAttr.Type.MULTIREL:return this.makePairList(d,c);case sre.SemanticAttr.Type.PREFIXOP:return[this.focusFromId(d[0],c.concat(d))];case sre.SemanticAttr.Type.POSTFIXOP:return[this.focusFromId(d[0],d.concat(c))];case sre.SemanticAttr.Type.MATRIX:case sre.SemanticAttr.Type.VECTOR:case sre.SemanticAttr.Type.FENCED:return[this.focusFromId(d[0],
[c[0],d[0],c[1]])];case sre.SemanticAttr.Type.CASES:return[this.focusFromId(d[0],[c[0],d[0]])];case sre.SemanticAttr.Type.PUNCTUATED:return b===sre.SemanticAttr.Role.TEXT?d.map(goog.bind(this.singletonFocus,this)):d.length===c.length?c.map(goog.bind(this.singletonFocus,this)):this.combinePunctuations(d,c,[],[]);case sre.SemanticAttr.Type.APPL:return[this.focusFromId(d[0],[d[0],c[0]]),this.singletonFocus(d[1])];case sre.SemanticAttr.Type.ROOT:return[this.singletonFocus(d[1]),this.singletonFocus(d[0])];
default:return d.map(goog.bind(this.singletonFocus,this))}};sre.SemanticWalker.prototype.combinePunctuations=function(a,b,c,d){if(0===a.length)return d;var e=a.shift(),f=b.shift();if(e===f)return c.push(f),this.combinePunctuations(a,b,c,d);b.unshift(f);c.push(e);if(a.length===b.length)return d.push(this.focusFromId(e,c.concat(b))),d;d.push(this.focusFromId(e,c));return this.combinePunctuations(a,b,[],d)};
sre.SemanticWalker.prototype.makePairList=function(a,b){if(0===a.length)return[];if(1===a.length)return[this.singletonFocus(a[0])];for(var c=[this.singletonFocus(a.shift())],d=0,e=a.length;d<e;d++)c.push(this.focusFromId(a[d],[b[d],a[d]]));return c};sre.SemanticWalker.prototype.left=function(){sre.SemanticWalker.superClass_.left.call(this);var a=this.levels.indexOf(this.getFocus());return null===a?null:(a=this.levels.get(a-1))?a:null};
sre.SemanticWalker.prototype.right=function(){sre.SemanticWalker.superClass_.right.call(this);var a=this.levels.indexOf(this.getFocus());return null===a?null:(a=this.levels.get(a+1))?a:null};sre.SemanticWalker.prototype.findFocusOnLevel=function(a){return this.levels.find(function(b){return b.getSemanticPrimary().id===a})};sre.SyntaxWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d);this.levels=null;this.restoreState()};goog.inherits(sre.SyntaxWalker,sre.AbstractWalker);sre.SyntaxWalker.prototype.initLevels=function(){var a=new sre.Levels;a.push([this.primaryId()]);return a};sre.SyntaxWalker.prototype.up=function(){sre.SyntaxWalker.superClass_.up.call(this);var a=this.previousLevel();if(!a)return null;this.levels.pop();return this.singletonFocus(a)};
sre.SyntaxWalker.prototype.down=function(){sre.SyntaxWalker.superClass_.down.call(this);var a=this.nextLevel();if(0===a.length)return null;var b=this.singletonFocus(a[0]);b&&this.levels.push(a);return b};
sre.SyntaxWalker.prototype.combineContentChildren=function(a,b,c,d){switch(a){case sre.SemanticAttr.Type.RELSEQ:case sre.SemanticAttr.Type.INFIXOP:case sre.SemanticAttr.Type.MULTIREL:return sre.BaseUtil.interleaveLists(d,c);case sre.SemanticAttr.Type.PREFIXOP:return c.concat(d);case sre.SemanticAttr.Type.POSTFIXOP:return d.concat(c);case sre.SemanticAttr.Type.MATRIX:case sre.SemanticAttr.Type.VECTOR:case sre.SemanticAttr.Type.FENCED:return d.unshift(c[0]),d.push(c[1]),d;case sre.SemanticAttr.Type.CASES:return d.unshift(c[0]),
d;case sre.SemanticAttr.Type.PUNCTUATED:return b===sre.SemanticAttr.Role.TEXT?sre.BaseUtil.interleaveLists(d,c):d;case sre.SemanticAttr.Type.APPL:return[d[0],c[0],d[1]];case sre.SemanticAttr.Type.ROOT:return[d[1],d[0]];default:return d}};sre.SyntaxWalker.prototype.left=function(){sre.SyntaxWalker.superClass_.left.call(this);var a=this.levels.indexOf(this.primaryId());return null===a?null:(a=this.levels.get(a-1))?this.singletonFocus(a):null};
sre.SyntaxWalker.prototype.right=function(){sre.SyntaxWalker.superClass_.right.call(this);var a=this.levels.indexOf(this.primaryId());return null===a?null:(a=this.levels.get(a+1))?this.singletonFocus(a):null};sre.SyntaxWalker.prototype.findFocusOnLevel=function(a){return this.singletonFocus(a.toString())};sre.TableWalker=function(a,b,c,d){sre.SyntaxWalker.call(this,a,b,c,d);this.modifier=!1;this.keyMapping[sre.EventUtil.KeyCode["0"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["1"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["2"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["3"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["4"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["5"]]=
goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["6"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["7"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["8"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode["9"]]=goog.bind(this.jumpCell,this);this.key_=null;this.row_=0;this.firstJump=this.currentTable_=null};goog.inherits(sre.TableWalker,sre.SyntaxWalker);
sre.TableWalker.prototype.move=function(a){this.key_=a;a=sre.TableWalker.superClass_.move.call(this,a);this.modifier=!1;return a};sre.TableWalker.prototype.up=function(){this.moved=sre.Walker.move.UP;return this.eligibleCell_()?this.verticalMove_(!1):sre.TableWalker.superClass_.up.call(this)};sre.TableWalker.prototype.down=function(){this.moved=sre.Walker.move.DOWN;return this.eligibleCell_()?this.verticalMove_(!0):sre.TableWalker.superClass_.down.call(this)};
sre.TableWalker.ELIGIBLE_CELL_ROLES=[sre.SemanticAttr.Role.DETERMINANT,sre.SemanticAttr.Role.ROWVECTOR,sre.SemanticAttr.Role.BINOMIAL,sre.SemanticAttr.Role.SQUAREMATRIX,sre.SemanticAttr.Role.MULTILINE,sre.SemanticAttr.Role.MATRIX,sre.SemanticAttr.Role.VECTOR,sre.SemanticAttr.Role.CASES,sre.SemanticAttr.Role.TABLE];sre.TableWalker.ELIGIBLE_TABLE_TYPES=[sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Type.MATRIX,sre.SemanticAttr.Type.VECTOR,sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Type.TABLE];
sre.TableWalker.prototype.eligibleCell_=function(){var a=this.getFocus().getSemanticPrimary();return this.modifier&&a.type===sre.SemanticAttr.Type.CELL&&-1!==sre.TableWalker.ELIGIBLE_CELL_ROLES.indexOf(a.role)};
sre.TableWalker.prototype.verticalMove_=function(a){var b=this.previousLevel();if(!b)return null;var c=this.getFocus(),d=this.levels.indexOf(this.primaryId()),e=this.levels.pop();b=this.levels.indexOf(b);a=this.levels.get(a?b+1:b-1);if(!a)return this.levels.push(e),null;this.setFocus(this.singletonFocus(a));a=this.nextLevel();if(!a[d])return this.setFocus(c),this.levels.push(e),null;this.levels.push(a);return this.singletonFocus(a[d])};
sre.TableWalker.prototype.jumpCell=function(){if(!this.isInTable_()||null===this.key_)return this.getFocus();if(this.moved===sre.Walker.move.ROW){this.moved=sre.Walker.move.CELL;var a=this.key_-sre.EventUtil.KeyCode["0"];return this.isLegalJump_(this.row_,a)?this.jumpCell_(this.row_,a):this.getFocus()}a=this.key_-sre.EventUtil.KeyCode["0"];if(a>this.currentTable_.childNodes.length)return this.getFocus();this.row_=a;this.moved=sre.Walker.move.ROW;return this.getFocus().clone()};
sre.TableWalker.prototype.jumpCell_=function(a,b){this.firstJump?this.virtualize(!1):(this.firstJump=this.getFocus(),this.virtualize(!0));var c=this.currentTable_.id.toString();do var d=this.levels.pop();while(-1===d.indexOf(c));this.levels.push(d);this.setFocus(this.singletonFocus(c));this.levels.push(this.nextLevel());a=this.currentTable_.childNodes[a-1];this.setFocus(this.singletonFocus(a.id.toString()));this.levels.push(this.nextLevel());return this.singletonFocus(a.childNodes[b-1].id.toString())};
sre.TableWalker.prototype.isLegalJump_=function(a,b){var c=sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,"id",this.currentTable_.id.toString())[0];if(!c||c.hasAttribute("alternative"))return!1;a=this.currentTable_.childNodes[a-1];if(!a)return!1;c=sre.DomUtil.querySelectorAllByAttrValue(c,"id",a.id.toString())[0];return!c||c.hasAttribute("alternative")?!1:!(!a||!a.childNodes[b-1])};
sre.TableWalker.prototype.isInTable_=function(){for(var a=this.getFocus().getSemanticPrimary();a;){if(-1!==sre.TableWalker.ELIGIBLE_TABLE_TYPES.indexOf(a.type))return this.currentTable_=a,!0;a=a.parent}return!1};sre.TableWalker.prototype.undo=function(){var a=sre.TableWalker.superClass_.undo.call(this);a===this.firstJump&&(this.firstJump=null);return a};sre.WalkerFactory={};sre.WalkerFactory.walker=function(a,b,c,d,e){return new (sre.WalkerFactory.walkerMapping_[a.toLowerCase()]||sre.WalkerFactory.walkerMapping_.dummy)(b,c,d,e)};sre.WalkerFactory.walkerMapping_={dummy:sre.DummyWalker,semantic:sre.SemanticWalker,syntax:sre.SyntaxWalker,table:sre.TableWalker};sre.ProcessorFactory={};sre.ProcessorFactory.PROCESSORS_={};sre.ProcessorFactory.get_=function(a){var b=sre.ProcessorFactory.PROCESSORS_[a.toLowerCase()];if(!b)throw new sre.Engine.Error("Unknown processor "+a);return b};sre.ProcessorFactory.process=function(a,b){return sre.ProcessorFactory.get_(a).processor(b)};sre.ProcessorFactory.print=function(a,b){a=sre.ProcessorFactory.get_(a);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};
sre.ProcessorFactory.output=function(a,b){a=sre.ProcessorFactory.get_(a);b=a.processor(b);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};sre.ProcessorFactory.keypress=function(a,b){a=sre.ProcessorFactory.get_(a);b=a.key?a.key(b):b;b=a.processor(b);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};
sre.Processor=function(a,b){this.name=a;this.processor=b.processor;this.print=b.print||sre.Processor.stringify_;this.pprint=b.pprint||this.print;sre.ProcessorFactory.PROCESSORS_[this.name]=this};sre.KeyProcessor=function(a,b){sre.Processor.call(this,a,b);this.key=b.key||sre.KeyProcessor.getKey_};goog.inherits(sre.KeyProcessor,sre.Processor);sre.KeyProcessor.getKey_=function(a){return"string"===typeof a?sre.EventUtil.KeyCode[a.toUpperCase()]:a};
sre.Processor.LocalState_={walker:null,speechGenerator:null,highlighter:null};sre.Processor.stringify_=function(a){return a?a.toString():a};new sre.Processor("semantic",{processor:function(a){a=sre.DomUtil.parseInput(a);return sre.Semantic.xmlTree(a)},pprint:function(a){return sre.DomUtil.formatXml(a.toString())}});
new sre.Processor("speech",{processor:function(a){a=sre.DomUtil.parseInput(a);a=sre.Semantic.xmlTree(a);a=sre.SpeechGeneratorUtil.computeSpeech(a);var b=sre.AuralRendering.getInstance();return b.finalize(b.markup(a))},pprint:function(a){a=a.toString();return sre.AuralRendering.ofType(sre.XmlRenderer)?sre.DomUtil.formatXml(a):a}});
new sre.Processor("json",{processor:function(a){a=sre.DomUtil.parseInput(a,sre.Engine.Error);return sre.Semantic.getTree(a).toJson()},print:function(a){return JSON.stringify(a)},pprint:function(a){return JSON.stringify(a,null,2)}});new sre.Processor("description",{processor:function(a){a=sre.DomUtil.parseInput(a);a=sre.Semantic.xmlTree(a);return sre.SpeechGeneratorUtil.computeSpeech(a)},print:function(a){return JSON.stringify(a)},pprint:function(a){return JSON.stringify(a,null,2)}});
new sre.Processor("enriched",{processor:function(a){a=sre.Enrich.semanticMathmlSync(a);var b=sre.WalkerUtil.getSemanticRoot(a);switch(sre.Engine.getInstance().speech){case sre.Engine.Speech.SHALLOW:var c=sre.SpeechGeneratorFactory.generator("Adhoc");c.getSpeech(b,a);break;case sre.Engine.Speech.DEEP:c=sre.SpeechGeneratorFactory.generator("Tree"),c.getSpeech(b,a)}return a},pprint:function(a){return sre.DomUtil.formatXml(a.toString())}});
new sre.Processor("walker",{processor:function(a){var b=sre.SpeechGeneratorFactory.generator("Node");sre.Processor.LocalState_.speechGenerator=b;sre.Processor.LocalState_.highlighter=sre.HighlighterFactory.highlighter({color:"black"},{color:"white"},{renderer:"NativeMML"});a=sre.ProcessorFactory.process("enriched",a);var c=sre.ProcessorFactory.print("enriched",a);sre.Processor.LocalState_.walker=sre.WalkerFactory.walker(sre.Engine.getInstance().walker,a,b,sre.Processor.LocalState_.highlighter,c);
return sre.Processor.LocalState_.walker},print:function(a){return sre.Processor.LocalState_.walker.speech()}});new sre.KeyProcessor("move",{processor:function(a){return sre.Processor.LocalState_.walker?!1===sre.Processor.LocalState_.walker.move(a)?sre.AuralRendering.getInstance().error(a):sre.Processor.LocalState_.walker.speech():null}});sre.System=function(){this.version=sre.Variables.VERSION};goog.addSingletonGetter(sre.System);
sre.System.prototype.setupEngine=function(a){var b=sre.Engine.getInstance(),c=function(d){b[d]=a[d]||b[d]};c("mode");sre.System.prototype.configBlocks_(a);sre.Engine.BINARY_FEATURES.forEach(function(d){"undefined"!==typeof a[d]&&(b[d]=!!a[d])});sre.Engine.STRING_FEATURES.forEach(c);a.json&&(sre.SystemExternal.jsonPath=sre.BaseUtil.makePath(a.json));a.xpath&&(sre.SystemExternal.WGXpath=a.xpath);b.setupBrowsers();b.ruleSets=a.rules?a.rules:sre.SpeechRuleStores.availableSets();sre.SpeechRuleEngine.getInstance().parameterize(b.ruleSets);
b.setDynamicCstr();sre.L10n.setLocale()};sre.System.prototype.configBlocks_=function(a){if(!sre.Engine.getInstance().config&&sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP){sre.Engine.getInstance().config=!0;for(var b=document.documentElement.querySelectorAll('script[type="text/x-sre-config"]'),c=0,d=b.length;c<d;c++)try{var e=b[c].innerHTML,f=JSON.parse(e),g;for(g in f)a[g]=f[g]}catch(h){sre.Debugger.getInstance().output("Illegal configuration ",e)}}};
sre.System.setAsync=function(){sre.Engine.isReady()||setTimeout(sre.System.setAsync,500);sre.System.getInstance().setupEngine({mode:sre.Engine.Mode.ASYNC})};sre.System.prototype.engineSetup=function(){var a=["mode"].concat(sre.Engine.STRING_FEATURES,sre.Engine.BINARY_FEATURES),b=sre.Engine.getInstance(),c={};a.forEach(function(d){c[d]=b[d]});c.json=sre.SystemExternal.jsonPath;c.xpath=sre.SystemExternal.WGXpath;c.rules=b.ruleSets.slice();return c};sre.System.prototype.engineReady=function(){return sre.Engine.isReady()};
sre.System.prototype.toSpeech=function(a){return sre.System.getInstance().processString("speech",a)};sre.System.prototype.toSemantic=function(a){return sre.System.getInstance().processString("semantic",a)};sre.System.prototype.toJson=function(a){return sre.System.getInstance().processString("json",a)};sre.System.prototype.toDescription=function(a){return sre.System.getInstance().processString("description",a)};
sre.System.prototype.toEnriched=function(a){return sre.System.getInstance().processString("enriched",a)};sre.System.prototype.processString=function(a,b){return sre.ProcessorFactory.process(a,b)};sre.System.prototype.fileToSpeech=function(a,b){sre.System.getInstance().processFile("speech",a,b)};sre.System.prototype.fileToSemantic=function(a,b){sre.System.getInstance().processFile("semantic",a,b)};sre.System.prototype.fileToJson=function(a,b){sre.System.getInstance().processFile("json",a,b)};
sre.System.prototype.fileToDescription=function(a,b){sre.System.getInstance().processFile("description",a,b)};sre.System.prototype.fileToEnriched=function(a,b){sre.System.getInstance().processFile("enriched",a,b)};sre.System.prototype.processFile=function(a,b,c){sre.Engine.isReady()?sre.Engine.getInstance().mode===sre.Engine.Mode.SYNC?this.processFileSync_(a,b,c):this.processFileAsync_(a,b,c):setTimeout(goog.bind(function(){this.processFile(a,b,c)},this),100)};
sre.System.prototype.inputFileSync_=function(a){try{var b=sre.SystemExternal.fs.readFileSync(a,{encoding:"utf8"})}catch(c){throw new sre.Engine.Error("Can not open file: "+a);}return b};sre.System.prototype.processFileSync_=function(a,b,c){b=sre.System.getInstance().inputFileSync_(b);a=sre.ProcessorFactory.output(a,b);if(c)try{sre.SystemExternal.fs.writeFileSync(c,a)}catch(d){throw new sre.Engine.Error("Can not write to file: "+c);}else console.info(a)};
sre.System.prototype.inputFileAsync_=function(a,b){sre.SystemExternal.fs.readFile(a,{encoding:"utf8"},goog.bind(function(c,d){if(c)throw new sre.Engine.Error("Can not open file: "+a);b(d)},this))};sre.System.prototype.processFileAsync_=function(a,b,c){sre.System.getInstance().inputFileAsync_(b,goog.bind(function(d){d=sre.ProcessorFactory.output(a,d);c?sre.SystemExternal.fs.writeFile(c,d,function(e){if(e)throw new sre.Engine.Error("Can not write to file: "+c);}):console.info(d)},this))};
sre.System.prototype.walk=function(a){return sre.ProcessorFactory.output("walker",a)};sre.System.prototype.move=function(a){return sre.ProcessorFactory.keypress("move",a)};sre.Mathjax={};
(function(){var a=sre.System.getInstance(),b=MathJax.Callback.Signal("Sre");MathJax.Extension.Sre={version:a.version,signal:b,ConfigSre:function(){sre.Engine.isReady()?MathJax.Callback.Queue(MathJax.Hub.Register.StartupHook("mml Jax Ready",{}),["Post",MathJax.Hub.Startup.signal,"Sre Ready"]):setTimeout(MathJax.Extension.Sre.ConfigSre,500)}};sre.System.getInstance().setupEngine({mode:sre.Engine.Mode.HTTP,json:MathJax.Ajax.config.path.SRE+"/mathmaps",xpath:MathJax.Ajax.config.path.SRE+"/wgxpath.install.js",
semantics:!0});MathJax.Extension.Sre.ConfigSre()})();

