{"version":3,"sources":["jsdelivr-header.js","/npm/epubavocado@0.4.0/dist/epubavocado.js"],"names":[],"mappings":"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ACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCAGJ,EAAY,kBAAoB,CAC5B,wCACA,uCACA,uCACA,uCACA,wCACA,wCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,uCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,uCACA,wCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,wCACA,wCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,4DACA,uCACA,wCACA,uCACA,wCAGJ,EAAY,UAAY,CACpB,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,iCAGJ,EAAY,YAAc,CACtB,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GAAI,EAAG,GACd,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GAAI,EAAG,GACd,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GAAI,GAAI,GACf,CAAC,EAAG,EAAG,GAAI,EAAG,GACd,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GAAI,GAAI,GACf,CAAC,EAAG,EAAG,GAAI,GAAI,GACf,CAAC,EAAG,EAAG,GAAI,EAAG,GACd,CAAC,EAAG,EAAG,GAAI,EAAG,GACd,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GAAI,GAAI,GACf,CAAC,EAAG,EAAG,GAAI,GAAI,GACf,CAAC,EAAG,EAAG,G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K,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACf,MAAL,GACK,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACK,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACf,MAAL,GACA,GAAK,MAAU,GAAK,MACpB,GAAK,MA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","file":"/npm/epubavocado@0.4.0/dist/epubavocado.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/epubavocado@0.4.0/dist/epubavocado.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.epubavocado = {}));\n}(this, (function (exports) { 'use strict';\n\n\tfunction createCommonjsModule(fn) {\n\t  var module = { exports: {} };\n\t\treturn fn(module, module.exports), module.exports;\n\t}\n\n\t/*\r\n\t * xpath.js\r\n\t *\r\n\t * An XPath 1.0 library for JavaScript.\r\n\t *\r\n\t * Cameron McCormack <cam (at) mcc.id.au>\r\n\t *\r\n\t * This work is licensed under the MIT License.\r\n\t *\r\n\t * Revision 20: April 26, 2011\r\n\t *   Fixed a typo resulting in FIRST_ORDERED_NODE_TYPE results being wrong,\r\n\t *   thanks to <shi_a009 (at) hotmail.com>.\r\n\t *\r\n\t * Revision 19: November 29, 2005\r\n\t *   Nodesets now store their nodes in a height balanced tree, increasing\r\n\t *   performance for the common case of selecting nodes in document order,\r\n\t *   thanks to Sébastien Cramatte <contact (at) zeninteractif.com>.\r\n\t *   AVL tree code adapted from Raimund Neumann <rnova (at) gmx.net>.\r\n\t *\r\n\t * Revision 18: October 27, 2005\r\n\t *   DOM 3 XPath support.  Caveats:\r\n\t *     - namespace prefixes aren't resolved in XPathEvaluator.createExpression,\r\n\t *       but in XPathExpression.evaluate.\r\n\t *     - XPathResult.invalidIteratorState is not implemented.\r\n\t *\r\n\t * Revision 17: October 25, 2005\r\n\t *   Some core XPath function fixes and a patch to avoid crashing certain\r\n\t *   versions of MSXML in PathExpr.prototype.getOwnerElement, thanks to\r\n\t *   Sébastien Cramatte <contact (at) zeninteractif.com>.\r\n\t *\r\n\t * Revision 16: September 22, 2005\r\n\t *   Workarounds for some IE 5.5 deficiencies.\r\n\t *   Fixed problem with prefix node tests on attribute nodes.\r\n\t *\r\n\t * Revision 15: May 21, 2005\r\n\t *   Fixed problem with QName node tests on elements with an xmlns=\"...\".\r\n\t *\r\n\t * Revision 14: May 19, 2005\r\n\t *   Fixed QName node tests on attribute node regression.\r\n\t *\r\n\t * Revision 13: May 3, 2005\r\n\t *   Node tests are case insensitive now if working in an HTML DOM.\r\n\t *\r\n\t * Revision 12: April 26, 2005\r\n\t *   Updated licence.  Slight code changes to enable use of Dean\r\n\t *   Edwards' script compression, http://dean.edwards.name/packer/ .\r\n\t *\r\n\t * Revision 11: April 23, 2005\r\n\t *   Fixed bug with 'and' and 'or' operators, fix thanks to\r\n\t *   Sandy McArthur <sandy (at) mcarthur.org>.\r\n\t *\r\n\t * Revision 10: April 15, 2005\r\n\t *   Added support for a virtual root node, supposedly helpful for\r\n\t *   implementing XForms.  Fixed problem with QName node tests and\r\n\t *   the parent axis.\r\n\t *\r\n\t * Revision 9: March 17, 2005\r\n\t *   Namespace resolver tweaked so using the document node as the context\r\n\t *   for namespace lookups is equivalent to using the document element.\r\n\t *\r\n\t * Revision 8: February 13, 2005\r\n\t *   Handle implicit declaration of 'xmlns' namespace prefix.\r\n\t *   Fixed bug when comparing nodesets.\r\n\t *   Instance data can now be associated with a FunctionResolver, and\r\n\t *     workaround for MSXML not supporting 'localName' and 'getElementById',\r\n\t *     thanks to Grant Gongaware.\r\n\t *   Fix a few problems when the context node is the root node.\r\n\t *\r\n\t * Revision 7: February 11, 2005\r\n\t *   Default namespace resolver fix from Grant Gongaware\r\n\t *   <grant (at) gongaware.com>.\r\n\t *\r\n\t * Revision 6: February 10, 2005\r\n\t *   Fixed bug in 'number' function.\r\n\t *\r\n\t * Revision 5: February 9, 2005\r\n\t *   Fixed bug where text nodes not getting converted to string values.\r\n\t *\r\n\t * Revision 4: January 21, 2005\r\n\t *   Bug in 'name' function, fix thanks to Bill Edney.\r\n\t *   Fixed incorrect processing of namespace nodes.\r\n\t *   Fixed NamespaceResolver to resolve 'xml' namespace.\r\n\t *   Implemented union '|' operator.\r\n\t *\r\n\t * Revision 3: January 14, 2005\r\n\t *   Fixed bug with nodeset comparisons, bug lexing < and >.\r\n\t *\r\n\t * Revision 2: October 26, 2004\r\n\t *   QName node test namespace handling fixed.  Few other bug fixes.\r\n\t *\r\n\t * Revision 1: August 13, 2004\r\n\t *   Bug fixes from William J. Edney <bedney (at) technicalpursuit.com>.\r\n\t *   Added minimal licence.\r\n\t *\r\n\t * Initial version: June 14, 2004\r\n\t */\n\n\tvar xpath_1 = createCommonjsModule(function (module, exports) {\n\t// non-node wrapper\r\n\tvar xpath =  exports;\r\n\r\n\t(function (exports) {\r\n\r\n\t    // functional helpers\r\n\t    function curry(func) {\r\n\t        var slice = Array.prototype.slice,\r\n\t            totalargs = func.length,\r\n\t            partial = function (args, fn) {\r\n\t                return function () {\r\n\t                    return fn.apply(this, args.concat(slice.call(arguments)));\r\n\t                }\r\n\t            },\r\n\t            fn = function () {\r\n\t                var args = slice.call(arguments);\r\n\t                return (args.length < totalargs) ?\r\n\t                    partial(args, fn) :\r\n\t                    func.apply(this, slice.apply(arguments, [0, totalargs]));\r\n\t            };\r\n\t        return fn;\r\n\t    }\r\n\r\n\t    var forEach = function (f, xs) {\r\n\t        for (var i = 0; i < xs.length; i += 1) {\r\n\t            f(xs[i], i, xs);\r\n\t        }\r\n\t    };\r\n\r\n\t    var reduce = function (f, seed, xs) {\r\n\t        var acc = seed;\r\n\r\n\t        forEach(function (x, i) { acc = f(acc, x, i); }, xs);\r\n\r\n\t        return acc;\r\n\t    };\r\n\r\n\t    var map = function (f, xs) {\r\n\t        var mapped = new Array(xs.length);\r\n\r\n\t        forEach(function (x, i) { mapped[i] = f(x); }, xs);\r\n\r\n\t        return mapped;\r\n\t    };\r\n\r\n\t    var filter = function (f, xs) {\r\n\t        var filtered = [];\r\n\r\n\t        forEach(function (x, i) { if (f(x, i)) { filtered.push(x); } }, xs);\r\n\r\n\t        return filtered;\r\n\t    };\r\n\r\n\t    var includes = function (values, value) {\r\n\t        for (var i = 0; i < values.length; i += 1) {\r\n\t            if (values[i] === value) {\r\n\t                return true;\r\n\t            }\r\n\t        }\r\n\r\n\t        return false;\r\n\t    };\r\n\r\n\t    function always(value) { return function () { return value; } }\r\n\r\n\t    function toString(x) { return x.toString(); }\r\n\t    var join = function (s, xs) { return xs.join(s); };\r\n\t    var wrap = function (pref, suf, str) { return pref + str + suf; };\r\n\r\n\t    var prototypeConcat = Array.prototype.concat;\r\n\r\n\t    // .apply() fails above a certain number of arguments - https://github.com/goto100/xpath/pull/98\r\n\t    var MAX_ARGUMENT_LENGTH = 32767;\r\n\r\n\t    function flatten(arr) {\r\n\t        var result = [];\r\n\r\n\t        for (var start = 0; start < arr.length; start += MAX_ARGUMENT_LENGTH) {\r\n\t            var chunk = arr.slice(start, start + MAX_ARGUMENT_LENGTH);\r\n\t            \r\n\t            result = prototypeConcat.apply(result, chunk);\r\n\t        }\r\n\t        \r\n\t        return result;\r\n\t    }\r\n\r\n\t    function assign(target, varArgs) { // .length of function is 2\r\n\t        var to = Object(target);\r\n\r\n\t        for (var index = 1; index < arguments.length; index++) {\r\n\t            var nextSource = arguments[index];\r\n\r\n\t            if (nextSource != null) { // Skip over if undefined or null\r\n\t                for (var nextKey in nextSource) {\r\n\t                    // Avoid bugs when hasOwnProperty is shadowed\r\n\t                    if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n\t                        to[nextKey] = nextSource[nextKey];\r\n\t                    }\r\n\t                }\r\n\t            }\r\n\t        }\r\n\r\n\t        return to;\r\n\t    }\r\n\r\n\t    // XPathParser ///////////////////////////////////////////////////////////////\r\n\r\n\t    XPathParser.prototype = new Object();\r\n\t    XPathParser.prototype.constructor = XPathParser;\r\n\t    XPathParser.superclass = Object.prototype;\r\n\r\n\t    function XPathParser() {\r\n\t        this.init();\r\n\t    }\r\n\r\n\t    XPathParser.prototype.init = function () {\r\n\t        this.reduceActions = [];\r\n\r\n\t        this.reduceActions[3] = function (rhs) {\r\n\t            return new OrOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[5] = function (rhs) {\r\n\t            return new AndOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[7] = function (rhs) {\r\n\t            return new EqualsOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[8] = function (rhs) {\r\n\t            return new NotEqualOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[10] = function (rhs) {\r\n\t            return new LessThanOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[11] = function (rhs) {\r\n\t            return new GreaterThanOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[12] = function (rhs) {\r\n\t            return new LessThanOrEqualOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[13] = function (rhs) {\r\n\t            return new GreaterThanOrEqualOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[15] = function (rhs) {\r\n\t            return new PlusOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[16] = function (rhs) {\r\n\t            return new MinusOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[18] = function (rhs) {\r\n\t            return new MultiplyOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[19] = function (rhs) {\r\n\t            return new DivOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[20] = function (rhs) {\r\n\t            return new ModOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[22] = function (rhs) {\r\n\t            return new UnaryMinusOperation(rhs[1]);\r\n\t        };\r\n\t        this.reduceActions[24] = function (rhs) {\r\n\t            return new BarOperation(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[25] = function (rhs) {\r\n\t            return new PathExpr(undefined, undefined, rhs[0]);\r\n\t        };\r\n\t        this.reduceActions[27] = function (rhs) {\r\n\t            rhs[0].locationPath = rhs[2];\r\n\t            return rhs[0];\r\n\t        };\r\n\t        this.reduceActions[28] = function (rhs) {\r\n\t            rhs[0].locationPath = rhs[2];\r\n\t            rhs[0].locationPath.steps.unshift(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n\t            return rhs[0];\r\n\t        };\r\n\t        this.reduceActions[29] = function (rhs) {\r\n\t            return new PathExpr(rhs[0], [], undefined);\r\n\t        };\r\n\t        this.reduceActions[30] = function (rhs) {\r\n\t            if (Utilities.instance_of(rhs[0], PathExpr)) {\r\n\t                if (rhs[0].filterPredicates == undefined) {\r\n\t                    rhs[0].filterPredicates = [];\r\n\t                }\r\n\t                rhs[0].filterPredicates.push(rhs[1]);\r\n\t                return rhs[0];\r\n\t            } else {\r\n\t                return new PathExpr(rhs[0], [rhs[1]], undefined);\r\n\t            }\r\n\t        };\r\n\t        this.reduceActions[32] = function (rhs) {\r\n\t            return rhs[1];\r\n\t        };\r\n\t        this.reduceActions[33] = function (rhs) {\r\n\t            return new XString(rhs[0]);\r\n\t        };\r\n\t        this.reduceActions[34] = function (rhs) {\r\n\t            return new XNumber(rhs[0]);\r\n\t        };\r\n\t        this.reduceActions[36] = function (rhs) {\r\n\t            return new FunctionCall(rhs[0], []);\r\n\t        };\r\n\t        this.reduceActions[37] = function (rhs) {\r\n\t            return new FunctionCall(rhs[0], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[38] = function (rhs) {\r\n\t            return [rhs[0]];\r\n\t        };\r\n\t        this.reduceActions[39] = function (rhs) {\r\n\t            rhs[2].unshift(rhs[0]);\r\n\t            return rhs[2];\r\n\t        };\r\n\t        this.reduceActions[43] = function (rhs) {\r\n\t            return new LocationPath(true, []);\r\n\t        };\r\n\t        this.reduceActions[44] = function (rhs) {\r\n\t            rhs[1].absolute = true;\r\n\t            return rhs[1];\r\n\t        };\r\n\t        this.reduceActions[46] = function (rhs) {\r\n\t            return new LocationPath(false, [rhs[0]]);\r\n\t        };\r\n\t        this.reduceActions[47] = function (rhs) {\r\n\t            rhs[0].steps.push(rhs[2]);\r\n\t            return rhs[0];\r\n\t        };\r\n\t        this.reduceActions[49] = function (rhs) {\r\n\t            return new Step(rhs[0], rhs[1], []);\r\n\t        };\r\n\t        this.reduceActions[50] = function (rhs) {\r\n\t            return new Step(Step.CHILD, rhs[0], []);\r\n\t        };\r\n\t        this.reduceActions[51] = function (rhs) {\r\n\t            return new Step(rhs[0], rhs[1], rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[52] = function (rhs) {\r\n\t            return new Step(Step.CHILD, rhs[0], rhs[1]);\r\n\t        };\r\n\t        this.reduceActions[54] = function (rhs) {\r\n\t            return [rhs[0]];\r\n\t        };\r\n\t        this.reduceActions[55] = function (rhs) {\r\n\t            rhs[1].unshift(rhs[0]);\r\n\t            return rhs[1];\r\n\t        };\r\n\t        this.reduceActions[56] = function (rhs) {\r\n\t            if (rhs[0] == \"ancestor\") {\r\n\t                return Step.ANCESTOR;\r\n\t            } else if (rhs[0] == \"ancestor-or-self\") {\r\n\t                return Step.ANCESTORORSELF;\r\n\t            } else if (rhs[0] == \"attribute\") {\r\n\t                return Step.ATTRIBUTE;\r\n\t            } else if (rhs[0] == \"child\") {\r\n\t                return Step.CHILD;\r\n\t            } else if (rhs[0] == \"descendant\") {\r\n\t                return Step.DESCENDANT;\r\n\t            } else if (rhs[0] == \"descendant-or-self\") {\r\n\t                return Step.DESCENDANTORSELF;\r\n\t            } else if (rhs[0] == \"following\") {\r\n\t                return Step.FOLLOWING;\r\n\t            } else if (rhs[0] == \"following-sibling\") {\r\n\t                return Step.FOLLOWINGSIBLING;\r\n\t            } else if (rhs[0] == \"namespace\") {\r\n\t                return Step.NAMESPACE;\r\n\t            } else if (rhs[0] == \"parent\") {\r\n\t                return Step.PARENT;\r\n\t            } else if (rhs[0] == \"preceding\") {\r\n\t                return Step.PRECEDING;\r\n\t            } else if (rhs[0] == \"preceding-sibling\") {\r\n\t                return Step.PRECEDINGSIBLING;\r\n\t            } else if (rhs[0] == \"self\") {\r\n\t                return Step.SELF;\r\n\t            }\r\n\t            return -1;\r\n\t        };\r\n\t        this.reduceActions[57] = function (rhs) {\r\n\t            return Step.ATTRIBUTE;\r\n\t        };\r\n\t        this.reduceActions[59] = function (rhs) {\r\n\t            if (rhs[0] == \"comment\") {\r\n\t                return NodeTest.commentTest;\r\n\t            } else if (rhs[0] == \"text\") {\r\n\t                return NodeTest.textTest;\r\n\t            } else if (rhs[0] == \"processing-instruction\") {\r\n\t                return NodeTest.anyPiTest;\r\n\t            } else if (rhs[0] == \"node\") {\r\n\t                return NodeTest.nodeTest;\r\n\t            }\r\n\t            return new NodeTest(-1, undefined);\r\n\t        };\r\n\t        this.reduceActions[60] = function (rhs) {\r\n\t            return new NodeTest.PITest(rhs[2]);\r\n\t        };\r\n\t        this.reduceActions[61] = function (rhs) {\r\n\t            return rhs[1];\r\n\t        };\r\n\t        this.reduceActions[63] = function (rhs) {\r\n\t            rhs[1].absolute = true;\r\n\t            rhs[1].steps.unshift(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n\t            return rhs[1];\r\n\t        };\r\n\t        this.reduceActions[64] = function (rhs) {\r\n\t            rhs[0].steps.push(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n\t            rhs[0].steps.push(rhs[2]);\r\n\t            return rhs[0];\r\n\t        };\r\n\t        this.reduceActions[65] = function (rhs) {\r\n\t            return new Step(Step.SELF, NodeTest.nodeTest, []);\r\n\t        };\r\n\t        this.reduceActions[66] = function (rhs) {\r\n\t            return new Step(Step.PARENT, NodeTest.nodeTest, []);\r\n\t        };\r\n\t        this.reduceActions[67] = function (rhs) {\r\n\t            return new VariableReference(rhs[1]);\r\n\t        };\r\n\t        this.reduceActions[68] = function (rhs) {\r\n\t            return NodeTest.nameTestAny;\r\n\t        };\r\n\t        this.reduceActions[69] = function (rhs) {\r\n\t            return new NodeTest.NameTestPrefixAny(rhs[0].split(':')[0]);\r\n\t        };\r\n\t        this.reduceActions[70] = function (rhs) {\r\n\t            return new NodeTest.NameTestQName(rhs[0]);\r\n\t        };\r\n\t    };\r\n\r\n\t    XPathParser.actionTable = [\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \"                 s                  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"                rrrrr               \",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \"rs  rrrrrrrr s  sssssrrrrrr  rrs rs \",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \"                            s       \",\r\n\t        \"                            s       \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"  s                                 \",\r\n\t        \"                            s       \",\r\n\t        \" s           s  sssss          s  s \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"a                                   \",\r\n\t        \"r       s                    rr  r  \",\r\n\t        \"r      sr                    rr  r  \",\r\n\t        \"r   s  rr            s       rr  r  \",\r\n\t        \"r   rssrr            rss     rr  r  \",\r\n\t        \"r   rrrrr            rrrss   rr  r  \",\r\n\t        \"r   rrrrrsss         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrrs  rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n\t        \"r  srrrrrrrr         rrrrrrs rr sr  \",\r\n\t        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"                sssss               \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr sr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"                             s      \",\r\n\t        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n\t        \"              s                     \",\r\n\t        \"                             s      \",\r\n\t        \"                rrrrr               \",\r\n\t        \" s s        sssssssss    s sss s  ss\",\r\n\t        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s s        sssssssss      ss  s  ss\",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \" s           s  sssss          s  s \",\r\n\t        \" s           s  sssss          s  s \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \" s           s  sssss          s  s \",\r\n\t        \" s           s  sssss          s  s \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr sr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr sr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"                             s      \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"                             rr     \",\r\n\t        \"                             s      \",\r\n\t        \"                             rs     \",\r\n\t        \"r      sr                    rr  r  \",\r\n\t        \"r   s  rr            s       rr  r  \",\r\n\t        \"r   rssrr            rss     rr  r  \",\r\n\t        \"r   rssrr            rss     rr  r  \",\r\n\t        \"r   rrrrr            rrrss   rr  r  \",\r\n\t        \"r   rrrrr            rrrss   rr  r  \",\r\n\t        \"r   rrrrr            rrrss   rr  r  \",\r\n\t        \"r   rrrrr            rrrss   rr  r  \",\r\n\t        \"r   rrrrrsss         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrsss         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n\t        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n\t        \"                                 r  \",\r\n\t        \"                                 s  \",\r\n\t        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n\t        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \" s s        sssssssss    s ss  s  ss\",\r\n\t        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n\t        \"                             r      \"\r\n\t    ];\r\n\r\n\t    XPathParser.actionTableNumber = [\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \"                 J                  \",\r\n\t        \"a  aaaaaaaaa         aaaaaaa aa  a  \",\r\n\t        \"                YYYYY               \",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \"K1  KKKKKKKK .  +*)('KKKKKK  KK# K\\\" \",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \"                            N       \",\r\n\t        \"                            O       \",\r\n\t        \"e  eeeeeeeee         eeeeeee ee ee  \",\r\n\t        \"f  fffffffff         fffffff ff ff  \",\r\n\t        \"d  ddddddddd         ddddddd dd dd  \",\r\n\t        \"B  BBBBBBBBB         BBBBBBB BB BB  \",\r\n\t        \"A  AAAAAAAAA         AAAAAAA AA AA  \",\r\n\t        \"  P                                 \",\r\n\t        \"                            Q       \",\r\n\t        \" 1           .  +*)('          #  \\\" \",\r\n\t        \"b  bbbbbbbbb         bbbbbbb bb  b  \",\r\n\t        \"                                    \",\r\n\t        \"!       S                    !!  !  \",\r\n\t        \"\\\"      T\\\"                    \\\"\\\"  \\\"  \",\r\n\t        \"$   V  $$            U       $$  $  \",\r\n\t        \"&   &ZY&&            &XW     &&  &  \",\r\n\t        \")   )))))            )))\\\\[   ))  )  \",\r\n\t        \".   ....._^]         .....   ..  .  \",\r\n\t        \"1   11111111         11111   11  1  \",\r\n\t        \"5   55555555         55555`  55  5  \",\r\n\t        \"7   77777777         777777  77  7  \",\r\n\t        \"9   99999999         999999  99  9  \",\r\n\t        \":  c::::::::         ::::::b :: a:  \",\r\n\t        \"I  fIIIIIIII         IIIIIIe II  I  \",\r\n\t        \"=  =========         ======= == ==  \",\r\n\t        \"?  ?????????         ??????? ?? ??  \",\r\n\t        \"C  CCCCCCCCC         CCCCCCC CC CC  \",\r\n\t        \"J   JJJJJJJJ         JJJJJJ  JJ  J  \",\r\n\t        \"M   MMMMMMMM         MMMMMM  MM  M  \",\r\n\t        \"N  NNNNNNNNN         NNNNNNN NN  N  \",\r\n\t        \"P  PPPPPPPPP         PPPPPPP PP  P  \",\r\n\t        \"                +*)('               \",\r\n\t        \"R  RRRRRRRRR         RRRRRRR RR aR  \",\r\n\t        \"U  UUUUUUUUU         UUUUUUU UU  U  \",\r\n\t        \"Z  ZZZZZZZZZ         ZZZZZZZ ZZ ZZ  \",\r\n\t        \"c  ccccccccc         ccccccc cc cc  \",\r\n\t        \"                             j      \",\r\n\t        \"L  fLLLLLLLL         LLLLLLe LL  L  \",\r\n\t        \"6   66666666         66666   66  6  \",\r\n\t        \"              k                     \",\r\n\t        \"                             l      \",\r\n\t        \"                XXXXX               \",\r\n\t        \" 1 0        /.-,+*)('    & %$m #  \\\"!\",\r\n\t        \"_  f________         ______e __  _  \",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('      %$  #  \\\"!\",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \" 1           .  +*)('          #  \\\" \",\r\n\t        \" 1           .  +*)('          #  \\\" \",\r\n\t        \">  >>>>>>>>>         >>>>>>> >> >>  \",\r\n\t        \" 1           .  +*)('          #  \\\" \",\r\n\t        \" 1           .  +*)('          #  \\\" \",\r\n\t        \"Q  QQQQQQQQQ         QQQQQQQ QQ aQ  \",\r\n\t        \"V  VVVVVVVVV         VVVVVVV VV aV  \",\r\n\t        \"T  TTTTTTTTT         TTTTTTT TT  T  \",\r\n\t        \"@  @@@@@@@@@         @@@@@@@ @@ @@  \",\r\n\t        \"                             \\x87      \",\r\n\t        \"[  [[[[[[[[[         [[[[[[[ [[ [[  \",\r\n\t        \"D  DDDDDDDDD         DDDDDDD DD DD  \",\r\n\t        \"                             HH     \",\r\n\t        \"                             \\x88      \",\r\n\t        \"                             F\\x89     \",\r\n\t        \"#      T#                    ##  #  \",\r\n\t        \"%   V  %%            U       %%  %  \",\r\n\t        \"'   'ZY''            'XW     ''  '  \",\r\n\t        \"(   (ZY((            (XW     ((  (  \",\r\n\t        \"+   +++++            +++\\\\[   ++  +  \",\r\n\t        \"*   *****            ***\\\\[   **  *  \",\r\n\t        \"-   -----            ---\\\\[   --  -  \",\r\n\t        \",   ,,,,,            ,,,\\\\[   ,,  ,  \",\r\n\t        \"0   00000_^]         00000   00  0  \",\r\n\t        \"/   /////_^]         /////   //  /  \",\r\n\t        \"2   22222222         22222   22  2  \",\r\n\t        \"3   33333333         33333   33  3  \",\r\n\t        \"4   44444444         44444   44  4  \",\r\n\t        \"8   88888888         888888  88  8  \",\r\n\t        \"                                 ^  \",\r\n\t        \"                                 \\x8a  \",\r\n\t        \";  f;;;;;;;;         ;;;;;;e ;;  ;  \",\r\n\t        \"<  f<<<<<<<<         <<<<<<e <<  <  \",\r\n\t        \"O  OOOOOOOOO         OOOOOOO OO  O  \",\r\n\t        \"`  `````````         ``````` ``  `  \",\r\n\t        \"S  SSSSSSSSS         SSSSSSS SS  S  \",\r\n\t        \"W  WWWWWWWWW         WWWWWWW WW  W  \",\r\n\t        \"\\\\  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\         \\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\ \\\\\\\\  \",\r\n\t        \"E  EEEEEEEEE         EEEEEEE EE EE  \",\r\n\t        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n\t        \"]  ]]]]]]]]]         ]]]]]]] ]] ]]  \",\r\n\t        \"                             G      \"\r\n\t    ];\r\n\r\n\t    XPathParser.gotoTable = [\r\n\t        \"3456789:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"L456789:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"            M        EFGH IJ \",\r\n\t        \"       N;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"            S        EFGH IJ \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"              e              \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                        h  J \",\r\n\t        \"              i          j   \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"o456789:;<=>?@ ABpqCDEFGH IJ \",\r\n\t        \"                             \",\r\n\t        \"  r6789:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"   s789:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"    t89:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"    u89:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"     v9:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"     w9:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"     x9:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"     y9:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"      z:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"      {:;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"       |;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"       };<=>?@ AB  CDEFGH IJ \",\r\n\t        \"       ~;<=>?@ AB  CDEFGH IJ \",\r\n\t        \"         \\x7f=>?@ AB  CDEFGH IJ \",\r\n\t        \"\\x80456789:;<=>?@ AB  CDEFGH IJ\\x81\",\r\n\t        \"            \\x82        EFGH IJ \",\r\n\t        \"            \\x83        EFGH IJ \",\r\n\t        \"                             \",\r\n\t        \"                     \\x84 GH IJ \",\r\n\t        \"                     \\x85 GH IJ \",\r\n\t        \"              i          \\x86   \",\r\n\t        \"              i          \\x87   \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"                             \",\r\n\t        \"o456789:;<=>?@ AB\\x8cqCDEFGH IJ \",\r\n\t        \"                             \",\r\n\t        \"                             \"\r\n\t    ];\r\n\r\n\t    XPathParser.productions = [\r\n\t        [1, 1, 2],\r\n\t        [2, 1, 3],\r\n\t        [3, 1, 4],\r\n\t        [3, 3, 3, -9, 4],\r\n\t        [4, 1, 5],\r\n\t        [4, 3, 4, -8, 5],\r\n\t        [5, 1, 6],\r\n\t        [5, 3, 5, -22, 6],\r\n\t        [5, 3, 5, -5, 6],\r\n\t        [6, 1, 7],\r\n\t        [6, 3, 6, -23, 7],\r\n\t        [6, 3, 6, -24, 7],\r\n\t        [6, 3, 6, -6, 7],\r\n\t        [6, 3, 6, -7, 7],\r\n\t        [7, 1, 8],\r\n\t        [7, 3, 7, -25, 8],\r\n\t        [7, 3, 7, -26, 8],\r\n\t        [8, 1, 9],\r\n\t        [8, 3, 8, -12, 9],\r\n\t        [8, 3, 8, -11, 9],\r\n\t        [8, 3, 8, -10, 9],\r\n\t        [9, 1, 10],\r\n\t        [9, 2, -26, 9],\r\n\t        [10, 1, 11],\r\n\t        [10, 3, 10, -27, 11],\r\n\t        [11, 1, 12],\r\n\t        [11, 1, 13],\r\n\t        [11, 3, 13, -28, 14],\r\n\t        [11, 3, 13, -4, 14],\r\n\t        [13, 1, 15],\r\n\t        [13, 2, 13, 16],\r\n\t        [15, 1, 17],\r\n\t        [15, 3, -29, 2, -30],\r\n\t        [15, 1, -15],\r\n\t        [15, 1, -16],\r\n\t        [15, 1, 18],\r\n\t        [18, 3, -13, -29, -30],\r\n\t        [18, 4, -13, -29, 19, -30],\r\n\t        [19, 1, 20],\r\n\t        [19, 3, 20, -31, 19],\r\n\t        [20, 1, 2],\r\n\t        [12, 1, 14],\r\n\t        [12, 1, 21],\r\n\t        [21, 1, -28],\r\n\t        [21, 2, -28, 14],\r\n\t        [21, 1, 22],\r\n\t        [14, 1, 23],\r\n\t        [14, 3, 14, -28, 23],\r\n\t        [14, 1, 24],\r\n\t        [23, 2, 25, 26],\r\n\t        [23, 1, 26],\r\n\t        [23, 3, 25, 26, 27],\r\n\t        [23, 2, 26, 27],\r\n\t        [23, 1, 28],\r\n\t        [27, 1, 16],\r\n\t        [27, 2, 16, 27],\r\n\t        [25, 2, -14, -3],\r\n\t        [25, 1, -32],\r\n\t        [26, 1, 29],\r\n\t        [26, 3, -20, -29, -30],\r\n\t        [26, 4, -21, -29, -15, -30],\r\n\t        [16, 3, -33, 30, -34],\r\n\t        [30, 1, 2],\r\n\t        [22, 2, -4, 14],\r\n\t        [24, 3, 14, -4, 23],\r\n\t        [28, 1, -35],\r\n\t        [28, 1, -2],\r\n\t        [17, 2, -36, -18],\r\n\t        [29, 1, -17],\r\n\t        [29, 1, -19],\r\n\t        [29, 1, -18]\r\n\t    ];\r\n\r\n\t    XPathParser.DOUBLEDOT = 2;\r\n\t    XPathParser.DOUBLECOLON = 3;\r\n\t    XPathParser.DOUBLESLASH = 4;\r\n\t    XPathParser.NOTEQUAL = 5;\r\n\t    XPathParser.LESSTHANOREQUAL = 6;\r\n\t    XPathParser.GREATERTHANOREQUAL = 7;\r\n\t    XPathParser.AND = 8;\r\n\t    XPathParser.OR = 9;\r\n\t    XPathParser.MOD = 10;\r\n\t    XPathParser.DIV = 11;\r\n\t    XPathParser.MULTIPLYOPERATOR = 12;\r\n\t    XPathParser.FUNCTIONNAME = 13;\r\n\t    XPathParser.AXISNAME = 14;\r\n\t    XPathParser.LITERAL = 15;\r\n\t    XPathParser.NUMBER = 16;\r\n\t    XPathParser.ASTERISKNAMETEST = 17;\r\n\t    XPathParser.QNAME = 18;\r\n\t    XPathParser.NCNAMECOLONASTERISK = 19;\r\n\t    XPathParser.NODETYPE = 20;\r\n\t    XPathParser.PROCESSINGINSTRUCTIONWITHLITERAL = 21;\r\n\t    XPathParser.EQUALS = 22;\r\n\t    XPathParser.LESSTHAN = 23;\r\n\t    XPathParser.GREATERTHAN = 24;\r\n\t    XPathParser.PLUS = 25;\r\n\t    XPathParser.MINUS = 26;\r\n\t    XPathParser.BAR = 27;\r\n\t    XPathParser.SLASH = 28;\r\n\t    XPathParser.LEFTPARENTHESIS = 29;\r\n\t    XPathParser.RIGHTPARENTHESIS = 30;\r\n\t    XPathParser.COMMA = 31;\r\n\t    XPathParser.AT = 32;\r\n\t    XPathParser.LEFTBRACKET = 33;\r\n\t    XPathParser.RIGHTBRACKET = 34;\r\n\t    XPathParser.DOT = 35;\r\n\t    XPathParser.DOLLAR = 36;\r\n\r\n\t    XPathParser.prototype.tokenize = function (s1) {\r\n\t        var types = [];\r\n\t        var values = [];\r\n\t        var s = s1 + '\\0';\r\n\r\n\t        var pos = 0;\r\n\t        var c = s.charAt(pos++);\r\n\t        while (1) {\r\n\t            while (c == ' ' || c == '\\t' || c == '\\r' || c == '\\n') {\r\n\t                c = s.charAt(pos++);\r\n\t            }\r\n\t            if (c == '\\0' || pos >= s.length) {\r\n\t                break;\r\n\t            }\r\n\r\n\t            if (c == '(') {\r\n\t                types.push(XPathParser.LEFTPARENTHESIS);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == ')') {\r\n\t                types.push(XPathParser.RIGHTPARENTHESIS);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '[') {\r\n\t                types.push(XPathParser.LEFTBRACKET);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == ']') {\r\n\t                types.push(XPathParser.RIGHTBRACKET);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '@') {\r\n\t                types.push(XPathParser.AT);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == ',') {\r\n\t                types.push(XPathParser.COMMA);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '|') {\r\n\t                types.push(XPathParser.BAR);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '+') {\r\n\t                types.push(XPathParser.PLUS);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '-') {\r\n\t                types.push(XPathParser.MINUS);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '=') {\r\n\t                types.push(XPathParser.EQUALS);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\t            if (c == '$') {\r\n\t                types.push(XPathParser.DOLLAR);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == '.') {\r\n\t                c = s.charAt(pos++);\r\n\t                if (c == '.') {\r\n\t                    types.push(XPathParser.DOUBLEDOT);\r\n\t                    values.push(\"..\");\r\n\t                    c = s.charAt(pos++);\r\n\t                    continue;\r\n\t                }\r\n\t                if (c >= '0' && c <= '9') {\r\n\t                    var number = \".\" + c;\r\n\t                    c = s.charAt(pos++);\r\n\t                    while (c >= '0' && c <= '9') {\r\n\t                        number += c;\r\n\t                        c = s.charAt(pos++);\r\n\t                    }\r\n\t                    types.push(XPathParser.NUMBER);\r\n\t                    values.push(number);\r\n\t                    continue;\r\n\t                }\r\n\t                types.push(XPathParser.DOT);\r\n\t                values.push('.');\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == '\\'' || c == '\"') {\r\n\t                var delimiter = c;\r\n\t                var literal = \"\";\r\n\t                while (pos < s.length && (c = s.charAt(pos)) !== delimiter) {\r\n\t                    literal += c;\r\n\t                    pos += 1;\r\n\t                }\r\n\t                if (c !== delimiter) {\r\n\t                    throw XPathException.fromMessage(\"Unterminated string literal: \" + delimiter + literal);\r\n\t                }\r\n\t                pos += 1;\r\n\t                types.push(XPathParser.LITERAL);\r\n\t                values.push(literal);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c >= '0' && c <= '9') {\r\n\t                var number = c;\r\n\t                c = s.charAt(pos++);\r\n\t                while (c >= '0' && c <= '9') {\r\n\t                    number += c;\r\n\t                    c = s.charAt(pos++);\r\n\t                }\r\n\t                if (c == '.') {\r\n\t                    if (s.charAt(pos) >= '0' && s.charAt(pos) <= '9') {\r\n\t                        number += c;\r\n\t                        number += s.charAt(pos++);\r\n\t                        c = s.charAt(pos++);\r\n\t                        while (c >= '0' && c <= '9') {\r\n\t                            number += c;\r\n\t                            c = s.charAt(pos++);\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                types.push(XPathParser.NUMBER);\r\n\t                values.push(number);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == '*') {\r\n\t                if (types.length > 0) {\r\n\t                    var last = types[types.length - 1];\r\n\t                    if (last != XPathParser.AT\r\n\t                        && last != XPathParser.DOUBLECOLON\r\n\t                        && last != XPathParser.LEFTPARENTHESIS\r\n\t                        && last != XPathParser.LEFTBRACKET\r\n\t                        && last != XPathParser.AND\r\n\t                        && last != XPathParser.OR\r\n\t                        && last != XPathParser.MOD\r\n\t                        && last != XPathParser.DIV\r\n\t                        && last != XPathParser.MULTIPLYOPERATOR\r\n\t                        && last != XPathParser.SLASH\r\n\t                        && last != XPathParser.DOUBLESLASH\r\n\t                        && last != XPathParser.BAR\r\n\t                        && last != XPathParser.PLUS\r\n\t                        && last != XPathParser.MINUS\r\n\t                        && last != XPathParser.EQUALS\r\n\t                        && last != XPathParser.NOTEQUAL\r\n\t                        && last != XPathParser.LESSTHAN\r\n\t                        && last != XPathParser.LESSTHANOREQUAL\r\n\t                        && last != XPathParser.GREATERTHAN\r\n\t                        && last != XPathParser.GREATERTHANOREQUAL) {\r\n\t                        types.push(XPathParser.MULTIPLYOPERATOR);\r\n\t                        values.push(c);\r\n\t                        c = s.charAt(pos++);\r\n\t                        continue;\r\n\t                    }\r\n\t                }\r\n\t                types.push(XPathParser.ASTERISKNAMETEST);\r\n\t                values.push(c);\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == ':') {\r\n\t                if (s.charAt(pos) == ':') {\r\n\t                    types.push(XPathParser.DOUBLECOLON);\r\n\t                    values.push(\"::\");\r\n\t                    pos++;\r\n\t                    c = s.charAt(pos++);\r\n\t                    continue;\r\n\t                }\r\n\t            }\r\n\r\n\t            if (c == '/') {\r\n\t                c = s.charAt(pos++);\r\n\t                if (c == '/') {\r\n\t                    types.push(XPathParser.DOUBLESLASH);\r\n\t                    values.push(\"//\");\r\n\t                    c = s.charAt(pos++);\r\n\t                    continue;\r\n\t                }\r\n\t                types.push(XPathParser.SLASH);\r\n\t                values.push('/');\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == '!') {\r\n\t                if (s.charAt(pos) == '=') {\r\n\t                    types.push(XPathParser.NOTEQUAL);\r\n\t                    values.push(\"!=\");\r\n\t                    pos++;\r\n\t                    c = s.charAt(pos++);\r\n\t                    continue;\r\n\t                }\r\n\t            }\r\n\r\n\t            if (c == '<') {\r\n\t                if (s.charAt(pos) == '=') {\r\n\t                    types.push(XPathParser.LESSTHANOREQUAL);\r\n\t                    values.push(\"<=\");\r\n\t                    pos++;\r\n\t                    c = s.charAt(pos++);\r\n\t                    continue;\r\n\t                }\r\n\t                types.push(XPathParser.LESSTHAN);\r\n\t                values.push('<');\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == '>') {\r\n\t                if (s.charAt(pos) == '=') {\r\n\t                    types.push(XPathParser.GREATERTHANOREQUAL);\r\n\t                    values.push(\">=\");\r\n\t                    pos++;\r\n\t                    c = s.charAt(pos++);\r\n\t                    continue;\r\n\t                }\r\n\t                types.push(XPathParser.GREATERTHAN);\r\n\t                values.push('>');\r\n\t                c = s.charAt(pos++);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            if (c == '_' || Utilities.isLetter(c.charCodeAt(0))) {\r\n\t                var name = c;\r\n\t                c = s.charAt(pos++);\r\n\t                while (Utilities.isNCNameChar(c.charCodeAt(0))) {\r\n\t                    name += c;\r\n\t                    c = s.charAt(pos++);\r\n\t                }\r\n\t                if (types.length > 0) {\r\n\t                    var last = types[types.length - 1];\r\n\t                    if (last != XPathParser.AT\r\n\t                        && last != XPathParser.DOUBLECOLON\r\n\t                        && last != XPathParser.LEFTPARENTHESIS\r\n\t                        && last != XPathParser.LEFTBRACKET\r\n\t                        && last != XPathParser.AND\r\n\t                        && last != XPathParser.OR\r\n\t                        && last != XPathParser.MOD\r\n\t                        && last != XPathParser.DIV\r\n\t                        && last != XPathParser.MULTIPLYOPERATOR\r\n\t                        && last != XPathParser.SLASH\r\n\t                        && last != XPathParser.DOUBLESLASH\r\n\t                        && last != XPathParser.BAR\r\n\t                        && last != XPathParser.PLUS\r\n\t                        && last != XPathParser.MINUS\r\n\t                        && last != XPathParser.EQUALS\r\n\t                        && last != XPathParser.NOTEQUAL\r\n\t                        && last != XPathParser.LESSTHAN\r\n\t                        && last != XPathParser.LESSTHANOREQUAL\r\n\t                        && last != XPathParser.GREATERTHAN\r\n\t                        && last != XPathParser.GREATERTHANOREQUAL) {\r\n\t                        if (name == \"and\") {\r\n\t                            types.push(XPathParser.AND);\r\n\t                            values.push(name);\r\n\t                            continue;\r\n\t                        }\r\n\t                        if (name == \"or\") {\r\n\t                            types.push(XPathParser.OR);\r\n\t                            values.push(name);\r\n\t                            continue;\r\n\t                        }\r\n\t                        if (name == \"mod\") {\r\n\t                            types.push(XPathParser.MOD);\r\n\t                            values.push(name);\r\n\t                            continue;\r\n\t                        }\r\n\t                        if (name == \"div\") {\r\n\t                            types.push(XPathParser.DIV);\r\n\t                            values.push(name);\r\n\t                            continue;\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                if (c == ':') {\r\n\t                    if (s.charAt(pos) == '*') {\r\n\t                        types.push(XPathParser.NCNAMECOLONASTERISK);\r\n\t                        values.push(name + \":*\");\r\n\t                        pos++;\r\n\t                        c = s.charAt(pos++);\r\n\t                        continue;\r\n\t                    }\r\n\t                    if (s.charAt(pos) == '_' || Utilities.isLetter(s.charCodeAt(pos))) {\r\n\t                        name += ':';\r\n\t                        c = s.charAt(pos++);\r\n\t                        while (Utilities.isNCNameChar(c.charCodeAt(0))) {\r\n\t                            name += c;\r\n\t                            c = s.charAt(pos++);\r\n\t                        }\r\n\t                        if (c == '(') {\r\n\t                            types.push(XPathParser.FUNCTIONNAME);\r\n\t                            values.push(name);\r\n\t                            continue;\r\n\t                        }\r\n\t                        types.push(XPathParser.QNAME);\r\n\t                        values.push(name);\r\n\t                        continue;\r\n\t                    }\r\n\t                    if (s.charAt(pos) == ':') {\r\n\t                        types.push(XPathParser.AXISNAME);\r\n\t                        values.push(name);\r\n\t                        continue;\r\n\t                    }\r\n\t                }\r\n\t                if (c == '(') {\r\n\t                    if (name == \"comment\" || name == \"text\" || name == \"node\") {\r\n\t                        types.push(XPathParser.NODETYPE);\r\n\t                        values.push(name);\r\n\t                        continue;\r\n\t                    }\r\n\t                    if (name == \"processing-instruction\") {\r\n\t                        if (s.charAt(pos) == ')') {\r\n\t                            types.push(XPathParser.NODETYPE);\r\n\t                        } else {\r\n\t                            types.push(XPathParser.PROCESSINGINSTRUCTIONWITHLITERAL);\r\n\t                        }\r\n\t                        values.push(name);\r\n\t                        continue;\r\n\t                    }\r\n\t                    types.push(XPathParser.FUNCTIONNAME);\r\n\t                    values.push(name);\r\n\t                    continue;\r\n\t                }\r\n\t                types.push(XPathParser.QNAME);\r\n\t                values.push(name);\r\n\t                continue;\r\n\t            }\r\n\r\n\t            throw new Error(\"Unexpected character \" + c);\r\n\t        }\r\n\t        types.push(1);\r\n\t        values.push(\"[EOF]\");\r\n\t        return [types, values];\r\n\t    };\r\n\r\n\t    XPathParser.SHIFT = 's';\r\n\t    XPathParser.REDUCE = 'r';\r\n\t    XPathParser.ACCEPT = 'a';\r\n\r\n\t    XPathParser.prototype.parse = function (s) {\r\n\t        var types;\r\n\t        var values;\r\n\t        var res = this.tokenize(s);\r\n\t        if (res == undefined) {\r\n\t            return undefined;\r\n\t        }\r\n\t        types = res[0];\r\n\t        values = res[1];\r\n\t        var tokenPos = 0;\r\n\t        var state = [];\r\n\t        var tokenType = [];\r\n\t        var tokenValue = [];\r\n\t        var s;\r\n\t        var a;\r\n\t        var t;\r\n\r\n\t        state.push(0);\r\n\t        tokenType.push(1);\r\n\t        tokenValue.push(\"_S\");\r\n\r\n\t        a = types[tokenPos];\r\n\t        t = values[tokenPos++];\r\n\t        while (1) {\r\n\t            s = state[state.length - 1];\r\n\t            switch (XPathParser.actionTable[s].charAt(a - 1)) {\r\n\t                case XPathParser.SHIFT:\r\n\t                    tokenType.push(-a);\r\n\t                    tokenValue.push(t);\r\n\t                    state.push(XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32);\r\n\t                    a = types[tokenPos];\r\n\t                    t = values[tokenPos++];\r\n\t                    break;\r\n\t                case XPathParser.REDUCE:\r\n\t                    var num = XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][1];\r\n\t                    var rhs = [];\r\n\t                    for (var i = 0; i < num; i++) {\r\n\t                        tokenType.pop();\r\n\t                        rhs.unshift(tokenValue.pop());\r\n\t                        state.pop();\r\n\t                    }\r\n\t                    var s_ = state[state.length - 1];\r\n\t                    tokenType.push(XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][0]);\r\n\t                    if (this.reduceActions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32] == undefined) {\r\n\t                        tokenValue.push(rhs[0]);\r\n\t                    } else {\r\n\t                        tokenValue.push(this.reduceActions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32](rhs));\r\n\t                    }\r\n\t                    state.push(XPathParser.gotoTable[s_].charCodeAt(XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][0] - 2) - 33);\r\n\t                    break;\r\n\t                case XPathParser.ACCEPT:\r\n\t                    return new XPath(tokenValue.pop());\r\n\t                default:\r\n\t                    throw new Error(\"XPath parse error\");\r\n\t            }\r\n\t        }\r\n\t    };\r\n\r\n\t    // XPath /////////////////////////////////////////////////////////////////////\r\n\r\n\t    XPath.prototype = new Object();\r\n\t    XPath.prototype.constructor = XPath;\r\n\t    XPath.superclass = Object.prototype;\r\n\r\n\t    function XPath(e) {\r\n\t        this.expression = e;\r\n\t    }\r\n\r\n\t    XPath.prototype.toString = function () {\r\n\t        return this.expression.toString();\r\n\t    };\r\n\r\n\t    function setIfUnset(obj, prop, value) {\r\n\t        if (!(prop in obj)) {\r\n\t            obj[prop] = value;\r\n\t        }\r\n\t    }\r\n\r\n\t    XPath.prototype.evaluate = function (c) {\r\n\t        c.contextNode = c.expressionContextNode;\r\n\t        c.contextSize = 1;\r\n\t        c.contextPosition = 1;\r\n\r\n\t        // [2017-11-25] Removed usage of .implementation.hasFeature() since it does\r\n\t        //              not reliably detect HTML DOMs (always returns false in xmldom and true in browsers)\r\n\t        if (c.isHtml) {\r\n\t            setIfUnset(c, 'caseInsensitive', true);\r\n\t            setIfUnset(c, 'allowAnyNamespaceForNoPrefix', true);\r\n\t        }\r\n\r\n\t        setIfUnset(c, 'caseInsensitive', false);\r\n\r\n\t        return this.expression.evaluate(c);\r\n\t    };\r\n\r\n\t    XPath.XML_NAMESPACE_URI = \"http://www.w3.org/XML/1998/namespace\";\r\n\t    XPath.XMLNS_NAMESPACE_URI = \"http://www.w3.org/2000/xmlns/\";\r\n\r\n\t    // Expression ////////////////////////////////////////////////////////////////\r\n\r\n\t    Expression.prototype = new Object();\r\n\t    Expression.prototype.constructor = Expression;\r\n\t    Expression.superclass = Object.prototype;\r\n\r\n\t    function Expression() {\r\n\t    }\r\n\r\n\t    Expression.prototype.init = function () {\r\n\t    };\r\n\r\n\t    Expression.prototype.toString = function () {\r\n\t        return \"<Expression>\";\r\n\t    };\r\n\r\n\t    Expression.prototype.evaluate = function (c) {\r\n\t        throw new Error(\"Could not evaluate expression.\");\r\n\t    };\r\n\r\n\t    // UnaryOperation ////////////////////////////////////////////////////////////\r\n\r\n\t    UnaryOperation.prototype = new Expression();\r\n\t    UnaryOperation.prototype.constructor = UnaryOperation;\r\n\t    UnaryOperation.superclass = Expression.prototype;\r\n\r\n\t    function UnaryOperation(rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    UnaryOperation.prototype.init = function (rhs) {\r\n\t        this.rhs = rhs;\r\n\t    };\r\n\r\n\t    // UnaryMinusOperation ///////////////////////////////////////////////////////\r\n\r\n\t    UnaryMinusOperation.prototype = new UnaryOperation();\r\n\t    UnaryMinusOperation.prototype.constructor = UnaryMinusOperation;\r\n\t    UnaryMinusOperation.superclass = UnaryOperation.prototype;\r\n\r\n\t    function UnaryMinusOperation(rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    UnaryMinusOperation.prototype.init = function (rhs) {\r\n\t        UnaryMinusOperation.superclass.init.call(this, rhs);\r\n\t    };\r\n\r\n\t    UnaryMinusOperation.prototype.evaluate = function (c) {\r\n\t        return this.rhs.evaluate(c).number().negate();\r\n\t    };\r\n\r\n\t    UnaryMinusOperation.prototype.toString = function () {\r\n\t        return \"-\" + this.rhs.toString();\r\n\t    };\r\n\r\n\t    // BinaryOperation ///////////////////////////////////////////////////////////\r\n\r\n\t    BinaryOperation.prototype = new Expression();\r\n\t    BinaryOperation.prototype.constructor = BinaryOperation;\r\n\t    BinaryOperation.superclass = Expression.prototype;\r\n\r\n\t    function BinaryOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    BinaryOperation.prototype.init = function (lhs, rhs) {\r\n\t        this.lhs = lhs;\r\n\t        this.rhs = rhs;\r\n\t    };\r\n\r\n\t    // OrOperation ///////////////////////////////////////////////////////////////\r\n\r\n\t    OrOperation.prototype = new BinaryOperation();\r\n\t    OrOperation.prototype.constructor = OrOperation;\r\n\t    OrOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function OrOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    OrOperation.prototype.init = function (lhs, rhs) {\r\n\t        OrOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    OrOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" or \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    OrOperation.prototype.evaluate = function (c) {\r\n\t        var b = this.lhs.evaluate(c).bool();\r\n\t        if (b.booleanValue()) {\r\n\t            return b;\r\n\t        }\r\n\t        return this.rhs.evaluate(c).bool();\r\n\t    };\r\n\r\n\t    // AndOperation //////////////////////////////////////////////////////////////\r\n\r\n\t    AndOperation.prototype = new BinaryOperation();\r\n\t    AndOperation.prototype.constructor = AndOperation;\r\n\t    AndOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function AndOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    AndOperation.prototype.init = function (lhs, rhs) {\r\n\t        AndOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    AndOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" and \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    AndOperation.prototype.evaluate = function (c) {\r\n\t        var b = this.lhs.evaluate(c).bool();\r\n\t        if (!b.booleanValue()) {\r\n\t            return b;\r\n\t        }\r\n\t        return this.rhs.evaluate(c).bool();\r\n\t    };\r\n\r\n\t    // EqualsOperation ///////////////////////////////////////////////////////////\r\n\r\n\t    EqualsOperation.prototype = new BinaryOperation();\r\n\t    EqualsOperation.prototype.constructor = EqualsOperation;\r\n\t    EqualsOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function EqualsOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    EqualsOperation.prototype.init = function (lhs, rhs) {\r\n\t        EqualsOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    EqualsOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" = \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    EqualsOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).equals(this.rhs.evaluate(c));\r\n\t    };\r\n\r\n\t    // NotEqualOperation /////////////////////////////////////////////////////////\r\n\r\n\t    NotEqualOperation.prototype = new BinaryOperation();\r\n\t    NotEqualOperation.prototype.constructor = NotEqualOperation;\r\n\t    NotEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function NotEqualOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    NotEqualOperation.prototype.init = function (lhs, rhs) {\r\n\t        NotEqualOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    NotEqualOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" != \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    NotEqualOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).notequal(this.rhs.evaluate(c));\r\n\t    };\r\n\r\n\t    // LessThanOperation /////////////////////////////////////////////////////////\r\n\r\n\t    LessThanOperation.prototype = new BinaryOperation();\r\n\t    LessThanOperation.prototype.constructor = LessThanOperation;\r\n\t    LessThanOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function LessThanOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    LessThanOperation.prototype.init = function (lhs, rhs) {\r\n\t        LessThanOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    LessThanOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).lessthan(this.rhs.evaluate(c));\r\n\t    };\r\n\r\n\t    LessThanOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" < \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // GreaterThanOperation //////////////////////////////////////////////////////\r\n\r\n\t    GreaterThanOperation.prototype = new BinaryOperation();\r\n\t    GreaterThanOperation.prototype.constructor = GreaterThanOperation;\r\n\t    GreaterThanOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function GreaterThanOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    GreaterThanOperation.prototype.init = function (lhs, rhs) {\r\n\t        GreaterThanOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    GreaterThanOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).greaterthan(this.rhs.evaluate(c));\r\n\t    };\r\n\r\n\t    GreaterThanOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" > \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // LessThanOrEqualOperation //////////////////////////////////////////////////\r\n\r\n\t    LessThanOrEqualOperation.prototype = new BinaryOperation();\r\n\t    LessThanOrEqualOperation.prototype.constructor = LessThanOrEqualOperation;\r\n\t    LessThanOrEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function LessThanOrEqualOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    LessThanOrEqualOperation.prototype.init = function (lhs, rhs) {\r\n\t        LessThanOrEqualOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    LessThanOrEqualOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).lessthanorequal(this.rhs.evaluate(c));\r\n\t    };\r\n\r\n\t    LessThanOrEqualOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" <= \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // GreaterThanOrEqualOperation ///////////////////////////////////////////////\r\n\r\n\t    GreaterThanOrEqualOperation.prototype = new BinaryOperation();\r\n\t    GreaterThanOrEqualOperation.prototype.constructor = GreaterThanOrEqualOperation;\r\n\t    GreaterThanOrEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function GreaterThanOrEqualOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    GreaterThanOrEqualOperation.prototype.init = function (lhs, rhs) {\r\n\t        GreaterThanOrEqualOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    GreaterThanOrEqualOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).greaterthanorequal(this.rhs.evaluate(c));\r\n\t    };\r\n\r\n\t    GreaterThanOrEqualOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" >= \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // PlusOperation /////////////////////////////////////////////////////////////\r\n\r\n\t    PlusOperation.prototype = new BinaryOperation();\r\n\t    PlusOperation.prototype.constructor = PlusOperation;\r\n\t    PlusOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function PlusOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    PlusOperation.prototype.init = function (lhs, rhs) {\r\n\t        PlusOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    PlusOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).number().plus(this.rhs.evaluate(c).number());\r\n\t    };\r\n\r\n\t    PlusOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" + \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // MinusOperation ////////////////////////////////////////////////////////////\r\n\r\n\t    MinusOperation.prototype = new BinaryOperation();\r\n\t    MinusOperation.prototype.constructor = MinusOperation;\r\n\t    MinusOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function MinusOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    MinusOperation.prototype.init = function (lhs, rhs) {\r\n\t        MinusOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    MinusOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).number().minus(this.rhs.evaluate(c).number());\r\n\t    };\r\n\r\n\t    MinusOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" - \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // MultiplyOperation /////////////////////////////////////////////////////////\r\n\r\n\t    MultiplyOperation.prototype = new BinaryOperation();\r\n\t    MultiplyOperation.prototype.constructor = MultiplyOperation;\r\n\t    MultiplyOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function MultiplyOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    MultiplyOperation.prototype.init = function (lhs, rhs) {\r\n\t        MultiplyOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    MultiplyOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).number().multiply(this.rhs.evaluate(c).number());\r\n\t    };\r\n\r\n\t    MultiplyOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" * \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // DivOperation //////////////////////////////////////////////////////////////\r\n\r\n\t    DivOperation.prototype = new BinaryOperation();\r\n\t    DivOperation.prototype.constructor = DivOperation;\r\n\t    DivOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function DivOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    DivOperation.prototype.init = function (lhs, rhs) {\r\n\t        DivOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    DivOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).number().div(this.rhs.evaluate(c).number());\r\n\t    };\r\n\r\n\t    DivOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" div \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // ModOperation //////////////////////////////////////////////////////////////\r\n\r\n\t    ModOperation.prototype = new BinaryOperation();\r\n\t    ModOperation.prototype.constructor = ModOperation;\r\n\t    ModOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function ModOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    ModOperation.prototype.init = function (lhs, rhs) {\r\n\t        ModOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    ModOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).number().mod(this.rhs.evaluate(c).number());\r\n\t    };\r\n\r\n\t    ModOperation.prototype.toString = function () {\r\n\t        return \"(\" + this.lhs.toString() + \" mod \" + this.rhs.toString() + \")\";\r\n\t    };\r\n\r\n\t    // BarOperation //////////////////////////////////////////////////////////////\r\n\r\n\t    BarOperation.prototype = new BinaryOperation();\r\n\t    BarOperation.prototype.constructor = BarOperation;\r\n\t    BarOperation.superclass = BinaryOperation.prototype;\r\n\r\n\t    function BarOperation(lhs, rhs) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(lhs, rhs);\r\n\t        }\r\n\t    }\r\n\r\n\t    BarOperation.prototype.init = function (lhs, rhs) {\r\n\t        BarOperation.superclass.init.call(this, lhs, rhs);\r\n\t    };\r\n\r\n\t    BarOperation.prototype.evaluate = function (c) {\r\n\t        return this.lhs.evaluate(c).nodeset().union(this.rhs.evaluate(c).nodeset());\r\n\t    };\r\n\r\n\t    BarOperation.prototype.toString = function () {\r\n\t        return map(toString, [this.lhs, this.rhs]).join(' | ');\r\n\t    };\r\n\r\n\t    // PathExpr //////////////////////////////////////////////////////////////////\r\n\r\n\t    PathExpr.prototype = new Expression();\r\n\t    PathExpr.prototype.constructor = PathExpr;\r\n\t    PathExpr.superclass = Expression.prototype;\r\n\r\n\t    function PathExpr(filter, filterPreds, locpath) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(filter, filterPreds, locpath);\r\n\t        }\r\n\t    }\r\n\r\n\t    PathExpr.prototype.init = function (filter, filterPreds, locpath) {\r\n\t        PathExpr.superclass.init.call(this);\r\n\t        this.filter = filter;\r\n\t        this.filterPredicates = filterPreds;\r\n\t        this.locationPath = locpath;\r\n\t    };\r\n\r\n\t    /**\r\n\t     * Returns the topmost node of the tree containing node\r\n\t     */\r\n\t    function findRoot(node) {\r\n\t        while (node && node.parentNode) {\r\n\t            node = node.parentNode;\r\n\t        }\r\n\r\n\t        return node;\r\n\t    }\r\n\r\n\t    PathExpr.applyPredicates = function (predicates, c, nodes) {\r\n\t        if (predicates.length === 0) {\r\n\t            return nodes;\r\n\t        }\r\n\r\n\t        var ctx = c.extend({});\r\n\r\n\t        return reduce(\r\n\t            function (inNodes, pred) {\r\n\t                ctx.contextSize = inNodes.length;\r\n\r\n\t                return filter(\r\n\t                    function (node, i) {\r\n\t                        ctx.contextNode = node;\r\n\t                        ctx.contextPosition = i + 1;\r\n\r\n\t                        return PathExpr.predicateMatches(pred, ctx);\r\n\t                    },\r\n\t                    inNodes\r\n\t                );\r\n\t            },\r\n\t            nodes,\r\n\t            predicates\r\n\t        );\r\n\t    };\r\n\r\n\t    PathExpr.getRoot = function (xpc, nodes) {\r\n\t        var firstNode = nodes[0];\r\n\r\n\t        if (firstNode.nodeType === 9 /*Node.DOCUMENT_NODE*/) {\r\n\t            return firstNode;\r\n\t        }\r\n\r\n\t        if (xpc.virtualRoot) {\r\n\t            return xpc.virtualRoot;\r\n\t        }\r\n\r\n\t        var ownerDoc = firstNode.ownerDocument;\r\n\r\n\t        if (ownerDoc) {\r\n\t            return ownerDoc;\r\n\t        }\r\n\r\n\t        // IE 5.5 doesn't have ownerDocument?\r\n\t        var n = firstNode;\r\n\t        while (n.parentNode != null) {\r\n\t            n = n.parentNode;\r\n\t        }\r\n\t        return n;\r\n\t    };\r\n\r\n\t    PathExpr.applyStep = function (step, xpc, node) {\r\n\t        var newNodes = [];\r\n\t        xpc.contextNode = node;\r\n\r\n\t        switch (step.axis) {\r\n\t            case Step.ANCESTOR:\r\n\t                // look at all the ancestor nodes\r\n\t                if (xpc.contextNode === xpc.virtualRoot) {\r\n\t                    break;\r\n\t                }\r\n\t                var m;\r\n\t                if (xpc.contextNode.nodeType == 2 /*Node.ATTRIBUTE_NODE*/) {\r\n\t                    m = PathExpr.getOwnerElement(xpc.contextNode);\r\n\t                } else {\r\n\t                    m = xpc.contextNode.parentNode;\r\n\t                }\r\n\t                while (m != null) {\r\n\t                    if (step.nodeTest.matches(m, xpc)) {\r\n\t                        newNodes.push(m);\r\n\t                    }\r\n\t                    if (m === xpc.virtualRoot) {\r\n\t                        break;\r\n\t                    }\r\n\t                    m = m.parentNode;\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.ANCESTORORSELF:\r\n\t                // look at all the ancestor nodes and the current node\r\n\t                for (var m = xpc.contextNode; m != null; m = m.nodeType == 2 /*Node.ATTRIBUTE_NODE*/ ? PathExpr.getOwnerElement(m) : m.parentNode) {\r\n\t                    if (step.nodeTest.matches(m, xpc)) {\r\n\t                        newNodes.push(m);\r\n\t                    }\r\n\t                    if (m === xpc.virtualRoot) {\r\n\t                        break;\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.ATTRIBUTE:\r\n\t                // look at the attributes\r\n\t                var nnm = xpc.contextNode.attributes;\r\n\t                if (nnm != null) {\r\n\t                    for (var k = 0; k < nnm.length; k++) {\r\n\t                        var m = nnm.item(k);\r\n\t                        if (step.nodeTest.matches(m, xpc)) {\r\n\t                            newNodes.push(m);\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.CHILD:\r\n\t                // look at all child elements\r\n\t                for (var m = xpc.contextNode.firstChild; m != null; m = m.nextSibling) {\r\n\t                    if (step.nodeTest.matches(m, xpc)) {\r\n\t                        newNodes.push(m);\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.DESCENDANT:\r\n\t                // look at all descendant nodes\r\n\t                var st = [xpc.contextNode.firstChild];\r\n\t                while (st.length > 0) {\r\n\t                    for (var m = st.pop(); m != null;) {\r\n\t                        if (step.nodeTest.matches(m, xpc)) {\r\n\t                            newNodes.push(m);\r\n\t                        }\r\n\t                        if (m.firstChild != null) {\r\n\t                            st.push(m.nextSibling);\r\n\t                            m = m.firstChild;\r\n\t                        } else {\r\n\t                            m = m.nextSibling;\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.DESCENDANTORSELF:\r\n\t                // look at self\r\n\t                if (step.nodeTest.matches(xpc.contextNode, xpc)) {\r\n\t                    newNodes.push(xpc.contextNode);\r\n\t                }\r\n\t                // look at all descendant nodes\r\n\t                var st = [xpc.contextNode.firstChild];\r\n\t                while (st.length > 0) {\r\n\t                    for (var m = st.pop(); m != null;) {\r\n\t                        if (step.nodeTest.matches(m, xpc)) {\r\n\t                            newNodes.push(m);\r\n\t                        }\r\n\t                        if (m.firstChild != null) {\r\n\t                            st.push(m.nextSibling);\r\n\t                            m = m.firstChild;\r\n\t                        } else {\r\n\t                            m = m.nextSibling;\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.FOLLOWING:\r\n\t                if (xpc.contextNode === xpc.virtualRoot) {\r\n\t                    break;\r\n\t                }\r\n\t                var st = [];\r\n\t                if (xpc.contextNode.firstChild != null) {\r\n\t                    st.unshift(xpc.contextNode.firstChild);\r\n\t                } else {\r\n\t                    st.unshift(xpc.contextNode.nextSibling);\r\n\t                }\r\n\t                for (var m = xpc.contextNode.parentNode; m != null && m.nodeType != 9 /*Node.DOCUMENT_NODE*/ && m !== xpc.virtualRoot; m = m.parentNode) {\r\n\t                    st.unshift(m.nextSibling);\r\n\t                }\r\n\t                do {\r\n\t                    for (var m = st.pop(); m != null;) {\r\n\t                        if (step.nodeTest.matches(m, xpc)) {\r\n\t                            newNodes.push(m);\r\n\t                        }\r\n\t                        if (m.firstChild != null) {\r\n\t                            st.push(m.nextSibling);\r\n\t                            m = m.firstChild;\r\n\t                        } else {\r\n\t                            m = m.nextSibling;\r\n\t                        }\r\n\t                    }\r\n\t                } while (st.length > 0);\r\n\t                break;\r\n\r\n\t            case Step.FOLLOWINGSIBLING:\r\n\t                if (xpc.contextNode === xpc.virtualRoot) {\r\n\t                    break;\r\n\t                }\r\n\t                for (var m = xpc.contextNode.nextSibling; m != null; m = m.nextSibling) {\r\n\t                    if (step.nodeTest.matches(m, xpc)) {\r\n\t                        newNodes.push(m);\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.NAMESPACE:\r\n\t                var n = {};\r\n\t                if (xpc.contextNode.nodeType == 1 /*Node.ELEMENT_NODE*/) {\r\n\t                    n[\"xml\"] = XPath.XML_NAMESPACE_URI;\r\n\t                    n[\"xmlns\"] = XPath.XMLNS_NAMESPACE_URI;\r\n\t                    for (var m = xpc.contextNode; m != null && m.nodeType == 1 /*Node.ELEMENT_NODE*/; m = m.parentNode) {\r\n\t                        for (var k = 0; k < m.attributes.length; k++) {\r\n\t                            var attr = m.attributes.item(k);\r\n\t                            var nm = String(attr.name);\r\n\t                            if (nm == \"xmlns\") {\r\n\t                                if (n[\"\"] == undefined) {\r\n\t                                    n[\"\"] = attr.value;\r\n\t                                }\r\n\t                            } else if (nm.length > 6 && nm.substring(0, 6) == \"xmlns:\") {\r\n\t                                var pre = nm.substring(6, nm.length);\r\n\t                                if (n[pre] == undefined) {\r\n\t                                    n[pre] = attr.value;\r\n\t                                }\r\n\t                            }\r\n\t                        }\r\n\t                    }\r\n\t                    for (var pre in n) {\r\n\t                        var nsn = new XPathNamespace(pre, n[pre], xpc.contextNode);\r\n\t                        if (step.nodeTest.matches(nsn, xpc)) {\r\n\t                            newNodes.push(nsn);\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.PARENT:\r\n\t                m = null;\r\n\t                if (xpc.contextNode !== xpc.virtualRoot) {\r\n\t                    if (xpc.contextNode.nodeType == 2 /*Node.ATTRIBUTE_NODE*/) {\r\n\t                        m = PathExpr.getOwnerElement(xpc.contextNode);\r\n\t                    } else {\r\n\t                        m = xpc.contextNode.parentNode;\r\n\t                    }\r\n\t                }\r\n\t                if (m != null && step.nodeTest.matches(m, xpc)) {\r\n\t                    newNodes.push(m);\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.PRECEDING:\r\n\t                var st;\r\n\t                if (xpc.virtualRoot != null) {\r\n\t                    st = [xpc.virtualRoot];\r\n\t                } else {\r\n\t                    // cannot rely on .ownerDocument because the node may be in a document fragment\r\n\t                    st = [findRoot(xpc.contextNode)];\r\n\t                }\r\n\t                outer: while (st.length > 0) {\r\n\t                    for (var m = st.pop(); m != null;) {\r\n\t                        if (m == xpc.contextNode) {\r\n\t                            break outer;\r\n\t                        }\r\n\t                        if (step.nodeTest.matches(m, xpc)) {\r\n\t                            newNodes.unshift(m);\r\n\t                        }\r\n\t                        if (m.firstChild != null) {\r\n\t                            st.push(m.nextSibling);\r\n\t                            m = m.firstChild;\r\n\t                        } else {\r\n\t                            m = m.nextSibling;\r\n\t                        }\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.PRECEDINGSIBLING:\r\n\t                if (xpc.contextNode === xpc.virtualRoot) {\r\n\t                    break;\r\n\t                }\r\n\t                for (var m = xpc.contextNode.previousSibling; m != null; m = m.previousSibling) {\r\n\t                    if (step.nodeTest.matches(m, xpc)) {\r\n\t                        newNodes.push(m);\r\n\t                    }\r\n\t                }\r\n\t                break;\r\n\r\n\t            case Step.SELF:\r\n\t                if (step.nodeTest.matches(xpc.contextNode, xpc)) {\r\n\t                    newNodes.push(xpc.contextNode);\r\n\t                }\r\n\t                break;\r\n\t        }\r\n\r\n\t        return newNodes;\r\n\t    };\r\n\r\n\t    function applyStepWithPredicates(step, xpc, node) {\r\n\t        return PathExpr.applyPredicates(\r\n\t            step.predicates,\r\n\t            xpc,\r\n\t            PathExpr.applyStep(step, xpc, node)\r\n\t        );\r\n\t    }\r\n\r\n\t    function applyStepToNodes(context, nodes, step) {\r\n\t        return flatten(\r\n\t            map(\r\n\t                applyStepWithPredicates.bind(null, step, context),\r\n\t                nodes\r\n\t            )\r\n\t        );\r\n\t    }\r\n\r\n\t    PathExpr.applySteps = function (steps, xpc, nodes) {\r\n\t        return reduce(\r\n\t            applyStepToNodes.bind(null, xpc),\r\n\t            nodes,\r\n\t            steps\r\n\t        );\r\n\t    };\r\n\r\n\t    PathExpr.prototype.applyFilter = function (c, xpc) {\r\n\t        if (!this.filter) {\r\n\t            return { nodes: [c.contextNode] };\r\n\t        }\r\n\r\n\t        var ns = this.filter.evaluate(c);\r\n\r\n\t        if (!Utilities.instance_of(ns, XNodeSet)) {\r\n\t            if (this.filterPredicates != null && this.filterPredicates.length > 0 || this.locationPath != null) {\r\n\t                throw new Error(\"Path expression filter must evaluate to a nodeset if predicates or location path are used\");\r\n\t            }\r\n\r\n\t            return { nonNodes: ns };\r\n\t        }\r\n\r\n\t        return {\r\n\t            nodes: PathExpr.applyPredicates(this.filterPredicates || [], xpc, ns.toUnsortedArray())\r\n\t        };\r\n\t    };\r\n\r\n\t    PathExpr.applyLocationPath = function (locationPath, xpc, nodes) {\r\n\t        if (!locationPath) {\r\n\t            return nodes;\r\n\t        }\r\n\r\n\t        var startNodes = locationPath.absolute ? [PathExpr.getRoot(xpc, nodes)] : nodes;\r\n\r\n\t        return PathExpr.applySteps(locationPath.steps, xpc, startNodes);\r\n\t    };\r\n\r\n\t    PathExpr.prototype.evaluate = function (c) {\r\n\t        var xpc = assign(new XPathContext(), c);\r\n\r\n\t        var filterResult = this.applyFilter(c, xpc);\r\n\r\n\t        if ('nonNodes' in filterResult) {\r\n\t            return filterResult.nonNodes;\r\n\t        }\r\n\r\n\t        var ns = new XNodeSet();\r\n\t        ns.addArray(PathExpr.applyLocationPath(this.locationPath, xpc, filterResult.nodes));\r\n\t        return ns;\r\n\t    };\r\n\r\n\t    PathExpr.predicateMatches = function (pred, c) {\r\n\t        var res = pred.evaluate(c);\r\n\r\n\t        return Utilities.instance_of(res, XNumber)\r\n\t            ? c.contextPosition === res.numberValue()\r\n\t            : res.booleanValue();\r\n\t    };\r\n\r\n\t    PathExpr.predicateString = function (predicate) {\r\n\t        return wrap('[', ']', predicate.toString());\r\n\t    };\r\n\r\n\t    PathExpr.predicatesString = function (predicates) {\r\n\t        return join(\r\n\t            '',\r\n\t            map(PathExpr.predicateString, predicates)\r\n\t        );\r\n\t    };\r\n\r\n\t    PathExpr.prototype.toString = function () {\r\n\t        if (this.filter != undefined) {\r\n\t            var filterStr = toString(this.filter);\r\n\r\n\t            if (Utilities.instance_of(this.filter, XString)) {\r\n\t                return wrap(\"'\", \"'\", filterStr);\r\n\t            }\r\n\t            if (this.filterPredicates != undefined && this.filterPredicates.length) {\r\n\t                return wrap('(', ')', filterStr) +\r\n\t                    PathExpr.predicatesString(this.filterPredicates);\r\n\t            }\r\n\t            if (this.locationPath != undefined) {\r\n\t                return filterStr +\r\n\t                    (this.locationPath.absolute ? '' : '/') +\r\n\t                    toString(this.locationPath);\r\n\t            }\r\n\r\n\t            return filterStr;\r\n\t        }\r\n\r\n\t        return toString(this.locationPath);\r\n\t    };\r\n\r\n\t    PathExpr.getOwnerElement = function (n) {\r\n\t        // DOM 2 has ownerElement\r\n\t        if (n.ownerElement) {\r\n\t            return n.ownerElement;\r\n\t        }\r\n\t        // DOM 1 Internet Explorer can use selectSingleNode (ironically)\r\n\t        try {\r\n\t            if (n.selectSingleNode) {\r\n\t                return n.selectSingleNode(\"..\");\r\n\t            }\r\n\t        } catch (e) {\r\n\t        }\r\n\t        // Other DOM 1 implementations must use this egregious search\r\n\t        var doc = n.nodeType == 9 /*Node.DOCUMENT_NODE*/\r\n\t            ? n\r\n\t            : n.ownerDocument;\r\n\t        var elts = doc.getElementsByTagName(\"*\");\r\n\t        for (var i = 0; i < elts.length; i++) {\r\n\t            var elt = elts.item(i);\r\n\t            var nnm = elt.attributes;\r\n\t            for (var j = 0; j < nnm.length; j++) {\r\n\t                var an = nnm.item(j);\r\n\t                if (an === n) {\r\n\t                    return elt;\r\n\t                }\r\n\t            }\r\n\t        }\r\n\t        return null;\r\n\t    };\r\n\r\n\t    // LocationPath //////////////////////////////////////////////////////////////\r\n\r\n\t    LocationPath.prototype = new Object();\r\n\t    LocationPath.prototype.constructor = LocationPath;\r\n\t    LocationPath.superclass = Object.prototype;\r\n\r\n\t    function LocationPath(abs, steps) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(abs, steps);\r\n\t        }\r\n\t    }\r\n\r\n\t    LocationPath.prototype.init = function (abs, steps) {\r\n\t        this.absolute = abs;\r\n\t        this.steps = steps;\r\n\t    };\r\n\r\n\t    LocationPath.prototype.toString = function () {\r\n\t        return (\r\n\t            (this.absolute ? '/' : '') +\r\n\t            map(toString, this.steps).join('/')\r\n\t        );\r\n\t    };\r\n\r\n\t    // Step //////////////////////////////////////////////////////////////////////\r\n\r\n\t    Step.prototype = new Object();\r\n\t    Step.prototype.constructor = Step;\r\n\t    Step.superclass = Object.prototype;\r\n\r\n\t    function Step(axis, nodetest, preds) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(axis, nodetest, preds);\r\n\t        }\r\n\t    }\r\n\r\n\t    Step.prototype.init = function (axis, nodetest, preds) {\r\n\t        this.axis = axis;\r\n\t        this.nodeTest = nodetest;\r\n\t        this.predicates = preds;\r\n\t    };\r\n\r\n\t    Step.prototype.toString = function () {\r\n\t        return Step.STEPNAMES[this.axis] +\r\n\t            \"::\" +\r\n\t            this.nodeTest.toString() +\r\n\t            PathExpr.predicatesString(this.predicates);\r\n\t    };\r\n\r\n\r\n\t    Step.ANCESTOR = 0;\r\n\t    Step.ANCESTORORSELF = 1;\r\n\t    Step.ATTRIBUTE = 2;\r\n\t    Step.CHILD = 3;\r\n\t    Step.DESCENDANT = 4;\r\n\t    Step.DESCENDANTORSELF = 5;\r\n\t    Step.FOLLOWING = 6;\r\n\t    Step.FOLLOWINGSIBLING = 7;\r\n\t    Step.NAMESPACE = 8;\r\n\t    Step.PARENT = 9;\r\n\t    Step.PRECEDING = 10;\r\n\t    Step.PRECEDINGSIBLING = 11;\r\n\t    Step.SELF = 12;\r\n\r\n\t    Step.STEPNAMES = reduce(function (acc, x) { return acc[x[0]] = x[1], acc; }, {}, [\r\n\t        [Step.ANCESTOR, 'ancestor'],\r\n\t        [Step.ANCESTORORSELF, 'ancestor-or-self'],\r\n\t        [Step.ATTRIBUTE, 'attribute'],\r\n\t        [Step.CHILD, 'child'],\r\n\t        [Step.DESCENDANT, 'descendant'],\r\n\t        [Step.DESCENDANTORSELF, 'descendant-or-self'],\r\n\t        [Step.FOLLOWING, 'following'],\r\n\t        [Step.FOLLOWINGSIBLING, 'following-sibling'],\r\n\t        [Step.NAMESPACE, 'namespace'],\r\n\t        [Step.PARENT, 'parent'],\r\n\t        [Step.PRECEDING, 'preceding'],\r\n\t        [Step.PRECEDINGSIBLING, 'preceding-sibling'],\r\n\t        [Step.SELF, 'self']\r\n\t    ]);\r\n\r\n\t    // NodeTest //////////////////////////////////////////////////////////////////\r\n\r\n\t    NodeTest.prototype = new Object();\r\n\t    NodeTest.prototype.constructor = NodeTest;\r\n\t    NodeTest.superclass = Object.prototype;\r\n\r\n\t    function NodeTest(type, value) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(type, value);\r\n\t        }\r\n\t    }\r\n\r\n\t    NodeTest.prototype.init = function (type, value) {\r\n\t        this.type = type;\r\n\t        this.value = value;\r\n\t    };\r\n\r\n\t    NodeTest.prototype.toString = function () {\r\n\t        return \"<unknown nodetest type>\";\r\n\t    };\r\n\r\n\t    NodeTest.prototype.matches = function (n, xpc) {\r\n\t        console.warn('unknown node test type');\r\n\t    };\r\n\r\n\t    NodeTest.NAMETESTANY = 0;\r\n\t    NodeTest.NAMETESTPREFIXANY = 1;\r\n\t    NodeTest.NAMETESTQNAME = 2;\r\n\t    NodeTest.COMMENT = 3;\r\n\t    NodeTest.TEXT = 4;\r\n\t    NodeTest.PI = 5;\r\n\t    NodeTest.NODE = 6;\r\n\r\n\t    NodeTest.isNodeType = function (types) {\r\n\t        return function (node) {\r\n\t            return includes(types, node.nodeType);\r\n\t        };\r\n\t    };\r\n\r\n\t    NodeTest.makeNodeTestType = function (type, members, ctor) {\r\n\t        var newType = ctor || function () { };\r\n\r\n\t        newType.prototype = new NodeTest(type);\r\n\t        newType.prototype.constructor = newType;\r\n\r\n\t        assign(newType.prototype, members);\r\n\r\n\t        return newType;\r\n\t    };\r\n\t    // create invariant node test for certain node types\r\n\t    NodeTest.makeNodeTypeTest = function (type, nodeTypes, stringVal) {\r\n\t        return new (NodeTest.makeNodeTestType(type, {\r\n\t            matches: NodeTest.isNodeType(nodeTypes),\r\n\t            toString: always(stringVal)\r\n\t        }))();\r\n\t    };\r\n\r\n\t    NodeTest.hasPrefix = function (node) {\r\n\t        return node.prefix || (node.nodeName || node.tagName).indexOf(':') !== -1;\r\n\t    };\r\n\r\n\t    NodeTest.isElementOrAttribute = NodeTest.isNodeType([1, 2]);\r\n\t    NodeTest.nameSpaceMatches = function (prefix, xpc, n) {\r\n\t        var nNamespace = (n.namespaceURI || '');\r\n\r\n\t        if (!prefix) {\r\n\t            return !nNamespace || (xpc.allowAnyNamespaceForNoPrefix && !NodeTest.hasPrefix(n));\r\n\t        }\r\n\r\n\t        var ns = xpc.namespaceResolver.getNamespace(prefix, xpc.expressionContextNode);\r\n\r\n\t        if (ns == null) {\r\n\t            throw new Error(\"Cannot resolve QName \" + prefix);\r\n\t        }\r\n\r\n\t        return ns === nNamespace;\r\n\t    };\r\n\t    NodeTest.localNameMatches = function (localName, xpc, n) {\r\n\t        var nLocalName = (n.localName || n.nodeName);\r\n\r\n\t        return xpc.caseInsensitive\r\n\t            ? localName.toLowerCase() === nLocalName.toLowerCase()\r\n\t            : localName === nLocalName;\r\n\t    };\r\n\r\n\t    NodeTest.NameTestPrefixAny = NodeTest.makeNodeTestType(\r\n\t        NodeTest.NAMETESTPREFIXANY,\r\n\t        {\r\n\t            matches: function (n, xpc) {\r\n\t                return NodeTest.isElementOrAttribute(n) &&\r\n\t                    NodeTest.nameSpaceMatches(this.prefix, xpc, n);\r\n\t            },\r\n\t            toString: function () {\r\n\t                return this.prefix + \":*\";\r\n\t            }\r\n\t        },\r\n\t        function NameTestPrefixAny(prefix) { this.prefix = prefix; }\r\n\t    );\r\n\r\n\t    NodeTest.NameTestQName = NodeTest.makeNodeTestType(\r\n\t        NodeTest.NAMETESTQNAME,\r\n\t        {\r\n\t            matches: function (n, xpc) {\r\n\t                return NodeTest.isNodeType([1, 2, XPathNamespace.XPATH_NAMESPACE_NODE])(n) &&\r\n\t                    NodeTest.nameSpaceMatches(this.prefix, xpc, n) &&\r\n\t                    NodeTest.localNameMatches(this.localName, xpc, n);\r\n\t            },\r\n\t            toString: function () {\r\n\t                return this.name;\r\n\t            }\r\n\t        },\r\n\t        function NameTestQName(name) {\r\n\t            var nameParts = name.split(':');\r\n\r\n\t            this.name = name;\r\n\t            this.prefix = nameParts.length > 1 ? nameParts[0] : null;\r\n\t            this.localName = nameParts[nameParts.length > 1 ? 1 : 0];\r\n\t        }\r\n\t    );\r\n\r\n\t    NodeTest.PITest = NodeTest.makeNodeTestType(NodeTest.PI, {\r\n\t        matches: function (n, xpc) {\r\n\t            return NodeTest.isNodeType([7])(n) && (n.target || n.nodeName) === this.name;\r\n\t        },\r\n\t        toString: function () {\r\n\t            return wrap('processing-instruction(\"', '\")', this.name);\r\n\t        }\r\n\t    }, function (name) { this.name = name; });\r\n\r\n\t    // singletons\r\n\r\n\t    // elements, attributes, namespaces\r\n\t    NodeTest.nameTestAny = NodeTest.makeNodeTypeTest(NodeTest.NAMETESTANY, [1, 2, XPathNamespace.XPATH_NAMESPACE_NODE], '*');\r\n\t    // text, cdata\r\n\t    NodeTest.textTest = NodeTest.makeNodeTypeTest(NodeTest.TEXT, [3, 4], 'text()');\r\n\t    NodeTest.commentTest = NodeTest.makeNodeTypeTest(NodeTest.COMMENT, [8], 'comment()');\r\n\t    // elements, attributes, text, cdata, PIs, comments, document nodes\r\n\t    NodeTest.nodeTest = NodeTest.makeNodeTypeTest(NodeTest.NODE, [1, 2, 3, 4, 7, 8, 9], 'node()');\r\n\t    NodeTest.anyPiTest = NodeTest.makeNodeTypeTest(NodeTest.PI, [7], 'processing-instruction()');\r\n\r\n\t    // VariableReference /////////////////////////////////////////////////////////\r\n\r\n\t    VariableReference.prototype = new Expression();\r\n\t    VariableReference.prototype.constructor = VariableReference;\r\n\t    VariableReference.superclass = Expression.prototype;\r\n\r\n\t    function VariableReference(v) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(v);\r\n\t        }\r\n\t    }\r\n\r\n\t    VariableReference.prototype.init = function (v) {\r\n\t        this.variable = v;\r\n\t    };\r\n\r\n\t    VariableReference.prototype.toString = function () {\r\n\t        return \"$\" + this.variable;\r\n\t    };\r\n\r\n\t    VariableReference.prototype.evaluate = function (c) {\r\n\t        var parts = Utilities.resolveQName(this.variable, c.namespaceResolver, c.contextNode, false);\r\n\r\n\t        if (parts[0] == null) {\r\n\t            throw new Error(\"Cannot resolve QName \" + fn);\r\n\t        }\r\n\t        var result = c.variableResolver.getVariable(parts[1], parts[0]);\r\n\t        if (!result) {\r\n\t            throw XPathException.fromMessage(\"Undeclared variable: \" + this.toString());\r\n\t        }\r\n\t        return result;\r\n\t    };\r\n\r\n\t    // FunctionCall //////////////////////////////////////////////////////////////\r\n\r\n\t    FunctionCall.prototype = new Expression();\r\n\t    FunctionCall.prototype.constructor = FunctionCall;\r\n\t    FunctionCall.superclass = Expression.prototype;\r\n\r\n\t    function FunctionCall(fn, args) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(fn, args);\r\n\t        }\r\n\t    }\r\n\r\n\t    FunctionCall.prototype.init = function (fn, args) {\r\n\t        this.functionName = fn;\r\n\t        this.arguments = args;\r\n\t    };\r\n\r\n\t    FunctionCall.prototype.toString = function () {\r\n\t        var s = this.functionName + \"(\";\r\n\t        for (var i = 0; i < this.arguments.length; i++) {\r\n\t            if (i > 0) {\r\n\t                s += \", \";\r\n\t            }\r\n\t            s += this.arguments[i].toString();\r\n\t        }\r\n\t        return s + \")\";\r\n\t    };\r\n\r\n\t    FunctionCall.prototype.evaluate = function (c) {\r\n\t        var f = FunctionResolver.getFunctionFromContext(this.functionName, c);\r\n\r\n\t        if (!f) {\r\n\t            throw new Error(\"Unknown function \" + this.functionName);\r\n\t        }\r\n\r\n\t        var a = [c].concat(this.arguments);\r\n\t        return f.apply(c.functionResolver.thisArg, a);\r\n\t    };\r\n\r\n\t    // Operators /////////////////////////////////////////////////////////////////\r\n\r\n\t    var Operators = new Object();\r\n\r\n\t    Operators.equals = function (l, r) {\r\n\t        return l.equals(r);\r\n\t    };\r\n\r\n\t    Operators.notequal = function (l, r) {\r\n\t        return l.notequal(r);\r\n\t    };\r\n\r\n\t    Operators.lessthan = function (l, r) {\r\n\t        return l.lessthan(r);\r\n\t    };\r\n\r\n\t    Operators.greaterthan = function (l, r) {\r\n\t        return l.greaterthan(r);\r\n\t    };\r\n\r\n\t    Operators.lessthanorequal = function (l, r) {\r\n\t        return l.lessthanorequal(r);\r\n\t    };\r\n\r\n\t    Operators.greaterthanorequal = function (l, r) {\r\n\t        return l.greaterthanorequal(r);\r\n\t    };\r\n\r\n\t    // XString ///////////////////////////////////////////////////////////////////\r\n\r\n\t    XString.prototype = new Expression();\r\n\t    XString.prototype.constructor = XString;\r\n\t    XString.superclass = Expression.prototype;\r\n\r\n\t    function XString(s) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(s);\r\n\t        }\r\n\t    }\r\n\r\n\t    XString.prototype.init = function (s) {\r\n\t        this.str = String(s);\r\n\t    };\r\n\r\n\t    XString.prototype.toString = function () {\r\n\t        return this.str;\r\n\t    };\r\n\r\n\t    XString.prototype.evaluate = function (c) {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XString.prototype.string = function () {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XString.prototype.number = function () {\r\n\t        return new XNumber(this.str);\r\n\t    };\r\n\r\n\t    XString.prototype.bool = function () {\r\n\t        return new XBoolean(this.str);\r\n\t    };\r\n\r\n\t    XString.prototype.nodeset = function () {\r\n\t        throw new Error(\"Cannot convert string to nodeset\");\r\n\t    };\r\n\r\n\t    XString.prototype.stringValue = function () {\r\n\t        return this.str;\r\n\t    };\r\n\r\n\t    XString.prototype.numberValue = function () {\r\n\t        return this.number().numberValue();\r\n\t    };\r\n\r\n\t    XString.prototype.booleanValue = function () {\r\n\t        return this.bool().booleanValue();\r\n\t    };\r\n\r\n\t    XString.prototype.equals = function (r) {\r\n\t        if (Utilities.instance_of(r, XBoolean)) {\r\n\t            return this.bool().equals(r);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNumber)) {\r\n\t            return this.number().equals(r);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithString(this, Operators.equals);\r\n\t        }\r\n\t        return new XBoolean(this.str == r.str);\r\n\t    };\r\n\r\n\t    XString.prototype.notequal = function (r) {\r\n\t        if (Utilities.instance_of(r, XBoolean)) {\r\n\t            return this.bool().notequal(r);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNumber)) {\r\n\t            return this.number().notequal(r);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithString(this, Operators.notequal);\r\n\t        }\r\n\t        return new XBoolean(this.str != r.str);\r\n\t    };\r\n\r\n\t    XString.prototype.lessthan = function (r) {\r\n\t        return this.number().lessthan(r);\r\n\t    };\r\n\r\n\t    XString.prototype.greaterthan = function (r) {\r\n\t        return this.number().greaterthan(r);\r\n\t    };\r\n\r\n\t    XString.prototype.lessthanorequal = function (r) {\r\n\t        return this.number().lessthanorequal(r);\r\n\t    };\r\n\r\n\t    XString.prototype.greaterthanorequal = function (r) {\r\n\t        return this.number().greaterthanorequal(r);\r\n\t    };\r\n\r\n\t    // XNumber ///////////////////////////////////////////////////////////////////\r\n\r\n\t    XNumber.prototype = new Expression();\r\n\t    XNumber.prototype.constructor = XNumber;\r\n\t    XNumber.superclass = Expression.prototype;\r\n\r\n\t    function XNumber(n) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(n);\r\n\t        }\r\n\t    }\r\n\r\n\t    XNumber.prototype.init = function (n) {\r\n\t        this.num = typeof n === \"string\" ? this.parse(n) : Number(n);\r\n\t    };\r\n\r\n\t    XNumber.prototype.numberFormat = /^\\s*-?[0-9]*\\.?[0-9]+\\s*$/;\r\n\r\n\t    XNumber.prototype.parse = function (s) {\r\n\t        // XPath representation of numbers is more restrictive than what Number() or parseFloat() allow\r\n\t        return this.numberFormat.test(s) ? parseFloat(s) : Number.NaN;\r\n\t    };\r\n\r\n\t    function padSmallNumber(numberStr) {\r\n\t        var parts = numberStr.split('e-');\r\n\t        var base = parts[0].replace('.', '');\r\n\t        var exponent = Number(parts[1]);\r\n\r\n\t        for (var i = 0; i < exponent - 1; i += 1) {\r\n\t            base = '0' + base;\r\n\t        }\r\n\r\n\t        return '0.' + base;\r\n\t    }\r\n\r\n\t    function padLargeNumber(numberStr) {\r\n\t        var parts = numberStr.split('e');\r\n\t        var base = parts[0].replace('.', '');\r\n\t        var exponent = Number(parts[1]);\r\n\t        var zerosToAppend = exponent + 1 - base.length;\r\n\r\n\t        for (var i = 0; i < zerosToAppend; i += 1) {\r\n\t            base += '0';\r\n\t        }\r\n\r\n\t        return base;\r\n\t    }\r\n\r\n\t    XNumber.prototype.toString = function () {\r\n\t        var strValue = this.num.toString();\r\n\r\n\t        if (strValue.indexOf('e-') !== -1) {\r\n\t            return padSmallNumber(strValue);\r\n\t        }\r\n\r\n\t        if (strValue.indexOf('e') !== -1) {\r\n\t            return padLargeNumber(strValue);\r\n\t        }\r\n\r\n\t        return strValue;\r\n\t    };\r\n\r\n\t    XNumber.prototype.evaluate = function (c) {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XNumber.prototype.string = function () {\r\n\r\n\r\n\t        return new XString(this.toString());\r\n\t    };\r\n\r\n\t    XNumber.prototype.number = function () {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XNumber.prototype.bool = function () {\r\n\t        return new XBoolean(this.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.nodeset = function () {\r\n\t        throw new Error(\"Cannot convert number to nodeset\");\r\n\t    };\r\n\r\n\t    XNumber.prototype.stringValue = function () {\r\n\t        return this.string().stringValue();\r\n\t    };\r\n\r\n\t    XNumber.prototype.numberValue = function () {\r\n\t        return this.num;\r\n\t    };\r\n\r\n\t    XNumber.prototype.booleanValue = function () {\r\n\t        return this.bool().booleanValue();\r\n\t    };\r\n\r\n\t    XNumber.prototype.negate = function () {\r\n\t        return new XNumber(-this.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.equals = function (r) {\r\n\t        if (Utilities.instance_of(r, XBoolean)) {\r\n\t            return this.bool().equals(r);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XString)) {\r\n\t            return this.equals(r.number());\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithNumber(this, Operators.equals);\r\n\t        }\r\n\t        return new XBoolean(this.num == r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.notequal = function (r) {\r\n\t        if (Utilities.instance_of(r, XBoolean)) {\r\n\t            return this.bool().notequal(r);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XString)) {\r\n\t            return this.notequal(r.number());\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithNumber(this, Operators.notequal);\r\n\t        }\r\n\t        return new XBoolean(this.num != r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.lessthan = function (r) {\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithNumber(this, Operators.greaterthan);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n\t            return this.lessthan(r.number());\r\n\t        }\r\n\t        return new XBoolean(this.num < r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.greaterthan = function (r) {\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithNumber(this, Operators.lessthan);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n\t            return this.greaterthan(r.number());\r\n\t        }\r\n\t        return new XBoolean(this.num > r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.lessthanorequal = function (r) {\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithNumber(this, Operators.greaterthanorequal);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n\t            return this.lessthanorequal(r.number());\r\n\t        }\r\n\t        return new XBoolean(this.num <= r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.greaterthanorequal = function (r) {\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithNumber(this, Operators.lessthanorequal);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n\t            return this.greaterthanorequal(r.number());\r\n\t        }\r\n\t        return new XBoolean(this.num >= r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.plus = function (r) {\r\n\t        return new XNumber(this.num + r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.minus = function (r) {\r\n\t        return new XNumber(this.num - r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.multiply = function (r) {\r\n\t        return new XNumber(this.num * r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.div = function (r) {\r\n\t        return new XNumber(this.num / r.num);\r\n\t    };\r\n\r\n\t    XNumber.prototype.mod = function (r) {\r\n\t        return new XNumber(this.num % r.num);\r\n\t    };\r\n\r\n\t    // XBoolean //////////////////////////////////////////////////////////////////\r\n\r\n\t    XBoolean.prototype = new Expression();\r\n\t    XBoolean.prototype.constructor = XBoolean;\r\n\t    XBoolean.superclass = Expression.prototype;\r\n\r\n\t    function XBoolean(b) {\r\n\t        if (arguments.length > 0) {\r\n\t            this.init(b);\r\n\t        }\r\n\t    }\r\n\r\n\t    XBoolean.prototype.init = function (b) {\r\n\t        this.b = Boolean(b);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.toString = function () {\r\n\t        return this.b.toString();\r\n\t    };\r\n\r\n\t    XBoolean.prototype.evaluate = function (c) {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XBoolean.prototype.string = function () {\r\n\t        return new XString(this.b);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.number = function () {\r\n\t        return new XNumber(this.b);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.bool = function () {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XBoolean.prototype.nodeset = function () {\r\n\t        throw new Error(\"Cannot convert boolean to nodeset\");\r\n\t    };\r\n\r\n\t    XBoolean.prototype.stringValue = function () {\r\n\t        return this.string().stringValue();\r\n\t    };\r\n\r\n\t    XBoolean.prototype.numberValue = function () {\r\n\t        return this.number().numberValue();\r\n\t    };\r\n\r\n\t    XBoolean.prototype.booleanValue = function () {\r\n\t        return this.b;\r\n\t    };\r\n\r\n\t    XBoolean.prototype.not = function () {\r\n\t        return new XBoolean(!this.b);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.equals = function (r) {\r\n\t        if (Utilities.instance_of(r, XString) || Utilities.instance_of(r, XNumber)) {\r\n\t            return this.equals(r.bool());\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithBoolean(this, Operators.equals);\r\n\t        }\r\n\t        return new XBoolean(this.b == r.b);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.notequal = function (r) {\r\n\t        if (Utilities.instance_of(r, XString) || Utilities.instance_of(r, XNumber)) {\r\n\t            return this.notequal(r.bool());\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNodeSet)) {\r\n\t            return r.compareWithBoolean(this, Operators.notequal);\r\n\t        }\r\n\t        return new XBoolean(this.b != r.b);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.lessthan = function (r) {\r\n\t        return this.number().lessthan(r);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.greaterthan = function (r) {\r\n\t        return this.number().greaterthan(r);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.lessthanorequal = function (r) {\r\n\t        return this.number().lessthanorequal(r);\r\n\t    };\r\n\r\n\t    XBoolean.prototype.greaterthanorequal = function (r) {\r\n\t        return this.number().greaterthanorequal(r);\r\n\t    };\r\n\r\n\t    XBoolean.true_ = new XBoolean(true);\r\n\t    XBoolean.false_ = new XBoolean(false);\r\n\r\n\t    // AVLTree ///////////////////////////////////////////////////////////////////\r\n\r\n\t    AVLTree.prototype = new Object();\r\n\t    AVLTree.prototype.constructor = AVLTree;\r\n\t    AVLTree.superclass = Object.prototype;\r\n\r\n\t    function AVLTree(n) {\r\n\t        this.init(n);\r\n\t    }\r\n\r\n\t    AVLTree.prototype.init = function (n) {\r\n\t        this.left = null;\r\n\t        this.right = null;\r\n\t        this.node = n;\r\n\t        this.depth = 1;\r\n\t    };\r\n\r\n\t    AVLTree.prototype.balance = function () {\r\n\t        var ldepth = this.left == null ? 0 : this.left.depth;\r\n\t        var rdepth = this.right == null ? 0 : this.right.depth;\r\n\r\n\t        if (ldepth > rdepth + 1) {\r\n\t            // LR or LL rotation\r\n\t            var lldepth = this.left.left == null ? 0 : this.left.left.depth;\r\n\t            var lrdepth = this.left.right == null ? 0 : this.left.right.depth;\r\n\r\n\t            if (lldepth < lrdepth) {\r\n\t                // LR rotation consists of a RR rotation of the left child\r\n\t                this.left.rotateRR();\r\n\t                // plus a LL rotation of this node, which happens anyway\r\n\t            }\r\n\t            this.rotateLL();\r\n\t        } else if (ldepth + 1 < rdepth) {\r\n\t            // RR or RL rorarion\r\n\t            var rrdepth = this.right.right == null ? 0 : this.right.right.depth;\r\n\t            var rldepth = this.right.left == null ? 0 : this.right.left.depth;\r\n\r\n\t            if (rldepth > rrdepth) {\r\n\t                // RR rotation consists of a LL rotation of the right child\r\n\t                this.right.rotateLL();\r\n\t                // plus a RR rotation of this node, which happens anyway\r\n\t            }\r\n\t            this.rotateRR();\r\n\t        }\r\n\t    };\r\n\r\n\t    AVLTree.prototype.rotateLL = function () {\r\n\t        // the left side is too long => rotate from the left (_not_ leftwards)\r\n\t        var nodeBefore = this.node;\r\n\t        var rightBefore = this.right;\r\n\t        this.node = this.left.node;\r\n\t        this.right = this.left;\r\n\t        this.left = this.left.left;\r\n\t        this.right.left = this.right.right;\r\n\t        this.right.right = rightBefore;\r\n\t        this.right.node = nodeBefore;\r\n\t        this.right.updateInNewLocation();\r\n\t        this.updateInNewLocation();\r\n\t    };\r\n\r\n\t    AVLTree.prototype.rotateRR = function () {\r\n\t        // the right side is too long => rotate from the right (_not_ rightwards)\r\n\t        var nodeBefore = this.node;\r\n\t        var leftBefore = this.left;\r\n\t        this.node = this.right.node;\r\n\t        this.left = this.right;\r\n\t        this.right = this.right.right;\r\n\t        this.left.right = this.left.left;\r\n\t        this.left.left = leftBefore;\r\n\t        this.left.node = nodeBefore;\r\n\t        this.left.updateInNewLocation();\r\n\t        this.updateInNewLocation();\r\n\t    };\r\n\r\n\t    AVLTree.prototype.updateInNewLocation = function () {\r\n\t        this.getDepthFromChildren();\r\n\t    };\r\n\r\n\t    AVLTree.prototype.getDepthFromChildren = function () {\r\n\t        this.depth = this.node == null ? 0 : 1;\r\n\t        if (this.left != null) {\r\n\t            this.depth = this.left.depth + 1;\r\n\t        }\r\n\t        if (this.right != null && this.depth <= this.right.depth) {\r\n\t            this.depth = this.right.depth + 1;\r\n\t        }\r\n\t    };\r\n\r\n\t    function nodeOrder(n1, n2) {\r\n\t        if (n1 === n2) {\r\n\t            return 0;\r\n\t        }\r\n\r\n\t        if (n1.compareDocumentPosition) {\r\n\t            var cpos = n1.compareDocumentPosition(n2);\r\n\r\n\t            if (cpos & 0x01) {\r\n\t                // not in the same document; return an arbitrary result (is there a better way to do this)\r\n\t                return 1;\r\n\t            }\r\n\t            if (cpos & 0x0A) {\r\n\t                // n2 precedes or contains n1\r\n\t                return 1;\r\n\t            }\r\n\t            if (cpos & 0x14) {\r\n\t                // n2 follows or is contained by n1\r\n\t                return -1;\r\n\t            }\r\n\r\n\t            return 0;\r\n\t        }\r\n\r\n\t        var d1 = 0,\r\n\t            d2 = 0;\r\n\t        for (var m1 = n1; m1 != null; m1 = m1.parentNode || m1.ownerElement) {\r\n\t            d1++;\r\n\t        }\r\n\t        for (var m2 = n2; m2 != null; m2 = m2.parentNode || m2.ownerElement) {\r\n\t            d2++;\r\n\t        }\r\n\r\n\t        // step up to same depth\r\n\t        if (d1 > d2) {\r\n\t            while (d1 > d2) {\r\n\t                n1 = n1.parentNode || n1.ownerElement;\r\n\t                d1--;\r\n\t            }\r\n\t            if (n1 === n2) {\r\n\t                return 1;\r\n\t            }\r\n\t        } else if (d2 > d1) {\r\n\t            while (d2 > d1) {\r\n\t                n2 = n2.parentNode || n2.ownerElement;\r\n\t                d2--;\r\n\t            }\r\n\t            if (n1 === n2) {\r\n\t                return -1;\r\n\t            }\r\n\t        }\r\n\r\n\t        var n1Par = n1.parentNode || n1.ownerElement,\r\n\t            n2Par = n2.parentNode || n2.ownerElement;\r\n\r\n\t        // find common parent\r\n\t        while (n1Par !== n2Par) {\r\n\t            n1 = n1Par;\r\n\t            n2 = n2Par;\r\n\t            n1Par = n1.parentNode || n1.ownerElement;\r\n\t            n2Par = n2.parentNode || n2.ownerElement;\r\n\t        }\r\n\r\n\t        var n1isAttr = Utilities.isAttribute(n1);\r\n\t        var n2isAttr = Utilities.isAttribute(n2);\r\n\r\n\t        if (n1isAttr && !n2isAttr) {\r\n\t            return -1;\r\n\t        }\r\n\t        if (!n1isAttr && n2isAttr) {\r\n\t            return 1;\r\n\t        }\r\n\r\n\t        if (n1Par) {\r\n\t            var cn = n1isAttr ? n1Par.attributes : n1Par.childNodes,\r\n\t                len = cn.length;\r\n\t            for (var i = 0; i < len; i += 1) {\r\n\t                var n = cn[i];\r\n\t                if (n === n1) {\r\n\t                    return -1;\r\n\t                }\r\n\t                if (n === n2) {\r\n\t                    return 1;\r\n\t                }\r\n\t            }\r\n\t        }\r\n\r\n\t        throw new Error('Unexpected: could not determine node order');\r\n\t    }\r\n\r\n\t    AVLTree.prototype.add = function (n) {\r\n\t        if (n === this.node) {\r\n\t            return false;\r\n\t        }\r\n\r\n\t        var o = nodeOrder(n, this.node);\r\n\r\n\t        var ret = false;\r\n\t        if (o == -1) {\r\n\t            if (this.left == null) {\r\n\t                this.left = new AVLTree(n);\r\n\t                ret = true;\r\n\t            } else {\r\n\t                ret = this.left.add(n);\r\n\t                if (ret) {\r\n\t                    this.balance();\r\n\t                }\r\n\t            }\r\n\t        } else if (o == 1) {\r\n\t            if (this.right == null) {\r\n\t                this.right = new AVLTree(n);\r\n\t                ret = true;\r\n\t            } else {\r\n\t                ret = this.right.add(n);\r\n\t                if (ret) {\r\n\t                    this.balance();\r\n\t                }\r\n\t            }\r\n\t        }\r\n\r\n\t        if (ret) {\r\n\t            this.getDepthFromChildren();\r\n\t        }\r\n\t        return ret;\r\n\t    };\r\n\r\n\t    // XNodeSet //////////////////////////////////////////////////////////////////\r\n\r\n\t    XNodeSet.prototype = new Expression();\r\n\t    XNodeSet.prototype.constructor = XNodeSet;\r\n\t    XNodeSet.superclass = Expression.prototype;\r\n\r\n\t    function XNodeSet() {\r\n\t        this.init();\r\n\t    }\r\n\r\n\t    XNodeSet.prototype.init = function () {\r\n\t        this.tree = null;\r\n\t        this.nodes = [];\r\n\t        this.size = 0;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.toString = function () {\r\n\t        var p = this.first();\r\n\t        if (p == null) {\r\n\t            return \"\";\r\n\t        }\r\n\t        return this.stringForNode(p);\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.evaluate = function (c) {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.string = function () {\r\n\t        return new XString(this.toString());\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.stringValue = function () {\r\n\t        return this.toString();\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.number = function () {\r\n\t        return new XNumber(this.string());\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.numberValue = function () {\r\n\t        return Number(this.string());\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.bool = function () {\r\n\t        return new XBoolean(this.booleanValue());\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.booleanValue = function () {\r\n\t        return !!this.size;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.nodeset = function () {\r\n\t        return this;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.stringForNode = function (n) {\r\n\t        if (n.nodeType == 9   /*Node.DOCUMENT_NODE*/ ||\r\n\t            n.nodeType == 1   /*Node.ELEMENT_NODE */ ||\r\n\t            n.nodeType === 11 /*Node.DOCUMENT_FRAGMENT*/) {\r\n\t            return this.stringForContainerNode(n);\r\n\t        }\r\n\t        if (n.nodeType === 2 /* Node.ATTRIBUTE_NODE */) {\r\n\t            return n.value || n.nodeValue;\r\n\t        }\r\n\t        if (n.isNamespaceNode) {\r\n\t            return n.namespace;\r\n\t        }\r\n\t        return n.nodeValue;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.stringForContainerNode = function (n) {\r\n\t        var s = \"\";\r\n\t        for (var n2 = n.firstChild; n2 != null; n2 = n2.nextSibling) {\r\n\t            var nt = n2.nodeType;\r\n\t            //  Element,    Text,       CDATA,      Document,   Document Fragment\r\n\t            if (nt === 1 || nt === 3 || nt === 4 || nt === 9 || nt === 11) {\r\n\t                s += this.stringForNode(n2);\r\n\t            }\r\n\t        }\r\n\t        return s;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.buildTree = function () {\r\n\t        if (!this.tree && this.nodes.length) {\r\n\t            this.tree = new AVLTree(this.nodes[0]);\r\n\t            for (var i = 1; i < this.nodes.length; i += 1) {\r\n\t                this.tree.add(this.nodes[i]);\r\n\t            }\r\n\t        }\r\n\r\n\t        return this.tree;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.first = function () {\r\n\t        var p = this.buildTree();\r\n\t        if (p == null) {\r\n\t            return null;\r\n\t        }\r\n\t        while (p.left != null) {\r\n\t            p = p.left;\r\n\t        }\r\n\t        return p.node;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.add = function (n) {\r\n\t        for (var i = 0; i < this.nodes.length; i += 1) {\r\n\t            if (n === this.nodes[i]) {\r\n\t                return;\r\n\t            }\r\n\t        }\r\n\r\n\t        this.tree = null;\r\n\t        this.nodes.push(n);\r\n\t        this.size += 1;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.addArray = function (ns) {\r\n\t        var self = this;\r\n\r\n\t        forEach(function (x) { self.add(x); }, ns);\r\n\t    };\r\n\r\n\t    /**\r\n\t     * Returns an array of the node set's contents in document order\r\n\t     */\r\n\t    XNodeSet.prototype.toArray = function () {\r\n\t        var a = [];\r\n\t        this.toArrayRec(this.buildTree(), a);\r\n\t        return a;\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.toArrayRec = function (t, a) {\r\n\t        if (t != null) {\r\n\t            this.toArrayRec(t.left, a);\r\n\t            a.push(t.node);\r\n\t            this.toArrayRec(t.right, a);\r\n\t        }\r\n\t    };\r\n\r\n\t    /**\r\n\t     * Returns an array of the node set's contents in arbitrary order\r\n\t     */\r\n\t    XNodeSet.prototype.toUnsortedArray = function () {\r\n\t        return this.nodes.slice();\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.compareWithString = function (r, o) {\r\n\t        var a = this.toUnsortedArray();\r\n\t        for (var i = 0; i < a.length; i++) {\r\n\t            var n = a[i];\r\n\t            var l = new XString(this.stringForNode(n));\r\n\t            var res = o(l, r);\r\n\t            if (res.booleanValue()) {\r\n\t                return res;\r\n\t            }\r\n\t        }\r\n\t        return new XBoolean(false);\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.compareWithNumber = function (r, o) {\r\n\t        var a = this.toUnsortedArray();\r\n\t        for (var i = 0; i < a.length; i++) {\r\n\t            var n = a[i];\r\n\t            var l = new XNumber(this.stringForNode(n));\r\n\t            var res = o(l, r);\r\n\t            if (res.booleanValue()) {\r\n\t                return res;\r\n\t            }\r\n\t        }\r\n\t        return new XBoolean(false);\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.compareWithBoolean = function (r, o) {\r\n\t        return o(this.bool(), r);\r\n\t    };\r\n\r\n\t    XNodeSet.prototype.compareWithNodeSet = function (r, o) {\r\n\t        var arr = this.toUnsortedArray();\r\n\t        var oInvert = function (lop, rop) { return o(rop, lop); };\r\n\r\n\t        for (var i = 0; i < arr.length; i++) {\r\n\t            var l = new XString(this.stringForNode(arr[i]));\r\n\r\n\t            var res = r.compareWithString(l, oInvert);\r\n\t            if (res.booleanValue()) {\r\n\t                return res;\r\n\t            }\r\n\t        }\r\n\r\n\t        return new XBoolean(false);\r\n\t    };\r\n\r\n\t    XNodeSet.compareWith = curry(function (o, r) {\r\n\t        if (Utilities.instance_of(r, XString)) {\r\n\t            return this.compareWithString(r, o);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XNumber)) {\r\n\t            return this.compareWithNumber(r, o);\r\n\t        }\r\n\t        if (Utilities.instance_of(r, XBoolean)) {\r\n\t            return this.compareWithBoolean(r, o);\r\n\t        }\r\n\t        return this.compareWithNodeSet(r, o);\r\n\t    });\r\n\r\n\t    XNodeSet.prototype.equals = XNodeSet.compareWith(Operators.equals);\r\n\t    XNodeSet.prototype.notequal = XNodeSet.compareWith(Operators.notequal);\r\n\t    XNodeSet.prototype.lessthan = XNodeSet.compareWith(Operators.lessthan);\r\n\t    XNodeSet.prototype.greaterthan = XNodeSet.compareWith(Operators.greaterthan);\r\n\t    XNodeSet.prototype.lessthanorequal = XNodeSet.compareWith(Operators.lessthanorequal);\r\n\t    XNodeSet.prototype.greaterthanorequal = XNodeSet.compareWith(Operators.greaterthanorequal);\r\n\r\n\t    XNodeSet.prototype.union = function (r) {\r\n\t        var ns = new XNodeSet();\r\n\t        ns.addArray(this.toUnsortedArray());\r\n\t        ns.addArray(r.toUnsortedArray());\r\n\t        return ns;\r\n\t    };\r\n\r\n\t    // XPathNamespace ////////////////////////////////////////////////////////////\r\n\r\n\t    XPathNamespace.prototype = new Object();\r\n\t    XPathNamespace.prototype.constructor = XPathNamespace;\r\n\t    XPathNamespace.superclass = Object.prototype;\r\n\r\n\t    function XPathNamespace(pre, ns, p) {\r\n\t        this.isXPathNamespace = true;\r\n\t        this.ownerDocument = p.ownerDocument;\r\n\t        this.nodeName = \"#namespace\";\r\n\t        this.prefix = pre;\r\n\t        this.localName = pre;\r\n\t        this.namespaceURI = ns;\r\n\t        this.nodeValue = ns;\r\n\t        this.ownerElement = p;\r\n\t        this.nodeType = XPathNamespace.XPATH_NAMESPACE_NODE;\r\n\t    }\r\n\r\n\t    XPathNamespace.prototype.toString = function () {\r\n\t        return \"{ \\\"\" + this.prefix + \"\\\", \\\"\" + this.namespaceURI + \"\\\" }\";\r\n\t    };\r\n\r\n\t    // XPathContext //////////////////////////////////////////////////////////////\r\n\r\n\t    XPathContext.prototype = new Object();\r\n\t    XPathContext.prototype.constructor = XPathContext;\r\n\t    XPathContext.superclass = Object.prototype;\r\n\r\n\t    function XPathContext(vr, nr, fr) {\r\n\t        this.variableResolver = vr != null ? vr : new VariableResolver();\r\n\t        this.namespaceResolver = nr != null ? nr : new NamespaceResolver();\r\n\t        this.functionResolver = fr != null ? fr : new FunctionResolver();\r\n\t    }\r\n\r\n\t    XPathContext.prototype.extend = function (newProps) {\r\n\t        return assign(new XPathContext(), this, newProps);\r\n\t    };\r\n\r\n\t    // VariableResolver //////////////////////////////////////////////////////////\r\n\r\n\t    VariableResolver.prototype = new Object();\r\n\t    VariableResolver.prototype.constructor = VariableResolver;\r\n\t    VariableResolver.superclass = Object.prototype;\r\n\r\n\t    function VariableResolver() {\r\n\t    }\r\n\r\n\t    VariableResolver.prototype.getVariable = function (ln, ns) {\r\n\t        return null;\r\n\t    };\r\n\r\n\t    // FunctionResolver //////////////////////////////////////////////////////////\r\n\r\n\t    FunctionResolver.prototype = new Object();\r\n\t    FunctionResolver.prototype.constructor = FunctionResolver;\r\n\t    FunctionResolver.superclass = Object.prototype;\r\n\r\n\t    function FunctionResolver(thisArg) {\r\n\t        this.thisArg = thisArg != null ? thisArg : Functions;\r\n\t        this.functions = new Object();\r\n\t        this.addStandardFunctions();\r\n\t    }\r\n\r\n\t    FunctionResolver.prototype.addStandardFunctions = function () {\r\n\t        this.functions[\"{}last\"] = Functions.last;\r\n\t        this.functions[\"{}position\"] = Functions.position;\r\n\t        this.functions[\"{}count\"] = Functions.count;\r\n\t        this.functions[\"{}id\"] = Functions.id;\r\n\t        this.functions[\"{}local-name\"] = Functions.localName;\r\n\t        this.functions[\"{}namespace-uri\"] = Functions.namespaceURI;\r\n\t        this.functions[\"{}name\"] = Functions.name;\r\n\t        this.functions[\"{}string\"] = Functions.string;\r\n\t        this.functions[\"{}concat\"] = Functions.concat;\r\n\t        this.functions[\"{}starts-with\"] = Functions.startsWith;\r\n\t        this.functions[\"{}contains\"] = Functions.contains;\r\n\t        this.functions[\"{}substring-before\"] = Functions.substringBefore;\r\n\t        this.functions[\"{}substring-after\"] = Functions.substringAfter;\r\n\t        this.functions[\"{}substring\"] = Functions.substring;\r\n\t        this.functions[\"{}string-length\"] = Functions.stringLength;\r\n\t        this.functions[\"{}normalize-space\"] = Functions.normalizeSpace;\r\n\t        this.functions[\"{}translate\"] = Functions.translate;\r\n\t        this.functions[\"{}boolean\"] = Functions.boolean_;\r\n\t        this.functions[\"{}not\"] = Functions.not;\r\n\t        this.functions[\"{}true\"] = Functions.true_;\r\n\t        this.functions[\"{}false\"] = Functions.false_;\r\n\t        this.functions[\"{}lang\"] = Functions.lang;\r\n\t        this.functions[\"{}number\"] = Functions.number;\r\n\t        this.functions[\"{}sum\"] = Functions.sum;\r\n\t        this.functions[\"{}floor\"] = Functions.floor;\r\n\t        this.functions[\"{}ceiling\"] = Functions.ceiling;\r\n\t        this.functions[\"{}round\"] = Functions.round;\r\n\t    };\r\n\r\n\t    FunctionResolver.prototype.addFunction = function (ns, ln, f) {\r\n\t        this.functions[\"{\" + ns + \"}\" + ln] = f;\r\n\t    };\r\n\r\n\t    FunctionResolver.getFunctionFromContext = function (qName, context) {\r\n\t        var parts = Utilities.resolveQName(qName, context.namespaceResolver, context.contextNode, false);\r\n\r\n\t        if (parts[0] === null) {\r\n\t            throw new Error(\"Cannot resolve QName \" + name);\r\n\t        }\r\n\r\n\t        return context.functionResolver.getFunction(parts[1], parts[0]);\r\n\t    };\r\n\r\n\t    FunctionResolver.prototype.getFunction = function (localName, namespace) {\r\n\t        return this.functions[\"{\" + namespace + \"}\" + localName];\r\n\t    };\r\n\r\n\t    // NamespaceResolver /////////////////////////////////////////////////////////\r\n\r\n\t    NamespaceResolver.prototype = new Object();\r\n\t    NamespaceResolver.prototype.constructor = NamespaceResolver;\r\n\t    NamespaceResolver.superclass = Object.prototype;\r\n\r\n\t    function NamespaceResolver() {\r\n\t    }\r\n\r\n\t    NamespaceResolver.prototype.getNamespace = function (prefix, n) {\r\n\t        if (prefix == \"xml\") {\r\n\t            return XPath.XML_NAMESPACE_URI;\r\n\t        } else if (prefix == \"xmlns\") {\r\n\t            return XPath.XMLNS_NAMESPACE_URI;\r\n\t        }\r\n\t        if (n.nodeType == 9 /*Node.DOCUMENT_NODE*/) {\r\n\t            n = n.documentElement;\r\n\t        } else if (n.nodeType == 2 /*Node.ATTRIBUTE_NODE*/) {\r\n\t            n = PathExpr.getOwnerElement(n);\r\n\t        } else if (n.nodeType != 1 /*Node.ELEMENT_NODE*/) {\r\n\t            n = n.parentNode;\r\n\t        }\r\n\t        while (n != null && n.nodeType == 1 /*Node.ELEMENT_NODE*/) {\r\n\t            var nnm = n.attributes;\r\n\t            for (var i = 0; i < nnm.length; i++) {\r\n\t                var a = nnm.item(i);\r\n\t                var aname = a.name || a.nodeName;\r\n\t                if ((aname === \"xmlns\" && prefix === \"\")\r\n\t                    || aname === \"xmlns:\" + prefix) {\r\n\t                    return String(a.value || a.nodeValue);\r\n\t                }\r\n\t            }\r\n\t            n = n.parentNode;\r\n\t        }\r\n\t        return null;\r\n\t    };\r\n\r\n\t    // Functions /////////////////////////////////////////////////////////////////\r\n\r\n\t    var Functions = new Object();\r\n\r\n\t    Functions.last = function (c) {\r\n\t        if (arguments.length != 1) {\r\n\t            throw new Error(\"Function last expects ()\");\r\n\t        }\r\n\r\n\t        return new XNumber(c.contextSize);\r\n\t    };\r\n\r\n\t    Functions.position = function (c) {\r\n\t        if (arguments.length != 1) {\r\n\t            throw new Error(\"Function position expects ()\");\r\n\t        }\r\n\r\n\t        return new XNumber(c.contextPosition);\r\n\t    };\r\n\r\n\t    Functions.count = function () {\r\n\t        var c = arguments[0];\r\n\t        var ns;\r\n\t        if (arguments.length != 2 || !Utilities.instance_of(ns = arguments[1].evaluate(c), XNodeSet)) {\r\n\t            throw new Error(\"Function count expects (node-set)\");\r\n\t        }\r\n\t        return new XNumber(ns.size);\r\n\t    };\r\n\r\n\t    Functions.id = function () {\r\n\t        var c = arguments[0];\r\n\t        var id;\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function id expects (object)\");\r\n\t        }\r\n\t        id = arguments[1].evaluate(c);\r\n\t        if (Utilities.instance_of(id, XNodeSet)) {\r\n\t            id = id.toArray().join(\" \");\r\n\t        } else {\r\n\t            id = id.stringValue();\r\n\t        }\r\n\t        var ids = id.split(/[\\x0d\\x0a\\x09\\x20]+/);\r\n\t        var ns = new XNodeSet();\r\n\t        var doc = c.contextNode.nodeType == 9 /*Node.DOCUMENT_NODE*/\r\n\t            ? c.contextNode\r\n\t            : c.contextNode.ownerDocument;\r\n\t        for (var i = 0; i < ids.length; i++) {\r\n\t            var n;\r\n\t            if (doc.getElementById) {\r\n\t                n = doc.getElementById(ids[i]);\r\n\t            } else {\r\n\t                n = Utilities.getElementById(doc, ids[i]);\r\n\t            }\r\n\t            if (n != null) {\r\n\t                ns.add(n);\r\n\t            }\r\n\t        }\r\n\t        return ns;\r\n\t    };\r\n\r\n\t    Functions.localName = function (c, eNode) {\r\n\t        var n;\r\n\r\n\t        if (arguments.length == 1) {\r\n\t            n = c.contextNode;\r\n\t        } else if (arguments.length == 2) {\r\n\t            n = eNode.evaluate(c).first();\r\n\t        } else {\r\n\t            throw new Error(\"Function local-name expects (node-set?)\");\r\n\t        }\r\n\r\n\t        if (n == null) {\r\n\t            return new XString(\"\");\r\n\t        }\r\n\r\n\t        return new XString(\r\n\t            n.localName ||     //  standard elements and attributes\r\n\t            n.baseName ||     //  IE\r\n\t            n.target ||     //  processing instructions\r\n\t            n.nodeName ||     //  DOM1 elements\r\n\t            \"\"                 //  fallback\r\n\t        );\r\n\t    };\r\n\r\n\t    Functions.namespaceURI = function () {\r\n\t        var c = arguments[0];\r\n\t        var n;\r\n\t        if (arguments.length == 1) {\r\n\t            n = c.contextNode;\r\n\t        } else if (arguments.length == 2) {\r\n\t            n = arguments[1].evaluate(c).first();\r\n\t        } else {\r\n\t            throw new Error(\"Function namespace-uri expects (node-set?)\");\r\n\t        }\r\n\t        if (n == null) {\r\n\t            return new XString(\"\");\r\n\t        }\r\n\t        return new XString(n.namespaceURI);\r\n\t    };\r\n\r\n\t    Functions.name = function () {\r\n\t        var c = arguments[0];\r\n\t        var n;\r\n\t        if (arguments.length == 1) {\r\n\t            n = c.contextNode;\r\n\t        } else if (arguments.length == 2) {\r\n\t            n = arguments[1].evaluate(c).first();\r\n\t        } else {\r\n\t            throw new Error(\"Function name expects (node-set?)\");\r\n\t        }\r\n\t        if (n == null) {\r\n\t            return new XString(\"\");\r\n\t        }\r\n\t        if (n.nodeType == 1 /*Node.ELEMENT_NODE*/) {\r\n\t            return new XString(n.nodeName);\r\n\t        } else if (n.nodeType == 2 /*Node.ATTRIBUTE_NODE*/) {\r\n\t            return new XString(n.name || n.nodeName);\r\n\t        } else if (n.nodeType === 7 /*Node.PROCESSING_INSTRUCTION_NODE*/) {\r\n\t            return new XString(n.target || n.nodeName);\r\n\t        } else if (n.localName == null) {\r\n\t            return new XString(\"\");\r\n\t        } else {\r\n\t            return new XString(n.localName);\r\n\t        }\r\n\t    };\r\n\r\n\t    Functions.string = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length == 1) {\r\n\t            return new XString(XNodeSet.prototype.stringForNode(c.contextNode));\r\n\t        } else if (arguments.length == 2) {\r\n\t            return arguments[1].evaluate(c).string();\r\n\t        }\r\n\t        throw new Error(\"Function string expects (object?)\");\r\n\t    };\r\n\r\n\t    Functions.concat = function (c) {\r\n\t        if (arguments.length < 3) {\r\n\t            throw new Error(\"Function concat expects (string, string[, string]*)\");\r\n\t        }\r\n\t        var s = \"\";\r\n\t        for (var i = 1; i < arguments.length; i++) {\r\n\t            s += arguments[i].evaluate(c).stringValue();\r\n\t        }\r\n\t        return new XString(s);\r\n\t    };\r\n\r\n\t    Functions.startsWith = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 3) {\r\n\t            throw new Error(\"Function startsWith expects (string, string)\");\r\n\t        }\r\n\t        var s1 = arguments[1].evaluate(c).stringValue();\r\n\t        var s2 = arguments[2].evaluate(c).stringValue();\r\n\t        return new XBoolean(s1.substring(0, s2.length) == s2);\r\n\t    };\r\n\r\n\t    Functions.contains = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 3) {\r\n\t            throw new Error(\"Function contains expects (string, string)\");\r\n\t        }\r\n\t        var s1 = arguments[1].evaluate(c).stringValue();\r\n\t        var s2 = arguments[2].evaluate(c).stringValue();\r\n\t        return new XBoolean(s1.indexOf(s2) !== -1);\r\n\t    };\r\n\r\n\t    Functions.substringBefore = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 3) {\r\n\t            throw new Error(\"Function substring-before expects (string, string)\");\r\n\t        }\r\n\t        var s1 = arguments[1].evaluate(c).stringValue();\r\n\t        var s2 = arguments[2].evaluate(c).stringValue();\r\n\t        return new XString(s1.substring(0, s1.indexOf(s2)));\r\n\t    };\r\n\r\n\t    Functions.substringAfter = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 3) {\r\n\t            throw new Error(\"Function substring-after expects (string, string)\");\r\n\t        }\r\n\t        var s1 = arguments[1].evaluate(c).stringValue();\r\n\t        var s2 = arguments[2].evaluate(c).stringValue();\r\n\t        if (s2.length == 0) {\r\n\t            return new XString(s1);\r\n\t        }\r\n\t        var i = s1.indexOf(s2);\r\n\t        if (i == -1) {\r\n\t            return new XString(\"\");\r\n\t        }\r\n\t        return new XString(s1.substring(i + s2.length));\r\n\t    };\r\n\r\n\t    Functions.substring = function () {\r\n\t        var c = arguments[0];\r\n\t        if (!(arguments.length == 3 || arguments.length == 4)) {\r\n\t            throw new Error(\"Function substring expects (string, number, number?)\");\r\n\t        }\r\n\t        var s = arguments[1].evaluate(c).stringValue();\r\n\t        var n1 = Math.round(arguments[2].evaluate(c).numberValue()) - 1;\r\n\t        var n2 = arguments.length == 4 ? n1 + Math.round(arguments[3].evaluate(c).numberValue()) : undefined;\r\n\t        return new XString(s.substring(n1, n2));\r\n\t    };\r\n\r\n\t    Functions.stringLength = function () {\r\n\t        var c = arguments[0];\r\n\t        var s;\r\n\t        if (arguments.length == 1) {\r\n\t            s = XNodeSet.prototype.stringForNode(c.contextNode);\r\n\t        } else if (arguments.length == 2) {\r\n\t            s = arguments[1].evaluate(c).stringValue();\r\n\t        } else {\r\n\t            throw new Error(\"Function string-length expects (string?)\");\r\n\t        }\r\n\t        return new XNumber(s.length);\r\n\t    };\r\n\r\n\t    Functions.normalizeSpace = function () {\r\n\t        var c = arguments[0];\r\n\t        var s;\r\n\t        if (arguments.length == 1) {\r\n\t            s = XNodeSet.prototype.stringForNode(c.contextNode);\r\n\t        } else if (arguments.length == 2) {\r\n\t            s = arguments[1].evaluate(c).stringValue();\r\n\t        } else {\r\n\t            throw new Error(\"Function normalize-space expects (string?)\");\r\n\t        }\r\n\t        var i = 0;\r\n\t        var j = s.length - 1;\r\n\t        while (Utilities.isSpace(s.charCodeAt(j))) {\r\n\t            j--;\r\n\t        }\r\n\t        var t = \"\";\r\n\t        while (i <= j && Utilities.isSpace(s.charCodeAt(i))) {\r\n\t            i++;\r\n\t        }\r\n\t        while (i <= j) {\r\n\t            if (Utilities.isSpace(s.charCodeAt(i))) {\r\n\t                t += \" \";\r\n\t                while (i <= j && Utilities.isSpace(s.charCodeAt(i))) {\r\n\t                    i++;\r\n\t                }\r\n\t            } else {\r\n\t                t += s.charAt(i);\r\n\t                i++;\r\n\t            }\r\n\t        }\r\n\t        return new XString(t);\r\n\t    };\r\n\r\n\t    Functions.translate = function (c, eValue, eFrom, eTo) {\r\n\t        if (arguments.length != 4) {\r\n\t            throw new Error(\"Function translate expects (string, string, string)\");\r\n\t        }\r\n\r\n\t        var value = eValue.evaluate(c).stringValue();\r\n\t        var from = eFrom.evaluate(c).stringValue();\r\n\t        var to = eTo.evaluate(c).stringValue();\r\n\r\n\t        var cMap = reduce(function (acc, ch, i) {\r\n\t            if (!(ch in acc)) {\r\n\t                acc[ch] = i > to.length ? '' : to[i];\r\n\t            }\r\n\t            return acc;\r\n\t        }, {}, from);\r\n\r\n\t        var t = join(\r\n\t            '',\r\n\t            map(function (ch) {\r\n\t                return ch in cMap ? cMap[ch] : ch;\r\n\t            }, value)\r\n\t        );\r\n\r\n\t        return new XString(t);\r\n\t    };\r\n\r\n\t    Functions.boolean_ = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function boolean expects (object)\");\r\n\t        }\r\n\t        return arguments[1].evaluate(c).bool();\r\n\t    };\r\n\r\n\t    Functions.not = function (c, eValue) {\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function not expects (object)\");\r\n\t        }\r\n\t        return eValue.evaluate(c).bool().not();\r\n\t    };\r\n\r\n\t    Functions.true_ = function () {\r\n\t        if (arguments.length != 1) {\r\n\t            throw new Error(\"Function true expects ()\");\r\n\t        }\r\n\t        return XBoolean.true_;\r\n\t    };\r\n\r\n\t    Functions.false_ = function () {\r\n\t        if (arguments.length != 1) {\r\n\t            throw new Error(\"Function false expects ()\");\r\n\t        }\r\n\t        return XBoolean.false_;\r\n\t    };\r\n\r\n\t    Functions.lang = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function lang expects (string)\");\r\n\t        }\r\n\t        var lang;\r\n\t        for (var n = c.contextNode; n != null && n.nodeType != 9 /*Node.DOCUMENT_NODE*/; n = n.parentNode) {\r\n\t            var a = n.getAttributeNS(XPath.XML_NAMESPACE_URI, \"lang\");\r\n\t            if (a != null) {\r\n\t                lang = String(a);\r\n\t                break;\r\n\t            }\r\n\t        }\r\n\t        if (lang == null) {\r\n\t            return XBoolean.false_;\r\n\t        }\r\n\t        var s = arguments[1].evaluate(c).stringValue();\r\n\t        return new XBoolean(lang.substring(0, s.length) == s\r\n\t            && (lang.length == s.length || lang.charAt(s.length) == '-'));\r\n\t    };\r\n\r\n\t    Functions.number = function () {\r\n\t        var c = arguments[0];\r\n\t        if (!(arguments.length == 1 || arguments.length == 2)) {\r\n\t            throw new Error(\"Function number expects (object?)\");\r\n\t        }\r\n\t        if (arguments.length == 1) {\r\n\t            return new XNumber(XNodeSet.prototype.stringForNode(c.contextNode));\r\n\t        }\r\n\t        return arguments[1].evaluate(c).number();\r\n\t    };\r\n\r\n\t    Functions.sum = function () {\r\n\t        var c = arguments[0];\r\n\t        var ns;\r\n\t        if (arguments.length != 2 || !Utilities.instance_of((ns = arguments[1].evaluate(c)), XNodeSet)) {\r\n\t            throw new Error(\"Function sum expects (node-set)\");\r\n\t        }\r\n\t        ns = ns.toUnsortedArray();\r\n\t        var n = 0;\r\n\t        for (var i = 0; i < ns.length; i++) {\r\n\t            n += new XNumber(XNodeSet.prototype.stringForNode(ns[i])).numberValue();\r\n\t        }\r\n\t        return new XNumber(n);\r\n\t    };\r\n\r\n\t    Functions.floor = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function floor expects (number)\");\r\n\t        }\r\n\t        return new XNumber(Math.floor(arguments[1].evaluate(c).numberValue()));\r\n\t    };\r\n\r\n\t    Functions.ceiling = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function ceiling expects (number)\");\r\n\t        }\r\n\t        return new XNumber(Math.ceil(arguments[1].evaluate(c).numberValue()));\r\n\t    };\r\n\r\n\t    Functions.round = function () {\r\n\t        var c = arguments[0];\r\n\t        if (arguments.length != 2) {\r\n\t            throw new Error(\"Function round expects (number)\");\r\n\t        }\r\n\t        return new XNumber(Math.round(arguments[1].evaluate(c).numberValue()));\r\n\t    };\r\n\r\n\t    // Utilities /////////////////////////////////////////////////////////////////\r\n\r\n\t    var Utilities = new Object();\r\n\r\n\t    Utilities.isAttribute = function (val) {\r\n\t        return val && (val.nodeType === 2 || val.ownerElement);\r\n\t    };\r\n\r\n\t    Utilities.splitQName = function (qn) {\r\n\t        var i = qn.indexOf(\":\");\r\n\t        if (i == -1) {\r\n\t            return [null, qn];\r\n\t        }\r\n\t        return [qn.substring(0, i), qn.substring(i + 1)];\r\n\t    };\r\n\r\n\t    Utilities.resolveQName = function (qn, nr, n, useDefault) {\r\n\t        var parts = Utilities.splitQName(qn);\r\n\t        if (parts[0] != null) {\r\n\t            parts[0] = nr.getNamespace(parts[0], n);\r\n\t        } else {\r\n\t            if (useDefault) {\r\n\t                parts[0] = nr.getNamespace(\"\", n);\r\n\t                if (parts[0] == null) {\r\n\t                    parts[0] = \"\";\r\n\t                }\r\n\t            } else {\r\n\t                parts[0] = \"\";\r\n\t            }\r\n\t        }\r\n\t        return parts;\r\n\t    };\r\n\r\n\t    Utilities.isSpace = function (c) {\r\n\t        return c == 0x9 || c == 0xd || c == 0xa || c == 0x20;\r\n\t    };\r\n\r\n\t    Utilities.isLetter = function (c) {\r\n\t        return c >= 0x0041 && c <= 0x005A ||\r\n\t            c >= 0x0061 && c <= 0x007A ||\r\n\t            c >= 0x00C0 && c <= 0x00D6 ||\r\n\t            c >= 0x00D8 && c <= 0x00F6 ||\r\n\t            c >= 0x00F8 && c <= 0x00FF ||\r\n\t            c >= 0x0100 && c <= 0x0131 ||\r\n\t            c >= 0x0134 && c <= 0x013E ||\r\n\t            c >= 0x0141 && c <= 0x0148 ||\r\n\t            c >= 0x014A && c <= 0x017E ||\r\n\t            c >= 0x0180 && c <= 0x01C3 ||\r\n\t            c >= 0x01CD && c <= 0x01F0 ||\r\n\t            c >= 0x01F4 && c <= 0x01F5 ||\r\n\t            c >= 0x01FA && c <= 0x0217 ||\r\n\t            c >= 0x0250 && c <= 0x02A8 ||\r\n\t            c >= 0x02BB && c <= 0x02C1 ||\r\n\t            c == 0x0386 ||\r\n\t            c >= 0x0388 && c <= 0x038A ||\r\n\t            c == 0x038C ||\r\n\t            c >= 0x038E && c <= 0x03A1 ||\r\n\t            c >= 0x03A3 && c <= 0x03CE ||\r\n\t            c >= 0x03D0 && c <= 0x03D6 ||\r\n\t            c == 0x03DA ||\r\n\t            c == 0x03DC ||\r\n\t            c == 0x03DE ||\r\n\t            c == 0x03E0 ||\r\n\t            c >= 0x03E2 && c <= 0x03F3 ||\r\n\t            c >= 0x0401 && c <= 0x040C ||\r\n\t            c >= 0x040E && c <= 0x044F ||\r\n\t            c >= 0x0451 && c <= 0x045C ||\r\n\t            c >= 0x045E && c <= 0x0481 ||\r\n\t            c >= 0x0490 && c <= 0x04C4 ||\r\n\t            c >= 0x04C7 && c <= 0x04C8 ||\r\n\t            c >= 0x04CB && c <= 0x04CC ||\r\n\t            c >= 0x04D0 && c <= 0x04EB ||\r\n\t            c >= 0x04EE && c <= 0x04F5 ||\r\n\t            c >= 0x04F8 && c <= 0x04F9 ||\r\n\t            c >= 0x0531 && c <= 0x0556 ||\r\n\t            c == 0x0559 ||\r\n\t            c >= 0x0561 && c <= 0x0586 ||\r\n\t            c >= 0x05D0 && c <= 0x05EA ||\r\n\t            c >= 0x05F0 && c <= 0x05F2 ||\r\n\t            c >= 0x0621 && c <= 0x063A ||\r\n\t            c >= 0x0641 && c <= 0x064A ||\r\n\t            c >= 0x0671 && c <= 0x06B7 ||\r\n\t            c >= 0x06BA && c <= 0x06BE ||\r\n\t            c >= 0x06C0 && c <= 0x06CE ||\r\n\t            c >= 0x06D0 && c <= 0x06D3 ||\r\n\t            c == 0x06D5 ||\r\n\t            c >= 0x06E5 && c <= 0x06E6 ||\r\n\t            c >= 0x0905 && c <= 0x0939 ||\r\n\t            c == 0x093D ||\r\n\t            c >= 0x0958 && c <= 0x0961 ||\r\n\t            c >= 0x0985 && c <= 0x098C ||\r\n\t            c >= 0x098F && c <= 0x0990 ||\r\n\t            c >= 0x0993 && c <= 0x09A8 ||\r\n\t            c >= 0x09AA && c <= 0x09B0 ||\r\n\t            c == 0x09B2 ||\r\n\t            c >= 0x09B6 && c <= 0x09B9 ||\r\n\t            c >= 0x09DC && c <= 0x09DD ||\r\n\t            c >= 0x09DF && c <= 0x09E1 ||\r\n\t            c >= 0x09F0 && c <= 0x09F1 ||\r\n\t            c >= 0x0A05 && c <= 0x0A0A ||\r\n\t            c >= 0x0A0F && c <= 0x0A10 ||\r\n\t            c >= 0x0A13 && c <= 0x0A28 ||\r\n\t            c >= 0x0A2A && c <= 0x0A30 ||\r\n\t            c >= 0x0A32 && c <= 0x0A33 ||\r\n\t            c >= 0x0A35 && c <= 0x0A36 ||\r\n\t            c >= 0x0A38 && c <= 0x0A39 ||\r\n\t            c >= 0x0A59 && c <= 0x0A5C ||\r\n\t            c == 0x0A5E ||\r\n\t            c >= 0x0A72 && c <= 0x0A74 ||\r\n\t            c >= 0x0A85 && c <= 0x0A8B ||\r\n\t            c == 0x0A8D ||\r\n\t            c >= 0x0A8F && c <= 0x0A91 ||\r\n\t            c >= 0x0A93 && c <= 0x0AA8 ||\r\n\t            c >= 0x0AAA && c <= 0x0AB0 ||\r\n\t            c >= 0x0AB2 && c <= 0x0AB3 ||\r\n\t            c >= 0x0AB5 && c <= 0x0AB9 ||\r\n\t            c == 0x0ABD ||\r\n\t            c == 0x0AE0 ||\r\n\t            c >= 0x0B05 && c <= 0x0B0C ||\r\n\t            c >= 0x0B0F && c <= 0x0B10 ||\r\n\t            c >= 0x0B13 && c <= 0x0B28 ||\r\n\t            c >= 0x0B2A && c <= 0x0B30 ||\r\n\t            c >= 0x0B32 && c <= 0x0B33 ||\r\n\t            c >= 0x0B36 && c <= 0x0B39 ||\r\n\t            c == 0x0B3D ||\r\n\t            c >= 0x0B5C && c <= 0x0B5D ||\r\n\t            c >= 0x0B5F && c <= 0x0B61 ||\r\n\t            c >= 0x0B85 && c <= 0x0B8A ||\r\n\t            c >= 0x0B8E && c <= 0x0B90 ||\r\n\t            c >= 0x0B92 && c <= 0x0B95 ||\r\n\t            c >= 0x0B99 && c <= 0x0B9A ||\r\n\t            c == 0x0B9C ||\r\n\t            c >= 0x0B9E && c <= 0x0B9F ||\r\n\t            c >= 0x0BA3 && c <= 0x0BA4 ||\r\n\t            c >= 0x0BA8 && c <= 0x0BAA ||\r\n\t            c >= 0x0BAE && c <= 0x0BB5 ||\r\n\t            c >= 0x0BB7 && c <= 0x0BB9 ||\r\n\t            c >= 0x0C05 && c <= 0x0C0C ||\r\n\t            c >= 0x0C0E && c <= 0x0C10 ||\r\n\t            c >= 0x0C12 && c <= 0x0C28 ||\r\n\t            c >= 0x0C2A && c <= 0x0C33 ||\r\n\t            c >= 0x0C35 && c <= 0x0C39 ||\r\n\t            c >= 0x0C60 && c <= 0x0C61 ||\r\n\t            c >= 0x0C85 && c <= 0x0C8C ||\r\n\t            c >= 0x0C8E && c <= 0x0C90 ||\r\n\t            c >= 0x0C92 && c <= 0x0CA8 ||\r\n\t            c >= 0x0CAA && c <= 0x0CB3 ||\r\n\t            c >= 0x0CB5 && c <= 0x0CB9 ||\r\n\t            c == 0x0CDE ||\r\n\t            c >= 0x0CE0 && c <= 0x0CE1 ||\r\n\t            c >= 0x0D05 && c <= 0x0D0C ||\r\n\t            c >= 0x0D0E && c <= 0x0D10 ||\r\n\t            c >= 0x0D12 && c <= 0x0D28 ||\r\n\t            c >= 0x0D2A && c <= 0x0D39 ||\r\n\t            c >= 0x0D60 && c <= 0x0D61 ||\r\n\t            c >= 0x0E01 && c <= 0x0E2E ||\r\n\t            c == 0x0E30 ||\r\n\t            c >= 0x0E32 && c <= 0x0E33 ||\r\n\t            c >= 0x0E40 && c <= 0x0E45 ||\r\n\t            c >= 0x0E81 && c <= 0x0E82 ||\r\n\t            c == 0x0E84 ||\r\n\t            c >= 0x0E87 && c <= 0x0E88 ||\r\n\t            c == 0x0E8A ||\r\n\t            c == 0x0E8D ||\r\n\t            c >= 0x0E94 && c <= 0x0E97 ||\r\n\t            c >= 0x0E99 && c <= 0x0E9F ||\r\n\t            c >= 0x0EA1 && c <= 0x0EA3 ||\r\n\t            c == 0x0EA5 ||\r\n\t            c == 0x0EA7 ||\r\n\t            c >= 0x0EAA && c <= 0x0EAB ||\r\n\t            c >= 0x0EAD && c <= 0x0EAE ||\r\n\t            c == 0x0EB0 ||\r\n\t            c >= 0x0EB2 && c <= 0x0EB3 ||\r\n\t            c == 0x0EBD ||\r\n\t            c >= 0x0EC0 && c <= 0x0EC4 ||\r\n\t            c >= 0x0F40 && c <= 0x0F47 ||\r\n\t            c >= 0x0F49 && c <= 0x0F69 ||\r\n\t            c >= 0x10A0 && c <= 0x10C5 ||\r\n\t            c >= 0x10D0 && c <= 0x10F6 ||\r\n\t            c == 0x1100 ||\r\n\t            c >= 0x1102 && c <= 0x1103 ||\r\n\t            c >= 0x1105 && c <= 0x1107 ||\r\n\t            c == 0x1109 ||\r\n\t            c >= 0x110B && c <= 0x110C ||\r\n\t            c >= 0x110E && c <= 0x1112 ||\r\n\t            c == 0x113C ||\r\n\t            c == 0x113E ||\r\n\t            c == 0x1140 ||\r\n\t            c == 0x114C ||\r\n\t            c == 0x114E ||\r\n\t            c == 0x1150 ||\r\n\t            c >= 0x1154 && c <= 0x1155 ||\r\n\t            c == 0x1159 ||\r\n\t            c >= 0x115F && c <= 0x1161 ||\r\n\t            c == 0x1163 ||\r\n\t            c == 0x1165 ||\r\n\t            c == 0x1167 ||\r\n\t            c == 0x1169 ||\r\n\t            c >= 0x116D && c <= 0x116E ||\r\n\t            c >= 0x1172 && c <= 0x1173 ||\r\n\t            c == 0x1175 ||\r\n\t            c == 0x119E ||\r\n\t            c == 0x11A8 ||\r\n\t            c == 0x11AB ||\r\n\t            c >= 0x11AE && c <= 0x11AF ||\r\n\t            c >= 0x11B7 && c <= 0x11B8 ||\r\n\t            c == 0x11BA ||\r\n\t            c >= 0x11BC && c <= 0x11C2 ||\r\n\t            c == 0x11EB ||\r\n\t            c == 0x11F0 ||\r\n\t            c == 0x11F9 ||\r\n\t            c >= 0x1E00 && c <= 0x1E9B ||\r\n\t            c >= 0x1EA0 && c <= 0x1EF9 ||\r\n\t            c >= 0x1F00 && c <= 0x1F15 ||\r\n\t            c >= 0x1F18 && c <= 0x1F1D ||\r\n\t            c >= 0x1F20 && c <= 0x1F45 ||\r\n\t            c >= 0x1F48 && c <= 0x1F4D ||\r\n\t            c >= 0x1F50 && c <= 0x1F57 ||\r\n\t            c == 0x1F59 ||\r\n\t            c == 0x1F5B ||\r\n\t            c == 0x1F5D ||\r\n\t            c >= 0x1F5F && c <= 0x1F7D ||\r\n\t            c >= 0x1F80 && c <= 0x1FB4 ||\r\n\t            c >= 0x1FB6 && c <= 0x1FBC ||\r\n\t            c == 0x1FBE ||\r\n\t            c >= 0x1FC2 && c <= 0x1FC4 ||\r\n\t            c >= 0x1FC6 && c <= 0x1FCC ||\r\n\t            c >= 0x1FD0 && c <= 0x1FD3 ||\r\n\t            c >= 0x1FD6 && c <= 0x1FDB ||\r\n\t            c >= 0x1FE0 && c <= 0x1FEC ||\r\n\t            c >= 0x1FF2 && c <= 0x1FF4 ||\r\n\t            c >= 0x1FF6 && c <= 0x1FFC ||\r\n\t            c == 0x2126 ||\r\n\t            c >= 0x212A && c <= 0x212B ||\r\n\t            c == 0x212E ||\r\n\t            c >= 0x2180 && c <= 0x2182 ||\r\n\t            c >= 0x3041 && c <= 0x3094 ||\r\n\t            c >= 0x30A1 && c <= 0x30FA ||\r\n\t            c >= 0x3105 && c <= 0x312C ||\r\n\t            c >= 0xAC00 && c <= 0xD7A3 ||\r\n\t            c >= 0x4E00 && c <= 0x9FA5 ||\r\n\t            c == 0x3007 ||\r\n\t            c >= 0x3021 && c <= 0x3029;\r\n\t    };\r\n\r\n\t    Utilities.isNCNameChar = function (c) {\r\n\t        return c >= 0x0030 && c <= 0x0039\r\n\t            || c >= 0x0660 && c <= 0x0669\r\n\t            || c >= 0x06F0 && c <= 0x06F9\r\n\t            || c >= 0x0966 && c <= 0x096F\r\n\t            || c >= 0x09E6 && c <= 0x09EF\r\n\t            || c >= 0x0A66 && c <= 0x0A6F\r\n\t            || c >= 0x0AE6 && c <= 0x0AEF\r\n\t            || c >= 0x0B66 && c <= 0x0B6F\r\n\t            || c >= 0x0BE7 && c <= 0x0BEF\r\n\t            || c >= 0x0C66 && c <= 0x0C6F\r\n\t            || c >= 0x0CE6 && c <= 0x0CEF\r\n\t            || c >= 0x0D66 && c <= 0x0D6F\r\n\t            || c >= 0x0E50 && c <= 0x0E59\r\n\t            || c >= 0x0ED0 && c <= 0x0ED9\r\n\t            || c >= 0x0F20 && c <= 0x0F29\r\n\t            || c == 0x002E\r\n\t            || c == 0x002D\r\n\t            || c == 0x005F\r\n\t            || Utilities.isLetter(c)\r\n\t            || c >= 0x0300 && c <= 0x0345\r\n\t            || c >= 0x0360 && c <= 0x0361\r\n\t            || c >= 0x0483 && c <= 0x0486\r\n\t            || c >= 0x0591 && c <= 0x05A1\r\n\t            || c >= 0x05A3 && c <= 0x05B9\r\n\t            || c >= 0x05BB && c <= 0x05BD\r\n\t            || c == 0x05BF\r\n\t            || c >= 0x05C1 && c <= 0x05C2\r\n\t            || c == 0x05C4\r\n\t            || c >= 0x064B && c <= 0x0652\r\n\t            || c == 0x0670\r\n\t            || c >= 0x06D6 && c <= 0x06DC\r\n\t            || c >= 0x06DD && c <= 0x06DF\r\n\t            || c >= 0x06E0 && c <= 0x06E4\r\n\t            || c >= 0x06E7 && c <= 0x06E8\r\n\t            || c >= 0x06EA && c <= 0x06ED\r\n\t            || c >= 0x0901 && c <= 0x0903\r\n\t            || c == 0x093C\r\n\t            || c >= 0x093E && c <= 0x094C\r\n\t            || c == 0x094D\r\n\t            || c >= 0x0951 && c <= 0x0954\r\n\t            || c >= 0x0962 && c <= 0x0963\r\n\t            || c >= 0x0981 && c <= 0x0983\r\n\t            || c == 0x09BC\r\n\t            || c == 0x09BE\r\n\t            || c == 0x09BF\r\n\t            || c >= 0x09C0 && c <= 0x09C4\r\n\t            || c >= 0x09C7 && c <= 0x09C8\r\n\t            || c >= 0x09CB && c <= 0x09CD\r\n\t            || c == 0x09D7\r\n\t            || c >= 0x09E2 && c <= 0x09E3\r\n\t            || c == 0x0A02\r\n\t            || c == 0x0A3C\r\n\t            || c == 0x0A3E\r\n\t            || c == 0x0A3F\r\n\t            || c >= 0x0A40 && c <= 0x0A42\r\n\t            || c >= 0x0A47 && c <= 0x0A48\r\n\t            || c >= 0x0A4B && c <= 0x0A4D\r\n\t            || c >= 0x0A70 && c <= 0x0A71\r\n\t            || c >= 0x0A81 && c <= 0x0A83\r\n\t            || c == 0x0ABC\r\n\t            || c >= 0x0ABE && c <= 0x0AC5\r\n\t            || c >= 0x0AC7 && c <= 0x0AC9\r\n\t            || c >= 0x0ACB && c <= 0x0ACD\r\n\t            || c >= 0x0B01 && c <= 0x0B03\r\n\t            || c == 0x0B3C\r\n\t            || c >= 0x0B3E && c <= 0x0B43\r\n\t            || c >= 0x0B47 && c <= 0x0B48\r\n\t            || c >= 0x0B4B && c <= 0x0B4D\r\n\t            || c >= 0x0B56 && c <= 0x0B57\r\n\t            || c >= 0x0B82 && c <= 0x0B83\r\n\t            || c >= 0x0BBE && c <= 0x0BC2\r\n\t            || c >= 0x0BC6 && c <= 0x0BC8\r\n\t            || c >= 0x0BCA && c <= 0x0BCD\r\n\t            || c == 0x0BD7\r\n\t            || c >= 0x0C01 && c <= 0x0C03\r\n\t            || c >= 0x0C3E && c <= 0x0C44\r\n\t            || c >= 0x0C46 && c <= 0x0C48\r\n\t            || c >= 0x0C4A && c <= 0x0C4D\r\n\t            || c >= 0x0C55 && c <= 0x0C56\r\n\t            || c >= 0x0C82 && c <= 0x0C83\r\n\t            || c >= 0x0CBE && c <= 0x0CC4\r\n\t            || c >= 0x0CC6 && c <= 0x0CC8\r\n\t            || c >= 0x0CCA && c <= 0x0CCD\r\n\t            || c >= 0x0CD5 && c <= 0x0CD6\r\n\t            || c >= 0x0D02 && c <= 0x0D03\r\n\t            || c >= 0x0D3E && c <= 0x0D43\r\n\t            || c >= 0x0D46 && c <= 0x0D48\r\n\t            || c >= 0x0D4A && c <= 0x0D4D\r\n\t            || c == 0x0D57\r\n\t            || c == 0x0E31\r\n\t            || c >= 0x0E34 && c <= 0x0E3A\r\n\t            || c >= 0x0E47 && c <= 0x0E4E\r\n\t            || c == 0x0EB1\r\n\t            || c >= 0x0EB4 && c <= 0x0EB9\r\n\t            || c >= 0x0EBB && c <= 0x0EBC\r\n\t            || c >= 0x0EC8 && c <= 0x0ECD\r\n\t            || c >= 0x0F18 && c <= 0x0F19\r\n\t            || c == 0x0F35\r\n\t            || c == 0x0F37\r\n\t            || c == 0x0F39\r\n\t            || c == 0x0F3E\r\n\t            || c == 0x0F3F\r\n\t            || c >= 0x0F71 && c <= 0x0F84\r\n\t            || c >= 0x0F86 && c <= 0x0F8B\r\n\t            || c >= 0x0F90 && c <= 0x0F95\r\n\t            || c == 0x0F97\r\n\t            || c >= 0x0F99 && c <= 0x0FAD\r\n\t            || c >= 0x0FB1 && c <= 0x0FB7\r\n\t            || c == 0x0FB9\r\n\t            || c >= 0x20D0 && c <= 0x20DC\r\n\t            || c == 0x20E1\r\n\t            || c >= 0x302A && c <= 0x302F\r\n\t            || c == 0x3099\r\n\t            || c == 0x309A\r\n\t            || c == 0x00B7\r\n\t            || c == 0x02D0\r\n\t            || c == 0x02D1\r\n\t            || c == 0x0387\r\n\t            || c == 0x0640\r\n\t            || c == 0x0E46\r\n\t            || c == 0x0EC6\r\n\t            || c == 0x3005\r\n\t            || c >= 0x3031 && c <= 0x3035\r\n\t            || c >= 0x309D && c <= 0x309E\r\n\t            || c >= 0x30FC && c <= 0x30FE;\r\n\t    };\r\n\r\n\t    Utilities.coalesceText = function (n) {\r\n\t        for (var m = n.firstChild; m != null; m = m.nextSibling) {\r\n\t            if (m.nodeType == 3 /*Node.TEXT_NODE*/ || m.nodeType == 4 /*Node.CDATA_SECTION_NODE*/) {\r\n\t                var s = m.nodeValue;\r\n\t                var first = m;\r\n\t                m = m.nextSibling;\r\n\t                while (m != null && (m.nodeType == 3 /*Node.TEXT_NODE*/ || m.nodeType == 4 /*Node.CDATA_SECTION_NODE*/)) {\r\n\t                    s += m.nodeValue;\r\n\t                    var del = m;\r\n\t                    m = m.nextSibling;\r\n\t                    del.parentNode.removeChild(del);\r\n\t                }\r\n\t                if (first.nodeType == 4 /*Node.CDATA_SECTION_NODE*/) {\r\n\t                    var p = first.parentNode;\r\n\t                    if (first.nextSibling == null) {\r\n\t                        p.removeChild(first);\r\n\t                        p.appendChild(p.ownerDocument.createTextNode(s));\r\n\t                    } else {\r\n\t                        var next = first.nextSibling;\r\n\t                        p.removeChild(first);\r\n\t                        p.insertBefore(p.ownerDocument.createTextNode(s), next);\r\n\t                    }\r\n\t                } else {\r\n\t                    first.nodeValue = s;\r\n\t                }\r\n\t                if (m == null) {\r\n\t                    break;\r\n\t                }\r\n\t            } else if (m.nodeType == 1 /*Node.ELEMENT_NODE*/) {\r\n\t                Utilities.coalesceText(m);\r\n\t            }\r\n\t        }\r\n\t    };\r\n\r\n\t    Utilities.instance_of = function (o, c) {\r\n\t        while (o != null) {\r\n\t            if (o.constructor === c) {\r\n\t                return true;\r\n\t            }\r\n\t            if (o === Object) {\r\n\t                return false;\r\n\t            }\r\n\t            o = o.constructor.superclass;\r\n\t        }\r\n\t        return false;\r\n\t    };\r\n\r\n\t    Utilities.getElementById = function (n, id) {\r\n\t        // Note that this does not check the DTD to check for actual\r\n\t        // attributes of type ID, so this may be a bit wrong.\r\n\t        if (n.nodeType == 1 /*Node.ELEMENT_NODE*/) {\r\n\t            if (n.getAttribute(\"id\") == id\r\n\t                || n.getAttributeNS(null, \"id\") == id) {\r\n\t                return n;\r\n\t            }\r\n\t        }\r\n\t        for (var m = n.firstChild; m != null; m = m.nextSibling) {\r\n\t            var res = Utilities.getElementById(m, id);\r\n\t            if (res != null) {\r\n\t                return res;\r\n\t            }\r\n\t        }\r\n\t        return null;\r\n\t    };\r\n\r\n\t    // XPathException ////////////////////////////////////////////////////////////\r\n\r\n\t    var XPathException = (function () {\r\n\t        function getMessage(code, exception) {\r\n\t            var msg = exception ? \": \" + exception.toString() : \"\";\r\n\t            switch (code) {\r\n\t                case XPathException.INVALID_EXPRESSION_ERR:\r\n\t                    return \"Invalid expression\" + msg;\r\n\t                case XPathException.TYPE_ERR:\r\n\t                    return \"Type error\" + msg;\r\n\t            }\r\n\t            return null;\r\n\t        }\r\n\r\n\t        function XPathException(code, error, message) {\r\n\t            var err = Error.call(this, getMessage(code, error) || message);\r\n\r\n\t            err.code = code;\r\n\t            err.exception = error;\r\n\r\n\t            return err;\r\n\t        }\r\n\r\n\t        XPathException.prototype = Object.create(Error.prototype);\r\n\t        XPathException.prototype.constructor = XPathException;\r\n\t        XPathException.superclass = Error;\r\n\r\n\t        XPathException.prototype.toString = function () {\r\n\t            return this.message;\r\n\t        };\r\n\r\n\t        XPathException.fromMessage = function (message, error) {\r\n\t            return new XPathException(null, error, message);\r\n\t        };\r\n\r\n\t        XPathException.INVALID_EXPRESSION_ERR = 51;\r\n\t        XPathException.TYPE_ERR = 52;\r\n\r\n\t        return XPathException;\r\n\t    })();\r\n\r\n\t    // XPathExpression ///////////////////////////////////////////////////////////\r\n\r\n\t    XPathExpression.prototype = {};\r\n\t    XPathExpression.prototype.constructor = XPathExpression;\r\n\t    XPathExpression.superclass = Object.prototype;\r\n\r\n\t    function XPathExpression(e, r, p) {\r\n\t        this.xpath = p.parse(e);\r\n\t        this.context = new XPathContext();\r\n\t        this.context.namespaceResolver = new XPathNSResolverWrapper(r);\r\n\t    }\r\n\r\n\t    XPathExpression.getOwnerDocument = function (n) {\r\n\t        return n.nodeType === 9 /*Node.DOCUMENT_NODE*/ ? n : n.ownerDocument;\r\n\t    };\r\n\r\n\t    XPathExpression.detectHtmlDom = function (n) {\r\n\t        if (!n) { return false; }\r\n\r\n\t        var doc = XPathExpression.getOwnerDocument(n);\r\n\r\n\t        try {\r\n\t            return doc.implementation.hasFeature(\"HTML\", \"2.0\");\r\n\t        } catch (e) {\r\n\t            return true;\r\n\t        }\r\n\t    };\r\n\r\n\t    XPathExpression.prototype.evaluate = function (n, t, res) {\r\n\t        this.context.expressionContextNode = n;\r\n\t        // backward compatibility - no reliable way to detect whether the DOM is HTML, but\r\n\t        // this library has been using this method up until now, so we will continue to use it\r\n\t        // ONLY when using an XPathExpression\r\n\t        this.context.caseInsensitive = XPathExpression.detectHtmlDom(n);\r\n\r\n\t        var result = this.xpath.evaluate(this.context);\r\n\t        return new XPathResult(result, t);\r\n\t    };\r\n\r\n\t    // XPathNSResolverWrapper ////////////////////////////////////////////////////\r\n\r\n\t    XPathNSResolverWrapper.prototype = {};\r\n\t    XPathNSResolverWrapper.prototype.constructor = XPathNSResolverWrapper;\r\n\t    XPathNSResolverWrapper.superclass = Object.prototype;\r\n\r\n\t    function XPathNSResolverWrapper(r) {\r\n\t        this.xpathNSResolver = r;\r\n\t    }\r\n\r\n\t    XPathNSResolverWrapper.prototype.getNamespace = function (prefix, n) {\r\n\t        if (this.xpathNSResolver == null) {\r\n\t            return null;\r\n\t        }\r\n\t        return this.xpathNSResolver.lookupNamespaceURI(prefix);\r\n\t    };\r\n\r\n\t    // NodeXPathNSResolver ///////////////////////////////////////////////////////\r\n\r\n\t    NodeXPathNSResolver.prototype = {};\r\n\t    NodeXPathNSResolver.prototype.constructor = NodeXPathNSResolver;\r\n\t    NodeXPathNSResolver.superclass = Object.prototype;\r\n\r\n\t    function NodeXPathNSResolver(n) {\r\n\t        this.node = n;\r\n\t        this.namespaceResolver = new NamespaceResolver();\r\n\t    }\r\n\r\n\t    NodeXPathNSResolver.prototype.lookupNamespaceURI = function (prefix) {\r\n\t        return this.namespaceResolver.getNamespace(prefix, this.node);\r\n\t    };\r\n\r\n\t    // XPathResult ///////////////////////////////////////////////////////////////\r\n\r\n\t    XPathResult.prototype = {};\r\n\t    XPathResult.prototype.constructor = XPathResult;\r\n\t    XPathResult.superclass = Object.prototype;\r\n\r\n\t    function XPathResult(v, t) {\r\n\t        if (t == XPathResult.ANY_TYPE) {\r\n\t            if (v.constructor === XString) {\r\n\t                t = XPathResult.STRING_TYPE;\r\n\t            } else if (v.constructor === XNumber) {\r\n\t                t = XPathResult.NUMBER_TYPE;\r\n\t            } else if (v.constructor === XBoolean) {\r\n\t                t = XPathResult.BOOLEAN_TYPE;\r\n\t            } else if (v.constructor === XNodeSet) {\r\n\t                t = XPathResult.UNORDERED_NODE_ITERATOR_TYPE;\r\n\t            }\r\n\t        }\r\n\t        this.resultType = t;\r\n\t        switch (t) {\r\n\t            case XPathResult.NUMBER_TYPE:\r\n\t                this.numberValue = v.numberValue();\r\n\t                return;\r\n\t            case XPathResult.STRING_TYPE:\r\n\t                this.stringValue = v.stringValue();\r\n\t                return;\r\n\t            case XPathResult.BOOLEAN_TYPE:\r\n\t                this.booleanValue = v.booleanValue();\r\n\t                return;\r\n\t            case XPathResult.ANY_UNORDERED_NODE_TYPE:\r\n\t            case XPathResult.FIRST_ORDERED_NODE_TYPE:\r\n\t                if (v.constructor === XNodeSet) {\r\n\t                    this.singleNodeValue = v.first();\r\n\t                    return;\r\n\t                }\r\n\t                break;\r\n\t            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:\r\n\t            case XPathResult.ORDERED_NODE_ITERATOR_TYPE:\r\n\t                if (v.constructor === XNodeSet) {\r\n\t                    this.invalidIteratorState = false;\r\n\t                    this.nodes = v.toArray();\r\n\t                    this.iteratorIndex = 0;\r\n\t                    return;\r\n\t                }\r\n\t                break;\r\n\t            case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:\r\n\t            case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:\r\n\t                if (v.constructor === XNodeSet) {\r\n\t                    this.nodes = v.toArray();\r\n\t                    this.snapshotLength = this.nodes.length;\r\n\t                    return;\r\n\t                }\r\n\t                break;\r\n\t        }\r\n\t        throw new XPathException(XPathException.TYPE_ERR);\r\n\t    }\r\n\t    XPathResult.prototype.iterateNext = function () {\r\n\t        if (this.resultType != XPathResult.UNORDERED_NODE_ITERATOR_TYPE\r\n\t            && this.resultType != XPathResult.ORDERED_NODE_ITERATOR_TYPE) {\r\n\t            throw new XPathException(XPathException.TYPE_ERR);\r\n\t        }\r\n\t        return this.nodes[this.iteratorIndex++];\r\n\t    };\r\n\r\n\t    XPathResult.prototype.snapshotItem = function (i) {\r\n\t        if (this.resultType != XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE\r\n\t            && this.resultType != XPathResult.ORDERED_NODE_SNAPSHOT_TYPE) {\r\n\t            throw new XPathException(XPathException.TYPE_ERR);\r\n\t        }\r\n\t        return this.nodes[i];\r\n\t    };\r\n\r\n\t    XPathResult.ANY_TYPE = 0;\r\n\t    XPathResult.NUMBER_TYPE = 1;\r\n\t    XPathResult.STRING_TYPE = 2;\r\n\t    XPathResult.BOOLEAN_TYPE = 3;\r\n\t    XPathResult.UNORDERED_NODE_ITERATOR_TYPE = 4;\r\n\t    XPathResult.ORDERED_NODE_ITERATOR_TYPE = 5;\r\n\t    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE = 6;\r\n\t    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE = 7;\r\n\t    XPathResult.ANY_UNORDERED_NODE_TYPE = 8;\r\n\t    XPathResult.FIRST_ORDERED_NODE_TYPE = 9;\r\n\r\n\t    // DOM 3 XPath support ///////////////////////////////////////////////////////\r\n\r\n\t    function installDOM3XPathSupport(doc, p) {\r\n\t        doc.createExpression = function (e, r) {\r\n\t            try {\r\n\t                return new XPathExpression(e, r, p);\r\n\t            } catch (e) {\r\n\t                throw new XPathException(XPathException.INVALID_EXPRESSION_ERR, e);\r\n\t            }\r\n\t        };\r\n\t        doc.createNSResolver = function (n) {\r\n\t            return new NodeXPathNSResolver(n);\r\n\t        };\r\n\t        doc.evaluate = function (e, cn, r, t, res) {\r\n\t            if (t < 0 || t > 9) {\r\n\t                throw { code: 0, toString: function () { return \"Request type not supported\"; } };\r\n\t            }\r\n\t            return doc.createExpression(e, r, p).evaluate(cn, t, res);\r\n\t        };\r\n\t    }\r\n\t    // ---------------------------------------------------------------------------\r\n\r\n\t    // Install DOM 3 XPath support for the current document.\r\n\t    try {\r\n\t        var shouldInstall = true;\r\n\t        try {\r\n\t            if (document.implementation\r\n\t                && document.implementation.hasFeature\r\n\t                && document.implementation.hasFeature(\"XPath\", null)) {\r\n\t                shouldInstall = false;\r\n\t            }\r\n\t        } catch (e) {\r\n\t        }\r\n\t        if (shouldInstall) {\r\n\t            installDOM3XPathSupport(document, new XPathParser());\r\n\t        }\r\n\t    } catch (e) {\r\n\t    }\r\n\r\n\t    // ---------------------------------------------------------------------------\r\n\t    // exports for node.js\r\n\r\n\t    installDOM3XPathSupport(exports, new XPathParser());\r\n\r\n\t    (function () {\r\n\t        var parser = new XPathParser();\r\n\r\n\t        var defaultNSResolver = new NamespaceResolver();\r\n\t        var defaultFunctionResolver = new FunctionResolver();\r\n\t        var defaultVariableResolver = new VariableResolver();\r\n\r\n\t        function makeNSResolverFromFunction(func) {\r\n\t            return {\r\n\t                getNamespace: function (prefix, node) {\r\n\t                    var ns = func(prefix, node);\r\n\r\n\t                    return ns || defaultNSResolver.getNamespace(prefix, node);\r\n\t                }\r\n\t            };\r\n\t        }\r\n\r\n\t        function makeNSResolverFromObject(obj) {\r\n\t            return makeNSResolverFromFunction(obj.getNamespace.bind(obj));\r\n\t        }\r\n\r\n\t        function makeNSResolverFromMap(map) {\r\n\t            return makeNSResolverFromFunction(function (prefix) {\r\n\t                return map[prefix];\r\n\t            });\r\n\t        }\r\n\r\n\t        function makeNSResolver(resolver) {\r\n\t            if (resolver && typeof resolver.getNamespace === \"function\") {\r\n\t                return makeNSResolverFromObject(resolver);\r\n\t            }\r\n\r\n\t            if (typeof resolver === \"function\") {\r\n\t                return makeNSResolverFromFunction(resolver);\r\n\t            }\r\n\r\n\t            // assume prefix -> uri mapping\r\n\t            if (typeof resolver === \"object\") {\r\n\t                return makeNSResolverFromMap(resolver);\r\n\t            }\r\n\r\n\t            return defaultNSResolver;\r\n\t        }\r\n\r\n\t        /** Converts native JavaScript types to their XPath library equivalent */\r\n\t        function convertValue(value) {\r\n\t            if (value === null ||\r\n\t                typeof value === \"undefined\" ||\r\n\t                value instanceof XString ||\r\n\t                value instanceof XBoolean ||\r\n\t                value instanceof XNumber ||\r\n\t                value instanceof XNodeSet) {\r\n\t                return value;\r\n\t            }\r\n\r\n\t            switch (typeof value) {\r\n\t                case \"string\": return new XString(value);\r\n\t                case \"boolean\": return new XBoolean(value);\r\n\t                case \"number\": return new XNumber(value);\r\n\t            }\r\n\r\n\t            // assume node(s)\r\n\t            var ns = new XNodeSet();\r\n\t            ns.addArray([].concat(value));\r\n\t            return ns;\r\n\t        }\r\n\r\n\t        function makeEvaluator(func) {\r\n\t            return function (context) {\r\n\t                var args = Array.prototype.slice.call(arguments, 1).map(function (arg) {\r\n\t                    return arg.evaluate(context);\r\n\t                });\r\n\t                var result = func.apply(this, [].concat(context, args));\r\n\t                return convertValue(result);\r\n\t            };\r\n\t        }\r\n\r\n\t        function makeFunctionResolverFromFunction(func) {\r\n\t            return {\r\n\t                getFunction: function (name, namespace) {\r\n\t                    var found = func(name, namespace);\r\n\t                    if (found) {\r\n\t                        return makeEvaluator(found);\r\n\t                    }\r\n\t                    return defaultFunctionResolver.getFunction(name, namespace);\r\n\t                }\r\n\t            };\r\n\t        }\r\n\r\n\t        function makeFunctionResolverFromObject(obj) {\r\n\t            return makeFunctionResolverFromFunction(obj.getFunction.bind(obj));\r\n\t        }\r\n\r\n\t        function makeFunctionResolverFromMap(map) {\r\n\t            return makeFunctionResolverFromFunction(function (name) {\r\n\t                return map[name];\r\n\t            });\r\n\t        }\r\n\r\n\t        function makeFunctionResolver(resolver) {\r\n\t            if (resolver && typeof resolver.getFunction === \"function\") {\r\n\t                return makeFunctionResolverFromObject(resolver);\r\n\t            }\r\n\r\n\t            if (typeof resolver === \"function\") {\r\n\t                return makeFunctionResolverFromFunction(resolver);\r\n\t            }\r\n\r\n\t            // assume map\r\n\t            if (typeof resolver === \"object\") {\r\n\t                return makeFunctionResolverFromMap(resolver);\r\n\t            }\r\n\r\n\t            return defaultFunctionResolver;\r\n\t        }\r\n\r\n\t        function makeVariableResolverFromFunction(func) {\r\n\t            return {\r\n\t                getVariable: function (name, namespace) {\r\n\t                    var value = func(name, namespace);\r\n\t                    return convertValue(value);\r\n\t                }\r\n\t            };\r\n\t        }\r\n\r\n\t        function makeVariableResolver(resolver) {\r\n\t            if (resolver) {\r\n\t                if (typeof resolver.getVariable === \"function\") {\r\n\t                    return makeVariableResolverFromFunction(resolver.getVariable.bind(resolver));\r\n\t                }\r\n\r\n\t                if (typeof resolver === \"function\") {\r\n\t                    return makeVariableResolverFromFunction(resolver);\r\n\t                }\r\n\r\n\t                // assume map\r\n\t                if (typeof resolver === \"object\") {\r\n\t                    return makeVariableResolverFromFunction(function (name) {\r\n\t                        return resolver[name];\r\n\t                    });\r\n\t                }\r\n\t            }\r\n\r\n\t            return defaultVariableResolver;\r\n\t        }\r\n\r\n\t        function copyIfPresent(prop, dest, source) {\r\n\t            if (prop in source) { dest[prop] = source[prop]; }\r\n\t        }\r\n\r\n\t        function makeContext(options) {\r\n\t            var context = new XPathContext();\r\n\r\n\t            if (options) {\r\n\t                context.namespaceResolver = makeNSResolver(options.namespaces);\r\n\t                context.functionResolver = makeFunctionResolver(options.functions);\r\n\t                context.variableResolver = makeVariableResolver(options.variables);\r\n\t                context.expressionContextNode = options.node;\r\n\t                copyIfPresent('allowAnyNamespaceForNoPrefix', context, options);\r\n\t                copyIfPresent('isHtml', context, options);\r\n\t            } else {\r\n\t                context.namespaceResolver = defaultNSResolver;\r\n\t            }\r\n\r\n\t            return context;\r\n\t        }\r\n\r\n\t        function evaluate(parsedExpression, options) {\r\n\t            var context = makeContext(options);\r\n\r\n\t            return parsedExpression.evaluate(context);\r\n\t        }\r\n\r\n\t        var evaluatorPrototype = {\r\n\t            evaluate: function (options) {\r\n\t                return evaluate(this.expression, options);\r\n\t            }\r\n\r\n\t            , evaluateNumber: function (options) {\r\n\t                return this.evaluate(options).numberValue();\r\n\t            }\r\n\r\n\t            , evaluateString: function (options) {\r\n\t                return this.evaluate(options).stringValue();\r\n\t            }\r\n\r\n\t            , evaluateBoolean: function (options) {\r\n\t                return this.evaluate(options).booleanValue();\r\n\t            }\r\n\r\n\t            , evaluateNodeSet: function (options) {\r\n\t                return this.evaluate(options).nodeset();\r\n\t            }\r\n\r\n\t            , select: function (options) {\r\n\t                return this.evaluateNodeSet(options).toArray()\r\n\t            }\r\n\r\n\t            , select1: function (options) {\r\n\t                return this.select(options)[0];\r\n\t            }\r\n\t        };\r\n\r\n\t        function parse(xpath) {\r\n\t            var parsed = parser.parse(xpath);\r\n\r\n\t            return Object.create(evaluatorPrototype, {\r\n\t                expression: {\r\n\t                    value: parsed\r\n\t                }\r\n\t            });\r\n\t        }\r\n\r\n\t        exports.parse = parse;\r\n\t    })();\r\n\r\n\t    assign(\r\n\t        exports,\r\n\t        {\r\n\t            XPath,\r\n\t            XPathParser,\r\n\t            XPathResult,\r\n\r\n\t            Step,\r\n\t            PathExpr,\r\n\t            NodeTest,\r\n\t            LocationPath,\r\n\r\n\t            OrOperation,\r\n\t            AndOperation,\r\n\r\n\t            BarOperation,\r\n\r\n\t            EqualsOperation,\r\n\t            NotEqualOperation,\r\n\t            LessThanOperation,\r\n\t            GreaterThanOperation,\r\n\t            LessThanOrEqualOperation,\r\n\t            GreaterThanOrEqualOperation,\r\n\r\n\t            PlusOperation,\r\n\t            MinusOperation,\r\n\t            MultiplyOperation,\r\n\t            DivOperation,\r\n\t            ModOperation,\r\n\t            UnaryMinusOperation,\r\n\r\n\t            FunctionCall,\r\n\t            VariableReference,\r\n\r\n\t            XPathContext,\r\n\r\n\t            XNodeSet,\r\n\t            XBoolean,\r\n\t            XString,\r\n\t            XNumber,\r\n\r\n\t            NamespaceResolver,\r\n\t            FunctionResolver,\r\n\t            VariableResolver,\r\n\r\n\t            Utilities,\r\n\t        }\r\n\t    );\r\n\r\n\t    // helper\r\n\t    exports.select = function (e, doc, single) {\r\n\t        return exports.selectWithResolver(e, doc, null, single);\r\n\t    };\r\n\r\n\t    exports.useNamespaces = function (mappings) {\r\n\t        var resolver = {\r\n\t            mappings: mappings || {},\r\n\t            lookupNamespaceURI: function (prefix) {\r\n\t                return this.mappings[prefix];\r\n\t            }\r\n\t        };\r\n\r\n\t        return function (e, doc, single) {\r\n\t            return exports.selectWithResolver(e, doc, resolver, single);\r\n\t        };\r\n\t    };\r\n\r\n\t    exports.selectWithResolver = function (e, doc, resolver, single) {\r\n\t        var expression = new XPathExpression(e, resolver, new XPathParser());\r\n\t        var type = XPathResult.ANY_TYPE;\r\n\r\n\t        var result = expression.evaluate(doc, type, null);\r\n\r\n\t        if (result.resultType == XPathResult.STRING_TYPE) {\r\n\t            result = result.stringValue;\r\n\t        }\r\n\t        else if (result.resultType == XPathResult.NUMBER_TYPE) {\r\n\t            result = result.numberValue;\r\n\t        }\r\n\t        else if (result.resultType == XPathResult.BOOLEAN_TYPE) {\r\n\t            result = result.booleanValue;\r\n\t        }\r\n\t        else {\r\n\t            result = result.nodes;\r\n\t            if (single) {\r\n\t                result = result[0];\r\n\t            }\r\n\t        }\r\n\r\n\t        return result;\r\n\t    };\r\n\r\n\t    exports.select1 = function (e, doc) {\r\n\t        return exports.select(e, doc, true);\r\n\t    };\r\n\r\n\t    // end non-node wrapper\r\n\t})(xpath);\n\t});\n\n\tconst namespaceMap = {\n\t    xml: 'http://www.w3.org/XML/1998/namespace',\n\t    opf: 'http://www.idpf.org/2007/opf',\n\t    dc: 'http://purl.org/dc/elements/1.1/',\n\t    ocf: 'urn:oasis:names:tc:opendocument:xmlns:container',\n\t};\n\tconst selectAll = xpath_1.useNamespaces(namespaceMap);\n\tconst select = function (expression, node) {\n\t    return selectAll(expression, node, true);\n\t};\n\t/**\n\t * inverse of `namespaceMap`\n\t * ```\n\t *  {\n\t *    'http://www.idpf.org/2007/opf': 'opf',\n\t *    ...\n\t *  }\n\t * ```\n\t */\n\tconst prefixMap = Object.assign({}, ...Object.entries(namespaceMap).map(([prefix, namespace]) => ({\n\t    [namespace]: prefix,\n\t})));\n\n\tclass Entity {\n\t    constructor(node, context) {\n\t        this._node = node;\n\t        this._context = context || this;\n\t    }\n\t    _select(expression) {\n\t        return select(expression, this._node);\n\t    }\n\t    _selectAll(expression) {\n\t        return selectAll(expression, this._node);\n\t    }\n\t    _resolve(expression, constructor) {\n\t        const node = this._select(expression);\n\t        if (!node) {\n\t            return null;\n\t        }\n\t        if (constructor) {\n\t            return new constructor(node, this._context);\n\t        }\n\t        const attrType = node;\n\t        const nodeType = node;\n\t        if (attrType.value) {\n\t            return attrType.value;\n\t        }\n\t        if (nodeType.nodeValue) {\n\t            return nodeType.nodeValue;\n\t        }\n\t    }\n\t    _resolveAll(expression, constructor) {\n\t        const nodes = this._selectAll(expression);\n\t        if (!nodes) {\n\t            return [];\n\t        }\n\t        if (constructor) {\n\t            return nodes.map((node) => new constructor(node, this._context));\n\t        }\n\t        return nodes.map((node) => node.nodeValue);\n\t    }\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tfunction I18n(Base) {\n\t    return class I18n extends Base {\n\t        dir() {\n\t            return (this._resolve('./@dir') ||\n\t                this._resolve('../@dir') ||\n\t                this._context._resolve('./@dir'));\n\t        }\n\t        lang() {\n\t            return (this._resolve('./@xml:lang') ||\n\t                this._resolve('../@xml:lang') ||\n\t                this._context._resolve('./@xml:lang'));\n\t        }\n\t    };\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tfunction ID(Base) {\n\t    return class ID extends Base {\n\t        id() {\n\t            return this._resolve('./@id');\n\t        }\n\t    };\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tfunction Properties(Base) {\n\t    return class Properties extends Base {\n\t        properties() {\n\t            const properties = this._resolve('./@properties');\n\t            if (properties) {\n\t                // normalize spaces and split space separated words\n\t                return properties.replace(/\\s+/g, ' ').split(' ');\n\t            }\n\t        }\n\t    };\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tfunction Resource(Base) {\n\t    return class Resource extends Base {\n\t        href() {\n\t            return this._resolve('./@href');\n\t        }\n\t        mediaType() {\n\t            return this._resolve('./@media-type');\n\t        }\n\t    };\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tfunction Value(Base) {\n\t    return class Value extends Base {\n\t        value() {\n\t            const textNode = this._select('./text()');\n\t            if (textNode) {\n\t                return textNode.nodeValue;\n\t            }\n\t        }\n\t    };\n\t}\n\n\tconst toArray = (valueOrArray) => {\n\t    if (!valueOrArray) {\n\t        return [];\n\t    }\n\t    if (Array.isArray(valueOrArray)) {\n\t        return valueOrArray;\n\t    }\n\t    return [valueOrArray];\n\t};\n\tconst splitRelAttribute = (rel) => \n\t// normalize spaces and split space separated words\n\trel.replace(/\\s+/g, ' ').split(' ');\n\n\tconst resolveIdref = (entity, idref) => {\n\t    var _a;\n\t    if (!idref) {\n\t        return null;\n\t    }\n\t    return (_a = entity._context.manifest()) === null || _a === void 0 ? void 0 : _a.item({ id: idref });\n\t};\n\tconst attributeFilter = (attribute, values, operator = 'or') => values && values.length\n\t    ? `[${toArray(values)\n        .map((value) => `${attribute}='${value}'`)\n        .join(` ${operator} `)}]`\n\t    : '';\n\tconst attributeContainsWordFilter = (attribute, words, operator = 'or') => words && words.length\n\t    ? `[${toArray(words)\n        .map((value) => `contains(concat(' ', normalize-space(${attribute}), ' '), ' ${value} ')`)\n        .join(` ${operator} `)}]`\n\t    : '';\n\tconst idFilter = (id) => attributeFilter('@id', id);\n\tconst anyPropertiesFilter = (anyProperties) => attributeContainsWordFilter('@properties', anyProperties, 'or');\n\tconst allPropertiesFilter = (allProperties) => attributeContainsWordFilter('@properties', allProperties, 'and');\n\tconst anyRelFilter = (anyProperties) => attributeContainsWordFilter('@rel', anyProperties, 'or');\n\tconst allRelFilter = (allProperties) => attributeContainsWordFilter('@rel', allProperties, 'and');\n\n\tclass ManifestItem extends Resource(Properties(ID(Entity))) {\n\t    mediaOverlay() {\n\t        const idref = this._resolve('./@media-overlay');\n\t        return resolveIdref(this, idref);\n\t    }\n\t    fallback() {\n\t        const idref = this._resolve('./@fallback');\n\t        return resolveIdref(this, idref);\n\t    }\n\t}\n\n\tclass Manifest extends ID(Entity) {\n\t    item({ id, href, anyProperties, allProperties, onlyProperties, } = {}) {\n\t        return this.items({\n\t            ids: id ? [id] : [],\n\t            href,\n\t            anyProperties,\n\t            allProperties,\n\t            onlyProperties,\n\t        })[0];\n\t    }\n\t    items({ ids, href, anyProperties, allProperties, onlyProperties, } = {}) {\n\t        var _a;\n\t        if (onlyProperties) {\n\t            return (_a = this.items({\n\t                ids: ids,\n\t                anyProperties,\n\t                allProperties: onlyProperties,\n\t            })) === null || _a === void 0 ? void 0 : _a.filter((item) => toArray(item.properties()).length === onlyProperties.length);\n\t        }\n\t        const expression = `./opf:item${idFilter(ids)}${attributeFilter('@href', href)}${anyPropertiesFilter(anyProperties)}${allPropertiesFilter(allProperties)}`;\n\t        return this._resolveAll(expression, ManifestItem);\n\t    }\n\t}\n\n\tclass SpineItem extends Properties(ID(Entity)) {\n\t    idref() {\n\t        const idref = this._resolve('./@idref');\n\t        return resolveIdref(this, idref);\n\t    }\n\t    linear() {\n\t        const linear = this._resolve('./@linear');\n\t        if (linear === 'no') {\n\t            return false;\n\t        }\n\t        return true;\n\t    }\n\t}\n\n\tclass Spine extends ID(Entity) {\n\t    pageProgressionDirection() {\n\t        return this._resolve('./@page-progression-direction');\n\t    }\n\t    toc() {\n\t        const idref = this._resolve('./@toc');\n\t        return resolveIdref(this, idref);\n\t    }\n\t    itemref({ id, anyProperties, allProperties, onlyProperties, linear, } = {}) {\n\t        return this.itemrefs({\n\t            ids: id ? [id] : [],\n\t            anyProperties,\n\t            allProperties,\n\t            onlyProperties,\n\t            linear,\n\t        })[0];\n\t    }\n\t    itemrefs({ ids, anyProperties, allProperties, onlyProperties, linear, } = {}) {\n\t        var _a, _b;\n\t        if (linear !== undefined) {\n\t            return (_a = this.itemrefs({\n\t                ids,\n\t                anyProperties,\n\t                allProperties,\n\t                onlyProperties,\n\t            })) === null || _a === void 0 ? void 0 : _a.filter((item) => item.linear() === linear);\n\t        }\n\t        if (onlyProperties) {\n\t            return (_b = this.itemrefs({\n\t                ids,\n\t                anyProperties,\n\t                allProperties: onlyProperties,\n\t            })) === null || _b === void 0 ? void 0 : _b.filter((item) => toArray(item.properties()).length === onlyProperties.length);\n\t        }\n\t        const expression = `./opf:itemref${idFilter(ids)}${anyPropertiesFilter(anyProperties)}${allPropertiesFilter(allProperties)}`;\n\t        return this._resolveAll(expression, SpineItem);\n\t    }\n\t}\n\n\tconst nodeTypeMap = () => ({\n\t    'opf:package': Package,\n\t    'opf:metadata': Metadata,\n\t    'opf:manifest': Manifest,\n\t    'opf:spine': Spine,\n\t    'opf:meta': Meta,\n\t    'opf:item': ManifestItem,\n\t    'opf:itemref': SpineItem,\n\t    'opf:link': Link,\n\t    // 'opf:collection': Collection,\n\t    'dc:identifier': Identifier,\n\t    'dc:title': Title,\n\t    'dc:language': Language,\n\t    'dc:contributor': Contributor,\n\t    'dc:coverage': Coverage,\n\t    'dc:creator': Creator,\n\t    'dc:date': Date,\n\t    'dc:description': Description,\n\t    'dc:format': Format,\n\t    'dc:publisher': Publisher,\n\t    'dc:relation': Relation,\n\t    'dc:rights': Rights,\n\t    'dc:source': Source,\n\t    'dc:subject': Subject,\n\t    'dc:type': Type,\n\t});\n\tfunction MetaProperties(Base) {\n\t    return class MetaProperties extends Base {\n\t        _resolveMetaProperty(property, constructor = Meta) {\n\t            return toArray(this._resolveMetaPropertyList(property, constructor))[0];\n\t        }\n\t        _resolveMetaPropertyList(property, constructor = Meta) {\n\t            var _a;\n\t            const id = this.id();\n\t            if (!id) {\n\t                return [];\n\t            }\n\t            const propertyMap = (_a = this._context.metadata()) === null || _a === void 0 ? void 0 : _a._metaPropertyMap[id];\n\t            if (!propertyMap) {\n\t                return [];\n\t            }\n\t            const metaNodes = propertyMap[property];\n\t            if (!metaNodes) {\n\t                return [];\n\t            }\n\t            return metaNodes.map((node) => new constructor(node, this._context));\n\t        }\n\t        alternateScript() {\n\t            return this.alternateScripts()[0];\n\t        }\n\t        alternateScripts() {\n\t            return this._resolveMetaPropertyList('alternate-script');\n\t        }\n\t        displaySeq() {\n\t            return this._resolveMetaProperty('display-seq');\n\t        }\n\t        fileAs() {\n\t            return this._resolveMetaProperty('file-as');\n\t        }\n\t        groupPosition() {\n\t            return this._resolveMetaProperty('group-position');\n\t        }\n\t        metaAuth() {\n\t            return this._resolveMetaProperty('meta-auth');\n\t        }\n\t    };\n\t}\n\tfunction MetaAttributes(Base) {\n\t    return class MetaAttributes extends Base {\n\t        property() {\n\t            return this._resolve('./@property');\n\t        }\n\t        scheme() {\n\t            return this._resolve('./@scheme');\n\t        }\n\t    };\n\t}\n\tfunction Refines(Base) {\n\t    return class Refines extends Base {\n\t        refines() {\n\t            const refines = this._resolve('./@refines');\n\t            if (!refines) {\n\t                return null;\n\t            }\n\t            // drop the # prefix\n\t            const idRefined = refines[0] === '#' ? refines.substr(1) : refines;\n\t            const node = this._context._select(`//*[@id='${idRefined}']`);\n\t            if (!node) {\n\t                return null;\n\t            }\n\t            const name = node.localName;\n\t            const namespace = node.namespaceURI;\n\t            if (!namespace) {\n\t                return null;\n\t            }\n\t            const prefix = prefixMap[namespace];\n\t            const typeConstructor = nodeTypeMap()[`${prefix}:${name}`];\n\t            if (!typeConstructor) {\n\t                return null;\n\t            }\n\t            return new typeConstructor(node, this._context);\n\t        }\n\t    };\n\t}\n\tclass Meta extends MetaProperties(MetaAttributes(Refines(I18n(Value(ID(Entity)))))) {\n\t}\n\tclass Identifier extends Value(MetaProperties(ID(Entity))) {\n\t    identifierType() {\n\t        return this._resolveMetaProperty('identifier-type');\n\t    }\n\t}\n\tclass Title extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t    titleType() {\n\t        return this._resolveMetaProperty('title-type');\n\t    }\n\t}\n\tclass Language extends Value(MetaProperties(ID(Entity))) {\n\t}\n\tclass Contributor extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t    role() {\n\t        return this._resolveMetaProperty('role');\n\t    }\n\t}\n\tclass Coverage extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t}\n\tclass Creator extends Contributor {\n\t}\n\tclass Date extends Value(MetaProperties(ID(Entity))) {\n\t}\n\tclass Description extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t}\n\tclass Format extends Value(MetaProperties(ID(Entity))) {\n\t}\n\tclass Publisher extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t}\n\tclass Relation extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t}\n\tclass Rights extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t}\n\tclass Source extends Identifier {\n\t    sourceOf() {\n\t        return this._resolveMetaProperty('source-of');\n\t    }\n\t}\n\tclass Subject extends Value(I18n(MetaProperties(ID(Entity)))) {\n\t    authority() {\n\t        return this._resolveMetaProperty('authority');\n\t    }\n\t    term() {\n\t        return this._resolveMetaProperty('term');\n\t    }\n\t}\n\tclass Type extends Value(MetaProperties(ID(Entity))) {\n\t}\n\tclass BelongsToCollection extends Value(I18n(Refines(MetaAttributes(MetaProperties(ID(Entity)))))) {\n\t    identifier() {\n\t        return this._resolveMetaProperty('dcterms:identifier');\n\t    }\n\t    collectionType() {\n\t        return this._resolveMetaProperty('collection-type');\n\t    }\n\t    belongsToCollection() {\n\t        return this.belongsToCollections()[0];\n\t    }\n\t    belongsToCollections() {\n\t        return this._resolveMetaPropertyList('belongs-to-collection', BelongsToCollection);\n\t    }\n\t}\n\tclass Link extends Resource(Properties(Refines(ID(Entity)))) {\n\t    rel() {\n\t        return this.rels()[0];\n\t    }\n\t    rels() {\n\t        const rel = this._resolve('./@rel');\n\t        if (rel) {\n\t            return splitRelAttribute(rel);\n\t        }\n\t        return [];\n\t    }\n\t}\n\tclass Metadata extends ID(Entity) {\n\t    constructor(node, context) {\n\t        super(node, context);\n\t        this._metaPropertyMap = {};\n\t        const metaRefiningSelected = toArray(this._selectAll('./opf:meta[@refines and @property]'));\n\t        metaRefiningSelected.forEach((selectedValue) => {\n\t            const node = selectedValue;\n\t            if (!node) {\n\t                return;\n\t            }\n\t            const refinesAttr = select('./@refines', node);\n\t            if (!refinesAttr) {\n\t                return;\n\t            }\n\t            const refinesValue = refinesAttr.value;\n\t            // drop the # prefix\n\t            const idRefined = refinesValue[0] === '#' ? refinesValue.substr(1) : refinesValue;\n\t            const propertyAttr = select('./@property', node);\n\t            if (!propertyAttr) {\n\t                return;\n\t            }\n\t            const property = propertyAttr.value;\n\t            if (!this._metaPropertyMap[idRefined]) {\n\t                this._metaPropertyMap[idRefined] = {};\n\t            }\n\t            if (!this._metaPropertyMap[idRefined][property]) {\n\t                this._metaPropertyMap[idRefined][property] = [];\n\t            }\n\t            this._metaPropertyMap[idRefined][property].push(node);\n\t        });\n\t    }\n\t    identifier({ id }) {\n\t        return this._resolve(`./dc:identifier${idFilter(id)}`, Identifier);\n\t    }\n\t    modified() {\n\t        const node = this._select(\"./opf:meta[@property='dcterms:modified' and not(@refines)]\");\n\t        if (node) {\n\t            return new Meta(node, this._context);\n\t        }\n\t    }\n\t    title({ id }) {\n\t        return this.titles({ ids: id ? [id] : [] })[0];\n\t    }\n\t    titles({ ids }) {\n\t        return this._resolveAll(`./dc:title${idFilter(ids)}`, Title);\n\t    }\n\t    language({ id }) {\n\t        return this.languages({ ids: id ? [id] : [] })[0];\n\t    }\n\t    languages({ ids }) {\n\t        return this._resolveAll(`./dc:language${idFilter(ids)}`, Language);\n\t    }\n\t    contributor({ id }) {\n\t        return this.contributors({ ids: id ? [id] : [] })[0];\n\t    }\n\t    contributors({ ids }) {\n\t        return this._resolveAll(`./dc:contributor${idFilter(ids)}`, Contributor);\n\t    }\n\t    coverage({ id }) {\n\t        return this.coverages({ ids: id ? [id] : [] })[0];\n\t    }\n\t    coverages({ ids }) {\n\t        return this._resolveAll(`./dc:coverage${idFilter(ids)}`, Coverage);\n\t    }\n\t    creator({ id }) {\n\t        return this.creators({ ids: id ? [id] : [] })[0];\n\t    }\n\t    creators({ ids }) {\n\t        return this._resolveAll(`./dc:creator${idFilter(ids)}`, Creator);\n\t    }\n\t    date({ id }) {\n\t        return this._resolve(`./dc:date${idFilter(id)}`, Date);\n\t    }\n\t    description({ id }) {\n\t        return this.descriptions({ ids: id ? [id] : [] })[0];\n\t    }\n\t    descriptions({ ids }) {\n\t        return this._resolveAll(`./dc:description${idFilter(ids)}`, Description);\n\t    }\n\t    format({ id }) {\n\t        return this.formats({ ids: id ? [id] : [] })[0];\n\t    }\n\t    formats({ ids }) {\n\t        return this._resolveAll(`./dc:format${idFilter(ids)}`, Format);\n\t    }\n\t    publisher({ id }) {\n\t        return this.publishers({ ids: id ? [id] : [] })[0];\n\t    }\n\t    publishers({ ids }) {\n\t        return this._resolveAll(`./dc:publisher${idFilter(ids)}`, Publisher);\n\t    }\n\t    relation({ id }) {\n\t        return this.relations({ ids: id ? [id] : [] })[0];\n\t    }\n\t    relations({ ids }) {\n\t        return this._resolveAll(`./dc:relation${idFilter(ids)}`, Relation);\n\t    }\n\t    rights({ id }) {\n\t        return this.rightses({ ids: id ? [id] : [] })[0];\n\t    }\n\t    rightses({ ids }) {\n\t        return this._resolveAll(`./dc:rights${idFilter(ids)}`, Rights);\n\t    }\n\t    source({ id }) {\n\t        return this.sources({ ids: id ? [id] : [] })[0];\n\t    }\n\t    sources({ ids }) {\n\t        return this._resolveAll(`./dc:source${idFilter(ids)}`, Source);\n\t    }\n\t    subject({ id }) {\n\t        return this.subjects({ ids: id ? [id] : [] })[0];\n\t    }\n\t    subjects({ ids }) {\n\t        return this._resolveAll(`./dc:subject${idFilter(ids)}`, Subject);\n\t    }\n\t    type({ id }) {\n\t        return this.types({ ids: id ? [id] : [] })[0];\n\t    }\n\t    types({ ids }) {\n\t        return this._resolveAll(`./dc:type${idFilter(ids)}`, Type);\n\t    }\n\t    belongsToCollection({ id }) {\n\t        return this.belongsToCollections({ ids: id ? [id] : [] })[0];\n\t    }\n\t    belongsToCollections({ ids, } = {}) {\n\t        return this._resolveAll(`./opf:meta${idFilter(ids)}[@property='belongs-to-collection' and not(@refines)]`, BelongsToCollection);\n\t    }\n\t    meta({ id, property, refines, } = {}) {\n\t        return this.metas({\n\t            ids: id ? [id] : [],\n\t            property,\n\t            refines,\n\t        })[0];\n\t    }\n\t    metas({ ids, property, refines, } = {}) {\n\t        return this._resolveAll(`./opf:meta${idFilter(ids)}${attributeFilter('@property', property, 'and')}${attributeFilter('@refines', refines ? `#${refines}` : undefined, 'or')}`, Meta);\n\t    }\n\t    link({ id, href, anyProperties, allProperties, onlyProperties, anyRel, allRel, onlyRel, } = {}) {\n\t        return this.links({\n\t            ids: id ? [id] : [],\n\t            href,\n\t            anyProperties,\n\t            allProperties,\n\t            onlyProperties,\n\t            anyRel,\n\t            allRel,\n\t            onlyRel,\n\t        })[0];\n\t    }\n\t    links(args = {}) {\n\t        const { ids, href, anyProperties, allProperties, onlyProperties, anyRel, allRel, onlyRel, } = args;\n\t        if (onlyProperties) {\n\t            return this.links(Object.assign(Object.assign({}, args), { allProperties: onlyProperties, onlyProperties: undefined })).filter((item) => toArray(item.properties()).length === onlyProperties.length);\n\t        }\n\t        if (onlyRel) {\n\t            return this.links(Object.assign(Object.assign({}, args), { allRel: onlyRel, onlyRel: undefined })).filter((item) => toArray(item.rels()).length === onlyRel.length);\n\t        }\n\t        const expression = `./opf:link${idFilter(ids)}${attributeFilter('@href', href)}${anyPropertiesFilter(anyProperties)}${allPropertiesFilter(allProperties)}${anyRelFilter(anyRel)}${allRelFilter(allRel)}`;\n\t        return this._resolveAll(expression, Link);\n\t    }\n\t}\n\tclass Package extends I18n(ID(Entity)) {\n\t    constructor(doc) {\n\t        super(select('/opf:package', doc));\n\t    }\n\t    version() {\n\t        return this._resolve('./@version');\n\t    }\n\t    uniqueIdentifier() {\n\t        var _a;\n\t        const uniqueIdentifierIDRef = this._resolve('./@unique-identifier');\n\t        if (uniqueIdentifierIDRef) {\n\t            return (_a = this.metadata()) === null || _a === void 0 ? void 0 : _a.identifier({ id: uniqueIdentifierIDRef });\n\t        }\n\t    }\n\t    releaseIdentifier() {\n\t        var _a;\n\t        const uniqueIdentifier = this.uniqueIdentifier();\n\t        const modified = (_a = this.metadata()) === null || _a === void 0 ? void 0 : _a.modified();\n\t        if (uniqueIdentifier && modified) {\n\t            return `${uniqueIdentifier.value()}@${modified.value()}`;\n\t        }\n\t    }\n\t    metadata() {\n\t        return (this._metadata =\n\t            this._metadata || this._resolve('./opf:metadata', Metadata));\n\t    }\n\t    spine() {\n\t        return (this._spine = this._spine || this._resolve('./opf:spine', Spine));\n\t    }\n\t    manifest() {\n\t        return (this._manifest =\n\t            this._manifest || this._resolve('./opf:manifest', Manifest));\n\t    }\n\t}\n\n\tclass ContainerLink extends Resource(Entity) {\n\t    rel() {\n\t        const rel = this._resolve('./@rel');\n\t        if (rel) {\n\t            return splitRelAttribute(rel);\n\t        }\n\t        return [];\n\t    }\n\t}\n\tclass Rootfile extends Entity {\n\t    fullPath() {\n\t        return this._resolve('./@full-path');\n\t    }\n\t    mediaType() {\n\t        return this._resolve('./@media-type');\n\t    }\n\t}\n\tclass Container extends Entity {\n\t    constructor(doc) {\n\t        super(select('/ocf:container', doc));\n\t    }\n\t    version() {\n\t        return this._resolve('./@version');\n\t    }\n\t    rootfiles() {\n\t        return this._resolveAll('./ocf:rootfiles/ocf:rootfile', Rootfile);\n\t    }\n\t    links() {\n\t        return this._resolveAll('./ocf:links/ocf:link', ContainerLink);\n\t    }\n\t    defaultRendition() {\n\t        return this.rootfiles()[0];\n\t    }\n\t}\n\n\texports.BelongsToCollection = BelongsToCollection;\n\texports.Container = Container;\n\texports.ContainerLink = ContainerLink;\n\texports.Contributor = Contributor;\n\texports.Coverage = Coverage;\n\texports.Creator = Creator;\n\texports.Date = Date;\n\texports.Description = Description;\n\texports.Format = Format;\n\texports.Identifier = Identifier;\n\texports.Language = Language;\n\texports.Link = Link;\n\texports.Manifest = Manifest;\n\texports.ManifestItem = ManifestItem;\n\texports.Meta = Meta;\n\texports.Metadata = Metadata;\n\texports.Package = Package;\n\texports.Publisher = Publisher;\n\texports.Relation = Relation;\n\texports.Rights = Rights;\n\texports.Rootfile = Rootfile;\n\texports.Source = Source;\n\texports.Spine = Spine;\n\texports.SpineItem = SpineItem;\n\texports.Subject = Subject;\n\texports.Title = Title;\n\texports.Type = Type;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n"]}