mirror of
https://github.com/element-hq/synapse.git
synced 2026-06-02 19:24:32 +00:00
981 lines
50 KiB
JavaScript
981 lines
50 KiB
JavaScript
/* parser generated by jison 0.4.13 */
|
|
/*
|
|
Returns a Parser object of the following structure:
|
|
|
|
Parser: {
|
|
yy: {}
|
|
}
|
|
|
|
Parser.prototype: {
|
|
yy: {},
|
|
trace: function(),
|
|
symbols_: {associative list: name ==> number},
|
|
terminals_: {associative list: number ==> name},
|
|
productions_: [...],
|
|
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
|
|
table: [...],
|
|
defaultActions: {...},
|
|
parseError: function(str, hash),
|
|
parse: function(input),
|
|
|
|
lexer: {
|
|
EOF: 1,
|
|
parseError: function(str, hash),
|
|
setInput: function(input),
|
|
input: function(),
|
|
unput: function(str),
|
|
more: function(),
|
|
less: function(n),
|
|
pastInput: function(),
|
|
upcomingInput: function(),
|
|
showPosition: function(),
|
|
test_match: function(regex_match_array, rule_index),
|
|
next: function(),
|
|
lex: function(),
|
|
begin: function(condition),
|
|
popState: function(),
|
|
_currentRules: function(),
|
|
topState: function(),
|
|
pushState: function(condition),
|
|
|
|
options: {
|
|
ranges: boolean (optional: true ==> token location info will include a .range[] member)
|
|
flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
|
|
backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
|
|
},
|
|
|
|
performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
|
|
rules: [...],
|
|
conditions: {associative list: name ==> set},
|
|
}
|
|
}
|
|
|
|
|
|
token location info (@$, _$, etc.): {
|
|
first_line: n,
|
|
last_line: n,
|
|
first_column: n,
|
|
last_column: n,
|
|
range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
|
|
}
|
|
|
|
|
|
the parseError function receives a 'hash' object with these members for lexer and parser errors: {
|
|
text: (matched text)
|
|
token: (the produced terminal token, if any)
|
|
line: (yylineno)
|
|
}
|
|
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
|
|
loc: (yylloc)
|
|
expected: (string describing the set of expected tokens)
|
|
recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
|
|
}
|
|
*/
|
|
var vextab_parser = (function(){
|
|
var parser = {trace: function trace() { },
|
|
yy: {},
|
|
symbols_: {"error":2,"e":3,"maybe_vextab":4,"EOF":5,"vextab":6,"stave":7,"voice":8,"maybe_options":9,"stave_data":10,"OPTIONS":11,"options":12,"TABSTAVE":13,"STAVE":14,"VOICE":15,"stave_additions":16,"TEXT":17,"text":18,"NOTES":19,"notes":20,"SLUR":21,"WORD":22,"=":23,"STR":24,",":25,"lingo":26,"line":27,"chord":28,"time":29,"bar":30,"[":31,"]":32,"tuplets":33,"annotations":34,"command":35,"rest":36,"|":37,":":38,"frets":39,"maybe_decorator":40,"/":41,"string":42,"chord_line":43,".":44,"(":45,")":46,"articulation":47,"NUMBER":48,"abc":49,"_":50,"timed_fret":51,"time_values":52,"maybe_dot":53,"time_unit":54,"maybe_slash":55,"w":56,"h":57,"q":58,"d":59,"S":60,"-":61,"s":62,"t":63,"T":64,"b":65,"p":66,"v":67,"V":68,"u":69,"^":70,"$":71,"annotation_words":72,"!":73,"COMMAND":74,"#":75,"ABC":76,"abc_accidental":77,"accidental_type":78,"@":79,"n":80,"~":81,"$accept":0,"$end":1},
|
|
terminals_: {2:"error",5:"EOF",11:"OPTIONS",13:"TABSTAVE",14:"STAVE",15:"VOICE",17:"TEXT",19:"NOTES",21:"SLUR",22:"WORD",23:"=",24:"STR",25:",",31:"[",32:"]",37:"|",38:":",41:"/",44:".",45:"(",46:")",48:"NUMBER",50:"_",56:"w",57:"h",58:"q",59:"d",60:"S",61:"-",62:"s",63:"t",64:"T",65:"b",66:"p",67:"v",68:"V",69:"u",70:"^",71:"$",73:"!",74:"COMMAND",75:"#",76:"ABC",79:"@",80:"n",81:"~"},
|
|
productions_: [0,[3,2],[4,0],[4,1],[6,1],[6,2],[7,3],[7,2],[7,2],[8,1],[8,1],[8,1],[10,1],[10,2],[16,2],[16,2],[16,2],[9,0],[9,1],[12,3],[12,4],[18,1],[18,3],[20,1],[20,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[30,1],[30,3],[30,3],[30,3],[30,3],[30,3],[27,4],[43,1],[43,3],[28,4],[28,5],[39,1],[39,1],[39,4],[39,2],[39,4],[51,5],[51,1],[51,5],[51,8],[51,1],[51,4],[29,3],[52,2],[54,1],[54,1],[54,1],[54,1],[53,0],[53,1],[55,0],[55,1],[42,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[40,1],[40,1],[40,1],[40,1],[40,0],[33,3],[33,5],[34,3],[72,1],[72,3],[35,3],[36,2],[36,3],[36,4],[49,3],[77,1],[77,2],[77,1],[77,2],[77,1],[77,0],[78,0],[78,1]],
|
|
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
|
|
/* this == yyval */
|
|
|
|
var $0 = $$.length - 1;
|
|
switch (yystate) {
|
|
case 1:
|
|
if (Vex.Flow.VexTab.DEBUG && $$[$0-1]) {
|
|
console.log($$[$0-1]);
|
|
console.log(JSON.stringify($$[$0-1], null, " "));
|
|
}
|
|
return $$[$0-1];
|
|
|
|
break;
|
|
case 2: this.$ = null
|
|
break;
|
|
case 3: this.$ = $$[$0]
|
|
break;
|
|
case 4: this.$ = [$$[$0]]
|
|
break;
|
|
case 5: this.$ = [].concat($$[$0-1], $$[$0])
|
|
break;
|
|
case 6: this.$ = {
|
|
element: $$[$0-2],
|
|
options: $$[$0-1],
|
|
notes: $$[$0].notes,
|
|
text: $$[$0].text,
|
|
_l: _$[$0-2].first_line,
|
|
_c: _$[$0-2].first_column
|
|
}
|
|
|
|
break;
|
|
case 7: this.$ = {
|
|
element: $$[$0-1],
|
|
options: $$[$0],
|
|
_l: _$[$0-1].first_line,
|
|
_c: _$[$0-1].first_column
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
this.$ = {
|
|
element: "options",
|
|
params: $$[$0],
|
|
_l: _$[$0-1].first_line,
|
|
_c: _$[$0-1].first_column
|
|
}
|
|
|
|
break;
|
|
case 12: this.$ = $$[$0]
|
|
break;
|
|
case 13:
|
|
var text = [].concat($$[$0-1].text, $$[$0].text);
|
|
var notes = [].concat($$[$0-1].notes, $$[$0].notes);
|
|
var slurs = [].concat($$[$0-1].slurs, $$[$0].slurs)
|
|
this.$ = {text: text, notes: notes, slurs: slurs};
|
|
|
|
break;
|
|
case 14:this.$ = {text: $$[$0], notes: [], slurs: []}
|
|
break;
|
|
case 15:this.$ = {notes: $$[$0], text: [], slurs: []}
|
|
break;
|
|
case 16:this.$ = {slurs: $$[$0], notes: [], text: []}
|
|
break;
|
|
case 17: this.$ = null
|
|
break;
|
|
case 18: this.$ = $$[$0]
|
|
break;
|
|
case 19: this.$ = [{
|
|
key: $$[$0-2],
|
|
value: $$[$0],
|
|
_l: _$[$0-2].first_line,
|
|
_c: _$[$0-2].first_column
|
|
}]
|
|
|
|
break;
|
|
case 20: this.$ = [].concat($$[$0-3], [{
|
|
key: $$[$0-2],
|
|
value: $$[$0],
|
|
_l: _$[$0-2].first_line,
|
|
_c: _$[$0-2].first_column
|
|
}])
|
|
|
|
break;
|
|
case 21: this.$ = [{text: $$[$0], _l: _$[$0].first_line, _c: _$[$0].first_column}]
|
|
break;
|
|
case 22: this.$ = [].concat($$[$0-2], {text: $$[$0], _l: _$[$0].first_line, _c: _$[$0].first_column})
|
|
break;
|
|
case 23: this.$ = $$[$0]
|
|
break;
|
|
case 24: this.$ = [].concat($$[$0-1], $$[$0])
|
|
break;
|
|
case 25: this.$ = $$[$0]
|
|
break;
|
|
case 26: this.$ = $$[$0]
|
|
break;
|
|
case 27: this.$ = $$[$0]
|
|
break;
|
|
case 28: this.$ = [{
|
|
command: "bar",
|
|
type: $$[$0],
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column
|
|
}]
|
|
|
|
break;
|
|
case 29: this.$ = [{
|
|
command: "open_beam",
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column
|
|
}]
|
|
|
|
break;
|
|
case 30: this.$ = [{
|
|
command: "close_beam",
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column
|
|
}]
|
|
|
|
break;
|
|
case 31: this.$ = [{
|
|
command: "tuplet",
|
|
params: $$[$0],
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column
|
|
}]
|
|
|
|
break;
|
|
case 32: this.$ = [{
|
|
command: "annotations",
|
|
params: $$[$0],
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column
|
|
}]
|
|
|
|
break;
|
|
case 33: this.$ = [{
|
|
command: "command",
|
|
params: $$[$0],
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column
|
|
}]
|
|
|
|
break;
|
|
case 34:
|
|
this.$ = [{
|
|
command: "rest",
|
|
params: $$[$0]
|
|
}]
|
|
|
|
break;
|
|
case 35: this.$ = 'single'
|
|
break;
|
|
case 36: this.$ = 'double'
|
|
break;
|
|
case 37: this.$ = 'end'
|
|
break;
|
|
case 38: this.$ = 'repeat-end'
|
|
break;
|
|
case 39: this.$ = 'repeat-begin'
|
|
break;
|
|
case 40: this.$ = 'repeat-both'
|
|
break;
|
|
case 41:
|
|
_.extend(_.last($$[$0-3]), {decorator: $$[$0-2]})
|
|
_.each($$[$0-3], function(fret) { fret['string'] = $$[$0] })
|
|
this.$ = $$[$0-3]
|
|
|
|
break;
|
|
case 42: this.$ = $$[$0]
|
|
break;
|
|
case 43: this.$ = [].concat($$[$0-2], $$[$0])
|
|
break;
|
|
case 44: this.$ = [{chord: $$[$0-2], decorator: $$[$0]}]
|
|
break;
|
|
case 45: this.$ = [{chord: $$[$0-2], articulation: $$[$0-4], decorator: $$[$0]}]
|
|
break;
|
|
case 46: this.$ = [{
|
|
fret: $$[$0],
|
|
_l: _$[$0].first_line,
|
|
_c: _$[$0].first_column}]
|
|
|
|
break;
|
|
case 47: this.$ = [{abc: $$[$0], _l: _$[$0].first_line, _c: _$[$0].first_column}]
|
|
break;
|
|
case 48: this.$ = [{abc: $$[$0-3], octave: $$[$0-2],
|
|
fret: $$[$0], _l: _$[$0-3].first_line, _c: _$[$0-3].first_column}]
|
|
break;
|
|
case 49: this.$ = [_.extend($$[$0], {articulation: $$[$0-1]})]
|
|
break;
|
|
case 50:
|
|
_.extend(_.last($$[$0-3]), {decorator: $$[$0-2]})
|
|
_.extend($$[$0], {articulation: $$[$0-1]})
|
|
$$[$0-3].push($$[$0])
|
|
this.$ = $$[$0-3]
|
|
|
|
break;
|
|
case 51: this.$ = {
|
|
time: $$[$0-3], dot: $$[$0-2], fret: $$[$0],
|
|
_l: _$[$0-4].first_line, _c: _$[$0-4].first_column}
|
|
break;
|
|
case 52: this.$ = {fret: $$[$0], _l: _$[$0].first_line, _c: _$[$0].first_column}
|
|
break;
|
|
case 53: this.$ = {time: $$[$0-3], dot: $$[$0-2], abc: $$[$0]}
|
|
break;
|
|
case 54: this.$ = {time: $$[$0-6], dot: $$[$0-5], abc: $$[$0-3], octave: $$[$0-2], fret: $$[$0]}
|
|
break;
|
|
case 55: this.$ = {abc: $$[$0], _l: _$[$0].first_line, _c: _$[$0].first_column}
|
|
break;
|
|
case 56: this.$ = {abc: $$[$0-3], octave: $$[$0-2],
|
|
fret: $$[$0], _l: _$[$0-3].first_line, _c: _$[$0-3].first_column}
|
|
break;
|
|
case 57: this.$ = {time: $$[$0-1], dot: $$[$0]}
|
|
break;
|
|
case 58: this.$ = $$[$0-1] + $$[$0]
|
|
break;
|
|
case 59: this.$ = $$[$0]
|
|
break;
|
|
case 60: this.$ = $$[$0]
|
|
break;
|
|
case 61: this.$ = $$[$0]
|
|
break;
|
|
case 62: this.$ = $$[$0]
|
|
break;
|
|
case 63: this.$ = false
|
|
break;
|
|
case 64: this.$ = true
|
|
break;
|
|
case 65: this.$ = ''
|
|
break;
|
|
case 66: this.$ = 's'
|
|
break;
|
|
case 67: this.$ = $$[$0]
|
|
break;
|
|
case 68: this.$ = '-'
|
|
break;
|
|
case 69: this.$ = 's'
|
|
break;
|
|
case 70: this.$ = 't'
|
|
break;
|
|
case 71: this.$ = 'T'
|
|
break;
|
|
case 72: this.$ = 'b'
|
|
break;
|
|
case 73: this.$ = 'h'
|
|
break;
|
|
case 74: this.$ = 'p'
|
|
break;
|
|
case 75: this.$ = 'v'
|
|
break;
|
|
case 76: this.$ = 'V'
|
|
break;
|
|
case 77: this.$ = 'u'
|
|
break;
|
|
case 78: this.$ = 'd'
|
|
break;
|
|
case 79: this.$ = null
|
|
break;
|
|
case 80: this.$ = {tuplet: $$[$0-1]}
|
|
break;
|
|
case 81: this.$ = {tuplet: $$[$0-3], notes: $$[$0-1]}
|
|
break;
|
|
case 82: this.$ = $$[$0-1]
|
|
break;
|
|
case 83: this.$ = [$$[$0]]
|
|
break;
|
|
case 84: this.$ = [].concat($$[$0-2], $$[$0])
|
|
break;
|
|
case 85: this.$ = $$[$0-1]
|
|
break;
|
|
case 86: this.$ = {position: 0}
|
|
break;
|
|
case 87: this.$ = {position: $$[$0-1]}
|
|
break;
|
|
case 88: this.$ = {position: $$[$0-1] * -1}
|
|
break;
|
|
case 89: this.$ = {key: $$[$0-2], accidental: $$[$0-1], accidental_type: $$[$0]}
|
|
break;
|
|
case 90: this.$ = "#"
|
|
break;
|
|
case 91: this.$ = "##"
|
|
break;
|
|
case 92: this.$ = "b"
|
|
break;
|
|
case 93: this.$ = "bb"
|
|
break;
|
|
case 94: this.$ = "n"
|
|
break;
|
|
case 96: this.$ = null;
|
|
break;
|
|
case 97: this.$ = "c"
|
|
break;
|
|
}
|
|
},
|
|
table: [{3:1,4:2,5:[2,2],6:3,7:4,8:5,11:[1,6],13:[1,7],14:[1,8],15:[1,9]},{1:[3]},{5:[1,10]},{5:[2,3],7:11,8:5,11:[1,6],13:[1,7],14:[1,8],15:[1,9]},{5:[2,4],11:[2,4],13:[2,4],14:[2,4],15:[2,4]},{5:[2,17],9:12,11:[2,17],12:13,13:[2,17],14:[2,17],15:[2,17],17:[2,17],19:[2,17],21:[2,17],22:[1,14]},{12:15,22:[1,14]},{5:[2,9],11:[2,9],13:[2,9],14:[2,9],15:[2,9],17:[2,9],19:[2,9],21:[2,9],22:[2,9]},{5:[2,10],11:[2,10],13:[2,10],14:[2,10],15:[2,10],17:[2,10],19:[2,10],21:[2,10],22:[2,10]},{5:[2,11],11:[2,11],13:[2,11],14:[2,11],15:[2,11],17:[2,11],19:[2,11],21:[2,11],22:[2,11]},{1:[2,1]},{5:[2,5],11:[2,5],13:[2,5],14:[2,5],15:[2,5]},{5:[2,7],10:16,11:[2,7],13:[2,7],14:[2,7],15:[2,7],16:17,17:[1,18],19:[1,19],21:[1,20]},{5:[2,18],11:[2,18],13:[2,18],14:[2,18],15:[2,18],17:[2,18],19:[2,18],21:[2,18],22:[1,21]},{23:[1,22]},{5:[2,8],11:[2,8],13:[2,8],14:[2,8],15:[2,8],22:[1,21]},{5:[2,6],11:[2,6],13:[2,6],14:[2,6],15:[2,6],16:23,17:[1,18],19:[1,19],21:[1,20]},{5:[2,12],11:[2,12],13:[2,12],14:[2,12],15:[2,12],17:[2,12],19:[2,12],21:[2,12]},{18:24,24:[1,25]},{20:26,23:[1,43],26:27,27:28,28:29,29:30,30:31,31:[1,32],32:[1,33],33:34,34:35,35:36,36:37,37:[1,42],38:[1,41],39:38,45:[1,39],47:40,48:[1,48],49:49,57:[1,55],61:[1,50],62:[1,51],63:[1,52],64:[1,53],65:[1,54],66:[1,56],70:[1,44],71:[1,45],73:[1,46],75:[1,47],76:[1,57]},{5:[2,17],9:58,11:[2,17],12:13,13:[2,17],14:[2,17],15:[2,17],17:[2,17],19:[2,17],21:[2,17],22:[1,14]},{23:[1,59]},{22:[1,60]},{5:[2,13],11:[2,13],13:[2,13],14:[2,13],15:[2,13],17:[2,13],19:[2,13],21:[2,13]},{5:[2,14],11:[2,14],13:[2,14],14:[2,14],15:[2,14],17:[2,14],19:[2,14],21:[2,14],25:[1,61]},{5:[2,21],11:[2,21],13:[2,21],14:[2,21],15:[2,21],17:[2,21],19:[2,21],21:[2,21],25:[2,21]},{5:[2,15],11:[2,15],13:[2,15],14:[2,15],15:[2,15],17:[2,15],19:[2,15],21:[2,15],23:[1,43],26:62,27:28,28:29,29:30,30:31,31:[1,32],32:[1,33],33:34,34:35,35:36,36:37,37:[1,42],38:[1,41],39:38,45:[1,39],47:40,48:[1,48],49:49,57:[1,55],61:[1,50],62:[1,51],63:[1,52],64:[1,53],65:[1,54],66:[1,56],70:[1,44],71:[1,45],73:[1,46],75:[1,47],76:[1,57]},{5:[2,23],11:[2,23],13:[2,23],14:[2,23],15:[2,23],17:[2,23],19:[2,23],21:[2,23],23:[2,23],31:[2,23],32:[2,23],37:[2,23],38:[2,23],45:[2,23],48:[2,23],57:[2,23],61:[2,23],62:[2,23],63:[2,23],64:[2,23],65:[2,23],66:[2,23],70:[2,23],71:[2,23],73:[2,23],75:[2,23],76:[2,23]},{5:[2,25],11:[2,25],13:[2,25],14:[2,25],15:[2,25],17:[2,25],19:[2,25],21:[2,25],23:[2,25],31:[2,25],32:[2,25],37:[2,25],38:[2,25],45:[2,25],48:[2,25],57:[2,25],61:[2,25],62:[2,25],63:[2,25],64:[2,25],65:[2,25],66:[2,25],70:[2,25],71:[2,25],73:[2,25],75:[2,25],76:[2,25]},{5:[2,26],11:[2,26],13:[2,26],14:[2,26],15:[2,26],17:[2,26],19:[2,26],21:[2,26],23:[2,26],31:[2,26],32:[2,26],37:[2,26],38:[2,26],45:[2,26],48:[2,26],57:[2,26],61:[2,26],62:[2,26],63:[2,26],64:[2,26],65:[2,26],66:[2,26],70:[2,26],71:[2,26],73:[2,26],75:[2,26],76:[2,26]},{5:[2,27],11:[2,27],13:[2,27],14:[2,27],15:[2,27],17:[2,27],19:[2,27],21:[2,27],23:[2,27],31:[2,27],32:[2,27],37:[2,27],38:[2,27],45:[2,27],48:[2,27],57:[2,27],61:[2,27],62:[2,27],63:[2,27],64:[2,27],65:[2,27],66:[2,27],70:[2,27],71:[2,27],73:[2,27],75:[2,27],76:[2,27]},{5:[2,28],11:[2,28],13:[2,28],14:[2,28],15:[2,28],17:[2,28],19:[2,28],21:[2,28],23:[2,28],31:[2,28],32:[2,28],37:[2,28],38:[2,28],45:[2,28],48:[2,28],57:[2,28],61:[2,28],62:[2,28],63:[2,28],64:[2,28],65:[2,28],66:[2,28],70:[2,28],71:[2,28],73:[2,28],75:[2,28],76:[2,28]},{5:[2,29],11:[2,29],13:[2,29],14:[2,29],15:[2,29],17:[2,29],19:[2,29],21:[2,29],23:[2,29],31:[2,29],32:[2,29],37:[2,29],38:[2,29],45:[2,29],48:[2,29],57:[2,29],61:[2,29],62:[2,29],63:[2,29],64:[2,29],65:[2,29],66:[2,29],70:[2,29],71:[2,29],73:[2,29],75:[2,29],76:[2,29]},{5:[2,30],11:[2,30],13:[2,30],14:[2,30],15:[2,30],17:[2,30],19:[2,30],21:[2,30],23:[2,30],31:[2,30],32:[2,30],37:[2,30],38:[2,30],45:[2,30],48:[2,30],57:[2,30],61:[2,30],62:[2,30],63:[2,30],64:[2,30],65:[2,30],66:[2,30],70:[2,30],71:[2,30],73:[2,30],75:[2,30],76:[2,30]},{5:[2,31],11:[2,31],13:[2,31],14:[2,31],15:[2,31],17:[2,31],19:[2,31],21:[2,31],23:[2,31],31:[2,31],32:[2,31],37:[2,31],38:[2,31],45:[2,31],48:[2,31],57:[2,31],61:[2,31],62:[2,31],63:[2,31],64:[2,31],65:[2,31],66:[2,31],70:[2,31],71:[2,31],73:[2,31],75:[2,31],76:[2,31]},{5:[2,32],11:[2,32],13:[2,32],14:[2,32],15:[2,32],17:[2,32],19:[2,32],21:[2,32],23:[2,32],31:[2,32],32:[2,32],37:[2,32],38:[2,32],45:[2,32],48:[2,32],57:[2,32],61:[2,32],62:[2,32],63:[2,32],64:[2,32],65:[2,32],66:[2,32],70:[2,32],71:[2,32],73:[2,32],75:[2,32],76:[2,32]},{5:[2,33],11:[2,33],13:[2,33],14:[2,33],15:[2,33],17:[2,33],19:[2,33],21:[2,33],23:[2,33],31:[2,33],32:[2,33],37:[2,33],38:[2,33],45:[2,33],48:[2,33],57:[2,33],61:[2,33],62:[2,33],63:[2,33],64:[2,33],65:[2,33],66:[2,33],70:[2,33],71:[2,33],73:[2,33],75:[2,33],76:[2,33]},{5:[2,34],11:[2,34],13:[2,34],14:[2,34],15:[2,34],17:[2,34],19:[2,34],21:[2,34],23:[2,34],31:[2,34],32:[2,34],37:[2,34],38:[2,34],45:[2,34],48:[2,34],57:[2,34],61:[2,34],62:[2,34],63:[2,34],64:[2,34],65:[2,34],66:[2,34],70:[2,34],71:[2,34],73:[2,34],75:[2,34],76:[2,34]},{40:63,41:[2,79],57:[2,79],59:[1,67],61:[2,79],62:[2,79],63:[2,79],64:[2,79],65:[2,79],66:[2,79],67:[1,64],68:[1,65],69:[1,66]},{27:69,39:38,43:68,47:70,48:[1,48],49:49,57:[1,55],61:[1,50],62:[1,51],63:[1,52],64:[1,53],65:[1,54],66:[1,56],76:[1,57]},{38:[1,73],45:[1,71],48:[1,74],49:75,51:72,76:[1,57]},{48:[1,78],52:76,54:77,56:[1,79],57:[1,80],58:[1,81]},{5:[2,35],11:[2,35],13:[2,35],14:[2,35],15:[2,35],17:[2,35],19:[2,35],21:[2,35],23:[2,35],31:[2,35],32:[2,35],37:[2,35],38:[2,35],45:[2,35],48:[2,35],57:[2,35],61:[2,35],62:[2,35],63:[2,35],64:[2,35],65:[2,35],66:[2,35],70:[2,35],71:[2,35],73:[2,35],75:[2,35],76:[2,35]},{37:[1,82],38:[1,83]},{48:[1,84]},{22:[1,86],72:85},{74:[1,87]},{48:[1,89],61:[1,90],75:[1,88]},{41:[2,46],57:[2,46],59:[2,46],61:[2,46],62:[2,46],63:[2,46],64:[2,46],65:[2,46],66:[2,46],67:[2,46],68:[2,46],69:[2,46]},{41:[2,47],48:[1,91],57:[2,47],59:[2,47],61:[2,47],62:[2,47],63:[2,47],64:[2,47],65:[2,47],66:[2,47],67:[2,47],68:[2,47],69:[2,47]},{38:[2,68],45:[2,68],48:[2,68],76:[2,68]},{38:[2,69],45:[2,69],48:[2,69],76:[2,69]},{38:[2,70],45:[2,70],48:[2,70],76:[2,70]},{38:[2,71],45:[2,71],48:[2,71],76:[2,71]},{38:[2,72],45:[2,72],48:[2,72],76:[2,72]},{38:[2,73],45:[2,73],48:[2,73],76:[2,73]},{38:[2,74],45:[2,74],48:[2,74],76:[2,74]},{41:[2,95],48:[2,95],57:[2,95],59:[2,95],61:[2,95],62:[2,95],63:[2,95],64:[2,95],65:[2,95],66:[2,95],67:[2,95],68:[2,95],69:[2,95],75:[1,93],77:92,79:[1,94],80:[1,95],81:[2,95]},{5:[2,16],11:[2,16],13:[2,16],14:[2,16],15:[2,16],17:[2,16],19:[2,16],21:[2,16]},{22:[1,96]},{5:[2,19],11:[2,19],13:[2,19],14:[2,19],15:[2,19],17:[2,19],19:[2,19],21:[2,19],22:[2,19]},{24:[1,97]},{5:[2,24],11:[2,24],13:[2,24],14:[2,24],15:[2,24],17:[2,24],19:[2,24],21:[2,24],23:[2,24],31:[2,24],32:[2,24],37:[2,24],38:[2,24],45:[2,24],48:[2,24],57:[2,24],61:[2,24],62:[2,24],63:[2,24],64:[2,24],65:[2,24],66:[2,24],70:[2,24],71:[2,24],73:[2,24],75:[2,24],76:[2,24]},{41:[1,98],47:99,57:[1,55],61:[1,50],62:[1,51],63:[1,52],64:[1,53],65:[1,54],66:[1,56]},{5:[2,75],11:[2,75],13:[2,75],14:[2,75],15:[2,75],17:[2,75],19:[2,75],21:[2,75],23:[2,75],31:[2,75],32:[2,75],37:[2,75],38:[2,75],41:[2,75],45:[2,75],48:[2,75],57:[2,75],61:[2,75],62:[2,75],63:[2,75],64:[2,75],65:[2,75],66:[2,75],70:[2,75],71:[2,75],73:[2,75],75:[2,75],76:[2,75]},{5:[2,76],11:[2,76],13:[2,76],14:[2,76],15:[2,76],17:[2,76],19:[2,76],21:[2,76],23:[2,76],31:[2,76],32:[2,76],37:[2,76],38:[2,76],41:[2,76],45:[2,76],48:[2,76],57:[2,76],61:[2,76],62:[2,76],63:[2,76],64:[2,76],65:[2,76],66:[2,76],70:[2,76],71:[2,76],73:[2,76],75:[2,76],76:[2,76]},{5:[2,77],11:[2,77],13:[2,77],14:[2,77],15:[2,77],17:[2,77],19:[2,77],21:[2,77],23:[2,77],31:[2,77],32:[2,77],37:[2,77],38:[2,77],41:[2,77],45:[2,77],48:[2,77],57:[2,77],61:[2,77],62:[2,77],63:[2,77],64:[2,77],65:[2,77],66:[2,77],70:[2,77],71:[2,77],73:[2,77],75:[2,77],76:[2,77]},{5:[2,78],11:[2,78],13:[2,78],14:[2,78],15:[2,78],17:[2,78],19:[2,78],21:[2,78],23:[2,78],31:[2,78],32:[2,78],37:[2,78],38:[2,78],41:[2,78],45:[2,78],48:[2,78],57:[2,78],61:[2,78],62:[2,78],63:[2,78],64:[2,78],65:[2,78],66:[2,78],70:[2,78],71:[2,78],73:[2,78],75:[2,78],76:[2,78]},{44:[1,101],46:[1,100]},{44:[2,42],46:[2,42]},{38:[1,73],48:[1,74],49:75,51:72,76:[1,57]},{27:69,39:38,43:102,47:70,48:[1,48],49:49,57:[1,55],61:[1,50],62:[1,51],63:[1,52],64:[1,53],65:[1,54],66:[1,56],76:[1,57]},{41:[2,49],57:[2,49],59:[2,49],61:[2,49],62:[2,49],63:[2,49],64:[2,49],65:[2,49],66:[2,49],67:[2,49],68:[2,49],69:[2,49]},{48:[1,78],52:103,54:77,56:[1,79],57:[1,80],58:[1,81]},{41:[2,52],57:[2,52],59:[2,52],61:[2,52],62:[2,52],63:[2,52],64:[2,52],65:[2,52],66:[2,52],67:[2,52],68:[2,52],69:[2,52]},{41:[2,55],48:[1,104],57:[2,55],59:[2,55],61:[2,55],62:[2,55],63:[2,55],64:[2,55],65:[2,55],66:[2,55],67:[2,55],68:[2,55],69:[2,55]},{5:[2,63],11:[2,63],13:[2,63],14:[2,63],15:[2,63],17:[2,63],19:[2,63],21:[2,63],23:[2,63],31:[2,63],32:[2,63],37:[2,63],38:[2,63],45:[2,63],48:[2,63],53:105,57:[2,63],59:[1,106],61:[2,63],62:[2,63],63:[2,63],64:[2,63],65:[2,63],66:[2,63],70:[2,63],71:[2,63],73:[2,63],75:[2,63],76:[2,63]},{5:[2,65],11:[2,65],13:[2,65],14:[2,65],15:[2,65],17:[2,65],19:[2,65],21:[2,65],23:[2,65],31:[2,65],32:[2,65],37:[2,65],38:[2,65],45:[2,65],48:[2,65],55:107,57:[2,65],59:[2,65],60:[1,108],61:[2,65],62:[2,65],63:[2,65],64:[2,65],65:[2,65],66:[2,65],70:[2,65],71:[2,65],73:[2,65],75:[2,65],76:[2,65]},{5:[2,59],11:[2,59],13:[2,59],14:[2,59],15:[2,59],17:[2,59],19:[2,59],21:[2,59],23:[2,59],31:[2,59],32:[2,59],37:[2,59],38:[2,59],45:[2,59],48:[2,59],57:[2,59],59:[2,59],60:[2,59],61:[2,59],62:[2,59],63:[2,59],64:[2,59],65:[2,59],66:[2,59],70:[2,59],71:[2,59],73:[2,59],75:[2,59],76:[2,59]},{5:[2,60],11:[2,60],13:[2,60],14:[2,60],15:[2,60],17:[2,60],19:[2,60],21:[2,60],23:[2,60],31:[2,60],32:[2,60],37:[2,60],38:[2,60],45:[2,60],48:[2,60],57:[2,60],59:[2,60],60:[2,60],61:[2,60],62:[2,60],63:[2,60],64:[2,60],65:[2,60],66:[2,60],70:[2,60],71:[2,60],73:[2,60],75:[2,60],76:[2,60]},{5:[2,61],11:[2,61],13:[2,61],14:[2,61],15:[2,61],17:[2,61],19:[2,61],21:[2,61],23:[2,61],31:[2,61],32:[2,61],37:[2,61],38:[2,61],45:[2,61],48:[2,61],57:[2,61],59:[2,61],60:[2,61],61:[2,61],62:[2,61],63:[2,61],64:[2,61],65:[2,61],66:[2,61],70:[2,61],71:[2,61],73:[2,61],75:[2,61],76:[2,61]},{5:[2,62],11:[2,62],13:[2,62],14:[2,62],15:[2,62],17:[2,62],19:[2,62],21:[2,62],23:[2,62],31:[2,62],32:[2,62],37:[2,62],38:[2,62],45:[2,62],48:[2,62],57:[2,62],59:[2,62],60:[2,62],61:[2,62],62:[2,62],63:[2,62],64:[2,62],65:[2,62],66:[2,62],70:[2,62],71:[2,62],73:[2,62],75:[2,62],76:[2,62]},{23:[1,110],37:[1,109],38:[1,111]},{37:[1,112],38:[1,113]},{25:[1,115],70:[1,114]},{25:[1,117],71:[1,116]},{25:[2,83],71:[2,83]},{73:[1,118]},{5:[2,86],11:[2,86],13:[2,86],14:[2,86],15:[2,86],17:[2,86],19:[2,86],21:[2,86],23:[2,86],31:[2,86],32:[2,86],37:[2,86],38:[2,86],45:[2,86],48:[2,86],57:[2,86],61:[2,86],62:[2,86],63:[2,86],64:[2,86],65:[2,86],66:[2,86],70:[2,86],71:[2,86],73:[2,86],75:[2,86],76:[2,86]},{75:[1,119]},{48:[1,120]},{50:[1,121]},{41:[2,96],48:[2,96],57:[2,96],59:[2,96],61:[2,96],62:[2,96],63:[2,96],64:[2,96],65:[2,96],66:[2,96],67:[2,96],68:[2,96],69:[2,96],78:122,81:[1,123]},{41:[2,90],48:[2,90],57:[2,90],59:[2,90],61:[2,90],62:[2,90],63:[2,90],64:[2,90],65:[2,90],66:[2,90],67:[2,90],68:[2,90],69:[2,90],75:[1,124],81:[2,90]},{41:[2,92],48:[2,92],57:[2,92],59:[2,92],61:[2,92],62:[2,92],63:[2,92],64:[2,92],65:[2,92],66:[2,92],67:[2,92],68:[2,92],69:[2,92],79:[1,125],81:[2,92]},{41:[2,94],48:[2,94],57:[2,94],59:[2,94],61:[2,94],62:[2,94],63:[2,94],64:[2,94],65:[2,94],66:[2,94],67:[2,94],68:[2,94],69:[2,94],81:[2,94]},{5:[2,20],11:[2,20],13:[2,20],14:[2,20],15:[2,20],17:[2,20],19:[2,20],21:[2,20],22:[2,20]},{5:[2,22],11:[2,22],13:[2,22],14:[2,22],15:[2,22],17:[2,22],19:[2,22],21:[2,22],25:[2,22]},{42:126,48:[1,127]},{38:[1,73],48:[1,74],49:75,51:128,76:[1,57]},{5:[2,79],11:[2,79],13:[2,79],14:[2,79],15:[2,79],17:[2,79],19:[2,79],21:[2,79],23:[2,79],31:[2,79],32:[2,79],37:[2,79],38:[2,79],40:129,45:[2,79],48:[2,79],57:[2,79],59:[1,67],61:[2,79],62:[2,79],63:[2,79],64:[2,79],65:[2,79],66:[2,79],67:[1,64],68:[1,65],69:[1,66],70:[2,79],71:[2,79],73:[2,79],75:[2,79],76:[2,79]},{27:130,39:38,47:70,48:[1,48],49:49,57:[1,55],61:[1,50],62:[1,51],63:[1,52],64:[1,53],65:[1,54],66:[1,56],76:[1,57]},{44:[1,101],46:[1,131]},{38:[2,63],53:132,59:[1,106]},{50:[1,133]},{5:[2,57],11:[2,57],13:[2,57],14:[2,57],15:[2,57],17:[2,57],19:[2,57],21:[2,57],23:[2,57],31:[2,57],32:[2,57],37:[2,57],38:[2,57],45:[2,57],48:[2,57],57:[2,57],61:[2,57],62:[2,57],63:[2,57],64:[2,57],65:[2,57],66:[2,57],70:[2,57],71:[2,57],73:[2,57],75:[2,57],76:[2,57]},{5:[2,64],11:[2,64],13:[2,64],14:[2,64],15:[2,64],17:[2,64],19:[2,64],21:[2,64],23:[2,64],31:[2,64],32:[2,64],37:[2,64],38:[2,64],45:[2,64],48:[2,64],57:[2,64],61:[2,64],62:[2,64],63:[2,64],64:[2,64],65:[2,64],66:[2,64],70:[2,64],71:[2,64],73:[2,64],75:[2,64],76:[2,64]},{5:[2,58],11:[2,58],13:[2,58],14:[2,58],15:[2,58],17:[2,58],19:[2,58],21:[2,58],23:[2,58],31:[2,58],32:[2,58],37:[2,58],38:[2,58],45:[2,58],48:[2,58],57:[2,58],59:[2,58],61:[2,58],62:[2,58],63:[2,58],64:[2,58],65:[2,58],66:[2,58],70:[2,58],71:[2,58],73:[2,58],75:[2,58],76:[2,58]},{5:[2,66],11:[2,66],13:[2,66],14:[2,66],15:[2,66],17:[2,66],19:[2,66],21:[2,66],23:[2,66],31:[2,66],32:[2,66],37:[2,66],38:[2,66],45:[2,66],48:[2,66],57:[2,66],59:[2,66],61:[2,66],62:[2,66],63:[2,66],64:[2,66],65:[2,66],66:[2,66],70:[2,66],71:[2,66],73:[2,66],75:[2,66],76:[2,66]},{5:[2,36],11:[2,36],13:[2,36],14:[2,36],15:[2,36],17:[2,36],19:[2,36],21:[2,36],23:[2,36],31:[2,36],32:[2,36],37:[2,36],38:[2,36],45:[2,36],48:[2,36],57:[2,36],61:[2,36],62:[2,36],63:[2,36],64:[2,36],65:[2,36],66:[2,36],70:[2,36],71:[2,36],73:[2,36],75:[2,36],76:[2,36]},{5:[2,37],11:[2,37],13:[2,37],14:[2,37],15:[2,37],17:[2,37],19:[2,37],21:[2,37],23:[2,37],31:[2,37],32:[2,37],37:[2,37],38:[2,37],45:[2,37],48:[2,37],57:[2,37],61:[2,37],62:[2,37],63:[2,37],64:[2,37],65:[2,37],66:[2,37],70:[2,37],71:[2,37],73:[2,37],75:[2,37],76:[2,37]},{5:[2,39],11:[2,39],13:[2,39],14:[2,39],15:[2,39],17:[2,39],19:[2,39],21:[2,39],23:[2,39],31:[2,39],32:[2,39],37:[2,39],38:[2,39],45:[2,39],48:[2,39],57:[2,39],61:[2,39],62:[2,39],63:[2,39],64:[2,39],65:[2,39],66:[2,39],70:[2,39],71:[2,39],73:[2,39],75:[2,39],76:[2,39]},{5:[2,38],11:[2,38],13:[2,38],14:[2,38],15:[2,38],17:[2,38],19:[2,38],21:[2,38],23:[2,38],31:[2,38],32:[2,38],37:[2,38],38:[2,38],45:[2,38],48:[2,38],57:[2,38],61:[2,38],62:[2,38],63:[2,38],64:[2,38],65:[2,38],66:[2,38],70:[2,38],71:[2,38],73:[2,38],75:[2,38],76:[2,38]},{5:[2,40],11:[2,40],13:[2,40],14:[2,40],15:[2,40],17:[2,40],19:[2,40],21:[2,40],23:[2,40],31:[2,40],32:[2,40],37:[2,40],38:[2,40],45:[2,40],48:[2,40],57:[2,40],61:[2,40],62:[2,40],63:[2,40],64:[2,40],65:[2,40],66:[2,40],70:[2,40],71:[2,40],73:[2,40],75:[2,40],76:[2,40]},{5:[2,80],11:[2,80],13:[2,80],14:[2,80],15:[2,80],17:[2,80],19:[2,80],21:[2,80],23:[2,80],31:[2,80],32:[2,80],37:[2,80],38:[2,80],45:[2,80],48:[2,80],57:[2,80],61:[2,80],62:[2,80],63:[2,80],64:[2,80],65:[2,80],66:[2,80],70:[2,80],71:[2,80],73:[2,80],75:[2,80],76:[2,80]},{48:[1,134]},{5:[2,82],11:[2,82],13:[2,82],14:[2,82],15:[2,82],17:[2,82],19:[2,82],21:[2,82],23:[2,82],31:[2,82],32:[2,82],37:[2,82],38:[2,82],45:[2,82],48:[2,82],57:[2,82],61:[2,82],62:[2,82],63:[2,82],64:[2,82],65:[2,82],66:[2,82],70:[2,82],71:[2,82],73:[2,82],75:[2,82],76:[2,82]},{22:[1,135]},{5:[2,85],11:[2,85],13:[2,85],14:[2,85],15:[2,85],17:[2,85],19:[2,85],21:[2,85],23:[2,85],31:[2,85],32:[2,85],37:[2,85],38:[2,85],45:[2,85],48:[2,85],57:[2,85],61:[2,85],62:[2,85],63:[2,85],64:[2,85],65:[2,85],66:[2,85],70:[2,85],71:[2,85],73:[2,85],75:[2,85],76:[2,85]},{5:[2,87],11:[2,87],13:[2,87],14:[2,87],15:[2,87],17:[2,87],19:[2,87],21:[2,87],23:[2,87],31:[2,87],32:[2,87],37:[2,87],38:[2,87],45:[2,87],48:[2,87],57:[2,87],61:[2,87],62:[2,87],63:[2,87],64:[2,87],65:[2,87],66:[2,87],70:[2,87],71:[2,87],73:[2,87],75:[2,87],76:[2,87]},{75:[1,136]},{48:[1,137]},{41:[2,89],48:[2,89],57:[2,89],59:[2,89],61:[2,89],62:[2,89],63:[2,89],64:[2,89],65:[2,89],66:[2,89],67:[2,89],68:[2,89],69:[2,89]},{41:[2,97],48:[2,97],57:[2,97],59:[2,97],61:[2,97],62:[2,97],63:[2,97],64:[2,97],65:[2,97],66:[2,97],67:[2,97],68:[2,97],69:[2,97]},{41:[2,91],48:[2,91],57:[2,91],59:[2,91],61:[2,91],62:[2,91],63:[2,91],64:[2,91],65:[2,91],66:[2,91],67:[2,91],68:[2,91],69:[2,91],81:[2,91]},{41:[2,93],48:[2,93],57:[2,93],59:[2,93],61:[2,93],62:[2,93],63:[2,93],64:[2,93],65:[2,93],66:[2,93],67:[2,93],68:[2,93],69:[2,93],81:[2,93]},{5:[2,41],11:[2,41],13:[2,41],14:[2,41],15:[2,41],17:[2,41],19:[2,41],21:[2,41],23:[2,41],31:[2,41],32:[2,41],37:[2,41],38:[2,41],44:[2,41],45:[2,41],46:[2,41],48:[2,41],57:[2,41],61:[2,41],62:[2,41],63:[2,41],64:[2,41],65:[2,41],66:[2,41],70:[2,41],71:[2,41],73:[2,41],75:[2,41],76:[2,41]},{5:[2,67],11:[2,67],13:[2,67],14:[2,67],15:[2,67],17:[2,67],19:[2,67],21:[2,67],23:[2,67],31:[2,67],32:[2,67],37:[2,67],38:[2,67],44:[2,67],45:[2,67],46:[2,67],48:[2,67],57:[2,67],61:[2,67],62:[2,67],63:[2,67],64:[2,67],65:[2,67],66:[2,67],70:[2,67],71:[2,67],73:[2,67],75:[2,67],76:[2,67]},{41:[2,50],57:[2,50],59:[2,50],61:[2,50],62:[2,50],63:[2,50],64:[2,50],65:[2,50],66:[2,50],67:[2,50],68:[2,50],69:[2,50]},{5:[2,44],11:[2,44],13:[2,44],14:[2,44],15:[2,44],17:[2,44],19:[2,44],21:[2,44],23:[2,44],31:[2,44],32:[2,44],37:[2,44],38:[2,44],45:[2,44],48:[2,44],57:[2,44],61:[2,44],62:[2,44],63:[2,44],64:[2,44],65:[2,44],66:[2,44],70:[2,44],71:[2,44],73:[2,44],75:[2,44],76:[2,44]},{44:[2,43],46:[2,43]},{5:[2,79],11:[2,79],13:[2,79],14:[2,79],15:[2,79],17:[2,79],19:[2,79],21:[2,79],23:[2,79],31:[2,79],32:[2,79],37:[2,79],38:[2,79],40:138,45:[2,79],48:[2,79],57:[2,79],59:[1,67],61:[2,79],62:[2,79],63:[2,79],64:[2,79],65:[2,79],66:[2,79],67:[1,64],68:[1,65],69:[1,66],70:[2,79],71:[2,79],73:[2,79],75:[2,79],76:[2,79]},{38:[1,139]},{48:[1,140]},{70:[1,141]},{25:[2,84],71:[2,84]},{5:[2,88],11:[2,88],13:[2,88],14:[2,88],15:[2,88],17:[2,88],19:[2,88],21:[2,88],23:[2,88],31:[2,88],32:[2,88],37:[2,88],38:[2,88],45:[2,88],48:[2,88],57:[2,88],61:[2,88],62:[2,88],63:[2,88],64:[2,88],65:[2,88],66:[2,88],70:[2,88],71:[2,88],73:[2,88],75:[2,88],76:[2,88]},{41:[2,48],57:[2,48],59:[2,48],61:[2,48],62:[2,48],63:[2,48],64:[2,48],65:[2,48],66:[2,48],67:[2,48],68:[2,48],69:[2,48]},{5:[2,45],11:[2,45],13:[2,45],14:[2,45],15:[2,45],17:[2,45],19:[2,45],21:[2,45],23:[2,45],31:[2,45],32:[2,45],37:[2,45],38:[2,45],45:[2,45],48:[2,45],57:[2,45],61:[2,45],62:[2,45],63:[2,45],64:[2,45],65:[2,45],66:[2,45],70:[2,45],71:[2,45],73:[2,45],75:[2,45],76:[2,45]},{48:[1,142],49:143,76:[1,57]},{41:[2,56],57:[2,56],59:[2,56],61:[2,56],62:[2,56],63:[2,56],64:[2,56],65:[2,56],66:[2,56],67:[2,56],68:[2,56],69:[2,56]},{5:[2,81],11:[2,81],13:[2,81],14:[2,81],15:[2,81],17:[2,81],19:[2,81],21:[2,81],23:[2,81],31:[2,81],32:[2,81],37:[2,81],38:[2,81],45:[2,81],48:[2,81],57:[2,81],61:[2,81],62:[2,81],63:[2,81],64:[2,81],65:[2,81],66:[2,81],70:[2,81],71:[2,81],73:[2,81],75:[2,81],76:[2,81]},{41:[2,51],57:[2,51],59:[2,51],61:[2,51],62:[2,51],63:[2,51],64:[2,51],65:[2,51],66:[2,51],67:[2,51],68:[2,51],69:[2,51]},{41:[2,53],48:[1,144],57:[2,53],59:[2,53],61:[2,53],62:[2,53],63:[2,53],64:[2,53],65:[2,53],66:[2,53],67:[2,53],68:[2,53],69:[2,53]},{50:[1,145]},{48:[1,146]},{41:[2,54],57:[2,54],59:[2,54],61:[2,54],62:[2,54],63:[2,54],64:[2,54],65:[2,54],66:[2,54],67:[2,54],68:[2,54],69:[2,54]}],
|
|
defaultActions: {10:[2,1]},
|
|
parseError: function parseError(str, hash) {
|
|
if (hash.recoverable) {
|
|
this.trace(str);
|
|
} else {
|
|
throw new Error(str);
|
|
}
|
|
},
|
|
parse: function parse(input) {
|
|
var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
|
|
var args = lstack.slice.call(arguments, 1);
|
|
this.lexer.setInput(input);
|
|
this.lexer.yy = this.yy;
|
|
this.yy.lexer = this.lexer;
|
|
this.yy.parser = this;
|
|
if (typeof this.lexer.yylloc == 'undefined') {
|
|
this.lexer.yylloc = {};
|
|
}
|
|
var yyloc = this.lexer.yylloc;
|
|
lstack.push(yyloc);
|
|
var ranges = this.lexer.options && this.lexer.options.ranges;
|
|
if (typeof this.yy.parseError === 'function') {
|
|
this.parseError = this.yy.parseError;
|
|
} else {
|
|
this.parseError = Object.getPrototypeOf(this).parseError;
|
|
}
|
|
function popStack(n) {
|
|
stack.length = stack.length - 2 * n;
|
|
vstack.length = vstack.length - n;
|
|
lstack.length = lstack.length - n;
|
|
}
|
|
function lex() {
|
|
var token;
|
|
token = self.lexer.lex() || EOF;
|
|
if (typeof token !== 'number') {
|
|
token = self.symbols_[token] || token;
|
|
}
|
|
return token;
|
|
}
|
|
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
|
|
while (true) {
|
|
state = stack[stack.length - 1];
|
|
if (this.defaultActions[state]) {
|
|
action = this.defaultActions[state];
|
|
} else {
|
|
if (symbol === null || typeof symbol == 'undefined') {
|
|
symbol = lex();
|
|
}
|
|
action = table[state] && table[state][symbol];
|
|
}
|
|
if (typeof action === 'undefined' || !action.length || !action[0]) {
|
|
var errStr = '';
|
|
expected = [];
|
|
for (p in table[state]) {
|
|
if (this.terminals_[p] && p > TERROR) {
|
|
expected.push('\'' + this.terminals_[p] + '\'');
|
|
}
|
|
}
|
|
if (this.lexer.showPosition) {
|
|
errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
|
|
} else {
|
|
errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
|
|
}
|
|
this.parseError(errStr, {
|
|
text: this.lexer.match,
|
|
token: this.terminals_[symbol] || symbol,
|
|
line: this.lexer.yylineno,
|
|
loc: yyloc,
|
|
expected: expected
|
|
});
|
|
}
|
|
if (action[0] instanceof Array && action.length > 1) {
|
|
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
|
|
}
|
|
switch (action[0]) {
|
|
case 1:
|
|
stack.push(symbol);
|
|
vstack.push(this.lexer.yytext);
|
|
lstack.push(this.lexer.yylloc);
|
|
stack.push(action[1]);
|
|
symbol = null;
|
|
if (!preErrorSymbol) {
|
|
yyleng = this.lexer.yyleng;
|
|
yytext = this.lexer.yytext;
|
|
yylineno = this.lexer.yylineno;
|
|
yyloc = this.lexer.yylloc;
|
|
if (recovering > 0) {
|
|
recovering--;
|
|
}
|
|
} else {
|
|
symbol = preErrorSymbol;
|
|
preErrorSymbol = null;
|
|
}
|
|
break;
|
|
case 2:
|
|
len = this.productions_[action[1]][1];
|
|
yyval.$ = vstack[vstack.length - len];
|
|
yyval._$ = {
|
|
first_line: lstack[lstack.length - (len || 1)].first_line,
|
|
last_line: lstack[lstack.length - 1].last_line,
|
|
first_column: lstack[lstack.length - (len || 1)].first_column,
|
|
last_column: lstack[lstack.length - 1].last_column
|
|
};
|
|
if (ranges) {
|
|
yyval._$.range = [
|
|
lstack[lstack.length - (len || 1)].range[0],
|
|
lstack[lstack.length - 1].range[1]
|
|
];
|
|
}
|
|
r = this.performAction.apply(yyval, [
|
|
yytext,
|
|
yyleng,
|
|
yylineno,
|
|
this.yy,
|
|
action[1],
|
|
vstack,
|
|
lstack
|
|
].concat(args));
|
|
if (typeof r !== 'undefined') {
|
|
return r;
|
|
}
|
|
if (len) {
|
|
stack = stack.slice(0, -1 * len * 2);
|
|
vstack = vstack.slice(0, -1 * len);
|
|
lstack = lstack.slice(0, -1 * len);
|
|
}
|
|
stack.push(this.productions_[action[1]][0]);
|
|
vstack.push(yyval.$);
|
|
lstack.push(yyval._$);
|
|
newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
|
|
stack.push(newState);
|
|
break;
|
|
case 3:
|
|
return true;
|
|
}
|
|
}
|
|
return true;
|
|
}};
|
|
|
|
Vex.L("Starting parser.");
|
|
/* generated by jison-lex 0.2.1 */
|
|
var lexer = (function(){
|
|
var lexer = {
|
|
|
|
EOF:1,
|
|
|
|
parseError:function parseError(str, hash) {
|
|
if (this.yy.parser) {
|
|
this.yy.parser.parseError(str, hash);
|
|
} else {
|
|
throw new Error(str);
|
|
}
|
|
},
|
|
|
|
// resets the lexer, sets new input
|
|
setInput:function (input) {
|
|
this._input = input;
|
|
this._more = this._backtrack = this.done = false;
|
|
this.yylineno = this.yyleng = 0;
|
|
this.yytext = this.matched = this.match = '';
|
|
this.conditionStack = ['INITIAL'];
|
|
this.yylloc = {
|
|
first_line: 1,
|
|
first_column: 0,
|
|
last_line: 1,
|
|
last_column: 0
|
|
};
|
|
if (this.options.ranges) {
|
|
this.yylloc.range = [0,0];
|
|
}
|
|
this.offset = 0;
|
|
return this;
|
|
},
|
|
|
|
// consumes and returns one char from the input
|
|
input:function () {
|
|
var ch = this._input[0];
|
|
this.yytext += ch;
|
|
this.yyleng++;
|
|
this.offset++;
|
|
this.match += ch;
|
|
this.matched += ch;
|
|
var lines = ch.match(/(?:\r\n?|\n).*/g);
|
|
if (lines) {
|
|
this.yylineno++;
|
|
this.yylloc.last_line++;
|
|
} else {
|
|
this.yylloc.last_column++;
|
|
}
|
|
if (this.options.ranges) {
|
|
this.yylloc.range[1]++;
|
|
}
|
|
|
|
this._input = this._input.slice(1);
|
|
return ch;
|
|
},
|
|
|
|
// unshifts one char (or a string) into the input
|
|
unput:function (ch) {
|
|
var len = ch.length;
|
|
var lines = ch.split(/(?:\r\n?|\n)/g);
|
|
|
|
this._input = ch + this._input;
|
|
this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);
|
|
//this.yyleng -= len;
|
|
this.offset -= len;
|
|
var oldLines = this.match.split(/(?:\r\n?|\n)/g);
|
|
this.match = this.match.substr(0, this.match.length - 1);
|
|
this.matched = this.matched.substr(0, this.matched.length - 1);
|
|
|
|
if (lines.length - 1) {
|
|
this.yylineno -= lines.length - 1;
|
|
}
|
|
var r = this.yylloc.range;
|
|
|
|
this.yylloc = {
|
|
first_line: this.yylloc.first_line,
|
|
last_line: this.yylineno + 1,
|
|
first_column: this.yylloc.first_column,
|
|
last_column: lines ?
|
|
(lines.length === oldLines.length ? this.yylloc.first_column : 0)
|
|
+ oldLines[oldLines.length - lines.length].length - lines[0].length :
|
|
this.yylloc.first_column - len
|
|
};
|
|
|
|
if (this.options.ranges) {
|
|
this.yylloc.range = [r[0], r[0] + this.yyleng - len];
|
|
}
|
|
this.yyleng = this.yytext.length;
|
|
return this;
|
|
},
|
|
|
|
// When called from action, caches matched text and appends it on next action
|
|
more:function () {
|
|
this._more = true;
|
|
return this;
|
|
},
|
|
|
|
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
|
|
reject:function () {
|
|
if (this.options.backtrack_lexer) {
|
|
this._backtrack = true;
|
|
} else {
|
|
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
|
|
text: "",
|
|
token: null,
|
|
line: this.yylineno
|
|
});
|
|
|
|
}
|
|
return this;
|
|
},
|
|
|
|
// retain first n characters of the match
|
|
less:function (n) {
|
|
this.unput(this.match.slice(n));
|
|
},
|
|
|
|
// displays already matched input, i.e. for error messages
|
|
pastInput:function () {
|
|
var past = this.matched.substr(0, this.matched.length - this.match.length);
|
|
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
|
|
},
|
|
|
|
// displays upcoming input, i.e. for error messages
|
|
upcomingInput:function () {
|
|
var next = this.match;
|
|
if (next.length < 20) {
|
|
next += this._input.substr(0, 20-next.length);
|
|
}
|
|
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
|
|
},
|
|
|
|
// displays the character position where the lexing error occurred, i.e. for error messages
|
|
showPosition:function () {
|
|
var pre = this.pastInput();
|
|
var c = new Array(pre.length + 1).join("-");
|
|
return pre + this.upcomingInput() + "\n" + c + "^";
|
|
},
|
|
|
|
// test the lexed token: return FALSE when not a match, otherwise return token
|
|
test_match:function (match, indexed_rule) {
|
|
var token,
|
|
lines,
|
|
backup;
|
|
|
|
if (this.options.backtrack_lexer) {
|
|
// save context
|
|
backup = {
|
|
yylineno: this.yylineno,
|
|
yylloc: {
|
|
first_line: this.yylloc.first_line,
|
|
last_line: this.last_line,
|
|
first_column: this.yylloc.first_column,
|
|
last_column: this.yylloc.last_column
|
|
},
|
|
yytext: this.yytext,
|
|
match: this.match,
|
|
matches: this.matches,
|
|
matched: this.matched,
|
|
yyleng: this.yyleng,
|
|
offset: this.offset,
|
|
_more: this._more,
|
|
_input: this._input,
|
|
yy: this.yy,
|
|
conditionStack: this.conditionStack.slice(0),
|
|
done: this.done
|
|
};
|
|
if (this.options.ranges) {
|
|
backup.yylloc.range = this.yylloc.range.slice(0);
|
|
}
|
|
}
|
|
|
|
lines = match[0].match(/(?:\r\n?|\n).*/g);
|
|
if (lines) {
|
|
this.yylineno += lines.length;
|
|
}
|
|
this.yylloc = {
|
|
first_line: this.yylloc.last_line,
|
|
last_line: this.yylineno + 1,
|
|
first_column: this.yylloc.last_column,
|
|
last_column: lines ?
|
|
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
|
|
this.yylloc.last_column + match[0].length
|
|
};
|
|
this.yytext += match[0];
|
|
this.match += match[0];
|
|
this.matches = match;
|
|
this.yyleng = this.yytext.length;
|
|
if (this.options.ranges) {
|
|
this.yylloc.range = [this.offset, this.offset += this.yyleng];
|
|
}
|
|
this._more = false;
|
|
this._backtrack = false;
|
|
this._input = this._input.slice(match[0].length);
|
|
this.matched += match[0];
|
|
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
|
|
if (this.done && this._input) {
|
|
this.done = false;
|
|
}
|
|
if (token) {
|
|
return token;
|
|
} else if (this._backtrack) {
|
|
// recover context
|
|
for (var k in backup) {
|
|
this[k] = backup[k];
|
|
}
|
|
return false; // rule action called reject() implying the next rule should be tested instead.
|
|
}
|
|
return false;
|
|
},
|
|
|
|
// return next match in input
|
|
next:function () {
|
|
if (this.done) {
|
|
return this.EOF;
|
|
}
|
|
if (!this._input) {
|
|
this.done = true;
|
|
}
|
|
|
|
var token,
|
|
match,
|
|
tempMatch,
|
|
index;
|
|
if (!this._more) {
|
|
this.yytext = '';
|
|
this.match = '';
|
|
}
|
|
var rules = this._currentRules();
|
|
for (var i = 0; i < rules.length; i++) {
|
|
tempMatch = this._input.match(this.rules[rules[i]]);
|
|
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
|
|
match = tempMatch;
|
|
index = i;
|
|
if (this.options.backtrack_lexer) {
|
|
token = this.test_match(tempMatch, rules[i]);
|
|
if (token !== false) {
|
|
return token;
|
|
} else if (this._backtrack) {
|
|
match = false;
|
|
continue; // rule action called reject() implying a rule MISmatch.
|
|
} else {
|
|
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
|
|
return false;
|
|
}
|
|
} else if (!this.options.flex) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (match) {
|
|
token = this.test_match(match, rules[index]);
|
|
if (token !== false) {
|
|
return token;
|
|
}
|
|
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
|
|
return false;
|
|
}
|
|
if (this._input === "") {
|
|
return this.EOF;
|
|
} else {
|
|
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
|
|
text: "",
|
|
token: null,
|
|
line: this.yylineno
|
|
});
|
|
}
|
|
},
|
|
|
|
// return next match that has a token
|
|
lex:function lex() {
|
|
var r = this.next();
|
|
if (r) {
|
|
return r;
|
|
} else {
|
|
return this.lex();
|
|
}
|
|
},
|
|
|
|
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
|
|
begin:function begin(condition) {
|
|
this.conditionStack.push(condition);
|
|
},
|
|
|
|
// pop the previously active lexer condition state off the condition stack
|
|
popState:function popState() {
|
|
var n = this.conditionStack.length - 1;
|
|
if (n > 0) {
|
|
return this.conditionStack.pop();
|
|
} else {
|
|
return this.conditionStack[0];
|
|
}
|
|
},
|
|
|
|
// produce the lexer rule set which is active for the currently active lexer condition state
|
|
_currentRules:function _currentRules() {
|
|
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
|
|
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
|
|
} else {
|
|
return this.conditions["INITIAL"].rules;
|
|
}
|
|
},
|
|
|
|
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
|
|
topState:function topState(n) {
|
|
n = this.conditionStack.length - 1 - Math.abs(n || 0);
|
|
if (n >= 0) {
|
|
return this.conditionStack[n];
|
|
} else {
|
|
return "INITIAL";
|
|
}
|
|
},
|
|
|
|
// alias for begin(condition)
|
|
pushState:function pushState(condition) {
|
|
this.begin(condition);
|
|
},
|
|
|
|
// return the number of states currently on the stack
|
|
stateStackSize:function stateStackSize() {
|
|
return this.conditionStack.length;
|
|
},
|
|
options: {},
|
|
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
|
|
|
|
var YYSTATE=YY_START;
|
|
switch($avoiding_name_collisions) {
|
|
case 0: this.begin('notes'); return 19;
|
|
break;
|
|
case 1: this.begin('options'); return 13;
|
|
break;
|
|
case 2: this.begin('options'); return 14;
|
|
break;
|
|
case 3: this.begin('options'); return 15;
|
|
break;
|
|
case 4: this.begin('options'); return 11;
|
|
break;
|
|
case 5: this.begin('text'); return 17;
|
|
break;
|
|
case 6: this.begin('options'); return 21;
|
|
break;
|
|
case 7:return 22
|
|
break;
|
|
case 8: this.begin('annotations'); return "$"
|
|
break;
|
|
case 9: this.begin('notes'); return "$"
|
|
break;
|
|
case 10:return 22
|
|
break;
|
|
case 11: this.begin('command'); return "!"
|
|
break;
|
|
case 12: this.begin('notes'); return "!"
|
|
break;
|
|
case 13:return 74
|
|
break;
|
|
case 14:return 24
|
|
break;
|
|
case 15:return 41
|
|
break;
|
|
case 16:return '+'
|
|
break;
|
|
case 17:return 38
|
|
break;
|
|
case 18:return 23
|
|
break;
|
|
case 19:return 45
|
|
break;
|
|
case 20:return 46
|
|
break;
|
|
case 21:return 31
|
|
break;
|
|
case 22:return 32
|
|
break;
|
|
case 23:return 70
|
|
break;
|
|
case 24:return 25
|
|
break;
|
|
case 25:return 37
|
|
break;
|
|
case 26:return 44
|
|
break;
|
|
case 27:return 75
|
|
break;
|
|
case 28:return 79
|
|
break;
|
|
case 29:return 65
|
|
break;
|
|
case 30:return 62
|
|
break;
|
|
case 31:return 57
|
|
break;
|
|
case 32:return 66
|
|
break;
|
|
case 33:return 63
|
|
break;
|
|
case 34:return 64
|
|
break;
|
|
case 35:return 61
|
|
break;
|
|
case 36:return 50
|
|
break;
|
|
case 37:return 67
|
|
break;
|
|
case 38:return 68
|
|
break;
|
|
case 39:return 69
|
|
break;
|
|
case 40:return 59
|
|
break;
|
|
case 41:return 48
|
|
break;
|
|
case 42:return 58
|
|
break;
|
|
case 43:return 56
|
|
break;
|
|
case 44:return 57
|
|
break;
|
|
case 45:return 59
|
|
break;
|
|
case 46:return 60
|
|
break;
|
|
case 47:return 76
|
|
break;
|
|
case 48:return 80
|
|
break;
|
|
case 49:return 81
|
|
break;
|
|
case 50: this.begin('INITIAL');
|
|
break;
|
|
case 51:/* skip whitespace */
|
|
break;
|
|
case 52:return 5
|
|
break;
|
|
case 53:return 'INVALID'
|
|
break;
|
|
}
|
|
},
|
|
rules: [/^(?:notes\b)/,/^(?:tabstave\b)/,/^(?:stave\b)/,/^(?:voice\b)/,/^(?:options\b)/,/^(?:text\b)/,/^(?:slur\b)/,/^(?:[^\s=]+)/,/^(?:[$])/,/^(?:[$])/,/^(?:[^,$]+)/,/^(?:[!])/,/^(?:[!])/,/^(?:[^!]+)/,/^(?:[^,\r\n]+)/,/^(?:\/)/,/^(?:\+)/,/^(?::)/,/^(?:=)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\^)/,/^(?:,)/,/^(?:\|)/,/^(?:\.)/,/^(?:#)/,/^(?:@)/,/^(?:[b])/,/^(?:[s])/,/^(?:[h])/,/^(?:[p])/,/^(?:[t])/,/^(?:[T])/,/^(?:[-])/,/^(?:[_])/,/^(?:[v])/,/^(?:[V])/,/^(?:[u])/,/^(?:[d])/,/^(?:[0-9]+)/,/^(?:[q])/,/^(?:[w])/,/^(?:[h])/,/^(?:[d])/,/^(?:[S])/,/^(?:[A-GXLR])/,/^(?:[n])/,/^(?:[~])/,/^(?:[\r\n]+)/,/^(?:\s+)/,/^(?:$)/,/^(?:.)/],
|
|
conditions: {"notes":{"rules":[8,11,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],"inclusive":true},"text":{"rules":[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,41,42,43,44,45,50,51,52,53],"inclusive":true},"slur":{"rules":[15,16,17,18,19,20,21,22,23,24,25,26,27,28,50,51,52,53],"inclusive":true},"annotations":{"rules":[9,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,50,51,52,53],"inclusive":true},"options":{"rules":[7,15,16,17,18,19,20,21,22,23,24,25,26,27,28,50,51,52,53],"inclusive":true},"command":{"rules":[12,13,15,16,17,18,19,20,21,22,23,24,25,26,27,28,50,51,52,53],"inclusive":true},"INITIAL":{"rules":[0,1,2,3,4,5,6,7,15,16,17,18,19,20,21,22,23,24,25,26,27,28,50,51,52,53],"inclusive":true}}
|
|
};
|
|
return lexer;
|
|
})();
|
|
parser.lexer = lexer;
|
|
function Parser () {
|
|
this.yy = {};
|
|
}
|
|
Parser.prototype = parser;parser.Parser = Parser;
|
|
return new Parser;
|
|
})();
|
|
|
|
|
|
if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
|
|
exports.parser = vextab_parser;
|
|
exports.Parser = vextab_parser.Parser;
|
|
exports.parse = function () { return vextab_parser.parse.apply(vextab_parser, arguments); };
|
|
exports.main = function commonjsMain(args) {
|
|
if (!args[1]) {
|
|
console.log('Usage: '+args[0]+' FILE');
|
|
process.exit(1);
|
|
}
|
|
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
|
|
return exports.parser.parse(source);
|
|
};
|
|
if (typeof module !== 'undefined' && require.main === module) {
|
|
exports.main(process.argv.slice(1));
|
|
}
|
|
} |