diff --git a/lib/ace/background_tokenizer.js b/lib/ace/background_tokenizer.js index d75305f9..c1bd8047 100644 --- a/lib/ace/background_tokenizer.js +++ b/lib/ace/background_tokenizer.js @@ -230,7 +230,7 @@ var BackgroundTokenizer = function(tokenizer, editor) { var overflow = {value: line.substr(MAX_LINE_LENGTH), type: "text"}; line = line.slice(0, MAX_LINE_LENGTH); } - var data = this.tokenizer.getLineTokens(line, state); + var data = this.tokenizer.getLineTokens(line, state, row); if (overflow) { data.tokens.push(overflow); data.state = "start"; diff --git a/lib/ace/mode/_test/highlight_rules_test.js b/lib/ace/mode/_test/highlight_rules_test.js index 231d58cb..be6656d8 100644 --- a/lib/ace/mode/_test/highlight_rules_test.js +++ b/lib/ace/mode/_test/highlight_rules_test.js @@ -11,9 +11,9 @@ function generateTestData() { var docs = fs.readdirSync(cwd + root); var specialDocs = fs.readdirSync(cwd); var modes = fs.readdirSync(cwd + "../").filter(function(x){ - return /^\w+_highlight_rules.js$/.test(x); + return !/(_highlight_rules|behaviour|worker)\.js$/.test(x) && /\.js$/.test(x); }).map(function(x) { - return x.replace(/_highlight_rules.js$/, ""); + return x.replace(/\.js$/, ""); }); console.log("Docs:", docs); diff --git a/lib/ace/mode/_test/tokens_xquery.json b/lib/ace/mode/_test/tokens_xquery.json index 93f43af3..aaf9ab9b 100644 --- a/lib/ace/mode/_test/tokens_xquery.json +++ b/lib/ace/mode/_test/tokens_xquery.json @@ -1,46 +1,44 @@ [[ - "start", + "[\"start\"]", ["keyword","xquery"], ["text"," "], ["keyword","version"], ["text"," "], - ["string","\"1.0\""], + ["string","\""], + ["string","1.0"], + ["string","\""], ["text",";"] ],[ - "start" + "[\"start\"]" ],[ - "start", + "[\"start\"]", ["keyword","let"], ["text"," "], ["variable","$message"], ["text"," "], ["keyword.operator",":="], ["text"," "], - ["string","\"Hello World!\""] + ["string","\""], + ["string","Hello World!"], + ["string","\""] ],[ - "start", + "[\"start\",\"StartTag\",\"TagContent\"]", ["keyword","return"], ["text"," "], - ["text","<"], - ["meta.tag","results"], - ["text",">"] + ["meta.tag",""] ],[ - "start", + "[\"start\",\"StartTag\",\"TagContent\"]", ["text"," "], - ["text","<"], - ["meta.tag","message"], - ["text",">"], - ["lparen","{"], + ["meta.tag",""], + ["text","{"], ["variable","$message"], - ["rparen","}"], - ["text",""] + ["text","}"], + ["meta.tag",""] ],[ - "start", - ["text",""] + "[\"start\"]", + ["meta.tag",""] ],[ - "start" + "[\"start\"]" ]] \ No newline at end of file diff --git a/lib/ace/mode/behaviour/xquery.js b/lib/ace/mode/behaviour/xquery.js index dfe17de7..1c77217a 100644 --- a/lib/ace/mode/behaviour/xquery.js +++ b/lib/ace/mode/behaviour/xquery.js @@ -1,66 +1,88 @@ -/* -* eXide - web-based XQuery IDE -* -* Copyright (C) 2011 Wolfgang Meier -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ define(function(require, exports, module) { "use strict"; var oop = require("../../lib/oop"); var Behaviour = require('../behaviour').Behaviour; var CstyleBehaviour = require('./cstyle').CstyleBehaviour; + var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; + var TokenIterator = require("../../token_iterator").TokenIterator; - var XQueryBehaviour = function (parent) { +function hasType(token, type) { + var hasType = true; + var typeList = token.type.split('.'); + var needleList = type.split('.'); + needleList.forEach(function(needle){ + if (typeList.indexOf(needle) == -1) { + hasType = false; + return false; + } + }); + return hasType; +} + + var XQueryBehaviour = function () { this.inherit(CstyleBehaviour, ["braces", "parens", "string_dquotes"]); // Get string behaviour - this.parent = parent; + this.inherit(XmlBehaviour); // Get xml behaviour -// this.add("brackets", "insertion", function (state, action, editor, session, text) { -// if (text == "\n") { -// var cursor = editor.getCursorPosition(); -// var line = session.doc.getLine(cursor.row); -// var rightChars = line.substring(cursor.column, cursor.column + 2); -// if (rightChars == '') { + var position = editor.getCursorPosition(); + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken(); + var atCursor = false; + if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ + do { + token = iterator.stepBackward(); + } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); + } else { + atCursor = true; + } + var previous = iterator.stepBackward(); + if (!token || !hasType(token, 'meta.tag') || (previous !== null && previous.value.match('/'))) { + return + } + var tag = token.value.substring(1); + if (atCursor){ + var tag = tag.substring(0, position.column - token.start); + } + + return { + text: '>' + '', + selection: [1, 1] + } + } + }); - // Check for open tag if user enters / and auto-close it. -// this.add("slash", "insertion", function (state, action, editor, session, text) { -// if (text == "/") { -// var cursor = editor.getCursorPosition(); -// var line = session.doc.getLine(cursor.row); -// if (cursor.column > 0 && line.charAt(cursor.column - 1) == "<") { -// line = line.substring(0, cursor.column) + "/" + line.substring(cursor.column); -// var lines = session.doc.getAllLines(); -// lines[cursor.row] = line; -// // call mode helper to close the tag if possible -// parent.exec("closeTag", lines.join(session.doc.getNewLineCharacter()), cursor.row); -// } -// } -// return false; -// }); } oop.inherits(XQueryBehaviour, Behaviour); diff --git a/lib/ace/mode/tm_snippet.js b/lib/ace/mode/tmsnippet.js similarity index 97% rename from lib/ace/mode/tm_snippet.js rename to lib/ace/mode/tmsnippet.js index 7b7ace08..79b299ec 100644 --- a/lib/ace/mode/tm_snippet.js +++ b/lib/ace/mode/tmsnippet.js @@ -1,86 +1,86 @@ -define(function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SnippetHighlightRules = function() { - - var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" + - "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME"; - - this.$rules = { - "start" : [ - {token:"constant.language.escape", regex: /\\[\$}`\\]/}, - {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"}, - {token:"variable", regex: "\\$\\w+"}, - {token: function(value, state, stack) { - if (stack[1]) - stack[1]++; - else - stack.unshift("start", 1); - return this.tokenName; - }, tokenName: "markup.list", regex: "\\${", next: "varDecl"}, - {token: function(value, state, stack) { - if (!stack[1]) - return "text"; - stack[1]--; - if (!stack[1]) - stack.splice(0,2); - return this.tokenName; - }, tokenName: "markup.list", regex: "}"}, - {token: "doc,comment", regex:/^\${2}-{5,}$/} - ], - "varDecl" : [ - {regex: /\d+\b/, token: "constant.numeric"}, - {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"}, - {token:"variable", regex: "\\w+"}, - {regex: /:/, token: "punctuation.operator", next: "start"}, - {regex: /\//, token: "string.regex", next: "regexp"}, - {regex: "", next: "start"} - ], - "regexp" : [ - {regex: /\\./, token: "escape"}, - {regex: /\[/, token: "regex.start", next: "charClass"}, - {regex: "/", token: "string.regex", next: "format"}, - //{"default": "string.regex"}, - {"token": "string.regex", regex:"."}, - ], - charClass : [ - {regex: "\\.", token: "escape"}, - {regex: "\\]", token: "regex.end", next: "regexp"}, - {"token": "string.regex", regex:"."}, - ], - "format" : [ - {regex: /\\[ulULE]/, token: "keyword"}, - {regex: /\$\d+/, token: "variable"}, - {regex: "/[gim]*:?", token: "string.regex", next: "start"}, - // {"default": "string"}, - {"token": "string", regex:"."}, - ] - }; -}; - -oop.inherits(SnippetHighlightRules, TextHighlightRules); - -exports.SnippetHighlightRules = SnippetHighlightRules; - - -var Mode = function() { - var highlighter = new SnippetHighlightRules(); - - this.$tokenizer = new Tokenizer(highlighter.getRules()); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; -}).call(Mode.prototype); -exports.Mode = Mode; - - -}); +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var Tokenizer = require("../tokenizer").Tokenizer; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SnippetHighlightRules = function() { + + var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" + + "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME"; + + this.$rules = { + "start" : [ + {token:"constant.language.escape", regex: /\\[\$}`\\]/}, + {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"}, + {token:"variable", regex: "\\$\\w+"}, + {token: function(value, state, stack) { + if (stack[1]) + stack[1]++; + else + stack.unshift("start", 1); + return this.tokenName; + }, tokenName: "markup.list", regex: "\\${", next: "varDecl"}, + {token: function(value, state, stack) { + if (!stack[1]) + return "text"; + stack[1]--; + if (!stack[1]) + stack.splice(0,2); + return this.tokenName; + }, tokenName: "markup.list", regex: "}"}, + {token: "doc,comment", regex:/^\${2}-{5,}$/} + ], + "varDecl" : [ + {regex: /\d+\b/, token: "constant.numeric"}, + {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"}, + {token:"variable", regex: "\\w+"}, + {regex: /:/, token: "punctuation.operator", next: "start"}, + {regex: /\//, token: "string.regex", next: "regexp"}, + {regex: "", next: "start"} + ], + "regexp" : [ + {regex: /\\./, token: "escape"}, + {regex: /\[/, token: "regex.start", next: "charClass"}, + {regex: "/", token: "string.regex", next: "format"}, + //{"default": "string.regex"}, + {"token": "string.regex", regex:"."}, + ], + charClass : [ + {regex: "\\.", token: "escape"}, + {regex: "\\]", token: "regex.end", next: "regexp"}, + {"token": "string.regex", regex:"."}, + ], + "format" : [ + {regex: /\\[ulULE]/, token: "keyword"}, + {regex: /\$\d+/, token: "variable"}, + {regex: "/[gim]*:?", token: "string.regex", next: "start"}, + // {"default": "string"}, + {"token": "string", regex:"."}, + ] + }; +}; + +oop.inherits(SnippetHighlightRules, TextHighlightRules); + +exports.SnippetHighlightRules = SnippetHighlightRules; + + +var Mode = function() { + var highlighter = new SnippetHighlightRules(); + + this.$tokenizer = new Tokenizer(highlighter.getRules()); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; +}).call(Mode.prototype); +exports.Mode = Mode; + + +}); diff --git a/lib/ace/mode/xquery.js b/lib/ace/mode/xquery.js index dfe81aff..eccadacb 100644 --- a/lib/ace/mode/xquery.js +++ b/lib/ace/mode/xquery.js @@ -33,17 +33,15 @@ define(function(require, exports, module) { var WorkerClient = require("../worker/worker_client").WorkerClient; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var XQueryHighlightRules = require("./xquery_highlight_rules").XQueryHighlightRules; -//var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; +var XQueryLexer = require("./xquery/XQueryLexer").XQueryLexer; var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Mode = function(parent) { - this.$tokenizer = new Tokenizer(new XQueryHighlightRules().getRules()); - this.$behaviour = new CstyleBehaviour(parent); + this.$tokenizer = new XQueryLexer(); + this.$behaviour = new XQueryBehaviour(); this.foldingRules = new CStyleFoldMode(); }; @@ -133,21 +131,21 @@ oop.inherits(Mode, TextMode); }); worker.on("ok", function(e) { - session.clearAnnotations(); + session.clearAnnotations(); }); worker.on("highlight", function(tokens) { if(that.$deltas.length > 0) return; - - var firstRow = 0; - var lastRow = session.getLength() - 1; + that.$tokenizer.tokens = tokens.data.tokens; + that.$tokenizer.lines = session.getDocument().getAllLines(); + session.bgTokenizer.lines = []; + session.bgTokenizer.states = []; - var lines = tokens.data.lines; - var states = tokens.data.states; - - session.bgTokenizer.lines = lines; - session.bgTokenizer.states = states; - session.bgTokenizer.fireUpdateEvent(firstRow, lastRow); + var rows = Object.keys(that.$tokenizer.tokens); + for(var i=0; i < rows.length; i++) { + var row = parseInt(rows[i]); + session.bgTokenizer.fireUpdateEvent(row, row); + } }); return worker; diff --git a/lib/ace/mode/xquery/CommentHandler.js b/lib/ace/mode/xquery/CommentHandler.js deleted file mode 100644 index 649fedb4..00000000 --- a/lib/ace/mode/xquery/CommentHandler.js +++ /dev/null @@ -1,129 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -define(function(require, exports, module){ - var CommentHandler = exports.CommentHandler = function(code) { - - var ast = null; - var ptr = null; - var remains = code; - var cursor = 0; - var lineCursor = 0; - var line = 0; - var col = 0; - - function createNode(name){ - return { name: name, children: [], getParent: null, pos: { sl: 0, sc: 0, el: 0, ec: 0 } }; - } - - function pushNode(name, begin){ - var node = createNode(name); - if(ast === null) { - ast = node; - ptr = node; - } else { - node.getParent = ptr; - ptr.children.push(node); - ptr = ptr.children[ptr.children.length - 1]; - } - } - - function popNode(name, end){ - - if(ptr.children.length > 0) { - var s = ptr.children[0]; - var e = ptr.children[ptr.children.length - 1]; - ptr.pos.sl = s.pos.sl; - ptr.pos.sc = s.pos.sc; - ptr.pos.el = e.pos.el; - ptr.pos.ec = e.pos.ec; - } - - if(ptr.getParent !== null) { - ptr = ptr.getParent; - for(var i in ptr.children) { - delete ptr.children[i].getParent; - } - } else { - delete ptr.getParent; - } - } - - this.peek = function() { - return ptr; - }; - - this.getParseTree = function() { - return ast; - }; - - this.reset = function(input) {}; - - this.startNonterminal = function(name, begin) { - pushNode(name, begin); - }; - - this.endNonterminal = function(name, end) { - popNode(name, end); - }; - - this.terminal = function(name, begin, end) { - name = (name.substring(0, 1) === "'" && name.substring(name.length - 1) === "'") ? "TOKEN" : name; - pushNode(name, begin); - setValue(ptr, begin, end); - popNode(name, end); - }; - - this.whitespace = function(begin, end) { - var name = "WS"; - pushNode(name, begin); - setValue(ptr, begin, end); - popNode(name, end); - }; - - function setValue(node, begin, end) { - var e = end - cursor; - ptr.value = remains.substring(0, e); - var sl = line; - var sc = line === 0 ? lineCursor : lineCursor - 1; - var el = sl + ptr.value.split("\n").length - 1; - var lastIdx = ptr.value.lastIndexOf("\n"); - var ec = lastIdx === -1 ? sc + ptr.value.length : ptr.value.substring(lastIdx).length; - remains = remains.substring(e); - cursor = end; - lineCursor = lastIdx === -1 ? lineCursor + (ptr.value.length) : ec; - line = el; - ptr.pos.sl = sl; - ptr.pos.sc = sc; - ptr.pos.el = el; - ptr.pos.ec = ec; - } - }; -}); diff --git a/lib/ace/mode/xquery/CommentParser.js b/lib/ace/mode/xquery/CommentParser.js deleted file mode 100644 index 9379524c..00000000 --- a/lib/ace/mode/xquery/CommentParser.js +++ /dev/null @@ -1,371 +0,0 @@ -// This file was generated on Wed Dec 12, 2012 20:06 (UTC+01) by REx v5.20 which is Copyright (c) 1979-2012 by Gunther Rademacher -// REx command line: CommentParser.ebnf -tree -javascript -a xqlint - - // line 2 "CommentParser.ebnf" - /* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - - define(function(require, exports, module){ - var CommentParser = exports.CommentParser = function CommentParser(string, parsingEventHandler) - { - init(string, parsingEventHandler); - // line 40 "CommentParser.js" - var self = this; - - this.ParseException = function(b, e, s, o, x) - { - var - begin = b, - end = e, - state = s, - offending = o, - expected = x; - - this.getBegin = function() {return begin;}; - this.getEnd = function() {return end;}; - this.getState = function() {return state;}; - this.getExpected = function() {return expected;}; - this.getOffending = function() {return offending;}; - - this.getMessage = function() - { - return offending < 0 ? "lexical analysis failed" : "syntax error"; - }; - }; - - function init(string, parsingEventHandler) - { - eventHandler = parsingEventHandler; - input = string; - size = string.length; - reset(0, 0, 0); - } - - this.getInput = function() - { - return input; - }; - - function reset(l, b, e) - { - b0 = b; e0 = b; - l1 = l; b1 = b; e1 = e; - end = e; - eventHandler.reset(input); - } - - this.getOffendingToken = function(e) - { - var o = e.getOffending(); - return o >= 0 ? CommentParser.TOKEN[o] : null; - }; - - this.getExpectedTokenSet = function(e) - { - var expected; - if (e.getExpected() < 0) - { - expected = getExpectedTokenSet(e.getState()); - } - else - { - expected = [CommentParser.TOKEN[e.getExpected()]]; - } - return expected; - }; - - this.getErrorMessage = function(e) - { - var tokenSet = this.getExpectedTokenSet(e); - var found = this.getOffendingToken(e); - var prefix = input.substring(0, e.getBegin()); - var lines = prefix.split("\n"); - var line = lines.length; - var column = lines[line - 1].length + 1; - var size = e.getEnd() - e.getBegin(); - return e.getMessage() - + (found == null ? "" : ", found " + found) - + "\nwhile expecting " - + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) - + "\n" - + (size == 0 ? "" : "after successfully scanning " + size + " characters beginning ") - + "at line " + line + ", column " + column + ":\n..." - + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) - + "..."; - }; - - this.parse_Comments = function() - { - eventHandler.startNonterminal("Comments", e0); - for (;;) - { - lookahead1(0); // S^WS | EOF | '(:' - if (l1 == 3) // EOF - { - break; - } - switch (l1) - { - case 1: // S^WS - shift(1); // S^WS - break; - default: - parse_Comment(); - } - } - shift(3); // EOF - eventHandler.endNonterminal("Comments", e0); - }; - - function parse_Comment() - { - eventHandler.startNonterminal("Comment", e0); - shift(4); // '(:' - for (;;) - { - lookahead1(1); // CommentContents | '(:' | ':)' - if (l1 == 5) // ':)' - { - break; - } - switch (l1) - { - case 2: // CommentContents - shift(2); // CommentContents - break; - default: - parse_Comment(); - } - } - shift(5); // ':)' - eventHandler.endNonterminal("Comment", e0); - } - - var lk, b0, e0; - var l1, b1, e1; - var eventHandler; - - function error(b, e, s, l, t) - { - throw new self.ParseException(b, e, s, l, t); - } - - function shift(t) - { - if (l1 == t) - { - eventHandler.terminal(CommentParser.TOKEN[l1], b1, e1 > size ? size : e1); - b0 = b1; e0 = e1; l1 = 0; - } - else - { - error(b1, e1, 0, l1, t); - } - } - - function lookahead1(set) - { - if (l1 == 0) - { - l1 = match(set); - b1 = begin; - e1 = end; - } - } - - var input; - var size; - var begin; - var end; - var state; - - function match(tokenset) - { - var nonbmp = false; - begin = end; - var current = end; - var result = CommentParser.INITIAL[tokenset]; - - for (var code = result & 15; code != 0; ) - { - var charclass; - var c0 = current < size ? input.charCodeAt(current) : 0; - ++current; - if (c0 < 0x80) - { - charclass = CommentParser.MAP0[c0]; - } - else if (c0 < 0xd800) - { - var c1 = c0 >> 5; - charclass = CommentParser.MAP1[(c0 & 31) + CommentParser.MAP1[(c1 & 31) + CommentParser.MAP1[c1 >> 5]]]; - } - else - { - if (c0 < 0xdc00) - { - var c1 = current < size ? input.charCodeAt(current) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) - { - ++current; - c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; - nonbmp = true; - } - } - var lo = 0, hi = 1; - for (var m = 1; ; m = (hi + lo) >> 1) - { - if (CommentParser.MAP2[m] > c0) hi = m - 1; - else if (CommentParser.MAP2[2 + m] < c0) lo = m + 1; - else {charclass = CommentParser.MAP2[4 + m]; break;} - if (lo > hi) {charclass = 0; break;} - } - } - - state = code; - var i0 = (charclass << 4) + code - 1; - code = CommentParser.TRANSITION[(i0 & 3) + CommentParser.TRANSITION[i0 >> 2]]; - - if (code > 15) - { - result = code; - code &= 15; - end = current; - } - } - - result >>= 4; - if (result == 0) - { - end = current - 1; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - error(begin, end, state, -1, -1); - } - - if (nonbmp) - { - for (var i = result >> 3; i > 0; --i) - { - --end; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - } - } - else - { - end -= result >> 3; - } - - return (result & 7) - 1; - } - - function getExpectedTokenSet(s) - { - var set = []; - if (s > 0) - { - for (var i = 0; i < 6; i += 32) - { - var j = i; - for (var f = ec(i >>> 5, s); f != 0; f >>>= 1, ++j) - { - if ((f & 1) != 0) - { - set[set.length] = CommentParser.TOKEN[j]; - } - } - } - } - return set; - } - - function ec(t, s) - { - var i0 = t * 9 + s - 1; - return CommentParser.EXPECTED[i0]; - } -} - -CommentParser.MAP0 = -[ - /* 0 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, - /* 36 */ 2, 2, 2, 2, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* 72 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* 108 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 -]; - -CommentParser.MAP1 = -[ - /* 0 */ 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - /* 27 */ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - /* 54 */ 88, 120, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - /* 76 */ 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, - /* 104 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* 140 */ 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - /* 176 */ 2, 2, 2 -]; - -CommentParser.MAP2 = -[ - /* 0 */ 57344, 65536, 65533, 1114111, 2, 2 -]; - -CommentParser.INITIAL = -[ - /* 0 */ 1, 2 -]; - -CommentParser.TRANSITION = -[ - /* 0 */ 33, 33, 33, 33, 28, 37, 32, 33, 31, 37, 32, 33, 43, 50, 53, 33, 31, 39, 33, 33, 46, 57, 59, 33, 63, 33, 33, - /* 27 */ 33, 35, 5, 35, 0, 5, 0, 0, 0, 0, 5, 5, 5, 5, 96, 5, 4, 6, 0, 0, 7, 0, 80, 184, 184, 184, 184, 0, 0, 0, 185, - /* 58 */ 80, 185, 0, 0, 0, 64, 0, 0, 0 -]; - -CommentParser.EXPECTED = -[ - /* 0 */ 26, 52, 2, 16, 4, 20, 36, 4, 4 -]; - -CommentParser.TOKEN = -[ - "(0)", - "S", - "CommentContents", - "EOF", - "'(:'", - "':)'" -]; - - // line 54 "CommentParser.ebnf" - }); - // line 371 "CommentParser.js" -// End diff --git a/lib/ace/mode/xquery/JSONParseTreeHandler.js b/lib/ace/mode/xquery/JSONParseTreeHandler.js index ff98ac3c..579f6867 100644 --- a/lib/ace/mode/xquery/JSONParseTreeHandler.js +++ b/lib/ace/mode/xquery/JSONParseTreeHandler.js @@ -32,8 +32,14 @@ define(function(require, exports, module){ var JSONParseTreeHandler = exports.JSONParseTreeHandler = function(code) { - //List of nodes that are left untouched in the parse tree size optimization. - var blacklist = ["VarDeclStatement"]; + //List of nodes that are not targeted by the parse tree size optimization. + var list = [ + "OrExpr", "AndExpr", "ComparisonExpr", "StringConcatExpr", "RangeExpr" + //, "AdditiveExpr", "MultiplicativeExpr" + , "UnionExpr", "IntersectExceptExpr", "InstanceofExpr", "TreatExpr", "CastableExpr" + , "CastExpr", "UnaryExpr", "ValueExpr", "FTContainsExpr", "SimpleMapExpr", "PathExpr", "RelativePathExpr" + , "PostfixExpr", "StepExpr" + ]; var ast = null; var ptr = null; @@ -63,13 +69,31 @@ define(function(require, exports, module){ if(ptr.children.length > 0) { var s = ptr.children[0]; - var e = ptr.children[ptr.children.length - 1]; + var e = null; + //We want to skip empty non terminals. For instance PredicateList: + // [108] AxisStep ::= (ReverseStep | ForwardStep) PredicateList + // [120] PredicateList ::= Predicate* + for(var i= ptr.children.length - 1; i >= 0;i--) { + e = ptr.children[i]; + if(e.pos.el !== 0 || e.pos.ec !== 0) { + break; + } + } ptr.pos.sl = s.pos.sl; ptr.pos.sc = s.pos.sc; ptr.pos.el = e.pos.el; ptr.pos.ec = e.pos.ec; } + //Normalize EQName && FunctionName + if(ptr.name === "FunctionName") { + ptr.name = "EQName"; + } + if(ptr.name === "EQName" && ptr.value === undefined) { + ptr.value = ptr.children[0].value; + ptr.children.pop(); + } + if(ptr.getParent !== null) { ptr = ptr.getParent; //for(var i in ptr.children) { @@ -80,12 +104,12 @@ define(function(require, exports, module){ } //Parse tree size optimization - //if(ptr.children.length > 0) { - // var lastChild = ptr.children[ptr.children.length - 1]; - // if(lastChild.children.length === 1 && blacklist.indexOf(lastChild.name) !== -1) { - // ptr.children[ptr.children.length - 1] = lastChild.children[0]; - // } - //} + if(ptr.children.length > 0) { + var lastChild = ptr.children[ptr.children.length - 1]; + if(lastChild.children.length === 1 && list.indexOf(lastChild.name) !== -1) { + ptr.children[ptr.children.length - 1] = lastChild.children[0]; + } + } } this.peek = function() { @@ -121,17 +145,23 @@ define(function(require, exports, module){ }; function setValue(node, begin, end) { + var e = end - cursor; ptr.value = remains.substring(0, e); - var sl = line; - var sc = line === 0 ? lineCursor : lineCursor - 1; - var el = sl + ptr.value.split("\n").length - 1; - var lastIdx = ptr.value.lastIndexOf("\n"); - var ec = lastIdx === -1 ? sc + ptr.value.length : ptr.value.substring(lastIdx).length; remains = remains.substring(e); cursor = end; - lineCursor = lastIdx === -1 ? lineCursor + (ptr.value.length) : ec; - line = el; + + var sl = line; + var sc = lineCursor; + var el = sl + ptr.value.split("\n").length - 1; + var lastIdx = ptr.value.lastIndexOf("\n"); + var ec = lastIdx === -1 ? sc + ptr.value.length : ptr.value.substring(lastIdx + 1).length; +// ec = ec === 0 ? 0 : ec - 1; + + line = el; + //lineCursor = ec === 0 ? 0 : ec; + lineCursor = ec; + ptr.pos.sl = sl; ptr.pos.sc = sc; ptr.pos.el = el; diff --git a/lib/ace/mode/xquery/XQueryLexer.js b/lib/ace/mode/xquery/XQueryLexer.js new file mode 100644 index 00000000..66a807d9 --- /dev/null +++ b/lib/ace/mode/xquery/XQueryLexer.js @@ -0,0 +1,302 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module){ + + var XQueryTokenizer = require("./XQueryTokenizer").XQueryTokenizer; + + var TokenHandler = function(code) { + + var input = code; + + this.tokens = []; + + this.reset = function(code) { + input = input; + this.tokens = []; + }; + + this.startNonterminal = function(name, begin) {}; + + this.endNonterminal = function(name, end) {}; + + this.terminal = function(name, begin, end) { + this.tokens.push({ + name: name, + value: input.substring(begin, end) + }); + }; + + this.whitespace = function(begin, end) { + this.tokens.push({ + name: "WS", + value: input.substring(begin, end) + }); + }; + }; + + var keys = "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position".split("|"); + var keywords = keys.map( + function(val) { return { name: "'" + val + "'", token: "keyword" }; } + ); + + var ncnames = keys.map( + function(val) { return { name: "'" + val + "'", token: "text", next: function(stack){ stack.pop(); } }; } + ); + + var cdata = "constant.language"; + var number = "constant"; + var xmlcomment = "comment"; + var pi = "xml-pe"; + var pragma = "constant.buildin"; + + var Rules = { + start: [ + { name: "'(#'", token: pragma, next: function(stack){ stack.push("Pragma"); } }, + { name: "'(:'", token: "comment", next: function(stack){ stack.push("Comment"); } }, + { name: "'(:~'", token: "comment.doc", next: function(stack){ stack.push("CommentDoc"); } }, + { name: "''", token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: "CDataSectionContents", token: cdata }, + { name: "']]>'", token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: "DirPIContents", token: pi }, + { name: "PITarget", token: pi }, + { name: "S", token: pi }, + { name: "'?>'", token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: "''''", token: "string", next: function(stack){ stack.pop(); } }, + { name: "PredefinedEntityRef", token: "constant.language.escape" }, + { name: "CharRef", token: "constant.language.escape" }, + { name: "EscapeApos", token: "constant.language.escape" }, + { name: "AposChar", token: "string" } + ], + QuotString: [ + { name: "'\"'", token: "string", next: function(stack){ stack.pop(); } }, + { name: "PredefinedEntityRef", token: "constant.language.escape" }, + { name: "CharRef", token: "constant.language.escape" }, + { name: "EscapeQuot", token: "constant.language.escape" }, + { name: "QuotChar", token: "string" } + ] + }; + +exports.XQueryLexer = function() { + + this.tokens = []; + + this.getLineTokens = function(line, state, row) { + state = (state === "start" || !state) ? '["start"]' : state; + var stack = JSON.parse(state); + var h = new TokenHandler(line); + var tokenizer = new XQueryTokenizer(line, h); + var tokens = []; + + while(true) { + var currentState = stack[stack.length - 1]; + try { + + h.tokens = []; + tokenizer["parse_" + currentState](); + var info = null; + + if(h.tokens.length > 1 && h.tokens[0].name === "WS") { + tokens.push({ + type: "text", + value: h.tokens[0].value + }); + h.tokens.splice(0, 1); + } + + var token = h.tokens[0]; + var rules = Rules[currentState]; + for(var k = 0; k < rules.length; k++) { + var rule = Rules[currentState][k]; + if((typeof(rule.name) === "function" && rule.name(token)) || rule.name === token.name) { + info = rule; + break; + } + } + + if(token.name === "EOF") { break; } + + tokens.push({ + type: info === null ? "text" : (typeof(info.token) === "function" ? info.token(token.value) : info.token), + value: token.value + }); + + if(info && info.next) { + info.next(stack); + } + + } catch(e) { + if(e instanceof tokenizer.ParseException) { + var index = 0; + for(var i=0; i < tokens.length; i++) { + index += tokens[i].value.length; + } + tokens.push({ type: "text", value: line.substring(index) }); + return { + tokens: tokens, + state: JSON.stringify(["start"]) + }; + } else { + throw e; + } + } + } + + + if(this.tokens[row] !== undefined) { + var cachedLine = this.lines[row]; + var begin = sharedStart([line, cachedLine]); + var diff = cachedLine.length - line.length; + var idx = 0; + var col = 0; + for(var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + for(var j = 0; j < this.tokens[row].length; j++) { + var semanticToken = this.tokens[row][j]; + if( + ((col + token.value.length) <= begin.length && semanticToken.sc === col && semanticToken.ec === (col + token.value.length)) || + (semanticToken.sc === (col + diff) && semanticToken.ec === (col + token.value.length + diff)) + ) { + idx = i; + tokens[i].type = semanticToken.type; + } + } + col += token.value.length; + } + } + + return { + tokens: tokens, + state: JSON.stringify(stack) + }; + }; + + function sharedStart(A) { + var tem1, tem2, s, A = A.slice(0).sort(); + tem1 = A[0]; + s = tem1.length; + tem2 = A.pop(); + while(s && tem2.indexOf(tem1) == -1) { + tem1 = tem1.substring(0, --s); + } + return tem1; + } +}; +}); diff --git a/lib/ace/mode/xquery/XQueryParser.js b/lib/ace/mode/xquery/XQueryParser.js index ea17b428..a0a3c86f 100644 --- a/lib/ace/mode/xquery/XQueryParser.js +++ b/lib/ace/mode/xquery/XQueryParser.js @@ -1,4 +1,4 @@ -// This file was generated on Wed Dec 12, 2012 12:21 (UTC+01) by REx v5.20 which is Copyright (c) 1979-2012 by Gunther Rademacher +// This file was generated on Sat Jan 5, 2013 17:36 (UTC+01) by REx v5.21 which is Copyright (c) 1979-2012 by Gunther Rademacher // REx command line: XQueryParser.ebnf -ll 2 -backtrack -tree -javascript -a xqlint // line 2 "XQueryParser.ebnf" @@ -84,6 +84,8 @@ eventHandler.reset(input); } + this.reset = function(l, b, e) {reset(l, b, e);}; + this.getOffendingToken = function(e) { var o = e.getOffending(); @@ -7896,16 +7898,17 @@ // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | '{|' try_StepExpr(); - lk = -1; + memoize(2, e0A, -1); + continue; } catch (p1A) { - lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0A, -2); + break; } - b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { - b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { - b2 = b2A; e2 = e2A; end = e2A; }} - memoize(2, e0, lk); } } if (lk != -1 @@ -9466,16 +9469,17 @@ try { try_PostfixExpr(); - lk = -1; + memoize(3, e0A, -1); + lk = -3; } catch (p1A) { lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0A, -2); } - b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { - b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { - b2 = b2A; e2 = e2A; end = e2A; }} - memoize(3, e0, lk); } } switch (lk) @@ -10081,6 +10085,8 @@ case 141568: // 'unordered' '{' try_PostfixExpr(); break; + case -3: + break; default: try_AxisStep(); } @@ -12937,16 +12943,17 @@ try { try_KindTest(); - lk = -1; + memoize(4, e0A, -1); + lk = -8; } catch (p1A) { lk = -6; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(4, e0A, -6); } - b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { - b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { - b2 = b2A; e2 = e2A; end = e2A; }} - memoize(4, e0, lk); } } switch (lk) @@ -12984,6 +12991,8 @@ case 242: // 'structured-item' try_StructuredItemTest(); break; + case -8: + break; default: try_AtomicOrUnionType(); } @@ -14004,22 +14013,25 @@ try { try_AnyFunctionTest(); - lk = -1; + memoize(5, e0A, -1); + lk = -3; } catch (p1A) { lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0A, -2); } - b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { - b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { - b2 = b2A; e2 = e2A; end = e2A; }} - memoize(5, e0, lk); } switch (lk) { case -1: try_AnyFunctionTest(); break; + case -3: + break; default: try_TypedFunctionTest(); } @@ -22135,16 +22147,17 @@ try { try_Statement(); - lk = -1; + memoize(6, e0A, -1); + continue; } catch (p1A) { - lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0A, -2); + break; } - b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { - b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { - b2 = b2A; e2 = e2A; end = e2A; }} - memoize(6, e0, lk); } } if (lk != -1 @@ -23499,7 +23512,8 @@ try { try_ApplyStatement(); - lk = -1; + memoize(7, e0A, -1); + lk = -14; } catch (p1A) { @@ -23509,7 +23523,8 @@ b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { b2 = b2A; e2 = e2A; end = e2A; }} try_AssignStatement(); - lk = -2; + memoize(7, e0A, -2); + lk = -14; } catch (p2A) { @@ -23519,7 +23534,8 @@ b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { b2 = b2A; e2 = e2A; end = e2A; }} try_BlockStatement(); - lk = -3; + memoize(7, e0A, -3); + lk = -14; } catch (p3A) { @@ -23529,19 +23545,20 @@ b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { b2 = b2A; e2 = e2A; end = e2A; }} try_VarDeclStatement(); - lk = -12; + memoize(7, e0A, -12); + lk = -14; } catch (p12A) { lk = -13; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0A, -13); } } } } - b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { - b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { - b2 = b2A; e2 = e2A; end = e2A; }} - memoize(7, e0, lk); } } switch (lk) @@ -23587,6 +23604,8 @@ case -13: try_WhileStatement(); break; + case -14: + break; default: try_ApplyStatement(); } @@ -24728,11 +24747,9 @@ shiftT(250); // 'try' lookahead1W(87); // S^WS | '(:' | '{' try_BlockStatement(); - for (;;) - { - lookahead1W(36); // S^WS | '(:' | 'catch' - shiftT(91); // 'catch' - lookahead1W(251); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + lookahead1W(36); // S^WS | '(:' | 'catch' + shiftT(91); // 'catch' + lookahead1W(251); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | // 'ancestor-or-self' | 'and' | 'as' | 'ascending' | 'at' | 'attribute' | // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | @@ -24753,8 +24770,10 @@ // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | // 'xquery' - try_CatchErrorList(); - try_BlockStatement(); + try_CatchErrorList(); + try_BlockStatement(); + for (;;) + { lookahead1W(278); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | // '..' | '/' | '//' | '<' | '' | EOF + /* ws: explicit */ + +PI ::= DirPIContents | '?>' | EOF + /* ws: explicit */ + +Pragma ::= PragmaContents | '#)' | EOF + /* ws: explicit */ + +Comment ::= ':)' | '(:' | CommentContents | EOF + /* ws: explicit */ + +CommentDoc + ::= DocTag | DocCommentContents | ':)' | '(:' | EOF + /* ws: explicit */ + +QuotString + ::= PredefinedEntityRef | CharRef | EscapeQuot | QuotChar | '"' | EOF + /* ws: explicit */ + +AposString + ::= PredefinedEntityRef | CharRef | EscapeApos | AposChar | "'" | EOF + /* ws: explicit */ + +Prefix ::= NCName + +_EQName ::= EQName + +Whitespace + ::= S^WS + /* ws: definition */ + +EQName ::= FunctionName + | 'attribute' + | 'comment' + | 'document-node' + | 'element' + | 'empty-sequence' + | 'function' + | 'if' + | 'item' + | 'namespace-node' + | 'node' + | 'processing-instruction' + | 'schema-attribute' + | 'schema-element' + | 'switch' + | 'text' + | 'typeswitch' +FunctionName + ::= EQName^Token + | 'after' + | 'ancestor' + | 'ancestor-or-self' + | 'and' + | 'as' + | 'ascending' + | 'before' + | 'case' + | 'cast' + | 'castable' + | 'child' + | 'collation' + | 'copy' + | 'count' + | 'declare' + | 'default' + | 'delete' + | 'descendant' + | 'descendant-or-self' + | 'descending' + | 'div' + | 'document' + | 'else' + | 'empty' + | 'end' + | 'eq' + | 'every' + | 'except' + | 'first' + | 'following' + | 'following-sibling' + | 'for' + | 'ge' + | 'group' + | 'gt' + | 'idiv' + | 'import' + | 'insert' + | 'instance' + | 'intersect' + | 'into' + | 'is' + | 'last' + | 'le' + | 'let' + | 'lt' + | 'mod' + | 'modify' + | 'module' + | 'namespace' + | 'ne' + | 'only' + | 'or' + | 'order' + | 'ordered' + | 'parent' + | 'preceding' + | 'preceding-sibling' + | 'rename' + | 'replace' + | 'return' + | 'satisfies' + | 'self' + | 'some' + | 'stable' + | 'start' + | 'to' + | 'treat' + | 'try' + | 'union' + | 'unordered' + | 'validate' + | 'where' + | 'with' + | 'xquery' + | 'allowing' + | 'at' + | 'base-uri' + | 'boundary-space' + | 'break' + | 'catch' + | 'construction' + | 'context' + | 'continue' + | 'copy-namespaces' + | 'decimal-format' + | 'encoding' + | 'exit' + | 'external' + | 'ft-option' + | 'in' + | 'index' + | 'integrity' + | 'lax' + | 'nodes' + | 'option' + | 'ordering' + | 'revalidation' + | 'schema' + | 'score' + | 'sliding' + | 'strict' + | 'tumbling' + | 'type' + | 'updating' + | 'value' + | 'variable' + | 'version' + | 'while' + | 'constraint' + | 'loop' + | 'returning' +NCName ::= NCName^Token + | 'after' + | 'and' + | 'as' + | 'ascending' + | 'before' + | 'case' + | 'cast' + | 'castable' + | 'collation' + | 'count' + | 'default' + | 'descending' + | 'div' + | 'else' + | 'empty' + | 'end' + | 'eq' + | 'except' + | 'for' + | 'ge' + | 'group' + | 'gt' + | 'idiv' + | 'instance' + | 'intersect' + | 'into' + | 'is' + | 'le' + | 'let' + | 'lt' + | 'mod' + | 'modify' + | 'ne' + | 'only' + | 'or' + | 'order' + | 'return' + | 'satisfies' + | 'stable' + | 'start' + | 'to' + | 'treat' + | 'union' + | 'where' + | 'with' + | 'ancestor' + | 'ancestor-or-self' + | 'attribute' + | 'child' + | 'comment' + | 'copy' + | 'declare' + | 'delete' + | 'descendant' + | 'descendant-or-self' + | 'document' + | 'document-node' + | 'element' + | 'empty-sequence' + | 'every' + | 'first' + | 'following' + | 'following-sibling' + | 'function' + | 'if' + | 'import' + | 'insert' + | 'item' + | 'last' + | 'module' + | 'namespace' + | 'namespace-node' + | 'node' + | 'ordered' + | 'parent' + | 'preceding' + | 'preceding-sibling' + | 'processing-instruction' + | 'rename' + | 'replace' + | 'schema-attribute' + | 'schema-element' + | 'self' + | 'some' + | 'switch' + | 'text' + | 'try' + | 'typeswitch' + | 'unordered' + | 'validate' + | 'variable' + | 'xquery' + | 'allowing' + | 'at' + | 'base-uri' + | 'boundary-space' + | 'break' + | 'catch' + | 'construction' + | 'context' + | 'continue' + | 'copy-namespaces' + | 'decimal-format' + | 'encoding' + | 'exit' + | 'external' + | 'ft-option' + | 'in' + | 'index' + | 'integrity' + | 'lax' + | 'nodes' + | 'option' + | 'ordering' + | 'revalidation' + | 'schema' + | 'score' + | 'sliding' + | 'strict' + | 'tumbling' + | 'type' + | 'updating' + | 'value' + | 'version' + | 'while' + | 'constraint' + | 'loop' + | 'returning' + + +ModuleDecl + ::= ('import' S)? ('module' | 'schema') S 'namespace' + +Annotation + ::= '%' EQName ? + +OptionDecl + ::= 'declare' S ( ( 'decimal-format' | 'option' ) + | ('default' S 'decimal-format') ) + +Operator ::= '!=' | ':=' | '>=' | '<=' | '=' | '<' | '>' | '-' | '+' | 'div' | '||' | '?' + +Variable ::= '$' EQName + +Tag ::= '<' QName + +EndTag ::= '' + +PragmaContents + ::= ( Char* - ( Char* '#' Char* ) )+ +DirCommentContents + ::= ( ( Char - '-' ) | '-' ( Char - '-' ) )+ +DirPIContents + ::= ( Char* - ( Char* '?' Char* ) ) +CDataSectionContents + ::= ( Char+ - ( Char* ']]>' Char* ) ) & ']]' + | ( Char+ - ( Char* ']]>' Char* ) ) & $ +AttrTest ::= "@" ( Wildcard | QName ) +Wildcard ::= "*" + | (NCName ":" "*") + | ("*" ":" NCName) + | (BracedURILiteral "*") +EQName ::= QName + | URIQualifiedName +URIQualifiedName + ::= BracedURILiteral NCName +BracedURILiteral + ::= 'Q' '{' (PredefinedEntityRef | CharRef | [^&{}] )* '}' +URILiteral + ::= StringLiteral +IntegerLiteral + ::= Digits +DecimalLiteral + ::= '.' Digits + | Digits '.' [0-9]* + /* ws: explicit */ +DoubleLiteral + ::= ( '.' Digits | Digits ( '.' [0-9]* )? ) [Ee] [+#x002D]? Digits + /* ws: explicit */ +PredefinedEntityRef + ::= '&' ( 'lt' | 'gt' | 'amp' | 'quot' | 'apos' ) ';' + /* ws: explicit */ +EscapeQuot + ::= '""' +EscapeApos + ::= "''" +QuotChar ::= (Char - ["&])+ +AposChar ::= (Char - [&'])+ +ElementContentChar + ::= (Char - [&<{}])+ +QuotAttrContentChar + ::= (Char - ["&<{}])+ +AposAttrContentChar + ::= (Char - [&'<{}])+ +PITarget ::= NCName - ( ( 'X' | 'x' ) ( 'M' | 'm' ) ( 'L' | 'l' ) ) +Name ::= NameStartChar NameChar* +NameStartChar + ::= [:A-Z_a-z#x00C0-#x00D6#x00D8-#x00F6#x00F8-#x02FF#x0370-#x037D#x037F-#x1FFF#x200C-#x200D#x2070-#x218F#x2C00-#x2FEF#x3001-#xD7FF#xF900-#xFDCF#xFDF0-#xFFFD#x10000-#xEFFFF] +NameChar ::= NameStartChar + | [-.0-9#x00B7#x0300-#x036F#x203F-#x2040] +NCName ::= Name - ( Char* ':' Char* ) +Char ::= [#x0009#x000A#x000D#x0020-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF] +QName ::= PrefixedName + | UnprefixedName +PrefixedName + ::= Prefix ':' LocalPart +UnprefixedName + ::= LocalPart +Prefix ::= NCName +LocalPart + ::= NCName +S ::= [#x0009#x000A#x000D#x0020]+ +CharRef ::= '&#' [0-9]+ ';' + | '&#x' [0-9A-Fa-f]+ ';' +Digits ::= [0-9]+ +CommentContents + ::= ( Char+ - ( Char* ( '(:' | ':)' ) Char* ) ) & '(' + | ( Char+ - ( Char* ( '(:' | ':)' ) Char* ) ) & $ + | ( ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) - ( Char* '(' ) ) & ':' +DocTag ::= ' @' NCName? +DocCommentContents + ::= ( ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) - ( Char* '(' ) ) & ':' + | ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) & '(' + | ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) & ' @' + | ( Char+ - ( Char* ( '(:' | ':)' | ' @') Char* ) ) & $ +EOF ::= $ +NonNCNameChar + ::= $ + | ':' + | ( Char - NameChar ) +DelimitingChar + ::= NonNCNameChar + | '-' + | '.' +DelimitingChar + \\ IntegerLiteral DecimalLiteral DoubleLiteral +NonNCNameChar + \\ EQName^Token QName NCName^Token 'NaN' 'after' 'all' + 'allowing' 'ancestor' 'ancestor-or-self' 'and' 'any' + 'append' 'array' 'as' 'ascending' 'at' 'attribute' + 'base-uri' 'before' 'boundary-space' 'break' 'by' 'case' + 'cast' 'castable' 'catch' 'check' 'child' 'collation' + 'collection' 'comment' 'constraint' 'construction' + 'contains' 'content' 'context' 'continue' 'copy' + 'copy-namespaces' 'count' 'decimal-format' + 'decimal-separator' 'declare' 'default' 'delete' + 'descendant' 'descendant-or-self' 'descending' + 'diacritics' 'different' 'digit' 'distance' 'div' + 'document' 'document-node' 'element' 'else' 'empty' + 'empty-sequence' 'encoding' 'end' 'entire' 'eq' 'every' + 'exactly' 'except' 'exit' 'external' 'first' 'following' + 'following-sibling' 'for' 'foreach' 'foreign' 'from' + 'ft-option' 'ftand' 'ftnot' 'ftor' 'function' 'ge' + 'greatest' 'group' 'grouping-separator' 'gt' 'idiv' 'if' + 'import' 'in' 'index' 'infinity' 'inherit' 'insensitive' + 'insert' 'instance' 'integrity' 'intersect' 'into' 'is' + 'item' 'json' 'json-item' 'key' 'language' 'last' 'lax' + 'le' 'least' 'let' 'levels' 'loop' 'lowercase' 'lt' + 'minus-sign' 'mod' 'modify' 'module' 'most' 'namespace' + 'namespace-node' 'ne' 'next' 'no' 'no-inherit' + 'no-preserve' 'node' 'nodes' 'not' 'object' 'occurs' + 'of' 'on' 'only' 'option' 'or' 'order' 'ordered' + 'ordering' 'paragraph' 'paragraphs' 'parent' + 'pattern-separator' 'per-mille' 'percent' 'phrase' + 'position' 'preceding' 'preceding-sibling' 'preserve' + 'previous' 'processing-instruction' 'relationship' + 'rename' 'replace' 'return' 'returning' 'revalidation' + 'same' 'satisfies' 'schema' 'schema-attribute' + 'schema-element' 'score' 'self' 'sensitive' 'sentence' + 'sentences' 'skip' 'sliding' 'some' 'stable' 'start' + 'stemming' 'stop' 'strict' 'strip' 'structured-item' + 'switch' 'text' 'then' 'thesaurus' 'times' 'to' + 'treat' 'try' 'tumbling' 'type' 'typeswitch' 'union' + 'unique' 'unordered' 'updating' 'uppercase' 'using' + 'validate' 'value' 'variable' 'version' 'weight' + 'when' 'where' 'while' 'wildcards' 'window' 'with' + 'without' 'word' 'words' 'xquery' 'zero-digit' +'*' << Wildcard '*'^OccurrenceIndicator +EQName^Token + << 'after' 'ancestor' 'ancestor-or-self' 'and' 'as' 'ascending' 'attribute' 'before' 'case' 'cast' 'castable' 'child' 'collation' 'comment' 'copy' 'count' 'declare' 'default' 'delete' 'descendant' 'descendant-or-self' 'descending' 'div' 'document' 'document-node' 'element' 'else' 'empty' 'empty-sequence' 'end' 'eq' 'every' 'except' 'first' 'following' 'following-sibling' 'for' 'function' 'ge' 'group' 'gt' 'idiv' 'if' 'import' 'insert' 'instance' 'intersect' 'into' 'is' 'item' 'last' 'le' 'let' 'lt' 'mod' 'modify' 'module' 'namespace' 'namespace-node' 'ne' 'node' 'only' 'or' 'order' 'ordered' 'parent' 'preceding' 'preceding-sibling' 'processing-instruction' 'rename' 'replace' 'return' 'satisfies' 'schema-attribute' 'schema-element' 'self' 'some' 'stable' 'start' 'switch' 'text' 'to' 'treat' 'try' 'typeswitch' 'union' 'unordered' 'validate' 'where' 'with' 'xquery' 'contains' 'paragraphs' 'sentences' 'times' 'words' 'by' 'collection' 'allowing' 'at' 'base-uri' 'boundary-space' 'break' 'catch' 'construction' 'context' 'continue' 'copy-namespaces' 'decimal-format' 'encoding' 'exit' 'external' 'ft-option' 'in' 'index' 'integrity' 'lax' 'nodes' 'option' 'ordering' 'revalidation' 'schema' 'score' 'sliding' 'strict' 'tumbling' 'type' 'updating' 'value' 'variable' 'version' 'while' 'constraint' 'loop' 'returning' 'append' 'array' 'json-item' 'object' 'structured-item' +NCName^Token + << 'after' 'and' 'as' 'ascending' 'before' 'case' 'cast' 'castable' 'collation' 'count' 'default' 'descending' 'div' 'else' 'empty' 'end' 'eq' 'except' 'for' 'ge' 'group' 'gt' 'idiv' 'instance' 'intersect' 'into' 'is' 'le' 'let' 'lt' 'mod' 'modify' 'ne' 'only' 'or' 'order' 'return' 'satisfies' 'stable' 'start' 'to' 'treat' 'union' 'where' 'with' 'contains' 'paragraphs' 'sentences' 'times' 'words' 'by' 'ancestor' 'ancestor-or-self' 'attribute' 'child' 'comment' 'copy' 'declare' 'delete' 'descendant' 'descendant-or-self' 'document' 'document-node' 'element' 'empty-sequence' 'every' 'first' 'following' 'following-sibling' 'function' 'if' 'import' 'insert' 'item' 'last' 'module' 'namespace' 'namespace-node' 'node' 'ordered' 'parent' 'preceding' 'preceding-sibling' 'processing-instruction' 'rename' 'replace' 'schema-attribute' 'schema-element' 'self' 'some' 'switch' 'text' 'try' 'typeswitch' 'unordered' 'validate' 'variable' 'xquery' 'allowing' 'at' 'base-uri' 'boundary-space' 'break' 'catch' 'construction' 'context' 'continue' 'copy-namespaces' 'decimal-format' 'encoding' 'exit' 'external' 'ft-option' 'in' 'index' 'integrity' 'lax' 'nodes' 'option' 'ordering' 'revalidation' 'schema' 'score' 'sliding' 'strict' 'tumbling' 'type' 'updating' 'value' 'version' 'while' 'constraint' 'loop' 'returning' + + + + diff --git a/lib/ace/mode/xquery/XQueryTokenizer.js b/lib/ace/mode/xquery/XQueryTokenizer.js new file mode 100644 index 00000000..1fe583a0 --- /dev/null +++ b/lib/ace/mode/xquery/XQueryTokenizer.js @@ -0,0 +1,4202 @@ +// This file was generated on Thu Jan 31, 2013 13:21 (UTC+01) by REx v5.22 which is Copyright (c) 1979-2013 by Gunther Rademacher +// REx command line: XQueryTokenizer.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "XQueryTokenizer.ebnf" + /* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + define(function(require, exports, module){ + var XQueryTokenizer = exports.XQueryTokenizer = function XQueryTokenizer(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 40 "XQueryTokenizer.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + end = e; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? XQueryTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = XQueryTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [XQueryTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // S^WS | EOF | '!' | '"' | "'" | '(' | '(#' | '(:' | '(:~' | ')' | ',' | '.' | + // '/' | ':' | ';' | '' + switch (l1) + { + case 9: // DirCommentContents + shift(9); // DirCommentContents + break; + case 46: // '-->' + shift(46); // '-->' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(2); // DirPIContents | EOF | '?>' + switch (l1) + { + case 10: // DirPIContents + shift(10); // DirPIContents + break; + case 58: // '?>' + shift(58); // '?>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(0); // PragmaContents | EOF | '#)' + switch (l1) + { + case 8: // PragmaContents + shift(8); // PragmaContents + break; + case 36: // '#)' + shift(36); // '#)' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 51: // ':)' + shift(51); // ':)' + break; + case 40: // '(:' + shift(40); // '(:' + break; + case 30: // CommentContents + shift(30); // CommentContents + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 31: // DocTag + shift(31); // DocTag + break; + case 32: // DocCommentContents + shift(32); // DocCommentContents + break; + case 51: // ':)' + shift(51); // ':)' + break; + case 40: // '(:' + shift(40); // '(:' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 21: // QuotChar + shift(21); // QuotChar + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 22: // AposChar + shift(22); // AposChar + break; + case 37: // "'" + shift(37); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 75: // 'attribute' + shift(75); // 'attribute' + break; + case 89: // 'comment' + shift(89); // 'comment' + break; + case 113: // 'document-node' + shift(113); // 'document-node' + break; + case 114: // 'element' + shift(114); // 'element' + break; + case 117: // 'empty-sequence' + shift(117); // 'empty-sequence' + break; + case 138: // 'function' + shift(138); // 'function' + break; + case 145: // 'if' + shift(145); // 'if' + break; + case 158: // 'item' + shift(158); // 'item' + break; + case 178: // 'namespace-node' + shift(178); // 'namespace-node' + break; + case 184: // 'node' + shift(184); // 'node' + break; + case 209: // 'processing-instruction' + shift(209); // 'processing-instruction' + break; + case 219: // 'schema-attribute' + shift(219); // 'schema-attribute' + break; + case 220: // 'schema-element' + shift(220); // 'schema-element' + break; + case 236: // 'switch' + shift(236); // 'switch' + break; + case 237: // 'text' + shift(237); // 'text' + break; + case 246: // 'typeswitch' + shift(246); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 14: // EQName^Token + shift(14); // EQName^Token + break; + case 63: // 'after' + shift(63); // 'after' + break; + case 66: // 'ancestor' + shift(66); // 'ancestor' + break; + case 67: // 'ancestor-or-self' + shift(67); // 'ancestor-or-self' + break; + case 68: // 'and' + shift(68); // 'and' + break; + case 72: // 'as' + shift(72); // 'as' + break; + case 73: // 'ascending' + shift(73); // 'ascending' + break; + case 77: // 'before' + shift(77); // 'before' + break; + case 81: // 'case' + shift(81); // 'case' + break; + case 82: // 'cast' + shift(82); // 'cast' + break; + case 83: // 'castable' + shift(83); // 'castable' + break; + case 86: // 'child' + shift(86); // 'child' + break; + case 87: // 'collation' + shift(87); // 'collation' + break; + case 96: // 'copy' + shift(96); // 'copy' + break; + case 98: // 'count' + shift(98); // 'count' + break; + case 101: // 'declare' + shift(101); // 'declare' + break; + case 102: // 'default' + shift(102); // 'default' + break; + case 103: // 'delete' + shift(103); // 'delete' + break; + case 104: // 'descendant' + shift(104); // 'descendant' + break; + case 105: // 'descendant-or-self' + shift(105); // 'descendant-or-self' + break; + case 106: // 'descending' + shift(106); // 'descending' + break; + case 111: // 'div' + shift(111); // 'div' + break; + case 112: // 'document' + shift(112); // 'document' + break; + case 115: // 'else' + shift(115); // 'else' + break; + case 116: // 'empty' + shift(116); // 'empty' + break; + case 119: // 'end' + shift(119); // 'end' + break; + case 121: // 'eq' + shift(121); // 'eq' + break; + case 122: // 'every' + shift(122); // 'every' + break; + case 124: // 'except' + shift(124); // 'except' + break; + case 127: // 'first' + shift(127); // 'first' + break; + case 128: // 'following' + shift(128); // 'following' + break; + case 129: // 'following-sibling' + shift(129); // 'following-sibling' + break; + case 130: // 'for' + shift(130); // 'for' + break; + case 139: // 'ge' + shift(139); // 'ge' + break; + case 141: // 'group' + shift(141); // 'group' + break; + case 143: // 'gt' + shift(143); // 'gt' + break; + case 144: // 'idiv' + shift(144); // 'idiv' + break; + case 146: // 'import' + shift(146); // 'import' + break; + case 152: // 'insert' + shift(152); // 'insert' + break; + case 153: // 'instance' + shift(153); // 'instance' + break; + case 155: // 'intersect' + shift(155); // 'intersect' + break; + case 156: // 'into' + shift(156); // 'into' + break; + case 157: // 'is' + shift(157); // 'is' + break; + case 163: // 'last' + shift(163); // 'last' + break; + case 165: // 'le' + shift(165); // 'le' + break; + case 167: // 'let' + shift(167); // 'let' + break; + case 171: // 'lt' + shift(171); // 'lt' + break; + case 173: // 'mod' + shift(173); // 'mod' + break; + case 174: // 'modify' + shift(174); // 'modify' + break; + case 175: // 'module' + shift(175); // 'module' + break; + case 177: // 'namespace' + shift(177); // 'namespace' + break; + case 179: // 'ne' + shift(179); // 'ne' + break; + case 191: // 'only' + shift(191); // 'only' + break; + case 193: // 'or' + shift(193); // 'or' + break; + case 194: // 'order' + shift(194); // 'order' + break; + case 195: // 'ordered' + shift(195); // 'ordered' + break; + case 199: // 'parent' + shift(199); // 'parent' + break; + case 205: // 'preceding' + shift(205); // 'preceding' + break; + case 206: // 'preceding-sibling' + shift(206); // 'preceding-sibling' + break; + case 211: // 'rename' + shift(211); // 'rename' + break; + case 212: // 'replace' + shift(212); // 'replace' + break; + case 213: // 'return' + shift(213); // 'return' + break; + case 217: // 'satisfies' + shift(217); // 'satisfies' + break; + case 222: // 'self' + shift(222); // 'self' + break; + case 228: // 'some' + shift(228); // 'some' + break; + case 229: // 'stable' + shift(229); // 'stable' + break; + case 230: // 'start' + shift(230); // 'start' + break; + case 241: // 'to' + shift(241); // 'to' + break; + case 242: // 'treat' + shift(242); // 'treat' + break; + case 243: // 'try' + shift(243); // 'try' + break; + case 247: // 'union' + shift(247); // 'union' + break; + case 249: // 'unordered' + shift(249); // 'unordered' + break; + case 253: // 'validate' + shift(253); // 'validate' + break; + case 259: // 'where' + shift(259); // 'where' + break; + case 263: // 'with' + shift(263); // 'with' + break; + case 267: // 'xquery' + shift(267); // 'xquery' + break; + case 65: // 'allowing' + shift(65); // 'allowing' + break; + case 74: // 'at' + shift(74); // 'at' + break; + case 76: // 'base-uri' + shift(76); // 'base-uri' + break; + case 78: // 'boundary-space' + shift(78); // 'boundary-space' + break; + case 79: // 'break' + shift(79); // 'break' + break; + case 84: // 'catch' + shift(84); // 'catch' + break; + case 91: // 'construction' + shift(91); // 'construction' + break; + case 94: // 'context' + shift(94); // 'context' + break; + case 95: // 'continue' + shift(95); // 'continue' + break; + case 97: // 'copy-namespaces' + shift(97); // 'copy-namespaces' + break; + case 99: // 'decimal-format' + shift(99); // 'decimal-format' + break; + case 118: // 'encoding' + shift(118); // 'encoding' + break; + case 125: // 'exit' + shift(125); // 'exit' + break; + case 126: // 'external' + shift(126); // 'external' + break; + case 134: // 'ft-option' + shift(134); // 'ft-option' + break; + case 147: // 'in' + shift(147); // 'in' + break; + case 148: // 'index' + shift(148); // 'index' + break; + case 154: // 'integrity' + shift(154); // 'integrity' + break; + case 164: // 'lax' + shift(164); // 'lax' + break; + case 185: // 'nodes' + shift(185); // 'nodes' + break; + case 192: // 'option' + shift(192); // 'option' + break; + case 196: // 'ordering' + shift(196); // 'ordering' + break; + case 215: // 'revalidation' + shift(215); // 'revalidation' + break; + case 218: // 'schema' + shift(218); // 'schema' + break; + case 221: // 'score' + shift(221); // 'score' + break; + case 227: // 'sliding' + shift(227); // 'sliding' + break; + case 233: // 'strict' + shift(233); // 'strict' + break; + case 244: // 'tumbling' + shift(244); // 'tumbling' + break; + case 245: // 'type' + shift(245); // 'type' + break; + case 250: // 'updating' + shift(250); // 'updating' + break; + case 254: // 'value' + shift(254); // 'value' + break; + case 255: // 'variable' + shift(255); // 'variable' + break; + case 256: // 'version' + shift(256); // 'version' + break; + case 260: // 'while' + shift(260); // 'while' + break; + case 90: // 'constraint' + shift(90); // 'constraint' + break; + case 169: // 'loop' + shift(169); // 'loop' + break; + default: + shift(214); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 26: // NCName^Token + shift(26); // NCName^Token + break; + case 63: // 'after' + shift(63); // 'after' + break; + case 68: // 'and' + shift(68); // 'and' + break; + case 72: // 'as' + shift(72); // 'as' + break; + case 73: // 'ascending' + shift(73); // 'ascending' + break; + case 77: // 'before' + shift(77); // 'before' + break; + case 81: // 'case' + shift(81); // 'case' + break; + case 82: // 'cast' + shift(82); // 'cast' + break; + case 83: // 'castable' + shift(83); // 'castable' + break; + case 87: // 'collation' + shift(87); // 'collation' + break; + case 98: // 'count' + shift(98); // 'count' + break; + case 102: // 'default' + shift(102); // 'default' + break; + case 106: // 'descending' + shift(106); // 'descending' + break; + case 111: // 'div' + shift(111); // 'div' + break; + case 115: // 'else' + shift(115); // 'else' + break; + case 116: // 'empty' + shift(116); // 'empty' + break; + case 119: // 'end' + shift(119); // 'end' + break; + case 121: // 'eq' + shift(121); // 'eq' + break; + case 124: // 'except' + shift(124); // 'except' + break; + case 130: // 'for' + shift(130); // 'for' + break; + case 139: // 'ge' + shift(139); // 'ge' + break; + case 141: // 'group' + shift(141); // 'group' + break; + case 143: // 'gt' + shift(143); // 'gt' + break; + case 144: // 'idiv' + shift(144); // 'idiv' + break; + case 153: // 'instance' + shift(153); // 'instance' + break; + case 155: // 'intersect' + shift(155); // 'intersect' + break; + case 156: // 'into' + shift(156); // 'into' + break; + case 157: // 'is' + shift(157); // 'is' + break; + case 165: // 'le' + shift(165); // 'le' + break; + case 167: // 'let' + shift(167); // 'let' + break; + case 171: // 'lt' + shift(171); // 'lt' + break; + case 173: // 'mod' + shift(173); // 'mod' + break; + case 174: // 'modify' + shift(174); // 'modify' + break; + case 179: // 'ne' + shift(179); // 'ne' + break; + case 191: // 'only' + shift(191); // 'only' + break; + case 193: // 'or' + shift(193); // 'or' + break; + case 194: // 'order' + shift(194); // 'order' + break; + case 213: // 'return' + shift(213); // 'return' + break; + case 217: // 'satisfies' + shift(217); // 'satisfies' + break; + case 229: // 'stable' + shift(229); // 'stable' + break; + case 230: // 'start' + shift(230); // 'start' + break; + case 241: // 'to' + shift(241); // 'to' + break; + case 242: // 'treat' + shift(242); // 'treat' + break; + case 247: // 'union' + shift(247); // 'union' + break; + case 259: // 'where' + shift(259); // 'where' + break; + case 263: // 'with' + shift(263); // 'with' + break; + case 66: // 'ancestor' + shift(66); // 'ancestor' + break; + case 67: // 'ancestor-or-self' + shift(67); // 'ancestor-or-self' + break; + case 75: // 'attribute' + shift(75); // 'attribute' + break; + case 86: // 'child' + shift(86); // 'child' + break; + case 89: // 'comment' + shift(89); // 'comment' + break; + case 96: // 'copy' + shift(96); // 'copy' + break; + case 101: // 'declare' + shift(101); // 'declare' + break; + case 103: // 'delete' + shift(103); // 'delete' + break; + case 104: // 'descendant' + shift(104); // 'descendant' + break; + case 105: // 'descendant-or-self' + shift(105); // 'descendant-or-self' + break; + case 112: // 'document' + shift(112); // 'document' + break; + case 113: // 'document-node' + shift(113); // 'document-node' + break; + case 114: // 'element' + shift(114); // 'element' + break; + case 117: // 'empty-sequence' + shift(117); // 'empty-sequence' + break; + case 122: // 'every' + shift(122); // 'every' + break; + case 127: // 'first' + shift(127); // 'first' + break; + case 128: // 'following' + shift(128); // 'following' + break; + case 129: // 'following-sibling' + shift(129); // 'following-sibling' + break; + case 138: // 'function' + shift(138); // 'function' + break; + case 145: // 'if' + shift(145); // 'if' + break; + case 146: // 'import' + shift(146); // 'import' + break; + case 152: // 'insert' + shift(152); // 'insert' + break; + case 158: // 'item' + shift(158); // 'item' + break; + case 163: // 'last' + shift(163); // 'last' + break; + case 175: // 'module' + shift(175); // 'module' + break; + case 177: // 'namespace' + shift(177); // 'namespace' + break; + case 178: // 'namespace-node' + shift(178); // 'namespace-node' + break; + case 184: // 'node' + shift(184); // 'node' + break; + case 195: // 'ordered' + shift(195); // 'ordered' + break; + case 199: // 'parent' + shift(199); // 'parent' + break; + case 205: // 'preceding' + shift(205); // 'preceding' + break; + case 206: // 'preceding-sibling' + shift(206); // 'preceding-sibling' + break; + case 209: // 'processing-instruction' + shift(209); // 'processing-instruction' + break; + case 211: // 'rename' + shift(211); // 'rename' + break; + case 212: // 'replace' + shift(212); // 'replace' + break; + case 219: // 'schema-attribute' + shift(219); // 'schema-attribute' + break; + case 220: // 'schema-element' + shift(220); // 'schema-element' + break; + case 222: // 'self' + shift(222); // 'self' + break; + case 228: // 'some' + shift(228); // 'some' + break; + case 236: // 'switch' + shift(236); // 'switch' + break; + case 237: // 'text' + shift(237); // 'text' + break; + case 243: // 'try' + shift(243); // 'try' + break; + case 246: // 'typeswitch' + shift(246); // 'typeswitch' + break; + case 249: // 'unordered' + shift(249); // 'unordered' + break; + case 253: // 'validate' + shift(253); // 'validate' + break; + case 255: // 'variable' + shift(255); // 'variable' + break; + case 267: // 'xquery' + shift(267); // 'xquery' + break; + case 65: // 'allowing' + shift(65); // 'allowing' + break; + case 74: // 'at' + shift(74); // 'at' + break; + case 76: // 'base-uri' + shift(76); // 'base-uri' + break; + case 78: // 'boundary-space' + shift(78); // 'boundary-space' + break; + case 79: // 'break' + shift(79); // 'break' + break; + case 84: // 'catch' + shift(84); // 'catch' + break; + case 91: // 'construction' + shift(91); // 'construction' + break; + case 94: // 'context' + shift(94); // 'context' + break; + case 95: // 'continue' + shift(95); // 'continue' + break; + case 97: // 'copy-namespaces' + shift(97); // 'copy-namespaces' + break; + case 99: // 'decimal-format' + shift(99); // 'decimal-format' + break; + case 118: // 'encoding' + shift(118); // 'encoding' + break; + case 125: // 'exit' + shift(125); // 'exit' + break; + case 126: // 'external' + shift(126); // 'external' + break; + case 134: // 'ft-option' + shift(134); // 'ft-option' + break; + case 147: // 'in' + shift(147); // 'in' + break; + case 148: // 'index' + shift(148); // 'index' + break; + case 154: // 'integrity' + shift(154); // 'integrity' + break; + case 164: // 'lax' + shift(164); // 'lax' + break; + case 185: // 'nodes' + shift(185); // 'nodes' + break; + case 192: // 'option' + shift(192); // 'option' + break; + case 196: // 'ordering' + shift(196); // 'ordering' + break; + case 215: // 'revalidation' + shift(215); // 'revalidation' + break; + case 218: // 'schema' + shift(218); // 'schema' + break; + case 221: // 'score' + shift(221); // 'score' + break; + case 227: // 'sliding' + shift(227); // 'sliding' + break; + case 233: // 'strict' + shift(233); // 'strict' + break; + case 244: // 'tumbling' + shift(244); // 'tumbling' + break; + case 245: // 'type' + shift(245); // 'type' + break; + case 250: // 'updating' + shift(250); // 'updating' + break; + case 254: // 'value' + shift(254); // 'value' + break; + case 256: // 'version' + shift(256); // 'version' + break; + case 260: // 'while' + shift(260); // 'while' + break; + case 90: // 'constraint' + shift(90); // 'constraint' + break; + case 169: // 'loop' + shift(169); // 'loop' + break; + default: + shift(214); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 28) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = XQueryTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = XQueryTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; + else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +XQueryTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 274; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2066 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(XQueryTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +XQueryTokenizer.MAP0 = +[ + /* 0 */ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, + /* 36 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, + /* 64 */ 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, + /* 91 */ 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 118 */ 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 +]; + +XQueryTokenizer.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, + /* 126 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, + /* 147 */ 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, + /* 168 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, + /* 189 */ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + /* 210 */ 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + /* 231 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 290 */ 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, + /* 317 */ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + /* 344 */ 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, + /* 371 */ 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, + /* 398 */ 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, + /* 425 */ 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 +]; + +XQueryTokenizer.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, + /* 17 */ 35 +]; + +XQueryTokenizer.INITIAL = +[ + /* 0 */ 36865, 2, 45059, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +XQueryTokenizer.TRANSITION = +[ + /* 0 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 30 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 45 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 60 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 75 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 90 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 105 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 120 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 135 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 150 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 165 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 180 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 195 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 210 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 225 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 240 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 255 */ 19486, 17152, 17933, 17949, 22219, 19599, 18165, 22218, 18207, 25319, 18804, 18068, 18087, 22320, 17978, + /* 270 */ 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 18103, 23986, 18230, 22287, 19971, 22293, + /* 285 */ 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19148, 32349, 27080, 18246, + /* 300 */ 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 19203, 36055, + /* 315 */ 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, + /* 330 */ 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 32228, 18636, 36761, 36777, 19868, + /* 345 */ 35845, 18664, 18688, 18737, 18758, 19692, 19878, 18787, 18820, 18858, 18917, 18947, 18963, 19005, 18832, + /* 360 */ 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, + /* 375 */ 19591, 19182, 19219, 19235, 19265, 19301, 19397, 19413, 19429, 19469, 19484, 19486, 19486, 19486, 19486, + /* 390 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 405 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 420 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 435 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 450 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 465 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 480 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 495 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 510 */ 19486, 19486, 17872, 19502, 17949, 22219, 19599, 18165, 22218, 22159, 19518, 18804, 18068, 18087, 22320, + /* 525 */ 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 18103, 23986, 18230, 22287, 19971, + /* 540 */ 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19148, 32349, 27080, + /* 555 */ 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 19203, + /* 570 */ 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, + /* 585 */ 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 32228, 18636, 36761, 36777, + /* 600 */ 19868, 35845, 18664, 18688, 18737, 18758, 19692, 19878, 18787, 18820, 18858, 18917, 18947, 18963, 19005, + /* 615 */ 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, + /* 630 */ 20013, 19591, 19182, 19219, 19235, 19265, 19301, 19397, 19413, 19429, 19469, 19484, 19486, 19486, 19486, + /* 645 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 660 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 675 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 690 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 705 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 720 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 735 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 750 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 765 */ 19486, 19486, 19486, 17347, 17933, 19547, 22219, 19599, 18351, 22218, 18207, 25319, 18804, 18068, 18087, + /* 780 */ 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, + /* 795 */ 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, 32349, + /* 810 */ 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, + /* 825 */ 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, + /* 840 */ 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, + /* 855 */ 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, + /* 870 */ 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, + /* 885 */ 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, + /* 900 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 915 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 930 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 945 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 960 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 975 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 990 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1005 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1020 */ 19486, 19486, 19486, 19486, 17857, 19666, 19708, 22219, 19599, 18165, 22218, 18207, 25319, 18804, 18068, + /* 1035 */ 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, + /* 1050 */ 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, + /* 1065 */ 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, + /* 1080 */ 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, + /* 1095 */ 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, + /* 1110 */ 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, + /* 1125 */ 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, + /* 1140 */ 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, + /* 1155 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1170 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1185 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1200 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1215 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1230 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1245 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1260 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1275 */ 19486, 19486, 19486, 19486, 19486, 19737, 17933, 19765, 22219, 19599, 19087, 22218, 18207, 25319, 18804, + /* 1290 */ 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19794, 23986, + /* 1305 */ 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 19818, 22219, 18223, 22280, 22219, 23980, + /* 1320 */ 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 19331, 18742, 32356, 27087, + /* 1335 */ 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, + /* 1350 */ 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, + /* 1365 */ 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, + /* 1380 */ 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, + /* 1395 */ 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, + /* 1410 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1425 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1440 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1455 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1470 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1485 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1500 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1515 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1530 */ 19486, 19486, 19486, 19486, 19486, 19486, 17257, 17933, 36858, 22219, 19599, 18165, 22218, 18207, 25319, + /* 1545 */ 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, + /* 1560 */ 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, + /* 1575 */ 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, + /* 1590 */ 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, + /* 1605 */ 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, + /* 1620 */ 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, + /* 1635 */ 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, + /* 1650 */ 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, + /* 1665 */ 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1680 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1695 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1710 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1725 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1740 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1755 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1770 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1785 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17302, 17933, 36858, 22219, 19599, 18165, 22218, 18207, + /* 1800 */ 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, + /* 1815 */ 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, + /* 1830 */ 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, + /* 1845 */ 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, + /* 1860 */ 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, + /* 1875 */ 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, + /* 1890 */ 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, + /* 1905 */ 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, + /* 1920 */ 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1935 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1950 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1965 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1980 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 1995 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2010 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2025 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2040 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17197, 19666, 19285, 22219, 19599, 18165, 22218, + /* 2055 */ 18207, 29084, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 19936, 18801, 18065, 18084, 22317, + /* 2070 */ 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 19853, 22219, 18223, + /* 2085 */ 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, + /* 2100 */ 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, + /* 2115 */ 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, + /* 2130 */ 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, + /* 2145 */ 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, + /* 2160 */ 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, + /* 2175 */ 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2190 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2205 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2220 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2235 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2250 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2265 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2280 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2295 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17842, 17933, 35043, 22219, 19599, 18165, + /* 2310 */ 22218, 18207, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, + /* 2325 */ 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, + /* 2340 */ 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, + /* 2355 */ 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, + /* 2370 */ 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, + /* 2385 */ 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, + /* 2400 */ 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, + /* 2415 */ 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, + /* 2430 */ 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2445 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2460 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2475 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2490 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2505 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2520 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2535 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2550 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17887, 19894, 36858, 22219, 19599, + /* 2565 */ 18165, 22218, 19778, 19910, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, + /* 2580 */ 18084, 22317, 19560, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, + /* 2595 */ 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, + /* 2610 */ 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, + /* 2625 */ 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, + /* 2640 */ 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, + /* 2655 */ 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, + /* 2670 */ 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, + /* 2685 */ 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2700 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2715 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2730 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2745 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2760 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2775 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2790 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2805 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17362, 19952, 36858, 22219, + /* 2820 */ 19599, 18165, 22218, 18989, 22825, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, + /* 2835 */ 18065, 18084, 22317, 18771, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, + /* 2850 */ 18181, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, + /* 2865 */ 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, + /* 2880 */ 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, + /* 2895 */ 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, + /* 2910 */ 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, + /* 2925 */ 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, + /* 2940 */ 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2955 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2970 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 2985 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3000 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3015 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3030 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3045 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3060 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17332, 17933, 36858, + /* 3075 */ 22219, 19599, 18165, 19968, 18207, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 21087, + /* 3090 */ 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, + /* 3105 */ 18157, 19987, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, + /* 3120 */ 18327, 18343, 18367, 18512, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, + /* 3135 */ 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, + /* 3150 */ 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, + /* 3165 */ 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, + /* 3180 */ 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, + /* 3195 */ 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3210 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3225 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3240 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3255 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3270 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3285 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3300 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3315 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17317, 17933, + /* 3330 */ 36858, 22219, 19599, 18165, 22218, 18207, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, + /* 3345 */ 18141, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, + /* 3360 */ 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, + /* 3375 */ 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, + /* 3390 */ 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, + /* 3405 */ 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, + /* 3420 */ 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, + /* 3435 */ 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, + /* 3450 */ 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3465 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3480 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3495 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3510 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3525 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3540 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3555 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3570 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17377, + /* 3585 */ 17933, 36858, 22219, 19599, 18165, 22218, 18207, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, + /* 3600 */ 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, + /* 3615 */ 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, + /* 3630 */ 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, + /* 3645 */ 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, + /* 3660 */ 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, + /* 3675 */ 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, + /* 3690 */ 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, + /* 3705 */ 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3720 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3735 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3750 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3765 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3780 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3795 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3810 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3825 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3840 */ 17167, 20029, 23280, 29869, 32392, 26301, 29995, 23207, 31237, 29869, 31250, 29869, 29869, 24985, 22938, + /* 3855 */ 24985, 24985, 20045, 29996, 26368, 29996, 29996, 36172, 20061, 29869, 29869, 29869, 29869, 27550, 24985, + /* 3870 */ 24985, 24985, 24985, 24985, 20081, 29996, 29996, 29996, 29996, 29996, 24519, 20107, 29869, 29869, 29869, + /* 3885 */ 29869, 20141, 20165, 24985, 24985, 24985, 28705, 19453, 20185, 29996, 29996, 29996, 23461, 24527, 22405, + /* 3900 */ 29869, 29869, 29870, 24985, 25690, 24985, 24985, 23723, 20530, 29996, 35108, 29996, 29996, 23796, 29869, + /* 3915 */ 29869, 27020, 26677, 24985, 24985, 30264, 23436, 29988, 29996, 29996, 35941, 20197, 36669, 29869, 32391, + /* 3930 */ 20218, 24985, 25779, 36472, 20387, 30585, 20237, 29869, 25148, 20271, 35783, 20294, 31536, 20745, 30219, + /* 3945 */ 33247, 20340, 31935, 27285, 32924, 20361, 20408, 20453, 35464, 32016, 32595, 27550, 20278, 32592, 20486, + /* 3960 */ 27633, 20419, 26679, 31532, 20428, 20502, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, + /* 3975 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 3990 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4005 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4020 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4035 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4050 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4065 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4080 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4095 */ 19486, 17392, 17933, 23280, 29869, 32392, 36447, 29995, 23345, 30172, 29869, 29869, 29869, 29869, 24985, + /* 4110 */ 24985, 24985, 24985, 20546, 29996, 29996, 29996, 29996, 35439, 20061, 29869, 29869, 29869, 29869, 27550, + /* 4125 */ 24985, 24985, 24985, 24985, 24985, 20081, 29996, 29996, 29996, 29996, 29996, 24519, 29869, 29869, 29869, + /* 4140 */ 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 23461, 24527, + /* 4155 */ 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, 29996, 23796, + /* 4170 */ 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, + /* 4185 */ 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, + /* 4200 */ 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, + /* 4215 */ 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, + /* 4230 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4245 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4260 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4275 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4290 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4305 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4320 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4335 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4350 */ 19486, 19486, 17467, 17933, 20562, 22219, 19599, 18165, 22218, 18207, 25319, 18804, 18068, 18087, 22320, + /* 4365 */ 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, + /* 4380 */ 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, + /* 4395 */ 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, + /* 4410 */ 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, + /* 4425 */ 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, + /* 4440 */ 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, + /* 4455 */ 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, + /* 4470 */ 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, + /* 4485 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4500 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4515 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4530 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4545 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4560 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4575 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4590 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4605 */ 19486, 19486, 19486, 17272, 17933, 23280, 29869, 32392, 22946, 29995, 23345, 33016, 29869, 29869, 29869, + /* 4620 */ 29869, 24985, 24985, 24985, 24985, 20597, 29996, 29996, 29996, 29996, 35302, 20061, 29869, 29869, 29869, + /* 4635 */ 29869, 27550, 24985, 24985, 24985, 24985, 24985, 20613, 29996, 29996, 29996, 29996, 29996, 20640, 29869, + /* 4650 */ 29869, 29869, 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, 20664, 29996, 29996, 29996, 29996, + /* 4665 */ 26181, 24527, 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 33956, 28593, 29996, 29996, 29996, + /* 4680 */ 29996, 28680, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 20684, 20712, 29996, 29996, 29996, 20197, + /* 4695 */ 29869, 29869, 32391, 24985, 24985, 20736, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, + /* 4710 */ 31536, 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, + /* 4725 */ 20278, 32592, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, + /* 4740 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4755 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4770 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4785 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4800 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4815 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4830 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4845 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 4860 */ 19486, 19486, 19486, 19486, 17902, 20761, 20777, 21367, 20844, 21550, 20806, 21639, 20823, 20860, 20886, + /* 4875 */ 20876, 21361, 17978, 18001, 18017, 21541, 18931, 22042, 20902, 20918, 21630, 21184, 20947, 20955, 20971, + /* 4890 */ 21505, 21370, 21249, 19602, 18127, 18700, 19602, 18157, 20996, 20807, 21027, 21604, 20807, 21597, 21782, + /* 4905 */ 21212, 21350, 21058, 21511, 21242, 21074, 18298, 18327, 18343, 18367, 18472, 21391, 22011, 21103, 21130, + /* 4920 */ 21011, 21139, 19346, 21793, 21466, 21155, 21916, 21962, 18457, 18497, 19249, 18528, 23440, 21420, 21114, + /* 4935 */ 21171, 21293, 21200, 21228, 21835, 21265, 21475, 17985, 18572, 18588, 18616, 19749, 22049, 21042, 21281, + /* 4950 */ 21309, 21339, 21822, 21323, 18664, 18688, 21386, 21407, 20931, 21436, 21452, 21491, 21527, 18917, 21566, + /* 4965 */ 21582, 21620, 21655, 21667, 21683, 21699, 21715, 21753, 20790, 19079, 21769, 21809, 20840, 18712, 18721, + /* 4980 */ 20980, 21851, 21902, 20836, 21888, 21932, 21948, 21998, 22027, 22065, 22081, 19361, 22097, 22113, 19486, + /* 4995 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5010 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5025 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5040 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5055 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5070 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5085 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5100 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5115 */ 19486, 19486, 19486, 19486, 19486, 17407, 17933, 36858, 22219, 19599, 18165, 22218, 18207, 25319, 18804, + /* 5130 */ 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19531, 19195, 23986, + /* 5145 */ 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, + /* 5160 */ 18978, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, + /* 5175 */ 18253, 22264, 19166, 22132, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 20696, 36061, + /* 5190 */ 20581, 18403, 18425, 22147, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 22175, 18885, 18901, 19837, + /* 5205 */ 32244, 36761, 36777, 19868, 35845, 18664, 18688, 22210, 36773, 25332, 19878, 18787, 18820, 18858, 18917, + /* 5220 */ 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, + /* 5235 */ 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, + /* 5250 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5265 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5280 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5295 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5310 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5325 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5340 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5355 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5370 */ 19486, 19486, 19486, 19486, 19486, 19486, 17212, 17933, 27067, 22219, 19599, 18165, 22218, 18207, 25319, + /* 5385 */ 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, + /* 5400 */ 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, + /* 5415 */ 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, + /* 5430 */ 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, + /* 5445 */ 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, + /* 5460 */ 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, + /* 5475 */ 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, + /* 5490 */ 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, + /* 5505 */ 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5520 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5535 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5550 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5565 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5580 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5595 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5610 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5625 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17812, 17933, 36858, 22219, 19599, 18600, 22218, 18207, + /* 5640 */ 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, + /* 5655 */ 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, + /* 5670 */ 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, + /* 5685 */ 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, + /* 5700 */ 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, + /* 5715 */ 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, + /* 5730 */ 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, + /* 5745 */ 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, + /* 5760 */ 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5775 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5790 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5805 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5820 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5835 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5850 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5865 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 5880 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17827, 22235, 22251, 22219, 19599, 18165, 22218, + /* 5895 */ 29097, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, + /* 5910 */ 17962, 22309, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, + /* 5925 */ 22280, 22219, 23980, 18196, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, + /* 5940 */ 18742, 32356, 27087, 18253, 22264, 19802, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, + /* 5955 */ 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, + /* 5970 */ 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, + /* 5985 */ 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, + /* 6000 */ 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, + /* 6015 */ 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6030 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6045 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6060 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6075 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6090 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6105 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6120 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6135 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17182, 22336, 36858, 22219, 19599, 18672, + /* 6150 */ 22218, 18207, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, + /* 6165 */ 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, + /* 6180 */ 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, + /* 6195 */ 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, + /* 6210 */ 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, + /* 6225 */ 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, + /* 6240 */ 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, + /* 6255 */ 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, + /* 6270 */ 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6285 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6300 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6315 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6330 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6345 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6360 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6375 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6390 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17287, 22352, 36858, 22219, 19599, + /* 6405 */ 18165, 22218, 18648, 25319, 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, + /* 6420 */ 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, + /* 6435 */ 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, + /* 6450 */ 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, + /* 6465 */ 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, + /* 6480 */ 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, + /* 6495 */ 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, + /* 6510 */ 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, + /* 6525 */ 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6540 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6555 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6570 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6585 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6600 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6615 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6630 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6645 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17482, 17933, 23376, 29869, + /* 6660 */ 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, 22385, 29996, + /* 6675 */ 29996, 29996, 29996, 28881, 22401, 29869, 29869, 29869, 29869, 27550, 24985, 24985, 24985, 24985, 24985, + /* 6690 */ 22421, 29996, 29996, 29996, 29996, 29996, 22455, 29869, 29869, 29869, 29869, 29869, 32393, 24985, 24985, + /* 6705 */ 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 23500, 24527, 29869, 29869, 29869, 29870, 24985, + /* 6720 */ 24985, 24985, 24985, 23723, 18040, 29996, 29996, 29996, 29996, 28680, 29869, 29869, 29869, 26677, 24985, + /* 6735 */ 24985, 24985, 26055, 22479, 29996, 29996, 29996, 22503, 29869, 29869, 32391, 24985, 24985, 20736, 29996, + /* 6750 */ 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, 33799, 20392, + /* 6765 */ 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, 26679, 31532, + /* 6780 */ 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6795 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6810 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6825 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6840 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6855 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6870 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6885 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 6900 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17482, 17933, 23376, + /* 6915 */ 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, 22385, + /* 6930 */ 29996, 29996, 29996, 29996, 28881, 22401, 29869, 29869, 29869, 29869, 27550, 24985, 24985, 24985, 24985, + /* 6945 */ 24985, 22421, 29996, 29996, 29996, 29996, 29996, 22455, 29869, 29869, 29869, 29869, 29869, 32393, 24985, + /* 6960 */ 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 24272, 24527, 29869, 29869, 29869, 29870, + /* 6975 */ 24985, 24985, 24985, 24985, 23723, 18040, 29996, 29996, 29996, 29996, 28680, 29869, 29869, 29869, 26677, + /* 6990 */ 24985, 24985, 24985, 26055, 22479, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 20736, + /* 7005 */ 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, 33799, + /* 7020 */ 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, 26679, + /* 7035 */ 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7050 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7065 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7080 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7095 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7110 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7125 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7140 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7155 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17482, 17933, + /* 7170 */ 23376, 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, + /* 7185 */ 22385, 29996, 29996, 29996, 29996, 31206, 22401, 29869, 29869, 29869, 29869, 27550, 24985, 24985, 24985, + /* 7200 */ 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 22455, 29869, 29869, 29869, 29869, 29869, 32393, + /* 7215 */ 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 24272, 24527, 29869, 29869, 29869, + /* 7230 */ 29870, 24985, 24985, 24985, 24985, 23723, 18040, 29996, 29996, 29996, 29996, 28680, 29869, 29869, 29869, + /* 7245 */ 26677, 24985, 24985, 24985, 26055, 22479, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, + /* 7260 */ 20736, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, + /* 7275 */ 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, + /* 7290 */ 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7305 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7320 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7335 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7350 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7365 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7380 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7395 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7410 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17482, + /* 7425 */ 17933, 23376, 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, + /* 7440 */ 24985, 22385, 29996, 29996, 29996, 29996, 28881, 22401, 29869, 29869, 29869, 29869, 27550, 24985, 24985, + /* 7455 */ 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 22524, 29869, 29869, 29869, 29869, 29869, + /* 7470 */ 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 24272, 24527, 29869, 29869, + /* 7485 */ 29869, 29870, 24985, 24985, 24985, 24985, 23723, 18040, 29996, 29996, 29996, 29996, 28680, 29869, 29869, + /* 7500 */ 29869, 26677, 24985, 24985, 24985, 26055, 22479, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, + /* 7515 */ 24985, 20736, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, + /* 7530 */ 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, + /* 7545 */ 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7560 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7575 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7590 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7605 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7620 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7635 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7650 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7665 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7680 */ 17482, 17933, 23376, 29869, 32392, 30272, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, + /* 7695 */ 24985, 24985, 22548, 29996, 29996, 29996, 29996, 28881, 22401, 29869, 29869, 29869, 29869, 27550, 24985, + /* 7710 */ 24985, 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 22455, 29869, 29869, 29869, 29869, + /* 7725 */ 29869, 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 24272, 24527, 29869, + /* 7740 */ 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 18040, 29996, 29996, 29996, 29996, 28680, 29869, + /* 7755 */ 29869, 29869, 26677, 24985, 24985, 24985, 26055, 22479, 29996, 29996, 29996, 20197, 29869, 29869, 32391, + /* 7770 */ 24985, 24985, 20736, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, + /* 7785 */ 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, + /* 7800 */ 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, + /* 7815 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7830 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7845 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7860 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7875 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7890 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7905 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7920 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 7935 */ 19486, 17482, 17933, 23376, 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, + /* 7950 */ 24985, 24985, 24985, 22385, 29996, 29996, 29996, 29996, 35439, 22401, 29869, 29869, 29869, 29869, 27550, + /* 7965 */ 24985, 24985, 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 23164, 29869, 29869, 29869, + /* 7980 */ 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 23461, 24527, + /* 7995 */ 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, 29996, 23796, + /* 8010 */ 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, + /* 8025 */ 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, + /* 8040 */ 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, + /* 8055 */ 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, + /* 8070 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8085 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8100 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8115 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8130 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8145 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8160 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8175 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8190 */ 19486, 19486, 17497, 17933, 23376, 29869, 32392, 35472, 22564, 23345, 34358, 29869, 29869, 29869, 29869, + /* 8205 */ 24985, 24985, 24985, 24985, 22385, 29996, 29996, 29996, 29996, 35439, 22401, 29869, 29869, 29869, 29869, + /* 8220 */ 27550, 24985, 24985, 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 23164, 29869, 29869, + /* 8235 */ 29869, 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 23461, + /* 8250 */ 24527, 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, 29996, + /* 8265 */ 23796, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, + /* 8280 */ 29869, 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, + /* 8295 */ 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, + /* 8310 */ 32592, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, + /* 8325 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8340 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8355 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8370 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8385 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8400 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8415 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8430 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8445 */ 19486, 19486, 19486, 17482, 17933, 23376, 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, + /* 8460 */ 29869, 24985, 24985, 24985, 24985, 22385, 29996, 29996, 29996, 29996, 35439, 22401, 29869, 29869, 29869, + /* 8475 */ 29869, 27550, 24985, 24985, 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 23164, 29869, + /* 8490 */ 29869, 29869, 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, + /* 8505 */ 23461, 24527, 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, + /* 8520 */ 29996, 21737, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, + /* 8535 */ 29869, 29869, 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, + /* 8550 */ 31536, 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, + /* 8565 */ 20278, 32592, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, + /* 8580 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8595 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8610 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8625 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8640 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8655 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8670 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8685 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8700 */ 19486, 19486, 19486, 19486, 17422, 17933, 36858, 22219, 19599, 18165, 22218, 18207, 32336, 18804, 18068, + /* 8715 */ 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, + /* 8730 */ 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, + /* 8745 */ 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, + /* 8760 */ 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, + /* 8775 */ 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, + /* 8790 */ 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 22581, 18787, 18820, 18858, 18917, 18947, + /* 8805 */ 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, + /* 8820 */ 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, + /* 8835 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8850 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8865 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8880 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8895 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8910 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8925 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8940 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 8955 */ 19486, 19486, 19486, 19486, 19486, 17242, 17933, 36858, 22219, 19599, 18165, 22218, 18207, 25319, 18804, + /* 8970 */ 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, + /* 8985 */ 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, + /* 9000 */ 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, + /* 9015 */ 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, + /* 9030 */ 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, + /* 9045 */ 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, + /* 9060 */ 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, + /* 9075 */ 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, + /* 9090 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9105 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9120 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9135 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9150 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9165 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9180 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9195 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9210 */ 19486, 19486, 19486, 19486, 19486, 19486, 17917, 22597, 36858, 22219, 19599, 18165, 22218, 36871, 25319, + /* 9225 */ 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 22613, 19195, + /* 9240 */ 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, + /* 9255 */ 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, + /* 9270 */ 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, + /* 9285 */ 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, + /* 9300 */ 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, + /* 9315 */ 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, + /* 9330 */ 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, + /* 9345 */ 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9360 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9375 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9390 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9405 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9420 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9435 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9450 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9465 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17512, 17933, 22661, 22695, 22734, 22778, 22794, 22810, + /* 9480 */ 34358, 29869, 29869, 29869, 22854, 24985, 24985, 24985, 25418, 22385, 29996, 29996, 29996, 30579, 28881, + /* 9495 */ 22873, 34380, 29869, 22857, 22903, 22962, 22981, 24985, 24985, 23073, 23097, 23122, 23149, 29996, 29996, + /* 9510 */ 23198, 23223, 22455, 29372, 29869, 29263, 28216, 30486, 23249, 35379, 32893, 29889, 24985, 23265, 25784, + /* 9525 */ 23336, 27529, 28525, 29996, 23361, 20648, 34949, 29869, 30190, 34219, 24483, 23410, 24985, 31903, 23429, + /* 9540 */ 18040, 23456, 23477, 29996, 23494, 23516, 23861, 22762, 29869, 26677, 23550, 23572, 24985, 26055, 22479, + /* 9555 */ 23600, 23622, 29996, 20197, 23313, 29292, 32391, 35777, 34162, 20736, 36480, 27872, 23667, 29869, 29869, + /* 9570 */ 32392, 24985, 20276, 26376, 33607, 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 35746, + /* 9585 */ 35228, 20437, 32184, 32616, 28997, 23689, 27549, 32795, 31605, 26679, 31532, 20428, 32154, 33986, 32305, + /* 9600 */ 29564, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9615 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9630 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9645 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9660 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9675 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9690 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9705 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9720 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17527, 17933, 23376, 29869, 32392, 20149, 22368, + /* 9735 */ 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, 22385, 29996, 29996, 29996, 29996, + /* 9750 */ 28881, 22401, 29869, 29869, 29869, 29500, 27550, 24985, 24985, 24985, 31554, 23718, 22421, 29996, 29996, + /* 9765 */ 29996, 24251, 23742, 22455, 29869, 29869, 29869, 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, + /* 9780 */ 29992, 29996, 29996, 29996, 29996, 24272, 24866, 29869, 29869, 29869, 34956, 23764, 24985, 24985, 24985, + /* 9795 */ 25771, 18040, 23789, 29996, 29996, 29996, 23812, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 26055, + /* 9810 */ 22479, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 20736, 29996, 20387, 20191, 29869, + /* 9825 */ 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, + /* 9840 */ 20744, 26678, 26698, 32595, 34756, 23840, 23894, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, + /* 9855 */ 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9870 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9885 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9900 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9915 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9930 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9945 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9960 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 9975 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17542, 17933, 23376, 31731, 32392, 23936, + /* 9990 */ 22368, 23952, 35980, 24002, 24039, 29869, 29869, 24057, 24124, 24985, 24985, 22385, 24145, 24176, 29996, + /* 10005 */ 29996, 28881, 24197, 23182, 23878, 26610, 29869, 27550, 26524, 24366, 24985, 24213, 24985, 22421, 22432, + /* 10020 */ 24233, 24250, 24267, 29996, 22455, 29869, 29869, 29869, 29869, 24288, 32393, 24985, 24985, 24985, 34766, + /* 10035 */ 28705, 29992, 29996, 29996, 29996, 30886, 24272, 24527, 29869, 29869, 25853, 29870, 24985, 24985, 24985, + /* 10050 */ 24307, 23723, 18040, 29996, 29996, 29996, 24327, 28680, 29869, 23320, 29869, 26677, 24985, 35638, 24985, + /* 10065 */ 26055, 22479, 29996, 32866, 29996, 23673, 29869, 24345, 24023, 24985, 24364, 20736, 24382, 29212, 20191, + /* 10080 */ 29869, 30944, 32392, 24985, 35890, 26376, 26570, 24402, 29869, 32393, 20274, 33799, 20392, 29870, 24985, + /* 10095 */ 24425, 20744, 26678, 26698, 32025, 24469, 24506, 24546, 27549, 20345, 20419, 26679, 24596, 20428, 32154, + /* 10110 */ 33986, 24624, 24655, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10125 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10140 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10155 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10170 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10185 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10200 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10215 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10230 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17557, 17933, 23376, 30229, 31963, + /* 10245 */ 20149, 24693, 23345, 36408, 34050, 25367, 32711, 28363, 24727, 24746, 23021, 24968, 22385, 24762, 24781, + /* 10260 */ 20624, 29412, 28881, 22401, 29869, 29869, 29869, 27693, 27550, 24985, 24985, 24985, 32636, 24985, 22421, + /* 10275 */ 29996, 29996, 29996, 34907, 29996, 22455, 24797, 33272, 29869, 29869, 33416, 24821, 34068, 24985, 24985, + /* 10290 */ 27511, 24852, 18049, 24900, 24917, 29996, 29996, 24934, 25540, 29869, 29869, 22674, 29870, 24965, 24985, + /* 10305 */ 24985, 24984, 23723, 18040, 25002, 29996, 33383, 29996, 28680, 30656, 29869, 25019, 26677, 23081, 24217, + /* 10320 */ 33573, 26055, 22479, 21872, 36361, 25062, 20197, 29869, 29869, 32391, 24985, 24985, 20736, 29996, 20387, + /* 10335 */ 20191, 29869, 27448, 32392, 24985, 33738, 18556, 31536, 25084, 29869, 32393, 20274, 28729, 20392, 29870, + /* 10350 */ 24985, 35900, 27373, 22965, 29476, 32595, 32385, 25107, 25134, 27549, 20345, 20419, 26679, 31532, 20428, + /* 10365 */ 32154, 22749, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10380 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10395 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10410 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10425 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10440 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10455 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10470 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10485 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17572, 17933, 23376, 25173, + /* 10500 */ 25208, 25246, 25262, 25304, 34358, 29591, 25348, 26027, 32721, 33305, 25383, 25403, 32517, 25440, 30637, + /* 10515 */ 25456, 25476, 20720, 25526, 25563, 26634, 25624, 31771, 34502, 28011, 25640, 25671, 25706, 25757, 28851, + /* 10530 */ 25800, 25816, 25832, 25877, 25927, 26907, 25978, 30452, 26022, 29869, 25578, 23394, 32393, 26043, 24985, + /* 10545 */ 24580, 26091, 26110, 29992, 26140, 29996, 29909, 26176, 26197, 22463, 20255, 30016, 26228, 35197, 31321, + /* 10560 */ 32424, 35013, 26263, 26298, 18040, 26317, 26337, 27933, 26359, 26398, 29269, 31084, 31624, 26677, 32762, + /* 10575 */ 30542, 26426, 26055, 22479, 35585, 34110, 26446, 20306, 26466, 30236, 26482, 26509, 23773, 26540, 26556, + /* 10590 */ 31451, 26591, 23175, 29847, 34472, 25424, 23556, 27365, 32664, 20745, 33162, 32393, 32770, 33791, 26382, + /* 10605 */ 27318, 34528, 35551, 26626, 27127, 26650, 26659, 26675, 26695, 26714, 26730, 26767, 26797, 26679, 31532, + /* 10620 */ 23702, 26830, 33986, 26865, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10635 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10650 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10665 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10680 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10695 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10710 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10725 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10740 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17587, 17933, 24639, + /* 10755 */ 23871, 36509, 20149, 26896, 23345, 34358, 31761, 29869, 29869, 29869, 36124, 24985, 24985, 24985, 22385, + /* 10770 */ 32564, 29996, 29996, 29996, 28881, 22401, 29869, 29869, 29869, 27014, 27550, 24985, 24985, 24985, 30350, + /* 10785 */ 24985, 22421, 29996, 29996, 29996, 25460, 29996, 22455, 29869, 29869, 20125, 29869, 29869, 32393, 24985, + /* 10800 */ 24985, 26930, 24985, 28705, 29992, 29996, 29996, 26949, 29996, 24272, 24527, 29869, 29869, 28223, 29870, + /* 10815 */ 24985, 24985, 24985, 25734, 23723, 18040, 29996, 29996, 29996, 26970, 28680, 29869, 29869, 29869, 26677, + /* 10830 */ 24985, 24985, 24985, 26055, 22479, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 20736, + /* 10845 */ 29996, 20387, 20191, 33136, 29869, 24677, 24985, 20276, 35738, 31536, 20745, 29869, 32393, 20274, 33799, + /* 10860 */ 20392, 29870, 24985, 26991, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, 26679, + /* 10875 */ 31532, 27036, 32154, 24072, 27052, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10890 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10905 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10920 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10935 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10950 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10965 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10980 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 10995 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17602, 17933, + /* 11010 */ 27103, 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, + /* 11025 */ 22385, 29996, 29996, 29996, 29996, 35439, 27150, 29869, 29869, 29869, 29869, 27550, 24985, 24985, 24985, + /* 11040 */ 24985, 24985, 27170, 29996, 29996, 29996, 29996, 29996, 23164, 29869, 29869, 28004, 29869, 29869, 32393, + /* 11055 */ 24985, 28113, 24985, 24985, 22718, 29992, 29996, 25003, 29996, 29996, 23461, 24527, 29869, 29869, 29869, + /* 11070 */ 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, 29996, 23796, 29869, 29869, 25510, + /* 11085 */ 26677, 24985, 24985, 28953, 23436, 29988, 29996, 29996, 30309, 28065, 24409, 29679, 27204, 23106, 27225, + /* 11100 */ 27763, 36691, 27914, 27241, 30675, 25989, 25905, 30516, 27271, 35116, 32053, 20745, 27307, 27341, 27389, + /* 11115 */ 23233, 26154, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, + /* 11130 */ 26679, 31532, 20428, 32463, 27412, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11145 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11160 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11175 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11190 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11205 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11220 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11235 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11250 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17482, + /* 11265 */ 17933, 23376, 27446, 27464, 35256, 27487, 23057, 34358, 29869, 29869, 34794, 29869, 24985, 24985, 24985, + /* 11280 */ 27509, 22385, 29996, 29996, 29996, 27527, 35439, 22401, 29869, 29869, 29869, 29869, 24108, 24985, 24985, + /* 11295 */ 24985, 24985, 34032, 22421, 29996, 29996, 29996, 29996, 24901, 23164, 30445, 29869, 29869, 29869, 29869, + /* 11310 */ 35624, 24985, 24985, 24985, 24985, 28705, 22194, 29996, 29996, 29996, 29996, 23461, 24527, 29869, 29869, + /* 11325 */ 29869, 27545, 24985, 24985, 24985, 36548, 23723, 20530, 29996, 29996, 29996, 23748, 23796, 29869, 29869, + /* 11340 */ 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, + /* 11355 */ 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 27566, + /* 11370 */ 25741, 33807, 30055, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, + /* 11385 */ 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11400 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11415 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11430 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11445 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11460 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11475 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11490 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11505 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11520 */ 17617, 17933, 23376, 27584, 27605, 35673, 27649, 30925, 34358, 20462, 27683, 29869, 27716, 27471, 27750, + /* 11535 */ 24985, 27797, 27843, 27493, 27859, 29996, 27888, 27949, 22401, 25039, 29869, 30435, 27984, 24017, 26430, + /* 11550 */ 24985, 28292, 33092, 34870, 22421, 31651, 29996, 24386, 28027, 28053, 24160, 24884, 29869, 29869, 20065, + /* 11565 */ 36673, 28087, 28110, 24985, 24985, 28129, 28150, 35316, 28185, 29996, 29996, 28673, 29706, 27963, 24348, + /* 11580 */ 20318, 28206, 28394, 28239, 25230, 28256, 33526, 28308, 22116, 29996, 32819, 29967, 28332, 28379, 24879, + /* 11595 */ 25590, 27116, 28418, 28453, 28470, 28494, 23436, 18481, 28524, 28541, 28565, 24608, 24446, 20248, 32165, + /* 11610 */ 28618, 28640, 36529, 28662, 27901, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 27291, 22508, + /* 11625 */ 28696, 31521, 28721, 34274, 29870, 24985, 35900, 20744, 28745, 28761, 28810, 27550, 20278, 32592, 27549, + /* 11640 */ 20345, 20419, 28836, 28867, 20428, 32154, 33986, 32305, 28917, 20527, 19486, 19486, 19486, 19486, 19486, + /* 11655 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11670 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11685 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11700 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11715 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11730 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11745 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11760 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11775 */ 19486, 17482, 17933, 23376, 29869, 32392, 20149, 22368, 23345, 34358, 29869, 29869, 29869, 29869, 24985, + /* 11790 */ 24985, 24985, 24985, 22385, 29996, 29996, 29996, 29996, 35439, 22401, 29869, 29869, 29869, 29869, 27550, + /* 11805 */ 24985, 24985, 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 23164, 25188, 29869, 29869, + /* 11820 */ 29869, 29869, 28978, 24985, 24985, 24985, 24985, 28705, 28602, 29996, 29996, 29996, 29996, 23461, 24527, + /* 11835 */ 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, 29996, 23796, + /* 11850 */ 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, + /* 11865 */ 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, + /* 11880 */ 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, + /* 11895 */ 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, + /* 11910 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11925 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11940 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11955 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11970 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 11985 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12000 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12015 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12030 */ 19486, 19486, 17632, 17933, 29013, 24086, 22709, 29029, 29045, 29069, 36654, 34388, 32083, 31493, 29852, + /* 12045 */ 29113, 29126, 29133, 29149, 22385, 29199, 34628, 33476, 29237, 35439, 27150, 29285, 26807, 36078, 29869, + /* 12060 */ 33239, 23008, 31791, 24985, 28286, 26094, 27170, 27667, 33883, 29996, 24704, 24329, 23164, 29869, 29869, + /* 12075 */ 31290, 29764, 23645, 32393, 24985, 24985, 29308, 22995, 22718, 29992, 29996, 29996, 29324, 29346, 23461, + /* 12090 */ 24527, 30748, 29869, 29869, 29870, 24985, 29388, 24985, 24985, 23723, 20530, 29996, 29409, 29996, 29996, + /* 12105 */ 23796, 28932, 29869, 29869, 26410, 26744, 24985, 24985, 29428, 28794, 30879, 29996, 29996, 29450, 28071, + /* 12120 */ 29869, 32391, 31911, 24985, 25779, 31828, 20387, 20191, 29869, 20202, 32392, 24985, 29471, 26376, 31536, + /* 12135 */ 29492, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 29516, 27550, 20278, + /* 12150 */ 32592, 25954, 29550, 29580, 29527, 29607, 20428, 29632, 29666, 32305, 30989, 20527, 19486, 19486, 19486, + /* 12165 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12180 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12195 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12210 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12225 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12240 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12255 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12270 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12285 */ 19486, 19486, 19486, 17647, 17933, 23376, 24100, 32750, 20149, 29695, 23345, 29722, 25861, 29869, 20120, + /* 12300 */ 29756, 33579, 24985, 32945, 29780, 22385, 26954, 29996, 32673, 29807, 35439, 22401, 29834, 29869, 29868, + /* 12315 */ 29869, 27550, 34981, 29886, 31356, 24985, 24985, 22421, 33615, 29905, 35325, 29996, 29996, 30124, 24291, + /* 12330 */ 25363, 29869, 31405, 29869, 32393, 29164, 24985, 33436, 29925, 28705, 29943, 34327, 29996, 33196, 29963, + /* 12345 */ 23461, 24527, 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 28134, 29983, 29996, 29996, 29996, + /* 12360 */ 29996, 23796, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, + /* 12375 */ 30013, 29869, 32391, 30032, 24985, 25779, 22638, 30050, 20191, 29869, 29869, 32392, 24985, 20276, 26376, + /* 12390 */ 31536, 20745, 29869, 32393, 20274, 33799, 30071, 32087, 29927, 35900, 20091, 28402, 27396, 28346, 27550, + /* 12405 */ 30772, 32592, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 34249, 20527, 19486, 19486, + /* 12420 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12435 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12450 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12465 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12480 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12495 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12510 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12525 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12540 */ 19486, 19486, 19486, 19486, 17662, 17933, 24949, 27255, 22887, 30093, 30109, 30157, 34358, 24805, 30135, + /* 12555 */ 32839, 29869, 31327, 27624, 28240, 24985, 22385, 26975, 27827, 22369, 29996, 35439, 30206, 31416, 29869, + /* 12570 */ 29869, 29869, 27550, 30252, 24985, 24985, 24985, 24985, 22421, 30288, 29996, 29996, 29996, 29996, 25491, + /* 12585 */ 29869, 29869, 29869, 30325, 33408, 30344, 24985, 24985, 28437, 34888, 28705, 21729, 29996, 29996, 36588, + /* 12600 */ 29996, 30366, 24527, 30395, 30424, 30468, 29870, 36428, 30502, 25720, 30532, 23723, 20530, 31674, 30567, + /* 12615 */ 30601, 30629, 32873, 24041, 30653, 30672, 30691, 24490, 36342, 36210, 30716, 18539, 25068, 34086, 31811, + /* 12630 */ 30740, 31255, 31484, 29643, 35645, 30764, 23034, 29996, 30788, 20191, 30836, 34211, 33726, 30852, 20276, + /* 12645 */ 30868, 30902, 20745, 30941, 35876, 20274, 34186, 20392, 26006, 28478, 35900, 30960, 30408, 30976, 31005, + /* 12660 */ 28943, 31038, 31066, 27549, 30700, 20419, 26679, 31532, 33998, 31100, 33986, 32305, 26781, 20527, 19486, + /* 12675 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12690 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12705 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12720 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12735 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12750 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12765 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12780 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12795 */ 19486, 19486, 19486, 19486, 19486, 17677, 17933, 23376, 31133, 36009, 31176, 31192, 31222, 34358, 29869, + /* 12810 */ 25998, 31271, 25091, 24985, 28094, 31306, 31343, 22385, 29996, 29330, 31379, 31438, 28579, 31472, 35350, + /* 12825 */ 33144, 29869, 29869, 31509, 31552, 28271, 31570, 24985, 24573, 31592, 31648, 23133, 31667, 29996, 27819, + /* 12840 */ 23164, 29869, 36607, 29869, 31690, 29869, 32393, 24985, 31707, 28989, 24985, 28705, 29992, 29996, 27181, + /* 12855 */ 28549, 29996, 23461, 31728, 29869, 29869, 29869, 33034, 24985, 24985, 24985, 24985, 36521, 29434, 29996, + /* 12870 */ 29996, 29996, 29996, 31747, 29869, 33640, 29869, 27325, 24985, 31787, 24985, 23584, 34715, 29996, 31807, + /* 12885 */ 29996, 35525, 25192, 29869, 30820, 36250, 24985, 25779, 31827, 31844, 20191, 29869, 29869, 32392, 24985, + /* 12900 */ 20276, 36324, 31868, 28037, 29869, 31892, 25387, 31927, 20392, 31951, 32002, 32041, 32069, 32103, 32139, + /* 12915 */ 27003, 27550, 20278, 32181, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32200, 33349, 20527, + /* 12930 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12945 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12960 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12975 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 12990 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13005 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13020 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13035 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13050 */ 19486, 19486, 19486, 19486, 19486, 19486, 17692, 17933, 23376, 23651, 27430, 32260, 32276, 32321, 32372, + /* 13065 */ 33280, 22679, 33054, 31632, 25911, 32409, 28454, 28624, 22385, 28190, 32448, 22565, 32538, 28775, 22401, + /* 13080 */ 29869, 29869, 23389, 29869, 27550, 24985, 24985, 29534, 24985, 24985, 22421, 29996, 29996, 28169, 29996, + /* 13095 */ 29996, 30803, 29869, 25046, 32492, 29869, 29869, 32393, 24985, 32509, 24985, 24985, 28705, 32533, 29996, + /* 13110 */ 32554, 29996, 29996, 24181, 24527, 29869, 36189, 29869, 29870, 24985, 24985, 31117, 24985, 29393, 32580, + /* 13125 */ 29996, 29996, 35333, 29996, 23796, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 31975, 22190, 29996, + /* 13140 */ 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, + /* 13155 */ 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, 27773, 26575, 32611, 32632, 32652, 20744, 26678, + /* 13170 */ 26698, 32595, 27550, 20278, 32697, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, + /* 13185 */ 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13200 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13215 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13230 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13245 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13260 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13275 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13290 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13305 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17482, 17933, 32737, 27730, 32786, 34820, 32811, 34725, + /* 13320 */ 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, 22385, 29996, 29996, 29996, 29996, 35439, + /* 13335 */ 32835, 29869, 29869, 29869, 29869, 27550, 24985, 24985, 24985, 24985, 24985, 32855, 29996, 29996, 29996, + /* 13350 */ 29996, 29996, 23164, 29869, 29869, 29869, 29869, 29869, 32393, 24985, 24985, 24985, 24985, 34990, 29992, + /* 13365 */ 29996, 29996, 29996, 29996, 23461, 24527, 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, + /* 13380 */ 20530, 29996, 29996, 29996, 29996, 23796, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, + /* 13395 */ 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 25779, 29996, 20387, 20191, 20324, 29869, + /* 13410 */ 32392, 32889, 20276, 35949, 31536, 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, + /* 13425 */ 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, + /* 13440 */ 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13455 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13470 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13485 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13500 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13515 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13530 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13545 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13560 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17707, 17933, 23376, 32909, 36300, 32969, 32985, + /* 13575 */ 33001, 34358, 29869, 33050, 31422, 33070, 24985, 25223, 24730, 25655, 22385, 29996, 36820, 24765, 30613, + /* 13590 */ 35439, 33108, 29869, 33160, 29869, 34371, 33178, 24985, 26274, 24985, 31363, 26493, 22421, 33194, 31852, + /* 13605 */ 29996, 36271, 31876, 25942, 33212, 29455, 33230, 33263, 29869, 33296, 24985, 33321, 33845, 24985, 34776, + /* 13620 */ 22627, 29996, 33365, 24711, 33381, 22645, 24527, 33399, 29740, 29869, 29870, 33864, 33432, 29175, 24985, + /* 13635 */ 23723, 20530, 23606, 33452, 33470, 29996, 23796, 33492, 29869, 29869, 33511, 24985, 24985, 20221, 23436, + /* 13650 */ 30724, 29996, 29996, 34685, 25844, 29869, 29869, 31111, 24985, 24985, 27354, 29996, 20387, 20191, 29869, + /* 13665 */ 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, 33799, 31456, 33542, 33558, 33595, + /* 13680 */ 33631, 26678, 26698, 32595, 33664, 20278, 33680, 27549, 20345, 20419, 26679, 31532, 28820, 33714, 33986, + /* 13695 */ 33764, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13710 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13725 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13740 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13755 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13770 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13785 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13800 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13815 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17722, 17933, 26212, 31615, 23908, 20149, + /* 13830 */ 33780, 23345, 34358, 33823, 27734, 29869, 29869, 24836, 24986, 33861, 24985, 22385, 35083, 29997, 33880, + /* 13845 */ 29996, 35439, 22401, 33694, 28357, 29869, 29869, 30814, 29183, 28646, 24985, 24985, 31576, 22421, 28901, + /* 13860 */ 20668, 29996, 29996, 26321, 33899, 29869, 29869, 36710, 24453, 33118, 33929, 24985, 24985, 33950, 33972, + /* 13875 */ 28705, 21865, 29996, 29996, 27925, 34014, 23461, 24527, 29869, 26247, 23528, 29870, 24985, 24985, 27615, + /* 13890 */ 34030, 23723, 20530, 29996, 29996, 29818, 29996, 26914, 29869, 34048, 25602, 26677, 20169, 24985, 34066, + /* 13905 */ 23436, 26067, 36229, 29996, 34084, 20197, 29869, 29869, 32391, 24985, 24985, 27810, 29996, 34102, 20191, + /* 13920 */ 29869, 27700, 32392, 24985, 34126, 26376, 31050, 30077, 29869, 34152, 20274, 34178, 20392, 34443, 34537, + /* 13935 */ 34136, 34202, 26678, 26698, 25276, 25547, 28962, 32592, 33648, 34235, 25118, 20511, 34265, 20428, 32154, + /* 13950 */ 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13965 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13980 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 13995 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14010 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14025 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14040 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14055 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14070 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17737, 17933, 26880, 25288, 24560, + /* 14085 */ 34290, 34306, 34343, 34404, 34434, 34459, 34488, 24530, 34518, 34553, 34569, 34585, 34602, 34618, 34651, + /* 14100 */ 34667, 34683, 34701, 34741, 33913, 34418, 34792, 25608, 27550, 34810, 34836, 34862, 24985, 34886, 22421, + /* 14115 */ 23046, 30914, 34318, 29996, 34904, 29361, 31022, 34923, 29869, 29869, 34939, 32393, 34972, 35006, 24985, + /* 14130 */ 29791, 35029, 19376, 35072, 35099, 29996, 29053, 35132, 26124, 29869, 35187, 26606, 35220, 35244, 31712, + /* 14145 */ 35272, 33934, 27209, 31986, 32681, 27188, 35288, 36827, 23796, 23824, 35349, 29869, 27425, 35366, 24985, + /* 14160 */ 24985, 35402, 29988, 35426, 29996, 29996, 35455, 33127, 35488, 26841, 28508, 24311, 20374, 26343, 30301, + /* 14175 */ 35519, 29735, 31148, 25962, 27134, 35541, 35567, 35701, 26160, 35609, 35661, 30551, 35689, 29616, 29870, + /* 14190 */ 24985, 35717, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 35762, 23920, 23851, 35503, 35799, 20428, + /* 14205 */ 32154, 33986, 35815, 35861, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14220 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14235 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14250 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14265 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14280 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14295 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14310 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14325 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17752, 17933, 23376, 31160, + /* 14340 */ 22928, 35916, 35932, 35965, 35996, 23293, 29869, 29869, 32493, 34846, 24985, 24985, 24985, 36025, 29221, + /* 14355 */ 29996, 29996, 29996, 36041, 22401, 27589, 23534, 31016, 36077, 24670, 24985, 36094, 36112, 32116, 26849, + /* 14370 */ 22421, 29996, 36140, 36159, 18548, 34635, 29252, 29869, 36188, 29869, 29869, 29869, 32393, 28429, 24985, + /* 14385 */ 24985, 24985, 28705, 28164, 35593, 29996, 29996, 29996, 23461, 22532, 29869, 29869, 29869, 29870, 36205, + /* 14400 */ 24985, 24985, 24985, 24129, 19444, 36226, 29996, 29996, 29996, 22439, 23303, 29869, 29869, 35204, 36245, + /* 14415 */ 24985, 24985, 23436, 35410, 36266, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 25779, 29996, + /* 14430 */ 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 31286, 32476, 20274, 27781, 20392, + /* 14445 */ 29870, 24985, 33748, 20744, 26678, 26698, 32595, 27550, 32953, 32592, 26814, 33335, 24436, 26679, 31532, + /* 14460 */ 20428, 32291, 36287, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14475 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14490 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14505 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14520 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14535 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14550 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14565 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14580 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17767, 17933, 23376, + /* 14595 */ 30482, 33083, 20149, 36316, 23345, 34358, 30141, 29869, 33698, 29869, 23413, 24985, 34586, 24985, 22385, + /* 14610 */ 36567, 29996, 23478, 29996, 35439, 22401, 29869, 27968, 29869, 29869, 27550, 24985, 24985, 36340, 24985, + /* 14625 */ 24985, 22421, 29996, 29996, 36358, 29996, 29996, 23164, 29869, 29869, 29869, 29869, 29869, 32393, 24985, + /* 14640 */ 24985, 24985, 24985, 28705, 29992, 29996, 29996, 29996, 29996, 23461, 24527, 29869, 29869, 29869, 29870, + /* 14655 */ 24985, 24985, 24985, 24985, 23723, 20530, 29996, 29996, 29996, 29996, 23796, 29869, 29869, 29869, 26677, + /* 14670 */ 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, 25779, + /* 14685 */ 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, 33799, + /* 14700 */ 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, 26679, + /* 14715 */ 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14730 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14745 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14760 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14775 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14790 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14805 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14820 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14835 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17782, 17933, + /* 14850 */ 23376, 33495, 32392, 36377, 22368, 36393, 34358, 29869, 29869, 29869, 29869, 24985, 24985, 24985, 24985, + /* 14865 */ 22385, 29996, 29996, 29996, 29996, 35439, 22401, 29869, 29869, 29869, 29869, 27550, 24985, 24985, 24985, + /* 14880 */ 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 25892, 29869, 29869, 29869, 29869, 29869, 36424, + /* 14895 */ 24985, 24985, 24985, 24985, 28705, 28895, 29996, 29996, 29996, 29996, 23461, 24527, 29869, 26243, 29869, + /* 14910 */ 22916, 24985, 27568, 24985, 24985, 36444, 20530, 29996, 36143, 29996, 33454, 23796, 29869, 29869, 29869, + /* 14925 */ 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, 24985, + /* 14940 */ 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, 20274, + /* 14955 */ 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, 20419, + /* 14970 */ 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 14985 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15000 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15015 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15030 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15045 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15060 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15075 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15090 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 17797, + /* 15105 */ 17933, 23376, 31080, 33836, 20149, 36463, 23345, 36496, 29869, 31691, 29869, 30185, 24985, 24985, 36545, + /* 15120 */ 25682, 22385, 29996, 29996, 36564, 27658, 35439, 22401, 29869, 29869, 29869, 29869, 27550, 24985, 24985, + /* 15135 */ 24985, 24985, 24985, 22421, 29996, 29996, 29996, 29996, 29996, 31394, 29869, 29869, 25506, 29869, 29869, + /* 15150 */ 32393, 24985, 29650, 24985, 24985, 28705, 36583, 29996, 26450, 29996, 29996, 23461, 24527, 36604, 29869, + /* 15165 */ 29869, 29870, 36096, 24985, 24985, 24985, 35386, 28789, 29947, 29996, 29996, 29996, 23796, 29869, 29869, + /* 15180 */ 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 20197, 29869, 29869, 32391, 24985, + /* 15195 */ 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, 20276, 26376, 31536, 20745, 29869, 32393, + /* 15210 */ 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, 20345, + /* 15225 */ 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15240 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15255 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15270 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15285 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15300 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15315 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15330 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15345 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15360 */ 17482, 17933, 23376, 33214, 32392, 36623, 22368, 36639, 34358, 29869, 29869, 29869, 25029, 24985, 24985, + /* 15375 */ 24985, 26282, 22385, 29996, 29996, 29996, 22487, 35439, 22401, 33029, 29869, 20470, 29869, 27550, 26751, + /* 15390 */ 24985, 30034, 24985, 24985, 22421, 19381, 29996, 24234, 29996, 29996, 23164, 29869, 27994, 29869, 29869, + /* 15405 */ 29869, 32393, 26933, 24985, 24985, 24985, 28705, 29992, 24918, 36689, 29996, 29996, 23461, 24527, 29869, + /* 15420 */ 27154, 29869, 30328, 24985, 24985, 25157, 24985, 32123, 20530, 29996, 29996, 35576, 29996, 26075, 29869, + /* 15435 */ 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, 29996, 23634, 29869, 29869, 32935, + /* 15450 */ 24985, 24985, 28316, 29996, 20387, 20191, 29869, 36707, 32392, 32432, 20276, 26376, 35729, 20745, 29869, + /* 15465 */ 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, 32595, 27550, 20278, 32592, 27549, + /* 15480 */ 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, 19486, 19486, 19486, 19486, 19486, + /* 15495 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15510 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15525 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15540 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15555 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15570 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15585 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15600 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15615 */ 19486, 17452, 17933, 35830, 22219, 19599, 18165, 36726, 18207, 19679, 18804, 18068, 18087, 22320, 17978, + /* 15630 */ 18001, 18017, 21541, 18872, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, 22293, + /* 15645 */ 19602, 18127, 18700, 19602, 18157, 30379, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, 18246, + /* 15660 */ 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, 36055, + /* 15675 */ 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, 20002, + /* 15690 */ 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, 19868, + /* 15705 */ 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, 18832, + /* 15720 */ 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, 20013, + /* 15735 */ 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, 19486, + /* 15750 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15765 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15780 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15795 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15810 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15825 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15840 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15855 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 15870 */ 19486, 19486, 17437, 17933, 36858, 22219, 19599, 18165, 22218, 35056, 25319, 18804, 18068, 18087, 22320, + /* 15885 */ 17978, 18001, 18017, 21541, 18311, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, 19971, + /* 15900 */ 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, 32349, 27080, + /* 15915 */ 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, 18111, + /* 15930 */ 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, 18425, + /* 15945 */ 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, 36777, + /* 15960 */ 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, 19005, + /* 15975 */ 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, 19135, + /* 15990 */ 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, 19486, + /* 16005 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16020 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16035 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16050 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16065 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16080 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16095 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16110 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16125 */ 19486, 19486, 19486, 17227, 17933, 32215, 22219, 19599, 18165, 22218, 18207, 23967, 18804, 18068, 18087, + /* 16140 */ 22320, 17978, 18001, 18017, 21541, 18282, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, 22287, + /* 16155 */ 19971, 22293, 19602, 18127, 18700, 19602, 18157, 36746, 22219, 18223, 22280, 22219, 23980, 19116, 32349, + /* 16170 */ 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, 22264, + /* 16185 */ 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, 18403, + /* 16200 */ 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, 36761, + /* 16215 */ 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, 19576, + /* 16230 */ 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, 19923, + /* 16245 */ 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, 19486, + /* 16260 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16275 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16290 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16305 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16320 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16335 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16350 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16365 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16380 */ 19486, 19486, 19486, 19486, 17242, 17933, 36858, 22219, 19599, 18165, 22218, 18207, 25319, 18804, 18068, + /* 16395 */ 18087, 22320, 17978, 18001, 18017, 21541, 18381, 18801, 18065, 18084, 22317, 19278, 19195, 23986, 18230, + /* 16410 */ 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 18181, 22219, 18223, 22280, 22219, 23980, 19116, + /* 16425 */ 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, 27087, 18253, + /* 16440 */ 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, 36061, 20581, + /* 16455 */ 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, 19837, 32244, + /* 16470 */ 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, 18917, 18947, + /* 16485 */ 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, 21973, 21982, + /* 16500 */ 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, 19484, 19486, + /* 16515 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16530 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16545 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16560 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16575 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16590 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16605 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16620 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16635 */ 19486, 19486, 19486, 19486, 19486, 17242, 17933, 23280, 29869, 32392, 23726, 29995, 23345, 30172, 29869, + /* 16650 */ 29869, 29869, 29869, 24985, 24985, 24985, 24985, 36793, 29996, 29996, 29996, 29996, 35439, 20061, 29869, + /* 16665 */ 29869, 29869, 29869, 27550, 24985, 24985, 24985, 24985, 24985, 36809, 29996, 29996, 29996, 29996, 29996, + /* 16680 */ 24519, 29869, 29869, 29869, 29869, 29869, 32393, 24985, 24985, 24985, 24985, 28705, 29992, 29996, 29996, + /* 16695 */ 29996, 29996, 23461, 24527, 29869, 29869, 29869, 29870, 24985, 24985, 24985, 24985, 23723, 20530, 29996, + /* 16710 */ 29996, 29996, 29996, 23796, 29869, 29869, 29869, 26677, 24985, 24985, 24985, 23436, 29988, 29996, 29996, + /* 16725 */ 29996, 20197, 29869, 29869, 32391, 24985, 24985, 25779, 29996, 20387, 20191, 29869, 29869, 32392, 24985, + /* 16740 */ 20276, 26376, 31536, 20745, 29869, 32393, 20274, 33799, 20392, 29870, 24985, 35900, 20744, 26678, 26698, + /* 16755 */ 32595, 27550, 20278, 32592, 27549, 20345, 20419, 26679, 31532, 20428, 32154, 33986, 32305, 30989, 20527, + /* 16770 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16785 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16800 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16815 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16830 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16845 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16860 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16875 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 16890 */ 19486, 19486, 19486, 19486, 19486, 19486, 36843, 35145, 19285, 22219, 19599, 18165, 22218, 19015, 35158, + /* 16905 */ 18804, 18068, 18087, 22320, 17978, 18001, 18017, 21541, 18030, 18801, 18065, 18084, 22317, 19721, 19195, + /* 16920 */ 23986, 18230, 22287, 19971, 22293, 19602, 18127, 18700, 19602, 18157, 30379, 22219, 18223, 22280, 22219, + /* 16935 */ 23980, 19116, 32349, 27080, 18246, 36730, 22273, 18269, 18298, 18327, 18343, 18367, 18472, 18742, 32356, + /* 16950 */ 27087, 18253, 22264, 18111, 36055, 20575, 18397, 18419, 18441, 21962, 18457, 18497, 19249, 18528, 18620, + /* 16965 */ 36061, 20581, 18403, 18425, 20002, 18897, 19833, 32240, 22838, 17985, 18572, 18588, 18616, 19119, 18901, + /* 16980 */ 19837, 32244, 36761, 36777, 19868, 35845, 18664, 18688, 18737, 36773, 25332, 19878, 18787, 18820, 18858, + /* 16995 */ 18917, 18947, 19576, 19005, 18832, 35171, 19031, 19047, 18842, 19063, 19316, 19079, 19103, 19158, 19595, + /* 17010 */ 21973, 21982, 19923, 19135, 20013, 19591, 19182, 19618, 19235, 19265, 19301, 19634, 19650, 19429, 19469, + /* 17025 */ 19484, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17040 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17055 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17070 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17085 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17100 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17115 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17130 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, 19486, + /* 17145 */ 19486, 19486, 19486, 19486, 19486, 19486, 19486, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 118821, + /* 17161 */ 102440, 106539, 98348, 118821, 118821, 118821, 36880, 19, 45076, 22, 24, 28, 90144, 94243, 0, 102440, + /* 17177 */ 106539, 98348, 0, 0, 20480, 36880, 40978, 21, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, + /* 17196 */ 20480, 36880, 40978, 45076, 22, 24, 28, 34, 34, 0, 34, 34, 34, 0, 0, 0, 36880, 40978, 45076, 22, 24, 28, + /* 17218 */ 90144, 94243, 0, 0, 0, 45, 0, 0, 20576, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 42, 42, 42, 0, + /* 17240 */ 0, 1118208, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 0, 36880, + /* 17258 */ 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 90, 36880, 40978, 45076, 22, 24, + /* 17277 */ 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 95, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, + /* 17296 */ 102440, 106539, 98348, 0, 0, 97, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, + /* 17314 */ 0, 0, 12379, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 20480, 36880, + /* 17333 */ 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 57437, 36880, 40978, 45076, 22, + /* 17351 */ 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 143449, 36880, 40978, 45076, 22, 24, 28, 90144, + /* 17369 */ 94243, 0, 102440, 106539, 98348, 0, 0, 176128, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, + /* 17387 */ 106539, 98348, 0, 0, 188416, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, + /* 17405 */ 0, 196702, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 217088, 36880, + /* 17423 */ 40978, 45076, 22, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 249856, 36880, 40978, 45076, 22, + /* 17441 */ 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 1114232, 36880, 40978, 45076, 22, 24, 28, 90144, + /* 17459 */ 94243, 0, 1105961, 1105961, 1105961, 0, 0, 1105920, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 38, + /* 17476 */ 102440, 106539, 98348, 0, 0, 200704, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, + /* 17493 */ 98348, 46, 68, 98, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 47, 68, 99, + /* 17512 */ 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 48, 69, 100, 36880, 40978, + /* 17529 */ 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 49, 70, 101, 36880, 40978, 45076, 22, 24, 28, + /* 17548 */ 90144, 94243, 39, 102440, 106539, 98348, 50, 71, 102, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, + /* 17566 */ 102440, 106539, 98348, 51, 72, 103, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, + /* 17583 */ 98348, 52, 73, 104, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 53, 74, 105, + /* 17602 */ 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 54, 75, 106, 36880, 40978, + /* 17619 */ 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 55, 76, 107, 36880, 40978, 45076, 22, 24, 28, + /* 17638 */ 90144, 94243, 39, 102440, 106539, 98348, 56, 77, 108, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, + /* 17656 */ 102440, 106539, 98348, 57, 78, 109, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, + /* 17673 */ 98348, 58, 79, 110, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 59, 80, 111, + /* 17692 */ 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 60, 81, 112, 36880, 40978, + /* 17709 */ 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 61, 82, 113, 36880, 40978, 45076, 22, 24, 28, + /* 17728 */ 90144, 94243, 39, 102440, 106539, 98348, 62, 83, 114, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, + /* 17746 */ 102440, 106539, 98348, 63, 84, 115, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, + /* 17763 */ 98348, 64, 85, 116, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 65, 86, 117, + /* 17782 */ 36880, 40978, 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 66, 87, 118, 36880, 40978, + /* 17799 */ 45076, 22, 24, 28, 90144, 94243, 39, 102440, 106539, 98348, 67, 88, 119, 36880, 40978, 45076, 22, 24, 28, + /* 17818 */ 90144, 94243, 233472, 102440, 106539, 98348, 0, 0, 20480, 36880, 40978, 45076, 22, 24, 28, 90144, 94243, + /* 17835 */ 237568, 102440, 106539, 98348, 0, 0, 20569, 36880, 40978, 45076, 22, 24, 28, 90144, 155684, 155648, + /* 17851 */ 102440, 155684, 98348, 0, 0, 155648, 36880, 40978, 45076, 22, 24, 28, 147489, 94243, 147456, 147489, + /* 17867 */ 106539, 98348, 0, 0, 147456, 36880, 40978, 45076, 22, 25, 29, 90144, 94243, 118821, 102440, 106539, 98348, + /* 17884 */ 118821, 118821, 118821, 36880, 40978, 45076, 22, 26, 30, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, + /* 17901 */ 159836, 36880, 40978, 45076, 22, 27, 31, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 208985, 36880, + /* 17918 */ 40978, 45076, 23, 24, 28, 90144, 94243, 0, 102440, 106539, 98348, 0, 0, 253952, 36880, 0, 40978, 40978, + /* 17936 */ 45076, 0, 22, 22, 24, 24, 24, 24, 28, 28, 28, 28, 90144, 0, 0, 94243, 0, 118821, 0, 2211840, 102440, 0, 0, + /* 17959 */ 106539, 98348, 0, 2158592, 2158592, 2158592, 0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 2207744, + /* 17979 */ 2207744, 2207744, 2396160, 2404352, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17990 */ 2207744, 2207744, 2207744, 2207744, 2523136, 2207744, 2207744, 2207744, 2207744, 2207744, 2609152, + /* 18001 */ 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2670592, 2207744, + /* 18012 */ 2686976, 2207744, 2695168, 2207744, 2703360, 2744320, 2207744, 2207744, 2777088, 2207744, 2801664, + /* 18023 */ 2207744, 2207744, 2834432, 2207744, 2207744, 2207744, 2891776, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, + /* 18038 */ 0, 2166784, 0, 0, 0, 0, 0, 0, 0, 0, 1319, 0, 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 1109, 98, 98, 98, 98, + /* 18065 */ 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2670592, 2158592, + /* 18076 */ 2686976, 2158592, 2695168, 2158592, 2703360, 2744320, 2158592, 2158592, 2744320, 2158592, 2158592, + /* 18087 */ 2777088, 2158592, 2801664, 2158592, 2158592, 2834432, 2158592, 2158592, 2158592, 2891776, 2158592, + /* 18098 */ 2158592, 2158592, 2158592, 2158592, 2158592, 645, 0, 2158592, 0, 2158592, 2158592, 2158592, 2379776, + /* 18111 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3178496, 2158592, 0, 0, + /* 18124 */ 0, 0, 0, 2555904, 2207744, 2207744, 2207744, 2207744, 2207744, 2588672, 2207744, 2207744, 2207744, + /* 18137 */ 2207744, 2207744, 2207744, 2633728, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 550, 0, 0, 0, 0, + /* 18156 */ 288, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 18168 */ 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 546, 0, 548, 0, 0, 2170880, + /* 18188 */ 0, 0, 554, 0, 2158592, 2158592, 2158592, 2379776, 2158592, 0, 0, 0, 32768, 0, 0, 0, 0, 0, 0, 2158592, + /* 18208 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 2158592, + /* 18224 */ 2555904, 2158592, 2158592, 2158592, 2158592, 2158592, 2588672, 2158592, 2158592, 2158592, 2158592, + /* 18235 */ 2158592, 2158592, 2633728, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18246 */ 2158592, 2691072, 2158592, 2158592, 2158592, 2158592, 2158592, 2740224, 2748416, 2768896, 2793472, + /* 18257 */ 2158592, 2158592, 2158592, 2854912, 2883584, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18268 */ 2158592, 3178496, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 18279 */ 2207744, 2433024, 2437120, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 287, + /* 18298 */ 2207744, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 18309 */ 2207744, 2572288, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 288, 2207744, + /* 18328 */ 2613248, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2691072, 2207744, 2207744, 2207744, + /* 18339 */ 2207744, 2207744, 2740224, 2748416, 2768896, 2793472, 2207744, 2207744, 2207744, 2854912, 2883584, + /* 18350 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, + /* 18365 */ 2162688, 137, 2207744, 2207744, 2207744, 3010560, 2207744, 3035136, 2207744, 2207744, 2207744, 2207744, + /* 18377 */ 3072000, 2207744, 2207744, 3104768, 2207744, 2207744, 2207744, 0, 0, 0, 0, 172032, 0, 2166784, 0, 0, 0, 0, + /* 18395 */ 0, 288, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2678784, 2158592, 2707456, 2158592, 2158592, + /* 18408 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2859008, 2158592, 2895872, 2158592, 2158592, 2158592, + /* 18419 */ 2859008, 2158592, 2895872, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18430 */ 2158592, 3006464, 2158592, 2158592, 3043328, 2158592, 2158592, 3092480, 2158592, 2158592, 3112960, + /* 18441 */ 2158592, 2158592, 3092480, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 3141632, 2158592, + /* 18452 */ 2158592, 3162112, 3166208, 2158592, 2359296, 2207744, 2502656, 2207744, 2207744, 2207744, 2207744, + /* 18463 */ 2207744, 2207744, 2207744, 2576384, 2207744, 2600960, 2207744, 2207744, 2621440, 2207744, 2207744, + /* 18474 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3178496, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 1484, 98, + /* 18493 */ 98, 98, 98, 98, 2207744, 2207744, 2678784, 2207744, 2707456, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 18507 */ 2207744, 2207744, 2859008, 2207744, 2895872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 18518 */ 2207744, 3178496, 2207744, 0, 0, 0, 0, 0, 0, 53248, 2207744, 3112960, 2207744, 2207744, 2207744, 3141632, + /* 18534 */ 2207744, 2207744, 3162112, 3166208, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 1482, 98, 98, 98, 98, 98, 98, 98, + /* 18555 */ 897, 98, 98, 98, 98, 98, 98, 98, 98, 1719, 98, 98, 98, 98, 98, 98, 98, 2207744, 2207744, 2207744, 2207744, + /* 18576 */ 2699264, 2723840, 2207744, 2207744, 2207744, 2813952, 2818048, 2207744, 2887680, 2207744, 2207744, + /* 18587 */ 2916352, 2207744, 2207744, 2965504, 2207744, 2973696, 2207744, 2207744, 2994176, 2207744, 3039232, + /* 18598 */ 3055616, 3067904, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, + /* 18612 */ 0, 0, 2162688, 20480, 2207744, 2207744, 2207744, 3194880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2359296, + /* 18634 */ 2158592, 2158592, 2158592, 2158592, 2965504, 2158592, 2973696, 2158592, 2158592, 2995688, 2158592, + /* 18645 */ 3039232, 3055616, 3067904, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40978, 0, 22, + /* 18659 */ 22, 24, 24, 127, 4329472, 2207744, 2207744, 2207744, 2514944, 2519040, 2207744, 2207744, 2568192, 2207744, + /* 18673 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 229376, 2207744, + /* 18689 */ 2207744, 2899968, 2207744, 2207744, 2207744, 2969600, 2207744, 2207744, 2207744, 2207744, 3031040, + /* 18700 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2772992, 2785280, 2207744, + /* 18711 */ 2809856, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158879, 2158879, 2158879, 2158879, + /* 18722 */ 2158879, 0, 0, 0, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158732, 2158732, 2474124, + /* 18735 */ 2158732, 2158732, 2207744, 2207744, 3149824, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, + /* 18750 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2437120, 2158592, 2158592, 2465792, 2158592, + /* 18761 */ 2158592, 2486272, 2158592, 2158592, 2158592, 2516569, 2519040, 2158592, 2158592, 2568192, 2158592, + /* 18772 */ 2158592, 2158592, 22, 127, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 2158592, 2441216, 2158592, 2158592, + /* 18791 */ 2158592, 2490368, 2158592, 2158592, 2158592, 2158592, 2560000, 2158592, 2584576, 2617344, 2158592, + /* 18802 */ 2158592, 2158592, 2396160, 2404352, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18813 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2666496, 2727936, 2158592, 2158592, + /* 18824 */ 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3100672, 2158592, + /* 18835 */ 2158592, 3125248, 3137536, 3145728, 2158592, 2400256, 2408448, 2158592, 2457600, 2158592, 2158592, + /* 18846 */ 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2625536, 2650112, 0, 0, 3125248, 3137536, + /* 18860 */ 3145728, 2367488, 2371584, 2207744, 2207744, 2412544, 2207744, 2441216, 2207744, 2207744, 2207744, + /* 18871 */ 2490368, 2207744, 2207744, 2207744, 0, 546, 0, 548, 0, 0, 2166784, 0, 0, 0, 554, 0, 0, 0, 554, 0, 288, 0, + /* 18893 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2416640, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18904 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2523136, 2158592, 2158592, 2158592, 2158592, + /* 18915 */ 2158592, 2609152, 2207744, 2207744, 2560000, 2207744, 2584576, 2617344, 2207744, 2207744, 2666496, + /* 18926 */ 2727936, 2207744, 2207744, 2207744, 2904064, 2207744, 2207744, 2207744, 545, 545, 547, 547, 0, 0, 2166784, + /* 18941 */ 0, 552, 553, 553, 0, 288, 2207744, 2207744, 2207744, 2207744, 2207744, 3100672, 2207744, 2207744, 3125248, + /* 18956 */ 3137536, 3145728, 2367488, 2371584, 2158592, 2158592, 2412544, 2158592, 2441216, 2158592, 2158592, + /* 18967 */ 2158592, 2490368, 2158592, 2158592, 1625, 2158592, 2158592, 2560000, 2158592, 2584576, 2617344, 2158592, + /* 18979 */ 122880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, + /* 18997 */ 40978, 0, 22, 22, 24, 0, 127, 28, 2158592, 2666496, 0, 0, 2727936, 2158592, 2158592, 0, 2158592, 2904064, + /* 19015 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, + /* 19028 */ 2224128, 2224128, 2232320, 2158592, 3121152, 2207744, 2400256, 2408448, 2207744, 2457600, 2207744, + /* 19039 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2625536, 2650112, 2732032, 2736128, + /* 19050 */ 2826240, 2940928, 2207744, 2977792, 2207744, 2990080, 2207744, 2207744, 2207744, 3121152, 2158592, + /* 19061 */ 2400256, 2408448, 2732032, 2736128, 0, 2826240, 2940928, 2158592, 2977792, 2158592, 2990080, 2158592, + /* 19073 */ 2158592, 2158592, 3121152, 2158592, 2158592, 2469888, 2207744, 2469888, 2207744, 2207744, 2207744, + /* 19084 */ 2527232, 2535424, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, + /* 19097 */ 0, 163840, 0, 0, 2162688, 0, 3108864, 2158592, 2158592, 2469888, 2158592, 2158592, 2158592, 0, 0, 2527232, + /* 19113 */ 2535424, 2158592, 2158592, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, + /* 19131 */ 2158592, 2416640, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2981888, + /* 19142 */ 2207744, 2207744, 2158592, 2158592, 2473984, 2158592, 2158592, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 2158592, + /* 19160 */ 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19171 */ 2158592, 2158592, 2158592, 2158592, 3178496, 2158592, 0, 0, 141, 0, 0, 2564096, 2207744, 2207744, 2207744, + /* 19186 */ 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 0, 2158592, + /* 19200 */ 2158592, 2158592, 2379776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19211 */ 2158592, 3178496, 2158592, 0, 645, 0, 0, 0, 2564096, 2158592, 2158592, 1512, 0, 2158592, 2158592, 2158592, + /* 19227 */ 2158592, 2158592, 2158592, 2420736, 2158592, 2506752, 2158592, 2580480, 2158592, 2830336, 2158592, + /* 19238 */ 2158592, 2158592, 3002368, 2207744, 2420736, 2207744, 2506752, 2207744, 2580480, 2207744, 2830336, + /* 19249 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3006464, 2207744, 2207744, + /* 19260 */ 3043328, 2207744, 2207744, 3092480, 2207744, 2207744, 3002368, 2158592, 2420736, 2158592, 2506752, 0, 0, + /* 19273 */ 2158592, 2580480, 2158592, 0, 2830336, 2158592, 2158592, 2158592, 22, 127, 127, 0, 0, 0, 0, 0, 0, 0, + /* 19291 */ 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 3002368, 2158592, 2498560, 2158592, 2158592, + /* 19306 */ 2158592, 2158592, 2158592, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, + /* 19317 */ 2158592, 2158592, 2527232, 2535424, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19328 */ 2158592, 2158592, 3108864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3178496, + /* 19339 */ 2207744, 0, 1084, 0, 1088, 0, 1092, 0, 0, 0, 2359436, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 19355 */ 2158732, 2158732, 2424972, 2158732, 2445452, 2453644, 2158732, 2207744, 2629632, 2945024, 2207744, 0, 0, + /* 19368 */ 2158879, 2629919, 2945311, 2158879, 2531468, 2158732, 2531328, 2207744, 0, 0, 1100, 0, 98, 98, 98, 98, 98, + /* 19385 */ 98, 98, 98, 98, 98, 98, 98, 854, 98, 98, 98, 98, 2498560, 0, 2024, 2158592, 2158592, 0, 2158592, 2158592, + /* 19405 */ 2158592, 2375680, 2158592, 2158592, 2158592, 2158592, 2998272, 2375680, 2207744, 2207744, 2207744, + /* 19416 */ 2207744, 2998272, 2375680, 0, 2024, 2158592, 2158592, 2158592, 2158592, 2998272, 2158592, 2629632, + /* 19428 */ 2945024, 2158592, 2207744, 2629632, 2945024, 2207744, 0, 0, 2158592, 2629632, 2945024, 2158592, 2531328, + /* 19441 */ 2158592, 2531328, 2207744, 0, 0, 1312, 0, 0, 0, 1318, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 98, 1107, 98, 98, + /* 19465 */ 98, 98, 98, 98, 0, 2531328, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, + /* 19481 */ 2207744, 0, 2158592, 2957312, 2957312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40978, 40978, + /* 19505 */ 45076, 0, 22, 22, 25, 25, 25, 25, 128, 128, 128, 128, 90144, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, + /* 19531 */ 2158592, 2158592, 2158592, 22, 127, 127, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 94243, 0, 0, + /* 19552 */ 0, 2211840, 102440, 0, 0, 106539, 98348, 137, 2158592, 2158592, 2158592, 22, 2224485, 2224485, 0, 0, 0, 0, + /* 19570 */ 0, 0, 0, 2211840, 0, 0, 2158592, 2441216, 2158592, 2158592, 2158592, 2490368, 2158592, 2158592, 0, + /* 19585 */ 2158592, 2158592, 2560000, 2158592, 2584576, 2617344, 2158592, 2158592, 2158592, 2564096, 2158592, + /* 19596 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 19607 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 19618 */ 2564096, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2420736, 2158592, + /* 19631 */ 2506752, 2158592, 2580480, 2498560, 0, 0, 2158592, 2158592, 0, 2158592, 2158592, 2158592, 2375680, + /* 19644 */ 2158592, 2158592, 2158592, 2158592, 2998272, 2375680, 2207744, 2207744, 2207744, 2207744, 2998272, + /* 19655 */ 2375680, 0, 0, 2158592, 2158592, 2158592, 2158592, 2998272, 2158592, 2629632, 2945024, 0, 40978, 40978, + /* 19669 */ 45076, 0, 22, 22, 24, 24, 24, 24, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, + /* 19694 */ 2158592, 1508, 2158592, 2158592, 2158592, 1512, 2158592, 2899968, 2158592, 2158592, 2158592, 2969600, + /* 19706 */ 2158592, 2158592, 81920, 0, 94243, 0, 0, 0, 2211840, 0, 0, 0, 106539, 98348, 0, 2158592, 2158592, 2158592, + /* 19724 */ 2146304, 2224128, 2224128, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 17, 40978, 45076, 22, 24, 28, 90144, 94243, + /* 19745 */ 0, 102440, 106539, 98348, 0, 0, 0, 0, 0, 0, 0, 0, 2158879, 2158879, 2158879, 2158879, 2158879, 2416927, + /* 19763 */ 2158879, 2158879, 0, 132, 94243, 0, 0, 0, 2211840, 102440, 0, 0, 106539, 98348, 0, 2158592, 2158592, + /* 19780 */ 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40978, 0, 22, 22, 2224253, 2224253, 2224485, 2232449, 0, + /* 19795 */ 0, 2158592, 648, 2158592, 2158592, 2158592, 2379776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19808 */ 2158592, 2158592, 2158592, 3178496, 2158592, 0, 32768, 0, 0, 0, 0, 546, 0, 548, 0, 0, 2170880, 0, 0, 554, + /* 19828 */ 833, 2158592, 2158592, 2158592, 2379776, 2158592, 2158592, 2158592, 2609152, 2158592, 2158592, 2158592, + /* 19840 */ 2158592, 2699264, 2723840, 2158592, 2158592, 2158592, 2813952, 2818048, 2158592, 2887680, 2158592, + /* 19851 */ 2158592, 2916352, 0, 827, 0, 829, 0, 0, 2170880, 0, 0, 831, 0, 2158592, 2158592, 2158592, 2379776, + /* 19868 */ 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2969600, 2158592, 2158592, 2158592, + /* 19879 */ 2158592, 3031040, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3149824, 0, 2367488, 2371584, + /* 19891 */ 2158592, 2158592, 2412544, 0, 40978, 40978, 45076, 0, 22, 22, 2224253, 2224253, 2224253, 2224253, 2232449, + /* 19906 */ 2232449, 2232449, 2232449, 90144, 2232449, 2232449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 2158592, 2158592, + /* 19925 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2981888, 2158592, 2158592, 2207744, 2207744, 2473984, + /* 19936 */ 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 555, 151552, 40978, 40978, 45076, 0, + /* 19957 */ 22, 22, 24, 24, 24, 212992, 28, 28, 28, 212992, 90144, 53532, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19974 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, + /* 19985 */ 2158592, 2158592, 0, 546, 0, 548, 0, 0, 2170880, 0, 53248, 554, 0, 2158592, 2158592, 2158592, 2379776, + /* 20002 */ 2158592, 2158592, 2158592, 3141632, 2158592, 2158592, 3162112, 3166208, 2158592, 0, 0, 0, 2158592, + /* 20015 */ 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2981888, 2158592, 2158592, 2158592, + /* 20028 */ 2158592, 0, 121, 122, 45076, 0, 22, 22, 24, 24, 24, 24, 28, 28, 28, 28, 90144, 68, 68, 68, 24852, 24852, + /* 20050 */ 12566, 12566, 0, 0, 2166784, 550, 0, 53533, 53533, 0, 288, 369, 0, 371, 0, 46, 46, 46, 46, 46, 46, 46, 46, + /* 20073 */ 46, 46, 46, 46, 46, 990, 46, 46, 0, 546, 0, 548, 57893, 0, 2170880, 0, 0, 554, 0, 98, 98, 98, 98, 98, + /* 20097 */ 1851, 98, 46, 46, 46, 46, 1856, 46, 46, 46, 937, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 949, 46, 46, + /* 20122 */ 46, 46, 423, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 974, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, + /* 20148 */ 1013, 68, 68, 68, 68, 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 68, 68, 68, 1025, 68, 68, 68, + /* 20172 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1449, 68, 68, 98, 98, 98, 98, 98, 1119, 98, 98, 98, 98, 98, 98, + /* 20197 */ 98, 98, 98, 98, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1680, 46, 46, 46, 68, 68, 1584, 68, 68, + /* 20223 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1471, 68, 1659, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1667, + /* 20248 */ 46, 46, 46, 46, 46, 46, 1560, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1198, 46, 1200, 46, 46, 46, 46, 68, 68, + /* 20273 */ 1694, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 0, 0, 1713, 98, 98, 98, 98, + /* 20299 */ 98, 98, 98, 0, 98, 98, 1723, 98, 98, 98, 98, 0, 46, 46, 46, 46, 46, 46, 1538, 46, 46, 46, 46, 46, 1208, + /* 20324 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1668, 46, 46, 46, 46, 68, 68, 68, 1771, 1772, 68, 68, 68, 68, + /* 20349 */ 68, 68, 68, 68, 98, 98, 98, 98, 0, 0, 0, 98, 68, 68, 68, 68, 68, 1821, 68, 68, 68, 68, 68, 68, 1827, 68, + /* 20375 */ 68, 68, 0, 0, 0, 0, 0, 0, 98, 98, 98, 1615, 98, 98, 98, 0, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, + /* 20403 */ 98, 98, 46, 46, 46, 68, 98, 98, 98, 98, 98, 98, 0, 0, 1839, 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 98, 46, + /* 20430 */ 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 68, 98, 1883, 98, 1885, 98, 0, 1888, 0, 98, 98, 0, 98, 98, + /* 20456 */ 1848, 98, 98, 98, 98, 1852, 46, 46, 46, 46, 46, 46, 46, 385, 46, 46, 46, 46, 46, 46, 46, 46, 704, 46, 46, + /* 20481 */ 46, 46, 46, 46, 46, 46, 46, 1951, 46, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 1963, 98, 2023, 0, 98, + /* 20506 */ 98, 0, 98, 98, 98, 46, 46, 46, 46, 46, 46, 68, 68, 1994, 68, 1995, 68, 68, 68, 68, 68, 68, 98, 0, 0, 0, 0, + /* 20533 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 68, 68, 68, 24852, 24852, 12566, 12566, 0, 0, 2166784, 0, 0, + /* 20558 */ 53533, 53533, 0, 288, 0, 0, 94243, 0, 0, 0, 2211840, 102440, 0, 0, 106539, 98348, 138, 2158592, 2158592, + /* 20577 */ 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 20588 */ 2576384, 2158592, 2600960, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 68, 68, 68, 24852, 24852, + /* 20602 */ 12566, 12566, 0, 0, 282, 551, 0, 53533, 53533, 0, 288, 0, 546, 0, 548, 57893, 551, 551, 0, 0, 554, 0, 98, + /* 20625 */ 98, 98, 98, 98, 98, 605, 98, 98, 607, 98, 98, 610, 98, 98, 98, 98, 642, 0, 0, 0, 0, 29319, 926, 0, 0, 0, + /* 20651 */ 46, 46, 46, 46, 46, 46, 46, 1187, 46, 46, 46, 46, 46, 1096, 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 20677 */ 98, 98, 98, 870, 98, 98, 98, 68, 68, 68, 68, 1301, 1476, 0, 0, 0, 0, 1307, 1478, 0, 0, 0, 0, 0, 0, 0, 288, + /* 20704 */ 0, 0, 0, 288, 0, 2359296, 2158592, 2158592, 1313, 1480, 0, 0, 0, 0, 1319, 0, 98, 98, 98, 98, 98, 98, 98, + /* 20727 */ 98, 98, 628, 98, 98, 98, 98, 98, 98, 68, 68, 68, 1476, 0, 1478, 0, 1480, 0, 98, 98, 98, 98, 98, 98, 98, + /* 20752 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 0, 40978, 40978, 45076, 0, 22, 22, 2224254, 2224254, 167936, 2224254, + /* 20772 */ 2232450, 2232450, 167936, 2232450, 90144, 0, 0, 94243, 0, 0, 0, 2211976, 102440, 0, 0, 106539, 98348, 0, + /* 20790 */ 2158732, 2158732, 2158732, 2527372, 2535564, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 20801 */ 2158732, 2158732, 2158732, 3109004, 2207744, 0, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 20813 */ 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 0, 2232450, 0, + /* 20826 */ 0, 0, 0, 0, 0, 0, 0, 370, 0, 141, 2158732, 2158732, 2158732, 2564236, 2158732, 2158732, 2158732, 2158732, + /* 20844 */ 2158732, 2158732, 2158732, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20855 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2396300, 2404492, 2158732, 2158732, 2158732, 2158732, + /* 20866 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2597004, 2777228, + /* 20877 */ 2158732, 2801804, 2158732, 2158732, 2834572, 2158732, 2158732, 2158732, 2891916, 2158732, 2158732, + /* 20888 */ 2158732, 2158732, 2158732, 2158732, 2670732, 2158732, 2687116, 2158732, 2695308, 2158732, 2703500, + /* 20899 */ 2744460, 2158732, 2158732, 2158879, 2158879, 2597151, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 20910 */ 2158879, 2670879, 2158879, 2687263, 2158879, 2695455, 2158879, 2703647, 2744607, 2158879, 2158879, + /* 20921 */ 2777375, 2158879, 2801951, 2158879, 2158879, 2834719, 2158879, 2158879, 2158879, 2892063, 2158879, + /* 20932 */ 2158879, 2158879, 0, 2158879, 2158879, 2158879, 0, 2158879, 2900255, 2158879, 2158879, 2158879, 2969887, + /* 20945 */ 2158879, 2158879, 646, 0, 2158592, 0, 2158732, 2158732, 2158732, 2379916, 2158732, 2158732, 2158732, + /* 20958 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2556044, 2158732, 2158732, 2158732, + /* 20969 */ 2158732, 2158732, 2588812, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2633868, 2158732, + /* 20980 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2982028, 2158732, 2158732, 2207744, + /* 20991 */ 2207744, 2473984, 2207744, 2207744, 2207744, 0, 546, 0, 548, 0, 0, 2170880, 0, 0, 554, 0, 2158879, + /* 21008 */ 2158879, 2158879, 2380063, 2158879, 2158879, 2158879, 2158879, 2158879, 3010847, 2158879, 3035423, + /* 21019 */ 2158879, 2158879, 2158879, 2158879, 3072287, 2158879, 2158879, 3105055, 2158879, 2556191, 2158879, + /* 21030 */ 2158879, 2158879, 2158879, 2158879, 2588959, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 21041 */ 2634015, 2158879, 2158879, 2158879, 2158879, 2699551, 2724127, 2158879, 2158879, 2158879, 2814239, + /* 21052 */ 2818335, 2158879, 2887967, 2158879, 2158879, 2916639, 2158732, 2691212, 2158732, 2158732, 2158732, + /* 21063 */ 2158732, 2158732, 2740364, 2748556, 2769036, 2793612, 2158732, 2158732, 2158732, 2855052, 2883724, + /* 21074 */ 3178636, 2158732, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 21085 */ 2433024, 2437120, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 288, 2158879, + /* 21104 */ 2158879, 2158879, 2613535, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2691359, 2158879, + /* 21115 */ 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2576671, 2158879, 2601247, 2158879, 2158879, + /* 21126 */ 2621727, 2158879, 2158879, 2158879, 2740511, 2748703, 2769183, 2793759, 2158879, 2158879, 2158879, + /* 21137 */ 2855199, 2883871, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 21148 */ 3178783, 2158879, 0, 0, 0, 0, 0, 2859148, 2158732, 2896012, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 21163 */ 2158732, 2158732, 2158732, 2158732, 3006604, 2158732, 2158732, 3043468, 2679071, 2158879, 2707743, + /* 21174 */ 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2859295, 2158879, 2896159, 2158879, + /* 21185 */ 2158879, 2158879, 22, 0, 358, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 2158879, 2158879, 2158879, 3141919, + /* 21204 */ 2158879, 2158879, 3162399, 3166495, 2158879, 0, 0, 0, 2158732, 2158732, 2158732, 2158732, 2433164, + /* 21217 */ 2437260, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2494604, 2158732, 2158732, 2158732, + /* 21228 */ 2158732, 2416780, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 21239 */ 2158732, 2158732, 2523276, 2158732, 2158732, 2158732, 3072140, 2158732, 2158732, 3104908, 2158732, + /* 21250 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2207744, 2207744, + /* 21261 */ 2207744, 2379776, 2207744, 2207744, 2887820, 2158732, 2158732, 2916492, 2158732, 2158732, 2965644, + /* 21272 */ 2158732, 2973836, 2158732, 2158732, 2994316, 2158732, 3039372, 3055756, 3068044, 2158879, 2158879, + /* 21283 */ 2965791, 2158879, 2973983, 2158879, 2158879, 2994463, 2158879, 3039519, 3055903, 3068191, 2158879, + /* 21294 */ 2158879, 2158879, 2158879, 2158879, 2158879, 3006751, 2158879, 2158879, 3043615, 2158879, 2158879, + /* 21305 */ 3092767, 2158879, 2158879, 3113247, 2158879, 2158879, 2158879, 3195167, 0, 2158732, 2158732, 2158732, + /* 21317 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2465932, 2158732, 2158732, 2158732, 3149964, 2207744, + /* 21328 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2465792, 2207744, 2207744, 2486272, + /* 21339 */ 2486412, 2158732, 2158732, 2158732, 2515084, 2519180, 2158732, 2158732, 2568332, 2158732, 2158732, + /* 21350 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2572428, 2158732, 2158732, 2158732, 2158732, 2613388, + /* 21361 */ 2158732, 2158732, 2158732, 2158732, 2158732, 3088524, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 21372 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 21383 */ 3096716, 2158732, 2158732, 2207744, 2207744, 3149824, 0, 0, 0, 0, 0, 0, 2158879, 2158879, 2158879, + /* 21398 */ 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2433311, 2437407, 2158879, 2158879, 2466079, + /* 21409 */ 2158879, 2158879, 2486559, 2158879, 2158879, 2158879, 2515231, 2519327, 2158879, 2158879, 2568479, + /* 21420 */ 2158879, 2158879, 2158879, 2158879, 2158879, 2425119, 2158879, 2445599, 2453791, 2158879, 2158879, + /* 21431 */ 2158879, 2158879, 2158879, 2158879, 2502943, 2158879, 2158879, 3031327, 2158879, 2158879, 2158879, + /* 21442 */ 2158879, 2158879, 2158879, 3150111, 0, 2367628, 2371724, 2158732, 2158732, 2412684, 2158732, 2441356, + /* 21454 */ 2158732, 2158732, 2158732, 2490508, 2158732, 2158732, 2158732, 2158732, 2560140, 2158732, 2584716, + /* 21465 */ 2617484, 2158732, 2158732, 2621580, 2158732, 2158732, 2158732, 2678924, 2158732, 2707596, 2158732, + /* 21476 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 3195020, 2207744, 2207744, 2207744, 2207744, + /* 21487 */ 2207744, 2416640, 2207744, 2207744, 2666636, 2728076, 2158732, 2158732, 2158732, 2904204, 2158732, + /* 21498 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 3100812, 2158732, 2158732, 2773132, 2785420, + /* 21509 */ 2158732, 2809996, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 21520 */ 2158732, 2158732, 2158732, 3010700, 2158732, 3035276, 2158732, 3125388, 3137676, 3145868, 2367488, + /* 21531 */ 2371584, 2207744, 2207744, 2412544, 2207744, 2441216, 2207744, 2207744, 2207744, 2490368, 2207744, + /* 21542 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3088384, 2207744, 2207744, 2207744, + /* 21553 */ 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 168216, 281, 0, 2162688, 0, 2207744, 2207744, + /* 21568 */ 2207744, 2207744, 2207744, 3100672, 2207744, 2207744, 3125248, 3137536, 3145728, 2367775, 2371871, + /* 21579 */ 2158879, 2158879, 2412831, 2158879, 2441503, 2158879, 2158879, 2158879, 2490655, 2158879, 2158879, 0, + /* 21591 */ 2158879, 2158879, 2560287, 2158879, 2584863, 2617631, 2158879, 2158879, 2158879, 2158879, 3096863, + /* 21602 */ 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 21613 */ 2773279, 2785567, 2158879, 2810143, 2158879, 2158879, 2158879, 2158879, 2666783, 0, 0, 2728223, 2158879, + /* 21626 */ 2158879, 0, 2158879, 2904351, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 21638 */ 3088671, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 0, 40978, 0, 22, 22, 0, 2224254, + /* 21653 */ 358, 2232450, 2158879, 3100959, 2158879, 2158879, 3125535, 3137823, 3146015, 2158732, 2400396, 2408588, + /* 21665 */ 2158732, 2457740, 2158732, 2158732, 2158732, 2158732, 2625676, 2650252, 2732172, 2736268, 2826380, + /* 21676 */ 2941068, 2158732, 2977932, 2158732, 2990220, 2158732, 2158732, 2158732, 3121292, 2207744, 2400256, + /* 21687 */ 2408448, 2207744, 2457600, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 21698 */ 2625536, 2650112, 2732032, 2736128, 2826240, 2940928, 2207744, 2977792, 2207744, 2990080, 2207744, + /* 21709 */ 2207744, 2207744, 3121152, 2158879, 2400543, 2408735, 2158879, 2457887, 2158879, 2158879, 2158879, + /* 21720 */ 2158879, 0, 0, 2158879, 2158879, 2158879, 2158879, 2625823, 2650399, 0, 0, 0, 0, 98, 98, 98, 1105, 98, 98, + /* 21739 */ 98, 98, 98, 98, 98, 98, 98, 1381, 0, 0, 46, 46, 46, 46, 2732319, 2736415, 0, 2826527, 2941215, 2158879, + /* 21759 */ 2978079, 2158879, 2990367, 2158879, 2158879, 2158879, 3121439, 2158732, 2158732, 2470028, 3108864, + /* 21770 */ 2158879, 2158879, 2470175, 2158879, 2158879, 2158879, 0, 0, 2527519, 2535711, 2158879, 2158879, 2158879, + /* 21783 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158732, 2158732, 2158732, 2158732, 2158732, 2502796, 2158732, 2158732, + /* 21801 */ 2158732, 2158732, 2158732, 2158732, 2158732, 2576524, 2158732, 2601100, 0, 2158879, 2158879, 2158879, + /* 21813 */ 2158879, 2158879, 2158879, 3109151, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 21824 */ 2158732, 2900108, 2158732, 2158732, 2158732, 2969740, 2158732, 2158732, 2158732, 2158732, 3031180, + /* 21835 */ 2158732, 2158732, 2158732, 2609292, 2158732, 2158732, 2158732, 2158732, 2699404, 2723980, 2158732, + /* 21846 */ 2158732, 2158732, 2814092, 2818188, 2158732, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 21857 */ 2981888, 2207744, 2207744, 2158879, 2158879, 2474271, 2158879, 2158879, 0, 0, 0, 0, 98, 98, 1104, 98, 98, + /* 21874 */ 98, 98, 98, 98, 98, 98, 98, 98, 1499, 98, 98, 98, 98, 98, 2564096, 2207744, 2207744, 2207744, 2207744, + /* 21893 */ 2207744, 2207744, 2207744, 2158879, 2158879, 2158879, 2158879, 0, 0, 0, 2158879, 2158879, 2158879, + /* 21906 */ 2158879, 0, 0, 0, 2158879, 2158879, 2158879, 2982175, 2158879, 2158879, 2158732, 2158732, 3092620, + /* 21919 */ 2158732, 2158732, 3113100, 2158732, 2158732, 2158732, 3141772, 2158732, 2158732, 3162252, 3166348, + /* 21930 */ 2158732, 2359296, 2564383, 2158879, 2158879, 0, 0, 2158879, 2158879, 2158879, 2158879, 2158879, 2158732, + /* 21943 */ 2420876, 2158732, 2506892, 2158732, 2580620, 2158732, 2830476, 2158732, 2158732, 2158732, 3002508, + /* 21954 */ 2207744, 2420736, 2207744, 2506752, 2207744, 2580480, 2207744, 2830336, 2207744, 2207744, 2207744, + /* 21965 */ 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2445312, 2453504, 2207744, 2207744, 2207744, + /* 21976 */ 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, + /* 21989 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2207744, 3002368, + /* 22000 */ 2158879, 2421023, 2158879, 2507039, 0, 0, 2158879, 2580767, 2158879, 0, 2830623, 2158879, 2158879, + /* 22013 */ 2158879, 2158879, 2158879, 2494751, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 22024 */ 2158879, 2572575, 2158879, 3002655, 2158732, 2498700, 2158732, 2158732, 2158732, 2158732, 2158732, + /* 22035 */ 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2207744, 2158879, 2158879, 2158879, 2396447, + /* 22046 */ 2404639, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, 2158879, + /* 22057 */ 2158879, 2523423, 2158879, 2158879, 2158879, 2158879, 2158879, 2609439, 2498847, 0, 0, 2158879, 2158879, + /* 22070 */ 0, 2158879, 2158879, 2158879, 2375820, 2158732, 2158732, 2158732, 2158732, 2998412, 2375680, 2207744, + /* 22082 */ 2207744, 2207744, 2207744, 2998272, 2375967, 0, 0, 2158879, 2158879, 2158879, 2158879, 2998559, 2158732, + /* 22095 */ 2629772, 2945164, 0, 2531615, 2158879, 2158732, 2207744, 0, 2158879, 2158732, 2207744, 0, 2158879, + /* 22108 */ 2158732, 2207744, 0, 2158879, 2957452, 2957312, 2957599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, + /* 22130 */ 1321, 98, 0, 141, 0, 2359296, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, + /* 22144 */ 2158592, 2445312, 2453504, 2158592, 2158592, 2158592, 3141632, 2158592, 2158592, 3162112, 3166208, + /* 22155 */ 2158592, 0, 141, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40978, 0, 22, 22, + /* 22171 */ 25, 25, 127, 128, 2207744, 2207744, 2207744, 3194880, 546, 0, 0, 0, 546, 0, 548, 0, 0, 0, 548, 0, 0, 1317, + /* 22193 */ 0, 0, 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1112, 2207744, 2207744, 3149824, 546, 0, 548, + /* 22216 */ 0, 554, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 22229 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40978, 40978, 45076, 241664, 22, 22, 24, 24, 24, + /* 22245 */ 24, 28, 28, 28, 28, 90144, 0, 0, 94243, 0, 0, 204800, 2211840, 102440, 0, 0, 106539, 98348, 0, 2158592, + /* 22265 */ 2158592, 2158592, 2158592, 2158592, 3010560, 2158592, 3035136, 2158592, 2158592, 2158592, 2158592, + /* 22276 */ 3072000, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 22287 */ 2158592, 2158592, 2772992, 2785280, 2158592, 2809856, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 22298 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2379776, 2207744, 2207744, 32768, + /* 22310 */ 0, 2158592, 0, 2158592, 2158592, 2158592, 2379776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 22323 */ 2158592, 2158592, 3088384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 22334 */ 2158592, 2158592, 0, 40978, 40978, 0, 0, 22, 22, 24, 24, 24, 24, 28, 28, 28, 28, 90144, 0, 40978, 40978, + /* 22355 */ 45076, 0, 22, 22, 24, 127, 24, 24, 28, 131203, 28, 28, 90144, 53533, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 22378 */ 98, 98, 98, 98, 98, 98, 614, 68, 68, 68, 24852, 24852, 12566, 12566, 0, 57893, 0, 0, 0, 53533, 53533, 371, + /* 22400 */ 288, 369, 29319, 371, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1202, 46, 46, 25402, 546, + /* 22423 */ 13116, 548, 57893, 0, 0, 54078, 54078, 554, 0, 98, 98, 98, 98, 98, 98, 848, 98, 98, 98, 98, 98, 98, 98, + /* 22446 */ 98, 98, 0, 0, 0, 46, 46, 46, 1385, 98, 642, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 46, 46, 46, 46, 46, 46, 1186, + /* 22473 */ 46, 46, 46, 46, 46, 46, 0, 1480, 0, 0, 0, 0, 1319, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 629, 98, 98, 98, + /* 22500 */ 98, 98, 98, 98, 98, 98, 98, 1531, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1756, 46, 46, 46, 98, + /* 22525 */ 642, 0, 924, 0, 925, 29319, 0, 0, 0, 0, 46, 46, 46, 46, 46, 1185, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, + /* 22551 */ 24852, 24852, 12566, 12566, 0, 57893, 283, 0, 0, 53533, 53533, 371, 288, 53534, 98, 98, 98, 98, 98, 98, + /* 22571 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 615, 2158592, 2158592, 3031040, 2158592, 2158592, 2158592, 2158592, + /* 22588 */ 2158592, 2158592, 3149824, 225280, 2367488, 2371584, 2158592, 2158592, 2412544, 0, 40978, 40978, 45076, 0, + /* 22602 */ 123, 124, 24, 24, 24, 24, 28, 28, 28, 28, 90144, 2158592, 2158592, 2158592, 4243812, 127, 127, 0, 0, 0, 0, + /* 22623 */ 0, 0, 0, 2211840, 0, 0, 0, 0, 1102, 98, 98, 98, 98, 98, 1108, 98, 98, 98, 98, 98, 98, 1623, 98, 98, 98, + /* 22648 */ 98, 98, 98, 98, 98, 98, 98, 1177, 0, 925, 0, 0, 0, 0, 133, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, + /* 22672 */ 98348, 28811, 46, 46, 46, 46, 1221, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 413, 46, 46, 46, 46, 147, + /* 22696 */ 151, 46, 46, 46, 46, 46, 176, 46, 181, 46, 187, 46, 190, 46, 46, 46, 68, 210, 68, 68, 68, 224, 68, 68, 68, + /* 22721 */ 68, 68, 68, 68, 68, 68, 25402, 1086, 13116, 1090, 54078, 1094, 0, 204, 46, 46, 68, 68, 214, 218, 68, 68, + /* 22743 */ 68, 68, 68, 243, 68, 248, 68, 68, 68, 68, 68, 98, 0, 2039, 98, 98, 98, 98, 98, 46, 46, 46, 46, 1404, 46, + /* 22768 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 1411, 254, 68, 257, 68, 68, 271, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, + /* 22793 */ 28811, 53533, 98, 98, 98, 294, 298, 98, 98, 98, 98, 98, 323, 98, 328, 98, 334, 98, 337, 98, 98, 351, 98, + /* 22816 */ 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 2158592, 2158592, 2158592, + /* 22841 */ 2158592, 2158592, 2158592, 2158592, 3194880, 2207744, 2207744, 2207744, 2207744, 2207744, 2416640, + /* 22852 */ 2207744, 2207744, 46, 46, 441, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 710, 46, 369, + /* 22874 */ 29319, 371, 649, 46, 46, 46, 46, 46, 46, 46, 46, 46, 660, 46, 46, 46, 68, 211, 68, 68, 68, 226, 68, 68, + /* 22898 */ 240, 68, 68, 68, 251, 46, 713, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 725, 46, 46, 46, 46, 1234, 46, 46, + /* 22923 */ 46, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 233, 68, 68, 68, 68, 68, 68, 68, 495, 68, 68, 68, + /* 22949 */ 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 282, 95, 0, 46, 46, 730, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, + /* 22976 */ 68, 68, 1873, 68, 68, 68, 68, 68, 747, 68, 68, 68, 68, 68, 68, 68, 68, 68, 760, 68, 68, 68, 68, 68, 68, + /* 23001 */ 1067, 68, 68, 68, 68, 68, 1072, 68, 68, 68, 68, 68, 68, 751, 752, 68, 68, 68, 68, 759, 68, 68, 68, 68, 68, + /* 23026 */ 68, 508, 68, 68, 510, 68, 68, 513, 68, 68, 68, 0, 0, 0, 0, 0, 0, 98, 98, 1614, 98, 98, 98, 98, 98, 847, + /* 23052 */ 98, 98, 98, 98, 853, 98, 98, 98, 98, 98, 353, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 68, 68, 68, 68, + /* 23077 */ 797, 68, 68, 800, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1446, 68, 68, 68, 68, 68, 68, 68, 812, 68, 68, + /* 23102 */ 68, 68, 68, 817, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1589, 68, 68, 68, 68, 68, 68, 25402, 546, 13116, 548, + /* 23126 */ 57893, 0, 0, 54078, 54078, 554, 834, 98, 98, 98, 98, 98, 98, 865, 98, 98, 98, 98, 98, 98, 98, 98, 872, 98, + /* 23150 */ 98, 98, 98, 845, 98, 98, 98, 98, 98, 98, 98, 98, 98, 858, 98, 0, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 46, 46, + /* 23177 */ 46, 46, 46, 46, 1663, 46, 46, 46, 46, 46, 46, 46, 46, 46, 675, 46, 46, 46, 46, 46, 46, 98, 98, 98, 98, 98, + /* 23203 */ 895, 98, 98, 898, 98, 98, 98, 98, 98, 98, 98, 0, 0, 0, 22, 22, 24, 24, 127, 28, 98, 98, 98, 910, 98, 98, + /* 23229 */ 98, 98, 98, 915, 98, 98, 98, 98, 98, 98, 0, 0, 98, 1787, 98, 98, 98, 98, 0, 0, 46, 46, 68, 68, 68, 68, 68, + /* 23256 */ 68, 68, 68, 68, 68, 1017, 68, 68, 1020, 68, 68, 68, 1079, 68, 68, 68, 68, 68, 25402, 1085, 13116, 1089, + /* 23278 */ 54078, 1093, 0, 0, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, 98348, 0, 46, 46, 46, 46, 381, 46, 46, 46, + /* 23301 */ 390, 46, 46, 46, 46, 46, 46, 46, 1392, 46, 1394, 46, 46, 46, 46, 46, 46, 46, 1545, 46, 46, 46, 46, 46, 46, + /* 23326 */ 46, 46, 46, 46, 1408, 46, 46, 46, 46, 46, 98, 1114, 98, 98, 98, 98, 98, 98, 1122, 98, 98, 98, 98, 98, 98, + /* 23351 */ 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 98, 98, 98, 98, 98, 1173, 98, 98, 98, 98, 98, 0, 925, 0, 1179, + /* 23376 */ 0, 0, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, 98348, 28811, 46, 46, 46, 46, 699, 46, 46, 46, 46, 46, 46, + /* 23400 */ 46, 46, 46, 46, 46, 1002, 46, 46, 1005, 1006, 68, 68, 1255, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 23424 */ 68, 68, 481, 68, 68, 68, 68, 68, 68, 1297, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23453 */ 2359583, 2158879, 2158879, 98, 98, 98, 98, 1327, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 925, 0, 0, + /* 23476 */ 0, 1335, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 617, 98, 98, 98, 98, 98, 1368, 98, + /* 23501 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1178, 925, 0, 1179, 0, 98, 98, 1377, 98, 98, 98, 98, 98, 98, 0, + /* 23526 */ 1179, 0, 46, 46, 46, 46, 46, 1222, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 689, 46, 46, 46, 46, 46, 68, + /* 23551 */ 68, 1438, 68, 68, 1442, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 1712, 98, 1451, 68, 68, + /* 23575 */ 68, 68, 68, 68, 68, 68, 68, 68, 1458, 68, 68, 68, 68, 0, 0, 0, 1477, 0, 1086, 0, 0, 0, 1479, 0, 1090, 98, + /* 23601 */ 98, 1491, 98, 98, 1495, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1331, 98, 98, 98, 98, 1504, 98, 98, + /* 23625 */ 98, 98, 98, 98, 98, 98, 98, 98, 1513, 98, 98, 98, 98, 0, 46, 46, 46, 46, 46, 1537, 46, 46, 46, 46, 46, + /* 23650 */ 996, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 185, 46, 46, 46, 46, 203, 98, 1648, 98, 98, 98, 98, 98, 98, + /* 23675 */ 98, 98, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1541, 0, 98, 98, 98, 98, 0, 1940, 0, 98, 98, 98, 98, + /* 23701 */ 98, 98, 46, 46, 2011, 46, 46, 46, 2015, 68, 68, 2017, 68, 68, 68, 2021, 98, 68, 68, 68, 68, 813, 68, 68, + /* 23725 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 98, 911, 98, 98, 98, 98, 98, + /* 23753 */ 98, 98, 98, 98, 98, 98, 1372, 98, 98, 98, 98, 68, 68, 68, 1244, 68, 68, 68, 68, 1248, 68, 68, 68, 68, 68, + /* 23778 */ 68, 68, 68, 68, 1603, 1605, 68, 68, 68, 1608, 68, 98, 1324, 98, 98, 98, 98, 1328, 98, 98, 98, 98, 98, 98, + /* 23802 */ 98, 98, 98, 0, 0, 0, 46, 46, 46, 46, 98, 98, 98, 98, 1378, 98, 98, 98, 98, 0, 1179, 0, 46, 46, 46, 46, 46, + /* 23829 */ 1390, 46, 1393, 46, 46, 46, 46, 1398, 46, 46, 46, 68, 68, 1923, 68, 1925, 68, 68, 1927, 68, 98, 98, 98, + /* 23852 */ 98, 98, 0, 0, 98, 98, 98, 98, 1985, 46, 46, 46, 46, 46, 46, 1391, 46, 46, 1395, 46, 46, 46, 46, 46, 46, + /* 23877 */ 171, 46, 46, 46, 46, 46, 46, 46, 46, 46, 688, 46, 46, 46, 46, 46, 46, 0, 98, 98, 98, 1939, 0, 0, 0, 98, + /* 23903 */ 1943, 98, 98, 1945, 98, 46, 46, 46, 68, 212, 68, 68, 68, 68, 68, 68, 241, 68, 68, 68, 68, 68, 68, 68, + /* 23927 */ 1970, 98, 98, 98, 1974, 0, 0, 0, 98, 68, 68, 258, 68, 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, + /* 23952 */ 98, 338, 98, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + /* 23980 */ 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 23991 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2555904, 2158592, 2158592, 2158592, 2158592, 2158592, 377, + /* 24003 */ 46, 46, 46, 46, 46, 46, 46, 46, 391, 46, 396, 46, 46, 400, 46, 46, 46, 731, 733, 46, 46, 46, 46, 46, 68, + /* 24028 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 1581, 68, 46, 403, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 24054 */ 46, 46, 1400, 68, 68, 461, 463, 68, 68, 68, 68, 68, 68, 68, 68, 477, 68, 482, 68, 68, 68, 68, 68, 98, + /* 24078 */ 2038, 0, 98, 98, 98, 98, 98, 2044, 46, 46, 46, 157, 46, 46, 46, 46, 46, 46, 46, 46, 46, 193, 46, 46, 46, + /* 24103 */ 158, 46, 46, 172, 46, 46, 46, 46, 46, 46, 46, 46, 46, 737, 46, 68, 68, 68, 68, 68, 68, 68, 486, 68, 68, + /* 24128 */ 489, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 1306, 0, 98, 98, 558, 560, 98, 98, 98, 98, 98, + /* 24154 */ 98, 98, 98, 574, 98, 579, 98, 0, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 46, 46, 46, 46, 936, 98, 583, 98, 98, + /* 24180 */ 586, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 925, 0, 0, 930, 369, 29319, 371, 0, 46, 46, 46, 46, + /* 24205 */ 46, 46, 46, 46, 46, 46, 46, 663, 68, 68, 795, 796, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 24230 */ 1459, 68, 68, 860, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 889, 873, 98, 98, 98, 98, + /* 24255 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 905, 98, 98, 98, 893, 894, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 24281 */ 98, 98, 0, 925, 0, 1179, 0, 46, 993, 994, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 951, 46, + /* 24307 */ 68, 68, 68, 1284, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1607, 68, 68, 98, 1364, 98, 98, 98, + /* 24332 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 921, 98, 46, 1556, 1557, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 24357 */ 46, 46, 46, 46, 46, 1203, 46, 1596, 1597, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 775, + /* 24382 */ 98, 98, 98, 1621, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 885, 98, 98, 98, 98, 98, 1740, 98, 98, + /* 24407 */ 98, 98, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1549, 46, 46, 46, 46, 46, 68, 98, 98, 98, 98, 98, 98, + /* 24432 */ 1836, 0, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 1984, 98, 46, 46, 46, 46, 46, 46, 1546, 46, 46, 46, 46, 46, + /* 24458 */ 46, 46, 46, 46, 987, 46, 46, 46, 46, 46, 46, 46, 46, 1909, 46, 46, 46, 46, 46, 46, 46, 68, 1917, 68, 1918, + /* 24483 */ 68, 68, 68, 68, 68, 68, 1247, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1447, 68, 68, 1450, 68, 68, + /* 24507 */ 1922, 68, 68, 68, 68, 68, 68, 68, 98, 1930, 98, 1931, 98, 0, 0, 0, 0, 0, 29319, 0, 0, 0, 0, 46, 46, 46, + /* 24533 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 457, 46, 0, 98, 98, 1938, 98, 0, 0, 0, 98, 98, 98, 98, 98, 98, + /* 24560 */ 46, 46, 46, 68, 213, 68, 68, 68, 68, 232, 236, 242, 246, 68, 68, 68, 68, 68, 68, 815, 68, 68, 68, 68, 68, + /* 24585 */ 68, 68, 68, 68, 68, 1057, 1058, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 0, 0, 98, 98, 98, 2006, 98, 98, + /* 24610 */ 98, 98, 0, 46, 46, 46, 46, 1536, 46, 46, 46, 46, 1540, 46, 2045, 68, 68, 68, 2047, 0, 0, 98, 98, 98, 2051, + /* 24635 */ 46, 46, 68, 68, 0, 0, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, 98348, 28811, 46, 46, 142, 1836, 98, 98, + /* 24658 */ 46, 68, 0, 98, 46, 68, 0, 98, 46, 68, 0, 98, 46, 46, 46, 732, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, + /* 24685 */ 68, 68, 68, 68, 68, 68, 68, 1691, 53533, 98, 98, 98, 98, 98, 98, 98, 98, 98, 317, 98, 98, 98, 98, 98, 98, + /* 24710 */ 896, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1149, 98, 98, 98, 98, 98, 68, 68, 462, 68, 68, 68, 68, 68, + /* 24735 */ 68, 68, 68, 68, 68, 68, 68, 68, 514, 68, 68, 68, 487, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 24761 */ 500, 98, 98, 559, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 611, 98, 98, 98, 584, 98, 98, 98, + /* 24786 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 597, 46, 46, 939, 46, 46, 46, 46, 943, 46, 46, 46, 46, 46, 46, 46, + /* 24812 */ 46, 388, 46, 46, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 68, 1015, 68, 68, 68, 68, 1019, 68, + /* 24837 */ 68, 68, 68, 68, 465, 68, 68, 68, 469, 68, 68, 480, 68, 68, 484, 68, 1077, 68, 68, 68, 68, 68, 68, 68, + /* 24861 */ 25402, 0, 13116, 0, 54078, 0, 0, 0, 46, 46, 46, 46, 1184, 46, 46, 46, 46, 1188, 46, 46, 46, 46, 1389, 46, + /* 24885 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 948, 46, 46, 46, 46, 1113, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 24911 */ 98, 98, 98, 98, 98, 922, 1129, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1128, 98, 1169, + /* 24936 */ 98, 1171, 98, 98, 98, 98, 98, 98, 98, 0, 925, 0, 1179, 0, 0, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, + /* 24960 */ 98348, 28811, 46, 46, 144, 68, 68, 1243, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 537, 68, 68, + /* 24984 */ 1281, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 501, 1323, 98, 98, 98, 98, 98, 98, + /* 25009 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 1142, 46, 1412, 46, 46, 46, 46, 46, 46, 46, 1418, 46, 46, 46, 46, 46, + /* 25034 */ 46, 446, 46, 46, 46, 46, 46, 46, 46, 46, 46, 671, 46, 46, 46, 46, 46, 46, 46, 46, 46, 961, 46, 46, 46, 46, + /* 25060 */ 965, 46, 98, 98, 98, 98, 98, 1520, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1500, 98, 98, 1503, 98, 98, + /* 25085 */ 98, 98, 1741, 98, 98, 98, 46, 46, 46, 46, 46, 46, 46, 46, 46, 450, 46, 46, 46, 46, 46, 46, 68, 68, 68, + /* 25110 */ 1924, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 0, 0, 98, 98, 1983, 98, 98, 46, 46, 1987, 46, 1988, 46, 0, + /* 25135 */ 98, 98, 98, 98, 0, 0, 0, 1942, 98, 98, 98, 98, 98, 46, 46, 46, 68, 1683, 68, 68, 68, 1686, 68, 68, 68, 68, + /* 25161 */ 68, 68, 68, 68, 68, 1274, 68, 68, 68, 68, 68, 68, 148, 46, 154, 46, 46, 167, 46, 177, 46, 182, 46, 46, + /* 25185 */ 189, 192, 197, 46, 46, 46, 940, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1552, 46, 46, 205, 46, + /* 25210 */ 46, 68, 68, 215, 68, 221, 68, 68, 234, 68, 244, 68, 249, 68, 68, 68, 68, 68, 492, 494, 68, 68, 68, 68, 68, + /* 25235 */ 68, 68, 68, 68, 68, 1263, 68, 68, 68, 68, 68, 68, 256, 259, 264, 68, 272, 68, 68, 0, 24852, 12566, 0, 0, + /* 25259 */ 0, 283, 28811, 53533, 98, 98, 98, 295, 98, 301, 98, 98, 314, 98, 324, 98, 329, 98, 98, 0, 0, 1896, 98, 98, + /* 25283 */ 98, 98, 98, 98, 1903, 46, 46, 46, 46, 165, 169, 175, 179, 46, 46, 46, 46, 46, 195, 46, 46, 336, 339, 344, + /* 25307 */ 98, 352, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 2158592, + /* 25333 */ 2158592, 2158592, 0, 2158592, 2158592, 2158592, 0, 2158592, 2899968, 2158592, 2158592, 2158592, 2969600, + /* 25346 */ 2158592, 2158592, 402, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 417, 46, 46, 46, 956, 46, 46, + /* 25369 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 414, 46, 46, 46, 68, 68, 68, 488, 68, 68, 68, 68, 68, 68, 68, 68, + /* 25395 */ 68, 68, 68, 68, 68, 1778, 98, 98, 68, 503, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 515, 68, 68, + /* 25420 */ 68, 68, 68, 527, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1700, 68, 68, 68, 541, 68, 68, 24852, + /* 25444 */ 24852, 12566, 12566, 0, 57893, 283, 0, 0, 53533, 53533, 371, 288, 98, 98, 98, 585, 98, 98, 98, 98, 98, 98, + /* 25466 */ 98, 98, 98, 98, 98, 98, 902, 98, 98, 98, 98, 600, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 612, 98, + /* 25492 */ 0, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 46, 46, 46, 935, 46, 46, 46, 969, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 25519 */ 46, 46, 46, 1421, 46, 46, 46, 638, 98, 98, 22, 127, 127, 131431, 0, 642, 0, 0, 0, 0, 366, 0, 0, 0, 46, 46, + /* 25545 */ 46, 1183, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1916, 68, 68, 68, 68, 68, 369, 29319, 371, 0, 652, 46, + /* 25569 */ 654, 46, 655, 46, 657, 46, 46, 46, 661, 46, 46, 46, 981, 982, 46, 46, 46, 46, 46, 46, 989, 46, 46, 46, 46, + /* 25594 */ 46, 1405, 1406, 46, 46, 46, 46, 1409, 46, 46, 46, 46, 46, 1415, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 25618 */ 723, 724, 46, 46, 46, 46, 46, 46, 682, 46, 684, 46, 46, 46, 46, 46, 46, 46, 46, 692, 693, 695, 744, 68, + /* 25642 */ 68, 68, 748, 68, 68, 68, 68, 68, 68, 68, 68, 68, 761, 68, 68, 68, 68, 68, 528, 68, 68, 68, 68, 68, 68, 68, + /* 25668 */ 68, 539, 540, 68, 68, 68, 765, 68, 68, 68, 68, 769, 68, 771, 68, 68, 68, 68, 68, 68, 68, 530, 68, 68, 68, + /* 25693 */ 68, 68, 68, 68, 68, 68, 1262, 68, 68, 68, 68, 68, 68, 68, 68, 68, 779, 780, 782, 68, 68, 68, 68, 68, 68, + /* 25718 */ 789, 790, 68, 68, 68, 68, 68, 68, 1271, 68, 68, 68, 68, 68, 68, 1277, 68, 68, 68, 68, 68, 68, 1287, 68, + /* 25742 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1777, 68, 98, 98, 98, 793, 794, 68, 68, 68, 68, 68, 68, 68, 802, + /* 25767 */ 68, 68, 68, 806, 68, 68, 68, 68, 68, 68, 1298, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 98, 98, + /* 25794 */ 98, 98, 98, 98, 1111, 98, 25402, 546, 13116, 548, 57893, 0, 0, 54078, 54078, 554, 0, 837, 98, 839, 98, + /* 25815 */ 840, 98, 842, 98, 98, 98, 846, 98, 98, 98, 98, 98, 98, 98, 98, 98, 859, 98, 98, 98, 98, 863, 98, 98, 98, + /* 25840 */ 98, 867, 98, 869, 98, 98, 98, 98, 0, 46, 1533, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1224, 46, 46, 46, 46, + /* 25865 */ 46, 46, 46, 46, 387, 46, 46, 46, 46, 46, 46, 46, 98, 98, 98, 98, 877, 878, 880, 98, 98, 98, 98, 98, 98, + /* 25890 */ 887, 888, 98, 0, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 46, 933, 46, 46, 46, 68, 68, 1684, 68, 68, 68, 68, 68, + /* 25916 */ 68, 68, 68, 68, 68, 68, 475, 68, 68, 68, 68, 98, 891, 892, 98, 98, 98, 98, 98, 98, 98, 900, 98, 98, 98, + /* 25941 */ 904, 98, 0, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 932, 46, 46, 46, 46, 46, 1953, 46, 1955, 46, 46, 46, 68, 68, + /* 25967 */ 68, 68, 68, 68, 68, 68, 68, 1689, 68, 68, 68, 923, 642, 0, 0, 0, 925, 29319, 0, 0, 0, 0, 46, 46, 46, 46, + /* 25993 */ 46, 46, 1674, 46, 1676, 46, 46, 46, 46, 46, 46, 46, 411, 46, 46, 46, 46, 46, 46, 46, 46, 1810, 46, 46, 46, + /* 26018 */ 46, 46, 46, 68, 46, 46, 955, 46, 957, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 429, 46, 46, 46, 46, + /* 26043 */ 1021, 68, 1023, 68, 68, 68, 68, 68, 68, 1031, 68, 1033, 68, 68, 68, 68, 0, 1476, 0, 0, 0, 0, 0, 1478, 0, + /* 26068 */ 0, 0, 0, 0, 0, 0, 1100, 98, 98, 98, 98, 98, 98, 98, 98, 1380, 0, 0, 0, 46, 46, 46, 46, 68, 68, 1065, 68, + /* 26095 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 823, 68, 68, 68, 68, 1078, 68, 68, 1081, 1082, 68, 68, + /* 26119 */ 25402, 0, 13116, 0, 54078, 0, 0, 0, 46, 46, 1182, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1189, 98, 98, 1115, + /* 26143 */ 98, 1117, 98, 98, 98, 98, 98, 98, 1125, 98, 1127, 98, 98, 0, 98, 98, 1796, 98, 98, 98, 98, 98, 98, 98, 46, + /* 26168 */ 46, 46, 46, 46, 1744, 46, 46, 46, 98, 98, 98, 98, 1159, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, + /* 26193 */ 925, 926, 1179, 0, 98, 98, 98, 98, 1172, 98, 98, 1175, 1176, 98, 98, 0, 925, 0, 1179, 0, 0, 94243, 0, 0, + /* 26217 */ 0, 39, 102440, 0, 0, 106539, 98348, 28811, 46, 46, 145, 46, 46, 1218, 46, 46, 46, 1223, 46, 46, 46, 46, + /* 26239 */ 46, 46, 46, 1230, 46, 46, 46, 1206, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1213, 46, 46, 46, 68, + /* 26264 */ 68, 1283, 68, 68, 68, 68, 68, 68, 68, 1290, 68, 68, 68, 68, 68, 68, 68, 768, 68, 68, 68, 68, 68, 68, 68, + /* 26289 */ 68, 68, 532, 68, 68, 68, 68, 68, 68, 68, 68, 1295, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, + /* 26315 */ 2162688, 0, 98, 98, 98, 1326, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 919, 98, 98, 98, 98, 98, 98, + /* 26340 */ 1338, 98, 1340, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1628, 98, 98, 98, 98, 1363, 98, 98, 98, 98, + /* 26364 */ 98, 98, 98, 1370, 98, 98, 98, 98, 98, 98, 98, 592, 98, 98, 98, 98, 98, 98, 98, 98, 0, 98, 98, 98, 98, 98, + /* 26390 */ 98, 98, 1799, 98, 98, 46, 46, 46, 1375, 98, 98, 98, 98, 98, 98, 98, 98, 0, 1179, 0, 46, 46, 46, 46, 46, + /* 26415 */ 1427, 46, 46, 68, 68, 68, 68, 68, 68, 68, 1435, 68, 68, 68, 1463, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 26440 */ 68, 68, 758, 68, 68, 68, 98, 98, 98, 1518, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1139, 98, 98, + /* 26465 */ 98, 46, 1542, 46, 46, 46, 46, 46, 46, 46, 1548, 46, 46, 46, 46, 46, 1554, 46, 1570, 1571, 46, 68, 68, 68, + /* 26489 */ 68, 68, 68, 1578, 68, 68, 68, 68, 68, 68, 68, 816, 68, 68, 68, 68, 822, 68, 68, 68, 1582, 68, 68, 68, 68, + /* 26514 */ 68, 68, 68, 1588, 68, 68, 68, 68, 68, 1594, 68, 68, 68, 68, 68, 750, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 26539 */ 762, 1610, 1611, 68, 1476, 0, 1478, 0, 1480, 0, 98, 98, 98, 98, 98, 98, 1618, 98, 98, 98, 98, 98, 1622, + /* 26562 */ 98, 98, 98, 98, 98, 98, 98, 1629, 98, 98, 0, 1728, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 26588 */ 46, 1802, 46, 1647, 1649, 98, 98, 98, 1652, 98, 1654, 1655, 98, 0, 46, 46, 46, 1658, 46, 46, 46, 1220, 46, + /* 26611 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 708, 709, 46, 46, 1845, 98, 98, 98, 98, 98, 98, 98, 46, 46, + /* 26636 */ 46, 46, 46, 46, 46, 46, 674, 46, 46, 46, 46, 678, 46, 46, 68, 68, 68, 68, 68, 1881, 98, 98, 98, 98, 98, 0, + /* 26662 */ 0, 0, 98, 98, 98, 98, 98, 1902, 46, 46, 46, 46, 46, 46, 1908, 46, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, + /* 26688 */ 68, 68, 68, 68, 68, 68, 68, 1921, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 0, 0, 0, 98, 98, 0, + /* 26715 */ 98, 1937, 98, 98, 1940, 0, 0, 98, 98, 98, 98, 98, 98, 1947, 1948, 1949, 46, 46, 46, 1952, 46, 1954, 46, + /* 26738 */ 46, 46, 46, 1959, 1960, 1961, 68, 68, 68, 68, 68, 68, 1443, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 756, + /* 26762 */ 68, 68, 68, 68, 68, 68, 1964, 68, 1966, 68, 68, 68, 68, 1971, 1972, 1973, 98, 0, 0, 0, 98, 98, 46, 68, 0, + /* 26787 */ 98, 46, 68, 0, 98, 2064, 2065, 0, 2066, 46, 98, 1978, 98, 0, 0, 1981, 98, 98, 98, 98, 46, 46, 46, 46, 46, + /* 26812 */ 46, 686, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1957, 46, 68, 68, 68, 68, 68, 98, 0, 0, 2025, 98, 8192, 98, + /* 26837 */ 98, 2029, 46, 46, 46, 46, 46, 46, 68, 68, 68, 1575, 68, 68, 68, 68, 68, 68, 68, 68, 68, 819, 68, 68, 68, + /* 26862 */ 68, 68, 68, 46, 68, 68, 68, 68, 0, 2049, 98, 98, 98, 98, 46, 46, 68, 68, 0, 0, 94243, 0, 0, 0, 39, 102440, + /* 26888 */ 0, 0, 106539, 98348, 28811, 46, 46, 146, 53533, 98, 98, 289, 98, 98, 98, 98, 98, 98, 318, 98, 98, 98, 98, + /* 26911 */ 98, 98, 912, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 0, 930, 46, 46, 46, 46, 68, 68, 1050, 68, 68, 68, 68, + /* 26937 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 1034, 68, 1036, 98, 98, 98, 98, 1144, 98, 98, 98, 98, 98, 98, 98, 98, + /* 26962 */ 98, 98, 98, 570, 98, 98, 98, 98, 98, 98, 98, 98, 1367, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 571, + /* 26987 */ 98, 98, 98, 98, 68, 98, 98, 98, 98, 98, 98, 1837, 0, 98, 98, 98, 98, 98, 0, 0, 0, 1897, 98, 98, 98, 98, + /* 27013 */ 98, 46, 46, 46, 46, 46, 717, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1420, 46, 46, 46, 46, 98, 2010, + /* 27038 */ 46, 46, 46, 46, 46, 46, 2016, 68, 68, 68, 68, 68, 68, 2022, 46, 2046, 68, 68, 68, 0, 0, 2050, 98, 98, 98, + /* 27063 */ 46, 46, 68, 68, 0, 0, 94243, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, + /* 27084 */ 2158592, 2572288, 2158592, 2158592, 2158592, 2158592, 2613248, 2158592, 2158592, 2158592, 2158592, + /* 27095 */ 2158592, 2158592, 2691072, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 134, 94243, 0, 0, 0, 39, + /* 27110 */ 102440, 0, 0, 106539, 98348, 28811, 46, 46, 46, 46, 1414, 46, 46, 46, 1417, 46, 1419, 46, 46, 46, 46, 46, + /* 27132 */ 46, 1866, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1699, 68, 68, 68, 68, 369, 29319, 371, 650, 46, 46, + /* 27156 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1214, 46, 46, 25402, 546, 13116, 548, 57893, 0, 0, 54078, + /* 27178 */ 54078, 554, 835, 98, 98, 98, 98, 98, 98, 1134, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1344, 98, 98, 98, + /* 27202 */ 1347, 98, 1569, 46, 46, 46, 1572, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 1305, 0, 0, 68, 68, + /* 27227 */ 68, 1598, 68, 68, 68, 68, 68, 68, 68, 68, 1606, 68, 68, 1609, 98, 98, 98, 1650, 98, 98, 1653, 98, 98, 98, + /* 27251 */ 0, 46, 46, 1657, 46, 46, 46, 159, 46, 46, 173, 46, 46, 46, 184, 46, 46, 46, 46, 202, 1703, 68, 68, 68, 68, + /* 27276 */ 68, 68, 68, 68, 68, 68, 98, 98, 1711, 98, 98, 0, 1794, 1795, 98, 98, 98, 98, 98, 98, 98, 98, 46, 46, 46, + /* 27301 */ 46, 46, 46, 1745, 46, 46, 46, 1749, 46, 46, 46, 46, 46, 46, 46, 46, 1755, 46, 46, 46, 46, 46, 46, 1808, + /* 27325 */ 46, 46, 46, 46, 46, 46, 46, 46, 68, 1430, 68, 68, 68, 68, 68, 68, 46, 46, 68, 68, 68, 68, 68, 68, 68, 68, + /* 27351 */ 68, 68, 1767, 68, 68, 68, 0, 0, 0, 0, 0, 0, 98, 1613, 98, 98, 98, 98, 98, 98, 1717, 98, 0, 98, 98, 98, 98, + /* 27378 */ 98, 98, 98, 46, 46, 46, 46, 46, 46, 1858, 46, 68, 68, 68, 68, 68, 1773, 68, 68, 68, 68, 68, 68, 68, 98, + /* 27403 */ 98, 98, 98, 1886, 0, 0, 0, 98, 98, 68, 2035, 2036, 68, 68, 98, 0, 0, 98, 2041, 2042, 98, 98, 46, 46, 46, + /* 27428 */ 46, 1426, 46, 46, 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 252, 46, 152, 46, 46, 46, 46, 46, + /* 27453 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1682, 46, 206, 46, 68, 68, 68, 219, 68, 68, 68, 68, 68, 68, 68, + /* 27478 */ 68, 68, 68, 471, 68, 68, 68, 68, 68, 53533, 98, 98, 98, 98, 299, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 27503 */ 568, 98, 98, 98, 98, 98, 68, 522, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1075, 98, + /* 27528 */ 619, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1141, 98, 46, 1232, 46, 46, 46, 46, 46, 46, + /* 27553 */ 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 1759, 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 27579 */ 68, 68, 68, 68, 1266, 46, 46, 155, 46, 163, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 676, 46, 46, 46, + /* 27604 */ 46, 46, 207, 46, 68, 68, 68, 68, 222, 68, 230, 68, 68, 68, 68, 68, 68, 68, 68, 1273, 68, 68, 68, 68, 68, + /* 27629 */ 68, 68, 68, 496, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 0, 0, 0, 1977, 53533, 98, 98, 98, 98, 98, + /* 27655 */ 302, 98, 310, 98, 98, 98, 98, 98, 98, 98, 627, 98, 98, 98, 98, 98, 98, 98, 98, 849, 850, 98, 98, 98, 98, + /* 27680 */ 857, 98, 98, 46, 404, 46, 46, 46, 46, 46, 46, 46, 412, 46, 46, 46, 46, 46, 46, 718, 46, 46, 46, 46, 46, + /* 27705 */ 46, 46, 46, 46, 46, 1678, 46, 46, 46, 46, 46, 439, 46, 46, 443, 46, 46, 46, 46, 46, 449, 46, 46, 46, 456, + /* 27730 */ 46, 46, 46, 160, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 415, 46, 46, 418, 68, 68, 68, 68, 490, + /* 27755 */ 68, 68, 68, 68, 68, 68, 68, 498, 68, 68, 68, 0, 0, 0, 0, 0, 0, 1612, 98, 98, 98, 98, 98, 98, 0, 1785, 98, + /* 27782 */ 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 1789, 98, 98, 0, 0, 68, 68, 68, 525, 68, 68, 529, 68, 68, 68, 68, + /* 27808 */ 68, 535, 68, 68, 68, 0, 1305, 0, 1311, 0, 1317, 98, 98, 98, 98, 98, 98, 98, 913, 98, 98, 98, 98, 98, 98, + /* 27833 */ 98, 98, 593, 98, 98, 98, 98, 98, 98, 98, 542, 68, 68, 24852, 24852, 12566, 12566, 0, 57893, 0, 0, 0, + /* 27855 */ 53533, 53533, 371, 288, 98, 98, 98, 98, 587, 98, 98, 98, 98, 98, 98, 98, 595, 98, 98, 98, 0, 98, 98, 98, + /* 27879 */ 0, 98, 98, 98, 98, 98, 98, 98, 1646, 98, 98, 98, 622, 98, 98, 626, 98, 98, 98, 98, 98, 632, 98, 98, 98, 0, + /* 27905 */ 98, 98, 98, 0, 98, 98, 98, 98, 1644, 98, 98, 98, 0, 98, 98, 98, 0, 98, 98, 1642, 98, 98, 98, 98, 98, 98, + /* 27931 */ 1146, 1147, 98, 98, 98, 98, 98, 98, 98, 98, 1355, 98, 98, 98, 1358, 98, 98, 98, 639, 98, 98, 22, 127, 127, + /* 27955 */ 131431, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 46, 1181, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 690, 46, 46, + /* 27982 */ 46, 46, 46, 46, 714, 46, 46, 46, 46, 46, 46, 722, 46, 46, 46, 46, 46, 46, 958, 46, 960, 46, 46, 46, 46, + /* 28007 */ 46, 46, 46, 972, 46, 46, 46, 46, 46, 46, 46, 46, 46, 738, 739, 68, 741, 68, 742, 68, 890, 98, 98, 98, 98, + /* 28032 */ 98, 98, 98, 98, 899, 98, 98, 98, 98, 98, 98, 98, 1742, 46, 46, 46, 46, 46, 46, 46, 1747, 907, 98, 98, 98, + /* 28057 */ 98, 98, 98, 98, 98, 98, 916, 918, 98, 98, 98, 98, 0, 1532, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 28082 */ 1550, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 1012, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 497, 68, 68, + /* 28107 */ 68, 68, 68, 68, 68, 1024, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1048, 68, 68, 68, 68, 68, + /* 28132 */ 68, 1066, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 1303, 0, 0, 0, 68, 68, 68, 68, 1080, 68, 68, 68, + /* 28158 */ 68, 25402, 0, 13116, 0, 54078, 0, 0, 0, 1101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 884, 98, 98, + /* 28183 */ 98, 98, 98, 98, 98, 98, 1118, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 572, 98, 98, 98, 98, 46, 46, + /* 28208 */ 1219, 46, 46, 46, 46, 46, 46, 1226, 46, 46, 46, 46, 46, 46, 984, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 28233 */ 1227, 46, 46, 46, 46, 46, 1241, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 517, 68, 1268, + /* 28258 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1279, 68, 68, 68, 68, 68, 767, 68, 68, 68, 68, 68, 68, 68, + /* 28284 */ 68, 774, 68, 68, 68, 68, 68, 798, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 787, 68, 68, 68, 792, 68, + /* 28309 */ 68, 68, 1296, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 98, 1617, 98, 98, 98, 98, + /* 28335 */ 1366, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1373, 98, 98, 0, 1895, 0, 98, 98, 98, 98, 98, 98, 46, 46, 46, + /* 28360 */ 46, 46, 685, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 451, 46, 46, 46, 46, 46, 98, 1376, 98, 98, 98, 98, + /* 28385 */ 98, 98, 98, 0, 0, 0, 46, 46, 1384, 46, 46, 46, 1233, 46, 46, 46, 1236, 46, 46, 46, 46, 46, 46, 46, 68, 68, + /* 28411 */ 68, 68, 1871, 68, 68, 68, 68, 46, 1423, 46, 46, 46, 46, 46, 46, 68, 68, 1431, 68, 68, 68, 68, 68, 68, 68, + /* 28436 */ 1029, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1056, 68, 68, 68, 68, 68, 68, 1436, 68, 68, 68, 68, 68, 68, 68, + /* 28461 */ 68, 68, 68, 68, 68, 68, 68, 68, 518, 68, 1452, 1453, 68, 68, 68, 68, 1456, 68, 68, 68, 68, 68, 68, 68, 68, + /* 28486 */ 68, 68, 1825, 68, 68, 68, 68, 68, 1461, 68, 68, 68, 1464, 68, 1466, 68, 68, 68, 68, 68, 68, 1470, 68, 68, + /* 28510 */ 68, 68, 68, 68, 1587, 68, 68, 68, 68, 68, 68, 68, 68, 1595, 1489, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 28535 */ 98, 98, 98, 98, 98, 1154, 98, 1505, 1506, 98, 98, 98, 98, 1510, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1148, + /* 28559 */ 98, 98, 98, 98, 98, 98, 1516, 98, 98, 98, 1519, 98, 1521, 98, 98, 98, 98, 98, 98, 1525, 98, 98, 98, 22, + /* 28583 */ 127, 127, 131431, 0, 0, 0, 643, 0, 134, 366, 0, 0, 0, 1313, 0, 0, 0, 1096, 1319, 0, 0, 0, 0, 98, 98, 98, + /* 28609 */ 98, 98, 98, 98, 98, 1110, 98, 98, 98, 68, 68, 68, 68, 68, 1586, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 28634 */ 68, 534, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1600, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 772, 68, + /* 28659 */ 68, 68, 68, 98, 98, 1620, 98, 98, 98, 98, 98, 98, 98, 1627, 98, 98, 98, 98, 98, 98, 1160, 98, 98, 98, 98, + /* 28684 */ 98, 98, 98, 98, 98, 0, 1179, 0, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 1763, 68, 68, 68, 68, 68, + /* 28710 */ 68, 68, 68, 68, 25402, 0, 13116, 0, 54078, 0, 0, 98, 98, 98, 1781, 98, 98, 0, 0, 98, 98, 98, 98, 98, 98, + /* 28735 */ 0, 0, 98, 98, 98, 98, 98, 98, 1791, 0, 1860, 46, 1862, 1863, 46, 1865, 46, 68, 68, 68, 68, 68, 68, 68, 68, + /* 28760 */ 1875, 68, 1877, 1878, 68, 1880, 68, 98, 98, 98, 98, 98, 1887, 0, 1889, 98, 98, 98, 22, 127, 127, 131431, + /* 28782 */ 0, 0, 364, 0, 0, 0, 366, 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 1488, 98, + /* 28811 */ 1893, 0, 0, 0, 98, 1898, 1899, 98, 1901, 98, 46, 46, 46, 46, 46, 2014, 46, 68, 68, 68, 68, 68, 2020, 68, + /* 28835 */ 98, 1989, 46, 1990, 46, 46, 46, 68, 68, 68, 68, 68, 68, 1996, 68, 1997, 68, 68, 68, 68, 68, 814, 68, 68, + /* 28859 */ 68, 68, 68, 68, 68, 68, 68, 825, 68, 68, 98, 98, 98, 98, 0, 0, 98, 98, 2005, 0, 98, 2007, 98, 98, 98, 22, + /* 28885 */ 127, 127, 131431, 0, 642, 0, 0, 0, 0, 366, 0, 0, 0, 0, 98, 1103, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 28911 */ 852, 98, 98, 98, 98, 98, 0, 98, 98, 2056, 2057, 0, 2059, 46, 68, 0, 98, 46, 68, 0, 98, 46, 46, 46, 1388, + /* 28936 */ 46, 46, 46, 46, 46, 46, 1396, 46, 46, 46, 46, 46, 46, 1913, 46, 46, 1915, 68, 68, 68, 68, 68, 68, 68, 68, + /* 28961 */ 1468, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1929, 98, 98, 98, 98, 0, 0, 46, 46, 68, 68, 68, 68, 68, 68, 68, + /* 28987 */ 68, 1016, 68, 68, 68, 68, 68, 68, 68, 1054, 68, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 1932, 0, + /* 29012 */ 0, 0, 134, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, 98348, 28811, 46, 46, 143, 68, 68, 260, 68, 68, 68, + /* 29035 */ 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 53533, 98, 98, 290, 98, 98, 98, 304, 98, 98, 98, 98, 98, 98, + /* 29059 */ 98, 98, 98, 1162, 98, 98, 98, 1165, 98, 98, 98, 340, 98, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, + /* 29084 */ 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 29104 */ 0, 40978, 192512, 22, 258048, 24, 24, 127, 28, 68, 460, 68, 68, 68, 68, 68, 68, 68, 68, 68, 472, 479, 68, + /* 29127 */ 68, 68, 68, 68, 68, 493, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 511, 68, 68, 68, 68, 68, 68, 68, 524, 68, + /* 29153 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 538, 68, 68, 68, 68, 68, 1027, 68, 68, 68, 68, 1032, 68, 68, 68, + /* 29178 */ 68, 68, 68, 68, 1272, 68, 68, 68, 68, 68, 68, 68, 68, 68, 754, 68, 68, 68, 68, 68, 68, 98, 557, 98, 98, + /* 29203 */ 98, 98, 98, 98, 98, 98, 98, 569, 576, 98, 98, 98, 0, 98, 98, 1639, 0, 1641, 98, 98, 98, 98, 98, 98, 98, + /* 29228 */ 564, 98, 98, 98, 573, 98, 98, 98, 98, 98, 98, 621, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 635, 98, 0, + /* 29254 */ 0, 0, 0, 925, 29319, 0, 0, 0, 931, 46, 46, 46, 46, 46, 971, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 29280 */ 1397, 46, 46, 46, 46, 664, 665, 46, 46, 46, 46, 672, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1562, 46, 1564, + /* 29304 */ 46, 46, 46, 46, 68, 68, 68, 1051, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1062, 98, 98, 98, 98, 98, + /* 29329 */ 1145, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 594, 98, 98, 98, 98, 98, 98, 1156, 98, 98, 98, 98, 98, 98, + /* 29354 */ 1161, 98, 98, 98, 98, 98, 1166, 98, 0, 0, 0, 0, 925, 29319, 0, 0, 930, 0, 46, 46, 46, 46, 46, 941, 46, 46, + /* 29380 */ 944, 46, 46, 46, 46, 46, 46, 952, 68, 68, 68, 68, 1257, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, + /* 29405 */ 1304, 0, 0, 0, 98, 98, 1337, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 634, 98, 98, 68, 1474, + /* 29430 */ 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 835, 98, 98, 98, 98, 1529, 98, 98, 0, 46, 46, 46, 46, + /* 29459 */ 46, 46, 46, 46, 46, 46, 46, 962, 46, 46, 46, 46, 68, 68, 68, 68, 1707, 68, 68, 68, 68, 68, 68, 98, 98, 98, + /* 29485 */ 98, 98, 0, 0, 0, 98, 1891, 1739, 98, 98, 98, 98, 98, 98, 46, 46, 46, 46, 46, 46, 46, 46, 46, 720, 46, 46, + /* 29511 */ 46, 46, 46, 726, 46, 98, 98, 1894, 0, 0, 98, 98, 98, 98, 98, 98, 46, 46, 46, 46, 46, 46, 1993, 68, 68, 68, + /* 29537 */ 68, 68, 68, 68, 68, 68, 68, 786, 68, 68, 68, 68, 68, 68, 68, 1965, 68, 1967, 68, 68, 68, 98, 98, 98, 98, + /* 29562 */ 0, 1976, 0, 98, 98, 46, 68, 0, 98, 46, 68, 2062, 98, 46, 68, 0, 98, 46, 98, 98, 1979, 0, 0, 98, 1982, 98, + /* 29588 */ 98, 98, 1986, 46, 46, 46, 46, 46, 382, 46, 46, 46, 46, 46, 46, 397, 46, 46, 46, 68, 68, 2000, 98, 98, 98, + /* 29613 */ 2002, 0, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 1798, 98, 98, 98, 46, 46, 46, 98, 0, 0, 98, 98, 0, 98, 98, + /* 29640 */ 98, 46, 2030, 46, 46, 46, 46, 68, 68, 1574, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1045, 68, 68, 68, 68, + /* 29665 */ 68, 2034, 68, 68, 68, 68, 98, 0, 0, 2040, 98, 98, 98, 98, 46, 46, 46, 46, 1558, 46, 46, 46, 46, 46, 46, + /* 29690 */ 46, 46, 1566, 46, 46, 53533, 98, 98, 98, 98, 98, 98, 305, 98, 98, 319, 98, 98, 98, 98, 98, 98, 1174, 98, + /* 29714 */ 98, 98, 98, 0, 925, 0, 0, 0, 28, 28, 131431, 0, 362, 0, 0, 366, 0, 369, 28811, 371, 141, 46, 46, 46, 46, + /* 29739 */ 1662, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1212, 46, 46, 46, 46, 46, 440, 46, 46, 46, 46, 46, 447, + /* 29764 */ 46, 46, 46, 46, 46, 46, 46, 46, 986, 46, 46, 46, 46, 46, 46, 991, 68, 68, 68, 68, 526, 68, 68, 68, 68, 68, + /* 29790 */ 533, 68, 68, 68, 68, 68, 68, 68, 1068, 68, 68, 68, 1071, 68, 68, 68, 68, 98, 98, 98, 98, 623, 98, 98, 98, + /* 29815 */ 98, 98, 630, 98, 98, 98, 98, 98, 98, 1353, 98, 98, 98, 98, 98, 98, 98, 98, 1362, 46, 46, 666, 46, 46, 46, + /* 29840 */ 46, 46, 46, 46, 46, 46, 677, 46, 46, 46, 46, 1673, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 452, 46, + /* 29865 */ 46, 46, 46, 697, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 68, 68, 68, 764, 68, 68, + /* 29891 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1060, 68, 68, 98, 98, 98, 862, 98, 98, 98, 98, 98, 98, 98, 98, + /* 29917 */ 98, 98, 98, 98, 1151, 1152, 98, 98, 68, 1064, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 29942 */ 1830, 0, 1098, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1332, 98, 98, 98, 98, 98, 98, 1158, + /* 29967 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1359, 98, 98, 98, 1309, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 0, + /* 29994 */ 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 598, 46, 46, 1543, 46, 46, 46, 46, + /* 30020 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1215, 46, 68, 1583, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 30045 */ 68, 68, 68, 791, 68, 98, 98, 98, 1635, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 1800, 98, 46, 46, + /* 30070 */ 46, 98, 98, 1793, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 46, 46, 46, 1743, 46, 46, 46, 1746, 46, 68, 68, + /* 30095 */ 68, 68, 269, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 53533, 98, 98, 291, 98, 98, 98, 306, 98, 98, + /* 30119 */ 320, 98, 98, 98, 331, 98, 0, 0, 0, 0, 925, 29319, 0, 928, 0, 0, 46, 46, 46, 46, 46, 410, 46, 46, 46, 46, + /* 30145 */ 46, 46, 46, 46, 46, 46, 395, 46, 46, 46, 46, 46, 98, 98, 98, 349, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, + /* 30171 */ 127, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 28811, 0, 141, 46, 46, 46, 46, 444, 46, 46, 46, 46, 46, 46, 46, 46, + /* 30198 */ 46, 46, 46, 1228, 46, 46, 46, 46, 369, 29319, 371, 0, 46, 46, 46, 46, 46, 46, 46, 46, 659, 46, 46, 46, 46, + /* 30223 */ 1752, 46, 46, 46, 1753, 1754, 46, 46, 46, 46, 46, 46, 170, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1563, + /* 30247 */ 1565, 46, 46, 46, 1568, 68, 68, 746, 68, 68, 68, 68, 68, 68, 68, 68, 757, 68, 68, 68, 68, 68, 68, 68, + /* 30271 */ 1467, 68, 68, 68, 68, 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 283, 28811, 98, 98, 98, 844, 98, 98, 98, + /* 30295 */ 98, 98, 98, 98, 98, 855, 98, 98, 98, 0, 98, 1638, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 1523, 98, 98, 98, + /* 30321 */ 98, 98, 98, 98, 46, 46, 980, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1240, 68, 46, 46, 68, + /* 30347 */ 68, 68, 1011, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 804, 68, 68, 68, 68, 1168, 98, 98, 98, 98, 98, + /* 30372 */ 98, 98, 98, 98, 98, 0, 925, 0, 0, 0, 0, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2379776, + /* 30394 */ 2158592, 1190, 46, 46, 1193, 1194, 46, 46, 46, 46, 46, 1199, 46, 1201, 46, 46, 46, 46, 1864, 46, 46, 68, + /* 30416 */ 68, 1869, 68, 68, 68, 68, 1874, 68, 46, 1205, 46, 46, 46, 46, 46, 46, 46, 46, 1211, 46, 46, 46, 46, 46, + /* 30440 */ 700, 46, 46, 46, 705, 46, 46, 46, 46, 46, 46, 942, 46, 46, 46, 46, 46, 46, 46, 46, 46, 945, 46, 947, 46, + /* 30465 */ 46, 46, 46, 46, 1217, 46, 46, 46, 46, 46, 46, 1225, 46, 46, 46, 46, 1229, 46, 46, 46, 161, 46, 46, 46, 46, + /* 30490 */ 46, 46, 46, 46, 46, 46, 46, 46, 1003, 46, 46, 46, 1254, 68, 68, 68, 68, 68, 1259, 68, 1261, 68, 68, 68, + /* 30514 */ 68, 1265, 68, 68, 68, 68, 68, 68, 1696, 68, 68, 68, 68, 68, 68, 68, 1701, 68, 68, 68, 68, 68, 1285, 68, + /* 30538 */ 68, 68, 68, 1289, 68, 68, 68, 68, 68, 68, 68, 68, 1457, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1775, 68, 68, + /* 30563 */ 68, 98, 98, 98, 98, 98, 98, 98, 1339, 98, 1341, 98, 98, 98, 98, 1345, 98, 98, 98, 98, 98, 624, 98, 98, 98, + /* 30588 */ 98, 98, 98, 98, 98, 98, 98, 0, 46, 1656, 46, 46, 46, 98, 98, 98, 98, 1351, 98, 98, 98, 98, 98, 98, 1357, + /* 30613 */ 98, 98, 98, 98, 98, 625, 98, 98, 98, 98, 98, 98, 98, 98, 636, 637, 98, 98, 1365, 98, 98, 98, 98, 1369, 98, + /* 30638 */ 98, 98, 98, 98, 98, 98, 98, 565, 98, 98, 98, 98, 98, 98, 580, 46, 46, 1403, 46, 46, 46, 46, 46, 46, 46, + /* 30663 */ 46, 46, 46, 46, 46, 46, 46, 1399, 46, 46, 46, 1413, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 30688 */ 46, 1669, 46, 1422, 46, 46, 1425, 46, 46, 1428, 46, 1429, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, + /* 30712 */ 0, 0, 16384, 98, 68, 68, 1475, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 1486, 98, 1487, 98, + /* 30740 */ 98, 98, 1530, 98, 0, 46, 46, 1534, 46, 46, 46, 46, 46, 46, 46, 46, 1197, 46, 46, 46, 46, 46, 46, 46, 68, + /* 30765 */ 68, 68, 68, 1599, 68, 68, 1601, 68, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 1933, 0, 1632, 98, + /* 30790 */ 1634, 0, 98, 98, 98, 1640, 98, 98, 98, 1643, 98, 98, 1645, 98, 0, 0, 0, 0, 925, 29319, 0, 929, 0, 0, 46, + /* 30815 */ 46, 46, 46, 46, 734, 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 68, 1579, 68, 68, 68, 68, 46, 46, 1660, 1661, + /* 30840 */ 46, 46, 46, 46, 1665, 1666, 46, 46, 46, 46, 46, 1670, 1692, 1693, 68, 68, 68, 68, 68, 1697, 68, 68, 68, + /* 30863 */ 68, 68, 68, 68, 1702, 98, 98, 1714, 1715, 98, 98, 98, 98, 0, 1721, 1722, 98, 98, 98, 98, 98, 98, 1496, 98, + /* 30887 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 1163, 1164, 98, 98, 98, 98, 1726, 98, 0, 0, 98, 98, 98, 0, 98, 98, 98, + /* 30913 */ 1734, 98, 98, 98, 98, 98, 864, 98, 98, 98, 98, 868, 98, 98, 98, 98, 98, 354, 98, 0, 40978, 0, 22, 22, 24, + /* 30938 */ 24, 127, 28, 46, 46, 1750, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1681, 46, 0, 1846, 98, + /* 30963 */ 98, 98, 98, 98, 98, 46, 46, 1854, 46, 46, 46, 46, 1859, 68, 68, 68, 1879, 68, 68, 98, 98, 1884, 98, 98, 0, + /* 30988 */ 0, 0, 98, 98, 46, 68, 0, 98, 46, 68, 0, 98, 46, 68, 0, 98, 46, 1892, 98, 0, 0, 0, 98, 98, 98, 1900, 98, + /* 31015 */ 98, 46, 46, 46, 46, 46, 701, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 946, 46, 46, 950, 46, 46, 68, 68, 68, + /* 31041 */ 68, 68, 1926, 68, 68, 1928, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 1737, 98, 0, + /* 31067 */ 98, 98, 98, 98, 0, 0, 0, 98, 98, 1944, 98, 98, 1946, 46, 46, 46, 162, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 31093 */ 46, 46, 46, 1410, 46, 46, 46, 98, 0, 0, 98, 2026, 0, 2027, 98, 98, 46, 46, 46, 46, 46, 46, 68, 1573, 68, + /* 31118 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1276, 68, 68, 68, 68, 149, 153, 156, 46, 164, 46, 46, 178, 180, + /* 31142 */ 183, 46, 46, 46, 194, 198, 46, 46, 46, 1672, 46, 46, 46, 46, 46, 1677, 46, 1679, 46, 46, 46, 46, 166, 46, + /* 31166 */ 46, 46, 46, 46, 46, 46, 46, 46, 200, 46, 68, 68, 261, 265, 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, + /* 31191 */ 28811, 53533, 98, 98, 98, 296, 300, 303, 98, 311, 98, 98, 325, 327, 330, 98, 98, 98, 22, 127, 127, 131431, + /* 31213 */ 0, 642, 0, 0, 0, 0, 366, 0, 644, 98, 341, 345, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, + /* 31239 */ 0, 0, 0, 0, 0, 0, 367, 0, 28811, 0, 141, 46, 46, 46, 46, 409, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 31266 */ 46, 1551, 46, 1553, 46, 46, 421, 46, 46, 46, 46, 46, 46, 46, 46, 46, 430, 46, 46, 437, 46, 46, 46, 1751, + /* 31290 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 975, 46, 46, 46, 68, 68, 68, 68, 507, 68, 68, 68, 68, 68, + /* 31316 */ 68, 68, 68, 68, 516, 68, 68, 68, 68, 68, 1246, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 474, 68, 68, + /* 31341 */ 68, 68, 68, 523, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 536, 68, 68, 68, 68, 68, 68, 784, 68, 68, 68, 68, + /* 31367 */ 68, 68, 68, 68, 68, 68, 803, 68, 68, 68, 808, 68, 98, 98, 98, 98, 604, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 31393 */ 613, 98, 0, 0, 0, 0, 925, 29319, 927, 0, 0, 0, 46, 46, 46, 46, 46, 983, 46, 46, 46, 46, 988, 46, 46, 46, + /* 31419 */ 46, 46, 670, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 428, 46, 46, 46, 46, 46, 98, 620, 98, 98, 98, 98, 98, + /* 31445 */ 98, 98, 98, 98, 98, 633, 98, 98, 98, 0, 1637, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1801, 46, + /* 31471 */ 46, 369, 29319, 371, 0, 46, 653, 46, 46, 46, 46, 46, 658, 46, 46, 46, 46, 46, 1559, 46, 46, 1561, 46, 46, + /* 31495 */ 46, 46, 46, 46, 46, 425, 46, 46, 46, 46, 46, 46, 46, 438, 728, 46, 46, 46, 46, 46, 46, 46, 46, 46, 68, + /* 31520 */ 740, 68, 68, 68, 68, 68, 68, 68, 1774, 68, 68, 68, 68, 68, 98, 98, 98, 98, 0, 0, 98, 98, 98, 0, 98, 98, + /* 31546 */ 98, 98, 98, 98, 98, 98, 68, 745, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 807, 68, 68, 68, + /* 31572 */ 778, 68, 68, 783, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 821, 68, 68, 68, 68, 25402, 546, 13116, 548, + /* 31596 */ 57893, 0, 0, 54078, 54078, 554, 0, 98, 838, 98, 98, 98, 0, 1980, 98, 98, 98, 98, 98, 46, 46, 46, 46, 46, + /* 31620 */ 46, 174, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1416, 46, 46, 46, 46, 46, 46, 46, 46, 448, 46, 46, 46, 46, + /* 31645 */ 46, 46, 46, 98, 98, 843, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 856, 98, 98, 98, 98, 98, 876, + /* 31671 */ 98, 98, 881, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1330, 98, 98, 1333, 1334, 98, 978, 46, 46, 46, 46, + /* 31695 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 419, 68, 68, 68, 68, 1040, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 31721 */ 68, 68, 68, 1264, 68, 68, 68, 1180, 0, 650, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 191, 46, + /* 31746 */ 46, 98, 98, 98, 98, 98, 1379, 98, 98, 98, 0, 0, 0, 46, 1383, 46, 46, 46, 380, 46, 46, 46, 46, 46, 392, 46, + /* 31772 */ 46, 46, 46, 46, 46, 702, 703, 46, 46, 706, 707, 46, 46, 46, 46, 68, 68, 68, 1454, 68, 68, 68, 68, 68, 68, + /* 31797 */ 68, 68, 68, 68, 68, 68, 773, 68, 68, 68, 98, 98, 98, 1507, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 31823 */ 1524, 98, 98, 1527, 1619, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1631, 98, 1633, 98, + /* 31847 */ 0, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 866, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1727, 0, 98, + /* 31873 */ 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 914, 98, 98, 98, 98, 920, 98, 98, 46, 46, 1760, 68, 68, 68, 68, + /* 31899 */ 68, 68, 68, 1765, 68, 68, 68, 68, 68, 68, 68, 1288, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1590, 68, 68, + /* 31924 */ 68, 68, 68, 98, 98, 98, 98, 98, 1783, 0, 0, 98, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 1790, 98, 0, 0, + /* 31951 */ 1803, 46, 46, 46, 46, 1807, 46, 46, 46, 46, 46, 1813, 46, 46, 46, 68, 68, 68, 68, 68, 68, 68, 68, 237, 68, + /* 31976 */ 68, 68, 68, 0, 0, 1305, 0, 0, 0, 0, 0, 1311, 0, 0, 0, 1317, 0, 0, 0, 0, 0, 0, 0, 98, 98, 1322, 68, 68, + /* 32004 */ 1818, 68, 68, 68, 68, 1822, 68, 68, 68, 68, 68, 1828, 68, 68, 68, 68, 68, 68, 1882, 98, 98, 98, 98, 0, 0, + /* 32029 */ 0, 98, 98, 98, 98, 98, 98, 46, 1904, 46, 1905, 46, 68, 98, 98, 98, 1833, 98, 98, 0, 0, 98, 98, 1840, 98, + /* 32054 */ 98, 0, 0, 98, 98, 98, 0, 98, 98, 1733, 98, 1735, 98, 98, 98, 0, 98, 98, 98, 1849, 98, 98, 98, 46, 46, 46, + /* 32080 */ 46, 46, 1857, 46, 46, 46, 407, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1815, 46, 68, 46, 1861, + /* 32105 */ 46, 46, 46, 46, 46, 68, 68, 68, 68, 68, 1872, 68, 68, 68, 68, 68, 68, 799, 68, 68, 68, 68, 68, 68, 68, 68, + /* 32131 */ 68, 68, 1300, 0, 0, 0, 0, 0, 1876, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 0, 0, 0, 1890, 98, 0, 0, 98, + /* 32158 */ 98, 0, 98, 98, 98, 46, 46, 46, 46, 46, 46, 68, 68, 68, 68, 1576, 68, 68, 68, 68, 1580, 68, 68, 1935, 98, + /* 32183 */ 98, 98, 98, 0, 0, 0, 98, 98, 98, 98, 98, 98, 46, 46, 46, 46, 1906, 46, 68, 68, 68, 68, 2048, 0, 98, 98, + /* 32209 */ 98, 98, 46, 46, 68, 68, 0, 0, 94243, 0, 0, 0, 2211840, 0, 0, 1122304, 0, 0, 0, 2158592, 2158592, 2158592, + /* 32231 */ 2158592, 2700772, 2723840, 2158592, 2158592, 2158592, 2813952, 2819560, 2158592, 2887680, 2158592, + /* 32242 */ 2158592, 2916352, 2158592, 2158592, 2965504, 2158592, 2973696, 2158592, 2158592, 2994176, 2158592, + /* 32253 */ 3039232, 3055616, 3067904, 2158592, 2158592, 2158592, 2158592, 68, 68, 68, 68, 270, 68, 68, 68, 0, 24852, + /* 32270 */ 12566, 0, 0, 0, 0, 28811, 53533, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 332, 98, 0, 0, 98, + /* 32295 */ 98, 0, 98, 98, 98, 46, 46, 46, 46, 2033, 46, 68, 68, 68, 68, 0, 0, 98, 98, 98, 98, 46, 46, 68, 68, 0, 98, + /* 32322 */ 98, 98, 350, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, 0, 0, 0, 0, 0, 0, 368, 0, 0, 0, 141, + /* 32349 */ 2158592, 2158592, 2158592, 2158592, 2433024, 2437120, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 32360 */ 2158592, 2494464, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, + /* 32371 */ 2158592, 28, 28, 131431, 0, 363, 0, 0, 366, 0, 369, 28811, 371, 141, 46, 46, 46, 46, 1911, 46, 46, 46, 46, + /* 32394 */ 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 485, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 32420 */ 68, 68, 68, 499, 68, 68, 68, 68, 68, 1258, 68, 1260, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1698, 68, 68, + /* 32445 */ 68, 68, 68, 582, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 596, 98, 0, 0, 98, 98, 0, 98, 98, 98, + /* 32472 */ 46, 46, 2031, 2032, 46, 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1769, 68, 967, 46, 46, 46, 46, + /* 32497 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 458, 1037, 68, 68, 68, 68, 1041, 68, 1043, 68, 68, 68, 68, 68, + /* 32522 */ 68, 68, 68, 68, 531, 68, 68, 68, 68, 68, 68, 0, 1099, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 32548 */ 98, 631, 98, 98, 98, 98, 98, 98, 1131, 98, 98, 98, 98, 1135, 98, 1137, 98, 98, 98, 98, 98, 98, 563, 98, + /* 32572 */ 98, 98, 98, 98, 575, 98, 98, 98, 1310, 0, 0, 0, 1316, 0, 0, 0, 0, 1100, 0, 0, 0, 98, 98, 98, 98, 0, 0, 0, + /* 32600 */ 98, 98, 98, 98, 98, 98, 46, 46, 46, 46, 46, 46, 1804, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 32626 */ 68, 68, 68, 68, 1919, 68, 1817, 68, 68, 1819, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 805, 68, 68, + /* 32651 */ 68, 68, 98, 1832, 98, 98, 1834, 98, 0, 0, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 0, 1732, 98, 98, 98, 98, + /* 32677 */ 98, 98, 98, 606, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1329, 98, 98, 98, 98, 98, 98, 0, 98, 98, 98, 98, 0, + /* 32703 */ 0, 1941, 98, 98, 98, 98, 98, 98, 46, 46, 46, 422, 46, 46, 424, 46, 46, 427, 46, 46, 46, 46, 46, 46, 445, + /* 32728 */ 46, 46, 46, 46, 46, 46, 455, 46, 46, 0, 135, 94243, 0, 0, 0, 39, 102440, 0, 0, 106539, 98348, 28811, 46, + /* 32751 */ 46, 46, 68, 68, 68, 68, 68, 225, 68, 68, 239, 68, 68, 68, 68, 68, 68, 68, 1444, 68, 68, 68, 68, 68, 68, + /* 32776 */ 68, 68, 68, 68, 1776, 68, 68, 98, 98, 98, 46, 46, 208, 68, 68, 68, 68, 68, 227, 68, 68, 68, 68, 68, 68, + /* 32801 */ 68, 68, 98, 98, 98, 98, 1975, 0, 0, 98, 53533, 98, 98, 98, 98, 98, 98, 307, 98, 98, 98, 98, 98, 98, 98, + /* 32826 */ 98, 1343, 98, 98, 98, 98, 98, 98, 1348, 369, 29319, 371, 651, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 32850 */ 46, 431, 46, 46, 46, 25402, 546, 13116, 548, 57893, 0, 0, 54078, 54078, 554, 836, 98, 98, 98, 98, 98, 98, + /* 32872 */ 1509, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 0, 0, 1382, 46, 46, 46, 68, 68, 68, 1695, 68, 68, 68, 68, 68, + /* 32898 */ 68, 68, 68, 68, 68, 68, 68, 1047, 68, 68, 68, 150, 46, 46, 46, 46, 168, 46, 46, 46, 46, 186, 188, 46, 46, + /* 32923 */ 199, 46, 46, 46, 1806, 46, 46, 46, 46, 46, 46, 1812, 46, 46, 46, 46, 68, 68, 68, 68, 68, 1577, 68, 68, 68, + /* 32948 */ 68, 68, 68, 68, 509, 68, 68, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 0, 1934, 255, 68, 68, 266, + /* 32973 */ 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 53533, 98, 98, 98, 297, 98, 98, 98, 98, 315, 98, 98, + /* 32997 */ 98, 98, 333, 335, 98, 98, 346, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, 0, 360, 0, 0, 0, + /* 33023 */ 0, 0, 0, 28811, 0, 141, 46, 46, 46, 46, 669, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1239, 46, 46, 46, + /* 33049 */ 68, 46, 46, 406, 408, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 432, 46, 46, 46, 46, 46, 442, 46, + /* 33074 */ 46, 46, 46, 46, 46, 46, 46, 453, 454, 46, 46, 46, 68, 68, 68, 68, 68, 228, 68, 68, 68, 68, 68, 68, 68, 68, + /* 33100 */ 801, 68, 68, 68, 68, 68, 68, 809, 369, 29319, 371, 0, 46, 46, 46, 46, 46, 656, 46, 46, 46, 46, 46, 46, + /* 33124 */ 997, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1547, 46, 46, 46, 46, 46, 46, 46, 46, 1664, 46, 46, 46, 46, 46, + /* 33149 */ 46, 46, 46, 687, 46, 46, 46, 691, 46, 46, 696, 46, 681, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 33174 */ 46, 46, 46, 1758, 46, 729, 46, 46, 46, 46, 735, 46, 46, 46, 68, 68, 68, 68, 68, 743, 841, 98, 98, 98, 98, + /* 33199 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1153, 98, 46, 938, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 33225 */ 46, 46, 46, 201, 46, 46, 46, 968, 46, 970, 46, 973, 46, 46, 46, 46, 46, 46, 46, 46, 46, 736, 46, 46, 68, + /* 33250 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1770, 46, 979, 46, 46, 46, 46, 46, 985, 46, 46, 46, 46, + /* 33275 */ 46, 46, 46, 46, 959, 46, 46, 46, 46, 46, 46, 46, 46, 389, 46, 46, 46, 46, 399, 46, 46, 46, 1007, 1008, 68, + /* 33300 */ 68, 68, 68, 68, 1014, 68, 68, 68, 68, 68, 68, 68, 68, 468, 68, 68, 68, 68, 68, 68, 483, 68, 68, 1038, 68, + /* 33325 */ 68, 68, 68, 68, 68, 1044, 68, 1046, 68, 1049, 68, 68, 68, 68, 68, 68, 1969, 68, 98, 98, 98, 98, 0, 0, 0, + /* 33350 */ 98, 98, 46, 68, 0, 98, 2060, 2061, 0, 2063, 46, 68, 0, 98, 46, 98, 98, 98, 98, 1132, 98, 98, 98, 98, 98, + /* 33375 */ 98, 1138, 98, 1140, 98, 1143, 1155, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1361, 98, + /* 33399 */ 46, 1191, 46, 46, 46, 46, 46, 1196, 46, 46, 46, 46, 46, 46, 46, 46, 998, 46, 46, 46, 46, 46, 46, 46, 46, + /* 33424 */ 999, 46, 1001, 46, 46, 46, 46, 46, 68, 68, 68, 1256, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1059, + /* 33449 */ 68, 68, 68, 98, 1336, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1374, 98, 98, 98, 98, 98, + /* 33474 */ 98, 1352, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 608, 98, 98, 98, 98, 98, 1386, 46, 1387, 46, 46, 46, 46, + /* 33499 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 196, 46, 46, 46, 46, 1424, 46, 46, 46, 46, 46, 68, 68, 68, 68, 1433, + /* 33524 */ 68, 1434, 68, 68, 68, 68, 68, 1286, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1293, 46, 46, 1805, 46, 46, 46, + /* 33548 */ 46, 46, 46, 46, 46, 46, 1814, 46, 46, 1816, 68, 68, 68, 68, 1820, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 33572 */ 1829, 68, 68, 68, 68, 68, 1465, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 473, 68, 68, 68, 68, 68, 1831, + /* 33597 */ 98, 98, 98, 98, 1835, 0, 0, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 1731, 98, 98, 98, 98, 98, 98, 98, 98, + /* 33623 */ 98, 851, 98, 98, 98, 98, 98, 98, 0, 98, 98, 98, 98, 1850, 98, 98, 46, 46, 46, 46, 46, 46, 46, 46, 1407, + /* 33648 */ 46, 46, 46, 46, 46, 46, 46, 46, 1956, 46, 46, 68, 68, 68, 68, 68, 1907, 46, 46, 46, 46, 46, 46, 46, 46, + /* 33673 */ 46, 68, 68, 68, 68, 68, 1920, 0, 1936, 98, 98, 98, 0, 0, 0, 98, 98, 98, 98, 98, 98, 46, 46, 46, 667, 46, + /* 33699 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 434, 46, 46, 46, 98, 0, 0, 98, 98, 0, 98, 2028, 98, 46, 46, + /* 33725 */ 46, 46, 46, 46, 68, 68, 68, 68, 68, 68, 68, 1687, 1688, 68, 68, 68, 68, 68, 68, 68, 1709, 68, 68, 68, 98, + /* 33750 */ 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 98, 1843, 0, 46, 68, 68, 68, 68, 0, 0, 98, 98, 98, 98, 46, 46, + /* 33777 */ 68, 68, 2054, 53533, 98, 98, 292, 98, 98, 98, 98, 98, 98, 321, 98, 98, 98, 98, 98, 98, 1784, 0, 98, 98, + /* 33801 */ 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 98, 98, 0, 1792, 46, 46, 379, 46, 46, + /* 33828 */ 46, 383, 46, 46, 394, 46, 46, 398, 46, 46, 46, 68, 68, 68, 68, 68, 229, 68, 68, 68, 68, 68, 68, 68, 68, + /* 33853 */ 1055, 68, 68, 68, 68, 68, 1061, 68, 68, 68, 504, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1251, + /* 33878 */ 68, 68, 98, 98, 601, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 871, 98, 98, 98, 0, 364, 0, 0, + /* 33904 */ 925, 29319, 0, 0, 0, 0, 46, 46, 934, 46, 46, 46, 668, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 679, 46, 46, + /* 33930 */ 46, 68, 68, 1010, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1291, 68, 68, 68, 68, 68, 68, 68, 1052, + /* 33955 */ 1053, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1301, 0, 0, 0, 1307, 1063, 68, 68, 68, 68, 68, 68, 68, + /* 33980 */ 68, 68, 68, 68, 68, 1073, 68, 68, 68, 68, 68, 98, 0, 0, 98, 98, 98, 98, 98, 46, 46, 46, 2012, 2013, 46, + /* 34005 */ 46, 68, 68, 68, 2018, 2019, 68, 68, 98, 98, 98, 1157, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 34029 */ 1167, 68, 1282, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 824, 68, 46, 1402, 46, 46, 46, 46, + /* 34054 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 401, 46, 68, 1462, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 34080 */ 68, 68, 1035, 68, 98, 1517, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1515, 98, 98, 98, 98, + /* 34105 */ 1636, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 1511, 98, 98, 98, 98, 98, 98, 98, 68, 68, 1705, 68, + /* 34130 */ 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 1842, 0, 0, 46, 46, 68, 68, 68, + /* 34157 */ 1761, 68, 68, 68, 1764, 68, 68, 68, 68, 68, 68, 68, 68, 1602, 68, 1604, 68, 68, 68, 68, 68, 1779, 98, 98, + /* 34181 */ 98, 1782, 98, 0, 0, 98, 98, 98, 98, 98, 98, 0, 0, 98, 98, 1788, 98, 98, 98, 0, 0, 0, 98, 1847, 98, 98, 98, + /* 34208 */ 98, 98, 46, 46, 46, 46, 46, 46, 46, 46, 1675, 46, 46, 46, 46, 46, 46, 46, 46, 1237, 46, 46, 46, 46, 46, + /* 34233 */ 46, 68, 68, 68, 68, 68, 68, 1968, 68, 68, 98, 98, 98, 98, 0, 0, 0, 98, 98, 46, 68, 2058, 98, 46, 68, 0, + /* 34259 */ 98, 46, 68, 0, 98, 46, 68, 68, 98, 98, 2001, 98, 0, 0, 2004, 98, 98, 0, 98, 98, 98, 98, 1797, 98, 98, 98, + /* 34285 */ 98, 98, 46, 46, 46, 68, 68, 262, 68, 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 53533, 98, 98, + /* 34309 */ 293, 98, 98, 98, 98, 312, 316, 322, 326, 98, 98, 98, 98, 98, 879, 98, 98, 883, 98, 98, 98, 98, 98, 98, 98, + /* 34334 */ 1121, 98, 98, 98, 98, 1126, 98, 98, 98, 98, 342, 98, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, + /* 34359 */ 28, 131431, 0, 0, 0, 0, 366, 0, 369, 28811, 371, 141, 46, 46, 46, 46, 716, 46, 46, 46, 721, 46, 46, 46, + /* 34383 */ 46, 46, 46, 46, 673, 46, 46, 46, 46, 46, 46, 46, 46, 386, 393, 46, 46, 46, 46, 46, 46, 28, 28, 131431, 0, + /* 34408 */ 0, 364, 0, 366, 0, 369, 28811, 371, 141, 373, 46, 46, 46, 683, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 34432 */ 694, 46, 46, 378, 46, 46, 46, 46, 384, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1809, 46, 1811, 46, 46, 46, 46, + /* 34457 */ 46, 68, 46, 405, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 416, 46, 46, 46, 68, 68, 68, 1685, 68, 68, 68, + /* 34482 */ 68, 68, 68, 68, 1690, 68, 420, 46, 46, 46, 46, 46, 46, 46, 426, 46, 46, 46, 433, 435, 46, 46, 46, 715, 46, + /* 34507 */ 46, 46, 719, 46, 46, 46, 46, 46, 46, 46, 727, 459, 68, 68, 68, 464, 68, 68, 68, 68, 470, 68, 68, 68, 68, + /* 34532 */ 68, 68, 68, 68, 1823, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1824, 68, 1826, 68, 68, 68, 68, 68, 68, 68, 68, + /* 34557 */ 491, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 502, 68, 68, 68, 506, 68, 68, 68, 68, 68, 68, 68, 512, 68, + /* 34582 */ 68, 68, 519, 521, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 520, 68, 543, 68, 24852, + /* 34606 */ 24852, 12566, 12566, 0, 57893, 0, 0, 0, 53533, 53533, 371, 288, 556, 98, 98, 98, 561, 98, 98, 98, 98, 567, + /* 34628 */ 98, 98, 98, 98, 98, 98, 590, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 917, 98, 98, 98, 98, 98, 98, 98, 98, + /* 34654 */ 98, 588, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 599, 98, 98, 98, 603, 98, 98, 98, 98, 98, 98, 98, 609, + /* 34679 */ 98, 98, 98, 616, 618, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1526, 98, 98, 640, 98, + /* 34704 */ 22, 127, 127, 131431, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 1481, 0, 1094, 0, 0, 98, 1483, 98, 98, 98, 98, 98, + /* 34730 */ 98, 355, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 369, 29319, 371, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 34755 */ 662, 46, 46, 46, 1910, 46, 1912, 46, 46, 1914, 46, 68, 68, 68, 68, 68, 68, 68, 68, 1069, 1070, 68, 68, 68, + /* 34779 */ 68, 68, 68, 68, 68, 1083, 25402, 0, 13116, 0, 54078, 0, 0, 46, 698, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 34803 */ 46, 46, 46, 46, 46, 436, 46, 68, 68, 68, 68, 749, 68, 68, 68, 68, 755, 68, 68, 68, 68, 68, 68, 68, 275, 0, + /* 34829 */ 24852, 12566, 0, 0, 0, 0, 28811, 68, 68, 68, 68, 766, 68, 68, 68, 68, 770, 68, 68, 68, 68, 68, 68, 68, + /* 34853 */ 467, 68, 68, 68, 476, 68, 68, 68, 68, 68, 68, 68, 68, 781, 68, 68, 785, 68, 68, 68, 68, 68, 68, 68, 68, + /* 34878 */ 68, 818, 820, 68, 68, 68, 68, 68, 810, 811, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1074, + /* 34903 */ 68, 98, 908, 909, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 903, 98, 98, 46, 954, 46, 46, 46, + /* 34928 */ 46, 46, 46, 46, 46, 46, 46, 963, 46, 46, 966, 992, 46, 46, 46, 995, 46, 46, 46, 46, 1000, 46, 46, 46, 46, + /* 34953 */ 46, 46, 1195, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1238, 46, 46, 46, 46, 68, 68, 1022, 68, 68, 1026, + /* 34977 */ 68, 68, 68, 1030, 68, 68, 68, 68, 68, 68, 68, 68, 753, 68, 68, 68, 68, 68, 68, 68, 68, 68, 25402, 1087, + /* 35001 */ 13116, 1091, 54078, 1095, 0, 68, 68, 68, 1039, 68, 68, 1042, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1275, + /* 35024 */ 68, 68, 68, 1278, 68, 1076, 68, 68, 68, 68, 68, 68, 68, 68, 25402, 0, 13116, 0, 54078, 0, 0, 0, 86016, 0, + /* 35048 */ 0, 2211840, 102440, 0, 0, 0, 98348, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 35063 */ 20480, 40978, 0, 22, 22, 24, 24, 127, 28, 98, 98, 98, 1116, 98, 98, 1120, 98, 98, 98, 1124, 98, 98, 98, + /* 35086 */ 98, 98, 562, 98, 98, 98, 566, 98, 98, 577, 98, 98, 581, 98, 98, 98, 98, 98, 1133, 98, 98, 1136, 98, 98, + /* 35110 */ 98, 98, 98, 98, 98, 1342, 98, 98, 98, 98, 98, 98, 98, 98, 0, 98, 98, 98, 98, 98, 98, 1725, 98, 98, 1170, + /* 35135 */ 98, 98, 98, 98, 98, 98, 98, 98, 0, 925, 0, 0, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2224128, + /* 35155 */ 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, + /* 35174 */ 2158592, 2625536, 2650112, 2732032, 2736128, 2826240, 2940928, 2158592, 2977792, 2158592, 2990080, + /* 35185 */ 2158592, 2158592, 1204, 46, 46, 46, 1207, 46, 46, 1209, 46, 1210, 46, 46, 46, 46, 46, 46, 1235, 46, 46, + /* 35206 */ 46, 46, 46, 46, 46, 46, 68, 68, 68, 1432, 68, 68, 68, 68, 1231, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + /* 35231 */ 46, 46, 46, 46, 68, 1868, 68, 1870, 68, 68, 68, 68, 68, 68, 1242, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 35255 */ 1249, 68, 68, 68, 68, 68, 68, 273, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 1267, 68, 68, 1269, 68, 1270, + /* 35278 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 1280, 98, 1349, 98, 1350, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1360, + /* 35302 */ 98, 98, 98, 22, 127, 127, 131431, 360, 642, 0, 0, 0, 0, 366, 0, 0, 0, 0, 98, 98, 98, 98, 1106, 98, 98, 98, + /* 35328 */ 98, 98, 98, 98, 882, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1356, 98, 98, 98, 98, 98, 98, 1401, 46, 46, 46, + /* 35353 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 680, 68, 1437, 68, 1440, 68, 68, 68, 68, 1445, 68, 68, 68, + /* 35378 */ 1448, 68, 68, 68, 68, 68, 68, 1028, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1302, 0, 0, 0, 1308, 1473, + /* 35403 */ 68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 1485, 98, 98, 98, 98, 98, 1490, 98, 1493, 98, + /* 35431 */ 98, 98, 98, 1498, 98, 98, 98, 1501, 98, 98, 98, 22, 127, 127, 131431, 0, 0, 0, 0, 0, 0, 366, 0, 0, 1528, + /* 35456 */ 98, 98, 98, 0, 46, 46, 46, 1535, 46, 46, 46, 46, 46, 46, 46, 1867, 68, 68, 68, 68, 68, 68, 68, 68, 0, + /* 35481 */ 24853, 12567, 0, 0, 0, 0, 28811, 1555, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1567, 46, 46, + /* 35505 */ 46, 1991, 1992, 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1998, 98, 98, 98, 98, 1651, 98, 98, 98, 98, 98, 0, + /* 35530 */ 46, 46, 46, 46, 46, 46, 46, 1539, 46, 46, 46, 68, 1704, 68, 1706, 68, 68, 68, 68, 68, 68, 68, 98, 98, 98, + /* 35555 */ 98, 98, 98, 0, 0, 98, 98, 98, 1841, 98, 0, 1844, 98, 98, 98, 98, 1716, 98, 98, 98, 0, 98, 98, 98, 98, 98, + /* 35581 */ 98, 98, 1354, 98, 98, 98, 98, 98, 98, 98, 98, 1497, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1123, 98, 98, 98, + /* 35606 */ 98, 98, 98, 1748, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1757, 46, 46, 68, 68, 68, 68, 68, + /* 35631 */ 68, 68, 68, 68, 68, 68, 1018, 68, 68, 68, 68, 68, 68, 1455, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 35656 */ 1591, 68, 1593, 68, 68, 46, 46, 68, 68, 68, 68, 68, 1762, 68, 68, 68, 1766, 68, 68, 68, 68, 68, 68, 274, + /* 35680 */ 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 98, 98, 1780, 98, 98, 98, 0, 0, 1786, 98, 98, 98, 98, 98, 0, 0, + /* 35705 */ 98, 98, 1730, 0, 98, 98, 98, 98, 98, 1736, 98, 1738, 68, 98, 98, 98, 98, 98, 98, 0, 1838, 98, 98, 98, 98, + /* 35730 */ 98, 0, 0, 98, 1729, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 1718, 0, 98, 98, 98, 98, 98, 98, 98, 46, 1853, + /* 35756 */ 46, 1855, 46, 46, 46, 46, 46, 1950, 46, 46, 46, 46, 46, 46, 46, 46, 1958, 68, 68, 68, 1962, 68, 68, 68, + /* 35780 */ 68, 68, 1585, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 98, 1710, 98, 98, 98, 1999, 68, 98, 98, 98, 98, + /* 35805 */ 0, 2003, 98, 98, 98, 0, 98, 98, 2008, 2009, 46, 68, 68, 68, 68, 0, 0, 98, 98, 98, 98, 46, 2052, 68, 2053, + /* 35830 */ 0, 0, 94243, 0, 0, 0, 2211840, 0, 1110016, 0, 0, 0, 0, 2158592, 2158733, 2158592, 2158592, 2158592, + /* 35848 */ 3149824, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2465792, 2207744, + /* 35859 */ 2207744, 2486272, 0, 98, 2055, 46, 68, 0, 98, 46, 68, 0, 98, 46, 68, 16384, 98, 46, 46, 68, 68, 68, 68, + /* 35882 */ 68, 68, 68, 68, 68, 68, 68, 1768, 68, 68, 68, 68, 68, 68, 1708, 68, 68, 68, 68, 98, 98, 98, 98, 98, 98, 0, + /* 35908 */ 0, 98, 98, 98, 98, 98, 0, 0, 68, 68, 68, 267, 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 53533, + /* 35933 */ 98, 98, 98, 98, 98, 98, 98, 313, 98, 98, 98, 98, 98, 98, 98, 1522, 98, 98, 98, 98, 98, 98, 98, 98, 0, 98, + /* 35959 */ 98, 98, 1724, 98, 98, 98, 98, 98, 347, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, 131431, + /* 35983 */ 0, 0, 0, 0, 366, 0, 369, 28811, 371, 141, 46, 46, 375, 28, 28, 131431, 0, 0, 0, 365, 366, 0, 369, 28811, + /* 36007 */ 371, 141, 46, 46, 46, 68, 68, 216, 220, 223, 68, 231, 68, 68, 245, 247, 250, 68, 68, 68, 544, 24852, + /* 36029 */ 24852, 12566, 12566, 0, 57893, 0, 0, 0, 53533, 53533, 371, 288, 98, 98, 641, 22, 127, 127, 131431, 0, 0, + /* 36050 */ 0, 0, 0, 0, 366, 0, 0, 0, 2359296, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, + /* 36067 */ 2158592, 2445312, 2453504, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 712, 46, 46, 46, + /* 36081 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 711, 68, 763, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 36107 */ 68, 68, 68, 1252, 68, 776, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 788, 68, 68, 68, 68, 68, 68, 466, 68, + /* 36132 */ 68, 68, 68, 68, 478, 68, 68, 68, 98, 98, 861, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1346, + /* 36157 */ 98, 98, 98, 874, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 886, 98, 98, 98, 22, 127, 127, 131431, 0, 0, 0, + /* 36182 */ 0, 0, 0, 366, 221184, 0, 953, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1216, 68, 68, + /* 36207 */ 68, 68, 1245, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1469, 68, 68, 1472, 98, 98, 1325, 98, 98, + /* 36231 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1502, 98, 98, 68, 68, 1439, 68, 1441, 68, 68, 68, 68, 68, 68, + /* 36256 */ 68, 68, 68, 68, 68, 68, 1592, 68, 68, 68, 98, 98, 1492, 98, 1494, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 36281 */ 98, 901, 98, 98, 98, 906, 68, 68, 68, 2037, 68, 98, 0, 0, 98, 98, 98, 2043, 98, 46, 46, 46, 68, 68, 217, + /* 36306 */ 68, 68, 68, 68, 235, 68, 68, 68, 68, 253, 53533, 98, 98, 98, 98, 98, 98, 308, 98, 98, 98, 98, 98, 98, 98, + /* 36331 */ 98, 1720, 98, 98, 98, 98, 98, 98, 98, 68, 777, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 36356 */ 1460, 68, 98, 98, 875, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1514, 98, 98, 68, 68, 263, 68, + /* 36381 */ 68, 68, 68, 68, 0, 24852, 12566, 0, 0, 0, 0, 28811, 98, 343, 98, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, + /* 36406 */ 24, 127, 28, 28, 131431, 0, 0, 0, 0, 366, 0, 369, 28811, 371, 141, 46, 46, 376, 46, 46, 68, 1009, 68, 68, + /* 36430 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1250, 68, 68, 1253, 1294, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 36455 */ 0, 0, 0, 0, 0, 0, 2162970, 0, 53533, 98, 98, 98, 98, 98, 98, 309, 98, 98, 98, 98, 98, 98, 98, 98, 1624, + /* 36480 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1626, 98, 98, 98, 98, 98, 28, 28, 131431, 361, 0, 0, 0, 366, 0, + /* 36505 */ 369, 28811, 371, 141, 46, 46, 46, 68, 209, 68, 68, 68, 68, 68, 68, 238, 68, 68, 68, 68, 68, 68, 68, 1299, + /* 36529 */ 68, 68, 68, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 1616, 98, 98, 68, 68, 505, 68, 68, 68, 68, 68, 68, 68, 68, + /* 36556 */ 68, 68, 68, 68, 68, 1292, 68, 68, 98, 98, 602, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 21058, + /* 36581 */ 98, 98, 1097, 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1150, 98, 98, 98, 98, 46, 46, 1192, + /* 36607 */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 964, 46, 46, 68, 68, 68, 268, 68, 68, 68, 68, 0, + /* 36632 */ 24852, 12566, 0, 0, 0, 0, 28811, 98, 98, 348, 98, 98, 98, 98, 0, 40978, 0, 22, 22, 24, 24, 127, 28, 28, + /* 36656 */ 131431, 0, 0, 0, 0, 366, 0, 369, 28811, 371, 141, 46, 374, 46, 46, 46, 1544, 46, 46, 46, 46, 46, 46, 46, + /* 36680 */ 46, 46, 46, 46, 46, 46, 1004, 46, 46, 98, 1130, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 36705 */ 1630, 98, 46, 46, 1671, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 976, 977, 46, 0, 2158592, + /* 36728 */ 2158880, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36739 */ 2158592, 2158592, 2158592, 3010560, 2158592, 3035136, 2158592, 0, 545, 0, 547, 0, 0, 2170880, 0, 0, 832, + /* 36756 */ 0, 2158592, 2158592, 2158592, 2379776, 2158592, 2158592, 2158592, 3194880, 0, 2158592, 2158592, 2158592, + /* 36769 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2465792, 2158592, 2158592, 2486272, 2158592, 2158592, + /* 36780 */ 2158592, 2514944, 2519040, 2158592, 2158592, 2568192, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36791 */ 2158592, 2158592, 68, 68, 68, 24852, 24852, 12566, 12566, 0, 0, 0, 0, 0, 53533, 53533, 0, 288, 0, 546, 0, + /* 36812 */ 548, 57893, 0, 0, 0, 0, 554, 0, 98, 98, 98, 98, 98, 589, 591, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + /* 36837 */ 1371, 98, 98, 98, 98, 98, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, + /* 36853 */ 139264, 139264, 0, 0, 139264, 0, 0, 94243, 0, 0, 0, 2211840, 102440, 0, 0, 106539, 98348, 0, 2158592, + /* 36872 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40978, 0, 4243812, 4243812, 24, 24, 127, 28 +]; + +XQueryTokenizer.EXPECTED = +[ + /* 0 */ 291, 299, 303, 294, 365, 308, 304, 312, 347, 317, 329, 325, 295, 320, 335, 331, 313, 341, 323, 345, 351, + /* 21 */ 355, 362, 369, 337, 373, 358, 377, 381, 385, 389, 393, 397, 401, 405, 443, 922, 625, 411, 778, 912, 625, + /* 42 */ 453, 516, 625, 904, 808, 625, 416, 677, 511, 625, 625, 626, 625, 625, 421, 625, 625, 625, 625, 625, 625, + /* 63 */ 625, 412, 450, 426, 417, 625, 430, 775, 780, 625, 645, 431, 625, 435, 711, 625, 441, 447, 465, 624, 460, + /* 84 */ 464, 463, 469, 473, 639, 477, 753, 545, 481, 485, 689, 489, 493, 498, 502, 509, 505, 504, 534, 515, 622, + /* 105 */ 527, 911, 633, 597, 625, 520, 522, 578, 526, 674, 636, 585, 584, 881, 531, 538, 542, 549, 553, 557, 561, + /* 126 */ 565, 569, 573, 940, 951, 960, 607, 606, 577, 686, 723, 625, 582, 746, 533, 589, 1013, 625, 595, 901, 802, + /* 147 */ 1018, 601, 605, 604, 611, 591, 615, 619, 630, 651, 655, 659, 663, 667, 671, 683, 693, 698, 705, 704, 797, + /* 168 */ 722, 709, 863, 625, 715, 407, 625, 721, 735, 869, 625, 727, 733, 760, 759, 739, 745, 750, 757, 764, 976, + /* 189 */ 768, 772, 979, 784, 694, 792, 790, 786, 875, 874, 625, 894, 647, 625, 920, 918, 625, 796, 893, 984, 801, + /* 210 */ 806, 437, 818, 929, 928, 812, 642, 816, 822, 826, 830, 834, 838, 842, 846, 850, 854, 858, 422, 862, 868, + /* 231 */ 867, 965, 873, 879, 700, 625, 885, 887, 625, 891, 898, 741, 625, 910, 916, 927, 926, 933, 1001, 937, 944, + /* 252 */ 948, 955, 964, 625, 625, 625, 969, 973, 983, 958, 456, 455, 625, 988, 906, 625, 994, 679, 625, 1000, 717, + /* 273 */ 494, 625, 1005, 729, 990, 1007, 1006, 996, 1011, 1017, 625, 625, 625, 625, 625, 625, 625, 443, 1022, 1026, + /* 293 */ 1030, 1059, 1064, 1064, 1064, 1095, 1063, 1034, 1038, 1042, 1046, 1059, 1059, 1059, 1059, 1118, 1100, 1054, + /* 311 */ 1058, 1089, 1064, 1064, 1064, 1105, 1076, 1081, 1117, 1076, 1177, 1073, 1099, 1206, 1059, 1059, 1091, 1064, + /* 329 */ 1087, 1059, 1059, 1059, 1060, 1064, 1075, 1111, 1059, 1059, 1063, 1064, 1109, 1076, 1115, 1122, 1059, 1147, + /* 347 */ 1064, 1064, 1070, 1077, 1064, 1132, 1136, 1204, 1083, 1074, 1145, 1059, 1091, 1065, 1125, 1059, 1148, 1064, + /* 365 */ 1064, 1050, 1101, 1116, 1142, 1177, 1152, 1138, 1158, 1154, 1175, 1161, 1165, 1060, 1064, 1172, 1181, 1062, + /* 383 */ 1185, 1128, 1089, 1066, 1189, 1061, 1193, 1197, 1090, 1201, 1168, 1210, 1214, 1218, 1222, 1226, 1230, 1234, + /* 401 */ 1239, 1411, 1497, 1238, 1894, 1245, 1331, 1331, 1251, 1421, 1249, 1331, 1331, 1331, 1269, 1239, 1331, 1331, + /* 419 */ 1331, 1283, 1964, 1331, 1331, 1331, 1294, 1274, 1331, 1331, 1279, 1283, 1331, 1331, 1331, 1307, 1951, 1311, + /* 437 */ 1331, 1331, 1369, 1824, 1712, 1336, 1331, 1331, 1412, 1331, 1331, 1713, 1337, 1331, 1275, 1862, 1331, 1255, + /* 455 */ 1331, 1331, 1338, 2055, 1331, 1347, 1331, 1331, 1354, 1348, 1331, 1331, 1331, 1343, 1314, 1360, 1331, 1355, + /* 473 */ 1352, 1331, 1313, 1359, 1911, 1915, 1324, 1913, 1374, 1321, 1687, 1385, 1241, 1503, 1381, 1655, 1382, 1383, + /* 491 */ 1398, 1393, 1397, 1331, 1331, 1331, 1376, 1402, 1331, 2039, 1899, 1331, 2038, 1331, 1331, 1417, 1331, 1331, + /* 509 */ 1413, 1408, 1331, 1331, 1451, 1331, 1426, 1331, 1331, 1331, 1420, 1590, 1461, 1331, 1331, 1470, 1475, 1476, + /* 527 */ 1331, 1331, 1331, 1437, 1331, 1856, 1502, 1331, 1331, 1331, 1486, 1938, 1495, 1331, 1289, 1293, 1331, 1291, + /* 545 */ 1331, 1366, 1331, 1322, 1944, 1501, 1331, 1508, 1324, 1871, 1511, 1516, 1869, 1694, 1524, 1697, 1515, 1529, + /* 563 */ 1522, 1528, 1533, 1539, 1546, 1533, 1553, 1561, 1562, 1464, 1566, 1573, 1577, 1581, 1610, 1331, 1331, 1331, + /* 581 */ 1471, 1331, 1633, 1331, 1331, 1535, 1491, 1331, 2056, 1641, 1331, 1331, 1569, 1331, 1583, 1654, 1331, 1331, + /* 599 */ 1606, 1445, 1663, 1331, 1331, 2073, 1323, 1331, 1331, 1331, 1595, 1610, 1669, 1331, 1331, 1676, 1331, 1684, + /* 617 */ 1331, 2067, 1686, 1331, 1981, 1331, 1433, 1361, 1331, 1331, 1331, 1331, 1263, 1763, 1331, 1971, 1331, 1441, + /* 635 */ 1987, 1331, 1324, 1490, 1331, 1324, 1913, 1331, 1294, 1843, 1331, 1303, 1331, 1331, 1368, 1805, 1691, 1324, + /* 653 */ 1331, 1991, 1990, 1328, 1326, 1989, 1325, 1555, 1992, 1988, 1555, 1555, 1328, 1329, 1557, 1327, 1467, 1702, + /* 671 */ 1330, 1331, 1709, 1331, 1480, 1484, 1331, 1332, 1331, 1331, 1362, 1740, 1331, 1815, 1798, 1331, 1485, 1617, + /* 689 */ 1331, 1384, 1389, 1240, 1814, 1331, 1331, 1331, 1620, 1549, 1747, 1331, 1331, 1665, 1978, 1331, 1741, 1717, + /* 707 */ 1331, 1331, 1331, 1732, 1331, 1331, 1705, 1318, 1331, 1754, 1331, 1331, 1735, 1331, 2062, 1723, 1331, 1331, + /* 725 */ 1331, 1629, 1331, 1772, 1331, 1331, 1757, 1331, 1331, 1779, 1331, 1331, 1767, 1331, 1331, 1825, 1331, 1331, + /* 743 */ 1775, 2012, 1448, 1331, 1331, 1331, 1637, 1785, 1331, 1786, 1331, 1504, 1671, 1454, 1331, 1784, 1331, 1331, + /* 761 */ 1780, 1331, 1331, 1785, 1331, 1785, 1613, 1790, 1749, 1749, 1725, 1748, 1724, 1728, 1331, 1542, 1287, 1331, + /* 779 */ 1270, 1331, 1331, 1324, 1299, 1750, 1726, 1331, 1331, 1795, 1331, 1331, 1838, 1331, 1331, 1839, 1807, 1370, + /* 797 */ 1331, 1331, 1331, 1643, 1819, 1331, 1331, 1331, 1659, 2006, 1820, 1331, 1331, 1882, 1257, 1830, 1331, 1503, + /* 815 */ 1836, 1331, 1849, 1331, 1331, 1916, 1829, 1625, 1331, 1623, 1887, 1331, 1624, 1331, 1853, 1331, 1860, 1331, + /* 833 */ 1860, 1879, 1866, 1698, 1925, 1877, 1881, 1924, 1880, 1886, 1879, 1892, 1898, 1903, 1904, 1650, 1908, 1921, + /* 851 */ 1457, 1929, 1933, 1429, 1331, 1331, 1518, 1331, 1937, 1517, 1943, 1948, 1331, 1331, 1331, 1745, 1331, 1955, + /* 869 */ 1331, 1331, 1331, 1768, 1963, 1331, 1331, 1331, 1801, 1331, 1295, 1968, 1331, 1331, 1939, 1496, 1719, 1985, + /* 887 */ 1331, 1331, 1996, 1361, 2000, 2004, 1331, 1331, 2007, 1612, 1331, 1331, 1774, 2011, 1331, 1584, 1323, 1331, + /* 905 */ 1411, 1331, 1331, 1339, 1331, 2016, 1987, 1331, 1331, 1331, 1422, 1679, 2020, 1331, 1331, 2021, 1811, 1331, + /* 923 */ 1331, 1845, 1412, 1331, 1680, 1331, 1331, 1331, 1917, 1830, 1259, 1421, 1331, 1265, 1331, 1832, 1421, 1331, + /* 941 */ 1588, 1331, 2051, 2031, 1331, 1831, 2032, 1672, 1331, 1873, 1331, 1594, 1331, 1599, 1873, 1964, 1888, 1331, + /* 959 */ 1600, 1331, 1331, 2045, 1604, 2036, 1331, 1331, 1331, 1959, 1331, 1974, 1331, 2027, 1331, 2050, 2043, 1331, + /* 977 */ 1613, 1331, 1727, 1791, 1748, 1749, 2049, 1331, 1331, 1331, 2005, 1331, 1738, 1331, 1331, 2060, 1331, 1916, + /* 995 */ 1762, 1331, 1331, 2066, 1331, 1760, 1331, 1331, 1331, 2025, 1377, 1331, 1331, 1331, 2061, 1331, 1331, 2071, + /* 1013 */ 1331, 1331, 2067, 1647, 1404, 1331, 1331, 1331, 2072, 2084, 2828, 2077, 2081, 2093, 2152, 2104, 2549, 2112, + /* 1031 */ 2121, 2400, 2125, 2133, 2133, 2138, 2147, 2276, 2841, 2845, 2847, 2846, 2308, 2151, 2104, 2362, 2196, 2156, + /* 1049 */ 2126, 2134, 2243, 2161, 2275, 2297, 2185, 2195, 2200, 2157, 2126, 2126, 2126, 2126, 2127, 2133, 2133, 2133, + /* 1067 */ 2133, 2296, 2176, 2242, 2213, 2275, 2174, 2174, 2844, 2174, 2174, 2174, 2174, 2306, 2844, 2174, 2174, 2847, + /* 1085 */ 2845, 2174, 2217, 2230, 2126, 2126, 2128, 2133, 2133, 2133, 2133, 2133, 2241, 2272, 2174, 2846, 2174, 2174, + /* 1103 */ 2174, 2169, 2133, 2133, 2134, 2261, 2266, 2274, 2174, 2174, 2277, 2247, 2306, 2174, 2174, 2174, 2845, 2174, + /* 1121 */ 2174, 2846, 2174, 2847, 2174, 2176, 2174, 2849, 2173, 2289, 2126, 2133, 2260, 2242, 2265, 2273, 2275, 2174, + /* 1139 */ 2174, 2278, 2126, 2134, 2270, 2276, 2174, 2280, 2126, 2126, 2133, 2133, 2133, 2848, 2848, 2174, 2174, 2288, + /* 1157 */ 2174, 2133, 2133, 2294, 2174, 2289, 2126, 2126, 2171, 2174, 2174, 2181, 2126, 2133, 2294, 2296, 2175, 2288, + /* 1175 */ 2849, 2848, 2174, 2174, 2307, 2174, 2173, 2174, 2126, 2126, 2133, 2295, 2175, 2178, 2288, 2850, 2174, 2180, + /* 1193 */ 2133, 2133, 2174, 2286, 2848, 2173, 2180, 2126, 2295, 2176, 2848, 2174, 2304, 2174, 2174, 2279, 2126, 2177, + /* 1211 */ 2172, 2181, 2127, 2133, 2284, 2174, 2181, 2293, 2301, 2289, 2129, 2179, 2312, 2312, 2312, 2321, 2325, 2329, + /* 1229 */ 2333, 2337, 2233, 2575, 2345, 2349, 2484, 2206, 2397, 2366, 2204, 2206, 2206, 2206, 2107, 2201, 2468, 2206, + /* 1247 */ 2397, 2202, 2614, 2203, 2206, 2206, 2099, 2760, 2206, 2506, 2206, 2204, 2206, 2206, 2141, 2955, 2206, 2505, + /* 1265 */ 2206, 2206, 2142, 2939, 2394, 2206, 2206, 2206, 2205, 2206, 2616, 2411, 2206, 2206, 2768, 2593, 2415, 2420, + /* 1283 */ 2206, 2769, 2594, 2416, 2315, 2254, 2206, 2206, 2206, 2969, 2601, 2206, 2206, 2206, 2375, 2919, 2733, 2595, + /* 1301 */ 2317, 2256, 2732, 2981, 2316, 2255, 2978, 2595, 2426, 2432, 2427, 2433, 2206, 2206, 2206, 2977, 2087, 2425, + /* 1319 */ 2431, 2437, 2206, 2108, 2201, 2206, 2206, 2206, 2350, 2206, 2206, 2353, 2206, 2206, 2206, 2206, 2202, 2252, + /* 1337 */ 2449, 2206, 2206, 2206, 2207, 2377, 2730, 2980, 2250, 2431, 2978, 2982, 2448, 2205, 2206, 2693, 2205, 2206, + /* 1355 */ 2206, 2206, 2978, 2088, 2087, 2812, 2548, 2206, 2206, 2206, 2225, 2100, 2461, 2206, 2206, 2207, 2631, 2809, + /* 1373 */ 2825, 2374, 2465, 2206, 2206, 2207, 2974, 2206, 2478, 2206, 2206, 2107, 2206, 2206, 2374, 2478, 2483, 2206, + /* 1391 */ 2206, 2482, 2374, 2206, 2206, 2489, 2374, 2206, 2489, 2206, 2490, 2586, 2503, 2206, 2206, 2209, 2206, 2515, + /* 1409 */ 2520, 2205, 2206, 2203, 2206, 2206, 2206, 2190, 2191, 2516, 2521, 2206, 2205, 2206, 2206, 2206, 2204, 2531, + /* 1427 */ 2540, 2546, 2206, 2206, 2455, 2892, 2554, 2527, 2533, 2542, 2553, 2526, 2532, 2541, 2355, 2708, 2712, 2535, + /* 1445 */ 2532, 2536, 2548, 2206, 2206, 2495, 2206, 2206, 2504, 2206, 2099, 2460, 2201, 2439, 2815, 2888, 2711, 2534, + /* 1463 */ 2546, 2206, 2206, 2620, 2350, 2206, 2352, 2206, 2206, 2704, 2708, 2558, 2558, 2562, 2205, 2206, 2206, 2206, + /* 1481 */ 2706, 2710, 2560, 2564, 2206, 2206, 2206, 2355, 2525, 2708, 2568, 2573, 2206, 2206, 2568, 2584, 2206, 2206, + /* 1499 */ 2206, 2360, 2600, 2373, 2206, 2206, 2206, 2374, 2459, 2206, 2969, 2723, 2206, 2206, 2718, 2607, 2719, 2723, + /* 1517 */ 2206, 2206, 2206, 2421, 2900, 2490, 2722, 2206, 2206, 2350, 2606, 2206, 2720, 2724, 2206, 2350, 2350, 2721, + /* 1535 */ 2206, 2206, 2350, 2708, 2718, 2388, 2723, 2206, 2206, 2731, 2980, 2206, 2718, 2722, 2206, 2206, 2737, 2742, + /* 1553 */ 2605, 2611, 2206, 2206, 2351, 2206, 2206, 2353, 2718, 2222, 2206, 2718, 2220, 2387, 2351, 2386, 2206, 2206, + /* 1571 */ 2779, 2813, 2387, 2389, 2206, 2389, 2388, 2388, 2206, 2386, 2390, 2388, 2206, 2206, 2354, 2674, 2678, 2206, + /* 1589 */ 2626, 2206, 2206, 2354, 2707, 2635, 2206, 2206, 2206, 2444, 2636, 2206, 2206, 2206, 2471, 2645, 2650, 2206, + /* 1607 */ 2206, 2356, 2709, 2641, 2646, 2651, 2206, 2206, 2206, 2497, 2667, 2655, 2373, 2206, 2206, 2784, 2206, 2206, + /* 1625 */ 2854, 2947, 2951, 2206, 2206, 2662, 2669, 2657, 2206, 2661, 2668, 2656, 2206, 2778, 2669, 2116, 2670, 2117, + /* 1643 */ 2206, 2206, 2374, 2747, 2668, 2115, 2574, 2206, 2206, 2878, 2951, 2678, 2201, 2206, 2206, 2476, 2206, 2778, + /* 1661 */ 2676, 2813, 2682, 2201, 2206, 2206, 2374, 2918, 2206, 2690, 2814, 2206, 2206, 2206, 2340, 2354, 2691, 2201, + /* 1679 */ 2206, 2206, 2894, 2944, 2939, 2206, 2777, 2692, 2206, 2206, 2206, 2477, 2206, 2702, 2814, 2206, 2206, 2968, + /* 1697 */ 2096, 2206, 2206, 2206, 2439, 2352, 2351, 2351, 2206, 2206, 2977, 2981, 2206, 2368, 2716, 2206, 2206, 2978, + /* 1715 */ 2595, 2252, 2743, 2205, 2206, 2206, 2374, 2928, 2753, 2206, 2206, 2206, 2492, 2206, 2206, 2206, 2493, 2376, + /* 1733 */ 2749, 2205, 2206, 2224, 2378, 2206, 2225, 2379, 2206, 2206, 2206, 2738, 2375, 2748, 2754, 2206, 2206, 2206, + /* 1751 */ 2491, 2206, 2206, 2374, 2759, 2754, 2206, 2225, 2380, 2206, 2226, 2380, 2206, 2206, 2206, 2697, 2206, 2438, + /* 1769 */ 2764, 2206, 2206, 2773, 2766, 2206, 2206, 2374, 2929, 2935, 2206, 2438, 2775, 2206, 2206, 2206, 2496, 2206, + /* 1787 */ 2206, 2206, 2496, 2206, 2494, 2206, 2206, 2493, 2206, 2797, 2802, 2206, 2236, 2728, 2206, 2207, 2798, 2803, + /* 1805 */ 2809, 2825, 2206, 2206, 2381, 2792, 2808, 2820, 2373, 2206, 2237, 2205, 2206, 2206, 2807, 2819, 2188, 2206, + /* 1823 */ 2206, 2821, 2206, 2206, 2206, 2498, 2807, 2819, 2206, 2206, 2206, 2499, 2955, 2855, 2832, 2206, 2206, 2382, + /* 1841 */ 2793, 2206, 2856, 2833, 2206, 2206, 2386, 2206, 2206, 2838, 2857, 2834, 2206, 2861, 2948, 2206, 2350, 2580, + /* 1859 */ 2569, 2862, 2949, 2206, 2206, 2410, 2206, 2206, 2438, 2868, 2206, 2350, 2970, 2724, 2206, 2206, 2341, 2206, + /* 1877 */ 2869, 2206, 2206, 2866, 2950, 2206, 2206, 2206, 2506, 2867, 2951, 2206, 2206, 2206, 2505, 2438, 2874, 2206, + /* 1895 */ 2206, 2438, 2372, 2873, 2206, 2206, 2206, 2510, 2439, 2950, 2206, 2439, 2950, 2878, 2206, 2879, 2206, 2350, + /* 1913 */ 2979, 2089, 2453, 2206, 2206, 2206, 2226, 2807, 2439, 2201, 2879, 2439, 2869, 2206, 2206, 2439, 2442, 2440, + /* 1931 */ 2883, 2485, 2885, 2885, 2885, 2887, 2899, 2206, 2206, 2206, 2579, 2568, 2900, 2206, 2206, 2206, 2590, 2912, + /* 1949 */ 2904, 2685, 2206, 2350, 2979, 2596, 2909, 2913, 2905, 2686, 2206, 2917, 2921, 2810, 2405, 2206, 2206, 2206, + /* 1967 */ 2615, 2923, 2403, 2205, 2206, 2354, 2698, 2206, 2206, 2961, 2965, 2922, 2811, 2406, 2206, 2354, 2780, 2813, + /* 1985 */ 2164, 2811, 2547, 2206, 2206, 2206, 2352, 2206, 2206, 2206, 2353, 2375, 2929, 2165, 2938, 2206, 2927, 2920, + /* 2003 */ 2810, 2957, 2206, 2206, 2206, 2629, 2807, 2819, 2935, 2956, 2205, 2206, 2206, 2206, 2895, 2933, 2937, 2939, + /* 2021 */ 2206, 2206, 2206, 2630, 2143, 2940, 2206, 2206, 2441, 2206, 2499, 2955, 2205, 2206, 2206, 2206, 2506, 2206, + /* 2039 */ 2206, 2443, 2511, 2206, 2206, 2787, 2206, 2206, 2443, 2640, 2206, 2788, 2206, 2206, 2206, 2636, 2472, 2206, + /* 2057 */ 2206, 2206, 2666, 2206, 2622, 2206, 2206, 2206, 2758, 2207, 2206, 2206, 2206, 2777, 2208, 2206, 2206, 2206, + /* 2075 */ 2778, 2682, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 256, 512, 1024, + /* 2087 */ 2048, 4096, 16384, 524288, 8388608, 67108864, 0, 512, 512, 1024, 131072, 2097152, 0, 0, 8, 512, 2048, + /* 2104 */ 1073741824, 1073741824, 1073741824, 0, 0, 8, 16384, 67108864, 524288, 537133056, 4194304, 1048576, + /* 2116 */ 16777216, 33554432, 201326592, 268435456, 1073741824, 268435456, 0, 134217728, 16777216, 192, 16384, 16384, + /* 2128 */ 16384, 16384, 67108864, 67108864, 8, 67108864, 67108864, 67108864, 67108864, 32, 16, 32, 4, 0, 0, 8, + /* 2144 */ 1048576, 4194304, 33554432, 8192, 196608, 229376, 80, 512, 0, 2048, 2048, 1073741824, 0, 128, 64, 16384, + /* 2160 */ 16384, 8192, 196608, 131072, 4096, 8192, 262144, 1048576, 6291456, 24584, 24592, 24576, 24576, 2, 24576, + /* 2175 */ 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 1073741824, 1073741824, 0x80000000, + /* 2188 */ 536870912, 0, 0, 0, 7, 2024, 32768, 536870912, 262144, 262144, 262144, 134217728, 262144, 134217728, 0, 0, + /* 2204 */ 0, 0x80000000, 0, 0, 0, 0, 1, 0, 0, 8192, 131072, 131072, 4096, 24576, 536870912, 262144, 0, 0, 512, + /* 2223 */ 2097152, 0, 0, 1, 8, 16, 128, 128, 128, 64, 16384, 0, 67108864, 0, 0, 2744, 57344, 51249152, 67108864, 32, + /* 2243 */ 32, 4, 4, 0, 128, 16384, 16384, 16384, 32768, 524288, 1048576, 4194304, 8388608, 33554432, -872415232, 0, + /* 2259 */ 0, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 32, 4, 4, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 0, 16384, + /* 2282 */ 16384, 16384, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 16384, 16384, 67108864, 67108864, 67108864, + /* 2297 */ 24576, 24576, 24576, 2048, 67108864, 8, 8, 24576, 24576, 24576, 24584, 24576, 24576, 24576, 16, 67108864, + /* 2313 */ 8, 24576, 16384, 32768, 917504, 1048576, 4194304, 8388608, 67108864, 24576, 18, 16386, 67108866, + /* 2326 */ 1073741826, 524546, 524547, 10, 34, 50462762, 10, 34, 6291458, 0x80000000, 0x80000000, -1326077970, 0, 16, + /* 2340 */ 0, 0, 4194304, 33554432, 0, 524288, 1, 1, 257, 524289, 0, 0, 0, 2, 0, 0, 0, 3, 4, 8, 0, 896, 0, 0, + /* 2364 */ 0x80000000, 536870912, 0, 14680064, 0, 0, -2096174408, -2096174408, 0, 1073741824, 0, 0, 0, 8, 16, 128, + /* 2380 */ 2048, 0, 0, 0, 31, 155776, 0, 512, 0, 0, 0, 512, 0, 512, -824246498, -824246498, -824246498, 0, 0, 6291456, + /* 2400 */ 0, 0, 33554432, 8388608, 33554432, 67108864, 1610612736, 0x80000000, 0, 0, 3870, 61440, -824311808, 0, 0, + /* 2415 */ 16384, 32768, 1966080, 4194304, -830472192, -830472192, 0, 0, 0, 4728, 32768, 131072, 786432, 1048576, + /* 2429 */ 4194304, 8388608, 4194304, 8388608, 33554432, 201326592, -1073741824, 0, -1073741824, 0, 0, 0, 16384, + /* 2442 */ 131072, 0, 0, 0, 7, 64, 8388608, 33554432, 201326592, 1073741824, 0x80000000, 134217728, 0x80000000, 0, 0, + /* 2457 */ -419548552, -419548552, 512, 2048, 16384, 8388608, 67108864, 134217728, 16384, 67108864, 134217728, 0, 1, + /* 2470 */ 1, 1, 24, 128, 2048, 0, 0, 8, 16384, 134217728, 0, 0, 8, 16384, 0, 0, 0, 131072, 131072, 0, 8, 0, 0, 0, + /* 2494 */ 262144, 0, 0, 0, 393216, 0, 0, 0, 1048576, -151025681, 0, 0, 0, 4194304, 0, 0, 7, 231400, 1996226560, + /* 2513 */ 0x80000000, 0, 32768, 196608, 786432, 3145728, 12582912, 12582912, 33554432, 67108864, 1879048192, + /* 2524 */ 0x80000000, 40, 64, 128, 1792, 32768, 196608, 32768, 196608, 262144, 524288, 3145728, 4194304, 67108864, + /* 2538 */ 268435456, 536870912, 3145728, 4194304, 8388608, 67108864, 268435456, 536870912, 268435456, 536870912, + /* 2548 */ 1073741824, 0x80000000, 0, 0, 2097152, 0, 3, 4, 40, 64, 1792, 196608, 262144, 3145728, 4194304, 67108864, + /* 2564 */ 268435456, 1073741824, 0x80000000, 0, 1792, 196608, 262144, 2097152, 4194304, 4194304, 268435456, + /* 2575 */ 1073741824, 0, 0, 256, 2, 8, 32, 64, 1792, 4194304, 1073741824, 0, 0, -151025681, -151025681, 2, 8, 0, 768, + /* 2594 */ 3072, 4096, 8192, 16384, 32768, 131072, 1024, 196608, 2097152, 4194304, 1073741824, 2, 8, 0, 0, 768, 1024, + /* 2611 */ 0, 512, 131072, 2097152, 4194304, 0, 0, 0, 3870, 2, 512, 0, 0, 1, 2048, 2132782151, 2132782151, 2132782151, + /* 2629 */ 0, 1, 28, 128, 24576, 131072, 0, 1095, 43008, 2132738048, 0, 64, 1024, 2048, 8192, 32768, 32768, 65536, + /* 2647 */ 131072, 262144, 521666560, 521666560, 536870912, 1073741824, 0, 0, 262144, 1048576, 50331648, 469762048, + /* 2659 */ 1073741824, 0, 0, 3, 4, 64, 1024, 3, 64, 1024, 8192, 65536, 262144, 1048576, 16777216, 64, 1024, 8192, + /* 2677 */ 262144, 1048576, 16777216, 33554432, 67108864, 262144, 16777216, 33554432, 67108864, -536870912, 0, 0, 0, + /* 2690 */ 3, 64, 1024, 33554432, 67108864, 134217728, 1073741824, 3, 64, 67108864, 134217728, 0, 3, 64, 0, 0, 2, 4, + /* 2708 */ 8, 32, 64, 128, 1792, 196608, 262144, 524288, -2096174408, 0, 0, 0, 2, 8, 512, 131072, 2097152, 0, 0, 0, + /* 2728 */ 51249152, 0x80000000, 0, 0, 2, 12, 16, 512, 2048, 0, 24, 160, 512, 2048, 2048, 57344, 393216, 524288, + /* 2746 */ 50331648, 16, 128, 512, 57344, 393216, 50331648, 393216, 50331648, 0x80000000, 0, 0, 8, 512, 16384, 32768, + /* 2762 */ 393216, 50331648, 32768, 393216, 33554432, 0, 0, 0, 2, 28, 768, 0, 16384, 32768, 393216, 0, 0, 3, 64, 1024, + /* 2782 */ 0, 0, 2130337951, 2130337951, 2130337951, 0, 1, 152, 2048, 0, 155776, 16252928, 2113929216, 0, 0, 1, 30, + /* 2799 */ 128, 155648, 16252928, 16252928, 33554432, 1006632960, 1073741824, 0, 24576, 131072, 524288, 1048576, + /* 2811 */ 6291456, 8388608, 33554432, 67108864, 134217728, 0, 0, 16384, 6291456, 8388608, 33554432, 469762048, + /* 2823 */ 536870912, 0, 33554432, 469762048, 536870912, 1073741824, 0x80000000, 539754496, 542375936, 4194304, + /* 2833 */ 8388608, 33554432, 402653184, 0, 0, 0, 8, 16, 24576, 24576, 24600, 24576, 24576, 24576, 24578, 24576, + /* 2849 */ 24576, 24576, 2, 2, 2, 0, 16, 24576, 131072, 1048576, 4194304, 8388608, 0, 24576, 131072, 4194304, 8388608, + /* 2866 */ 0, 16384, 131072, 8388608, 134217728, 268435456, 0, 16384, 131072, 134217728, 268435456, 0, 0, 16384, + /* 2880 */ 131072, 134217728, 0, 131072, 0, 131072, 0, 131072, 131072, 0, 0, 16384, -419548552, 0, 0, 0, 8, 32, 64, + /* 2899 */ 4728, 8265728, 109051904, -536870912, 0, 786432, 1048576, 6291456, 41943040, 67108864, 0, 8, 16, 608, 4096, + /* 2914 */ 8192, 131072, 786432, 8, 16, 96, 512, 4096, 8192, 262144, 524288, 1048576, 6291456, 8, 16, 32, 64, 512, + /* 2932 */ 4096, 512, 4096, 262144, 1048576, 4194304, 8388608, 33554432, 67108864, 536870912, 0x80000000, 0, 512, + /* 2945 */ 4096, 1048576, 4194304, 8388608, 33554432, 134217728, 268435456, 0, 0, 0, 4194304, 33554432, 67108864, + /* 2958 */ 536870912, 1073741824, 0x80000000, 0, 155648, 155648, 155648, 2201, 2201, 108697, 0, 2, 8, 768, 1024, + /* 2973 */ 131072, 8, 16, 2048, 0, 2, 12, 512, 2048, 4096, 8192, 16384, 524288 +]; + +XQueryTokenizer.TOKEN = +[ + "(0)", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "QuotChar", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#)'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "'", - next: "start" - }, { - token: "comment", - regex: ".+" - }], - - "apos-string": [{ - token: "string", - regex: ".*'", - next: "start" - }, { - token: "string", - regex: ".*" - }], - - "quot-string": [{ - token: "string", - regex: '.*"', - next: "start" - }, { - token: "string", - regex: ".*" - }], - - "apos-attr": [{ - token: "string", - regex: ".*'", - next: "tag" - }, { - token: "string", - regex: ".*" - }], - - "quot-attr": [{ - token: "string", - regex: '.*"', - next: "tag" - }, { - token: "string", - regex: ".*" - }] - }; -}; - -oop.inherits(XQueryHighlightRules, TextHighlightRules); - -exports.XQueryHighlightRules = XQueryHighlightRules; -}); diff --git a/lib/ace/mode/xquery_worker.js b/lib/ace/mode/xquery_worker.js index 0e61791c..559603d6 100644 --- a/lib/ace/mode/xquery_worker.js +++ b/lib/ace/mode/xquery_worker.js @@ -35,7 +35,7 @@ var oop = require("../lib/oop"); var Mirror = require("../worker/mirror").Mirror; var JSONParseTreeHandler = require("./xquery/JSONParseTreeHandler").JSONParseTreeHandler; var XQueryParser = require("./xquery/XQueryParser").XQueryParser; -var SyntaxHighlighter = require("./xquery/visitors/SyntaxHighlighter").SyntaxHighlighter; +var SemanticHighlighter = require("./xquery/visitors/SemanticHighlighter").SemanticHighlighter; var XQueryWorker = exports.XQueryWorker = function(sender) { Mirror.call(this, sender); @@ -55,9 +55,9 @@ oop.inherits(XQueryWorker, Mirror); parser.parse_XQuery(); this.sender.emit("ok"); var ast = h.getParseTree(); - var highlighter = new SyntaxHighlighter(ast); + var highlighter = new SemanticHighlighter(ast, value); var tokens = highlighter.getTokens(); - this.sender.emit("highlight", tokens); + this.sender.emit("highlight", { tokens: tokens, lines: highlighter.lines }); } catch(e) { if(e instanceof parser.ParseException) { var prefix = value.substring(0, e.getBegin());