@k-l-lambda/lilylet-markdown 0.1.68 → 0.1.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/index.cjs +599 -342
  2. package/lib/index.js +599 -342
  3. package/package.json +2 -2
package/lib/index.js CHANGED
@@ -11,14 +11,14 @@ var localGrammar = function() {
11
11
  var o = function(k, v, o2, l) {
12
12
  for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
13
13
  return o2;
14
- }, $V0 = [5, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V1 = [2, 44], $V2 = [1, 9], $V3 = [1, 10], $V4 = [1, 11], $V5 = [1, 12], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 15], $V9 = [1, 16], $Va = [1, 17], $Vb = [1, 18], $Vc = [1, 19], $Vd = [1, 20], $Ve = [1, 29], $Vf = [1, 32], $Vg = [1, 33], $Vh = [5, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $Vi = [5, 26], $Vj = [5, 26, 33], $Vk = [1, 47], $Vl = [5, 26, 33, 36], $Vm = [1, 83], $Vn = [1, 84], $Vo = [1, 85], $Vp = [1, 86], $Vq = [1, 87], $Vr = [1, 88], $Vs = [1, 94], $Vt = [1, 95], $Vu = [1, 66], $Vv = [1, 67], $Vw = [1, 108], $Vx = [1, 109], $Vy = [1, 110], $Vz = [1, 111], $VA = [1, 96], $VB = [1, 97], $VC = [1, 98], $VD = [1, 106], $VE = [1, 107], $VF = [1, 99], $VG = [1, 100], $VH = [1, 101], $VI = [1, 102], $VJ = [1, 103], $VK = [1, 104], $VL = [1, 105], $VM = [1, 79], $VN = [1, 80], $VO = [1, 81], $VP = [1, 82], $VQ = [1, 112], $VR = [1, 113], $VS = [1, 114], $VT = [1, 115], $VU = [1, 116], $VV = [1, 117], $VW = [1, 118], $VX = [1, 119], $VY = [1, 120], $VZ = [1, 121], $V_ = [1, 122], $V$ = [1, 123], $V01 = [1, 124], $V11 = [1, 90], $V21 = [1, 91], $V31 = [1, 92], $V41 = [1, 93], $V51 = [5, 9, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V61 = [2, 29], $V71 = [5, 9, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V81 = [5, 9, 26, 33, 36, 173, 175, 177, 178], $V91 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $Va1 = [2, 130], $Vb1 = [1, 150], $Vc1 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 68, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $Vd1 = [5, 9, 26, 33, 36, 50, 51, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 173, 175, 177, 178], $Ve1 = [1, 236], $Vf1 = [1, 242], $Vg1 = [1, 217], $Vh1 = [1, 218], $Vi1 = [1, 215], $Vj1 = [1, 239], $Vk1 = [1, 216], $Vl1 = [1, 214], $Vm1 = [1, 238], $Vn1 = [1, 208], $Vo1 = [1, 209], $Vp1 = [1, 210], $Vq1 = [1, 211], $Vr1 = [1, 212], $Vs1 = [1, 213], $Vt1 = [1, 219], $Vu1 = [1, 220], $Vv1 = [1, 221], $Vw1 = [1, 222], $Vx1 = [1, 223], $Vy1 = [1, 224], $Vz1 = [1, 225], $VA1 = [1, 226], $VB1 = [1, 227], $VC1 = [1, 228], $VD1 = [1, 229], $VE1 = [1, 230], $VF1 = [1, 231], $VG1 = [1, 232], $VH1 = [1, 233], $VI1 = [1, 234], $VJ1 = [1, 235], $VK1 = [1, 237], $VL1 = [1, 240], $VM1 = [1, 241], $VN1 = [1, 243], $VO1 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 68, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 100, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $VP1 = [9, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], $VQ1 = [110, 196, 197, 198, 199], $VR1 = [110, 180, 184], $VS1 = [2, 210], $VT1 = [62, 63], $VU1 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 65, 66, 67, 68, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $VV1 = [1, 295], $VW1 = [1, 296], $VX1 = [1, 310], $VY1 = [1, 311], $VZ1 = [1, 313], $V_1 = [1, 314], $V$1 = [1, 315], $V02 = [2, 214], $V12 = [1, 317], $V22 = [60, 63, 68, 110], $V32 = [182, 185, 190, 192, 193, 194], $V42 = [182, 185, 190], $V52 = [2, 223], $V62 = [110, 180, 184, 187];
14
+ }, $V0 = [5, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $V1 = [2, 44], $V2 = [1, 9], $V3 = [1, 10], $V4 = [1, 11], $V5 = [1, 12], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 15], $V9 = [1, 16], $Va = [1, 17], $Vb = [1, 18], $Vc = [1, 19], $Vd = [1, 20], $Ve = [1, 29], $Vf = [1, 32], $Vg = [1, 33], $Vh = [5, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $Vi = [5, 26], $Vj = [5, 26, 33], $Vk = [1, 47], $Vl = [5, 26, 33, 36], $Vm = [1, 87], $Vn = [1, 88], $Vo = [1, 89], $Vp = [1, 90], $Vq = [1, 91], $Vr = [1, 92], $Vs = [1, 98], $Vt = [1, 99], $Vu = [1, 67], $Vv = [1, 68], $Vw = [1, 69], $Vx = [1, 70], $Vy = [1, 71], $Vz = [1, 112], $VA = [1, 113], $VB = [1, 114], $VC = [1, 115], $VD = [1, 100], $VE = [1, 101], $VF = [1, 102], $VG = [1, 110], $VH = [1, 111], $VI = [1, 103], $VJ = [1, 104], $VK = [1, 105], $VL = [1, 106], $VM = [1, 107], $VN = [1, 108], $VO = [1, 109], $VP = [1, 83], $VQ = [1, 84], $VR = [1, 85], $VS = [1, 86], $VT = [1, 116], $VU = [1, 117], $VV = [1, 118], $VW = [1, 119], $VX = [1, 120], $VY = [1, 121], $VZ = [1, 122], $V_ = [1, 123], $V$ = [1, 124], $V01 = [1, 125], $V11 = [1, 126], $V21 = [1, 127], $V31 = [1, 128], $V41 = [1, 94], $V51 = [1, 95], $V61 = [1, 96], $V71 = [1, 97], $V81 = [5, 9, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $V91 = [2, 29], $Va1 = [5, 9, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $Vb1 = [5, 9, 26, 33, 36, 180, 182, 184, 185], $Vc1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $Vd1 = [2, 136], $Ve1 = [1, 154], $Vf1 = [1, 155], $Vg1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 71, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $Vh1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $Vi1 = [5, 9, 26, 33, 36, 51, 52, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 180, 182, 184, 185], $Vj1 = [1, 242], $Vk1 = [1, 248], $Vl1 = [1, 222], $Vm1 = [1, 223], $Vn1 = [1, 220], $Vo1 = [1, 245], $Vp1 = [1, 221], $Vq1 = [1, 219], $Vr1 = [1, 244], $Vs1 = [1, 213], $Vt1 = [1, 214], $Vu1 = [1, 215], $Vv1 = [1, 216], $Vw1 = [1, 217], $Vx1 = [1, 218], $Vy1 = [1, 224], $Vz1 = [1, 225], $VA1 = [1, 226], $VB1 = [1, 227], $VC1 = [1, 228], $VD1 = [1, 229], $VE1 = [1, 230], $VF1 = [1, 231], $VG1 = [1, 232], $VH1 = [1, 233], $VI1 = [1, 234], $VJ1 = [1, 235], $VK1 = [1, 236], $VL1 = [1, 237], $VM1 = [1, 238], $VN1 = [1, 239], $VO1 = [1, 240], $VP1 = [1, 241], $VQ1 = [1, 243], $VR1 = [1, 246], $VS1 = [1, 247], $VT1 = [1, 249], $VU1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 72, 73, 74, 75, 76, 77, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $VV1 = [2, 82], $VW1 = [9, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166], $VX1 = [116, 203, 204, 205, 206], $VY1 = [116, 187, 191], $VZ1 = [2, 217], $V_1 = [63, 64], $V$1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $V02 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 73, 74, 75, 76, 77, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $V12 = [1, 290], $V22 = [1, 304], $V32 = [1, 305], $V42 = [1, 320], $V52 = [1, 321], $V62 = [1, 323], $V72 = [1, 324], $V82 = [1, 325], $V92 = [2, 221], $Va2 = [1, 327], $Vb2 = [61, 64, 69, 71, 116], $Vc2 = [189, 192, 197, 199, 200, 201], $Vd2 = [189, 192, 197], $Ve2 = [2, 230], $Vf2 = [116, 187, 191, 194];
15
15
  var parser = {
16
16
  trace: function trace() {
17
17
  },
18
18
  yy: {},
19
- symbols_: { "error": 2, "document": 3, "content": 4, "EOF": 5, "headers": 6, "measures": 7, "newlines": 8, "NEWLINE": 9, "header": 10, "HEADER_TITLE": 11, "STRING": 12, "]": 13, "HEADER_SUBTITLE": 14, "HEADER_COMPOSER": 15, "HEADER_ARRANGER": 16, "HEADER_LYRICIST": 17, "HEADER_OPUS": 18, "HEADER_INSTRUMENT": 19, "HEADER_INSTRUMENT_STAFF": 20, "HEADER_GENRE": 21, "HEADER_STAVES": 22, "HEADER_MEASURES": 23, "HEADER_AUTOBEAM": 24, "measure_content": 25, "|": 26, "parts": 27, "annotations_opt": 28, "annotations": 29, "addlyrics_block": 30, "figures_block": 31, "part_voices": 32, "PART_SEP": 33, "part_start": 34, "voice_block": 35, "VOICE_SEP": 36, "voice_events": 37, "event": 38, "note_event": 39, "rest_event": 40, "context_event": 41, "grace_event": 42, "tuplet_event": 43, "tremolo_event": 44, "pitch_reset_event": 45, "barline_event": 46, "harmony_event": 47, "markup_event": 48, "dynamic_event": 49, "CMD_BAR": 50, "CMD_CHORDS": 51, "CMD_MARKUP": 52, "^": 53, "_": 54, "dynamic_mark": 55, "chord": 56, "duration": 57, "post_events": 58, "pitch": 59, "<": 60, "pitches": 61, ">": 62, "PITCH": 63, "octave": 64, "!": 65, "OCT_UP": 66, "OCT_DOWN": 67, "NUMBER": 68, "dots": 69, ".": 70, "REST_CHAR": 71, "SPACE_CHAR": 72, "clef_cmd": 73, "key_cmd": 74, "time_cmd": 75, "partial_cmd": 76, "tempo_cmd": 77, "staff_cmd": 78, "ottava_cmd": 79, "stem_cmd": 80, "numeric_time_sig_cmd": 81, "default_time_sig_cmd": 82, "omit_cmd": 83, "CMD_OMIT_TIME_SIG": 84, "CMD_UNDO_OMIT_TIME_SIG": 85, "CMD_OMIT_BAR_LINE": 86, "CMD_UNDO_OMIT_BAR_LINE": 87, "CMD_CLEF": 88, "CMD_KEY": 89, "pitch_name": 90, "mode": 91, "MODE_MAJOR": 92, "MODE_MINOR": 93, "CMD_TIME": 94, "/": 95, "CMD_NUMERIC_TIME_SIG": 96, "CMD_DEFAULT_TIME_SIG": 97, "CMD_PARTIAL": 98, "CMD_TEMPO": 99, "=": 100, "CMD_STAFF": 101, "CMD_OTTAVA": 102, "#": 103, "-": 104, "CMD_STEMUP": 105, "CMD_STEMDOWN": 106, "CMD_STEMNEUTRAL": 107, "CMD_GRACE": 108, "{": 109, "}": 110, "CMD_TIMES": 111, "CMD_TUPLET": 112, "tremolo_pitches": 113, "CMD_REPEAT": 114, "TREMOLO": 115, "post_event": 116, "articulation_mark": 117, "ornament_mark": 118, "hairpin_mark": 119, "pedal_mark": 120, "tie_mark": 121, "slur_mark": 122, "beam_mark": 123, "tremolo_mark": 124, "direction_mark": 125, "rest_mark": 126, "fingering_mark": 127, "fingering_number": 128, "navigation_mark": 129, "markup_mark": 130, "glissando_mark": 131, "CMD_REST": 132, "ART_STACCATO": 133, "ART_STACCATISSIMO": 134, "ART_TENUTO": 135, "ART_MARCATO": 136, "ART_ACCENT": 137, "ART_PORTATO": 138, "ORN_TRILL": 139, "ORN_TURN": 140, "ORN_MORDENT": 141, "ORN_PRALL": 142, "ORN_FERMATA": 143, "ORN_SHORTFERMATA": 144, "ORN_ARPEGGIO": 145, "ORN_BREATHE": 146, "DYN_PPP": 147, "DYN_PP": 148, "DYN_P": 149, "DYN_MP": 150, "DYN_MF": 151, "DYN_F": 152, "DYN_FF": 153, "DYN_FFF": 154, "DYN_SFZ": 155, "DYN_RFZ": 156, "DYN_SF": 157, "DYN_OTHER": 158, "DYN_FP": 159, "CMD_CRESC_BEGIN": 160, "CMD_DIM_BEGIN": 161, "CMD_DYNAMICS_END": 162, "CMD_SUSTAINON": 163, "CMD_SUSTAINOFF": 164, "~": 165, "(": 166, ")": 167, "[": 168, ":": 169, "CMD_CODA": 170, "CMD_SEGNO": 171, "CMD_GLISSANDO": 172, "CMD_ADDLYRICS": 173, "lyric_sequence": 174, "CMD_FIGURES": 175, "figure_sequence": 176, "CMD_FIGURES_BELOW": 177, "CMD_FIGURES_ABOVE": 178, "figure_item": 179, "FIG_OPEN": 180, "figure_lines": 181, "FIG_CLOSE": 182, "figure_duration_opt": 183, "FIG_SKIP": 184, "FIG_NUMBER": 185, "figure_dots": 186, "FIG_DOT": 187, "figure_line": 188, "figure_accidental_opt": 189, "FIG_BLANK": 190, "figure_accidental": 191, "FIG_SHARP": 192, "FIG_FLAT": 193, "FIG_NATURAL": 194, "lyric_item": 195, "LYRIC_WORD": 196, "LYRIC_HYPHEN": 197, "LYRIC_SKIP": 198, "LYRIC_EXTENDER": 199, "$accept": 0, "$end": 1 },
20
- terminals_: { 2: "error", 5: "EOF", 9: "NEWLINE", 11: "HEADER_TITLE", 12: "STRING", 13: "]", 14: "HEADER_SUBTITLE", 15: "HEADER_COMPOSER", 16: "HEADER_ARRANGER", 17: "HEADER_LYRICIST", 18: "HEADER_OPUS", 19: "HEADER_INSTRUMENT", 20: "HEADER_INSTRUMENT_STAFF", 21: "HEADER_GENRE", 22: "HEADER_STAVES", 23: "HEADER_MEASURES", 24: "HEADER_AUTOBEAM", 26: "|", 33: "PART_SEP", 36: "VOICE_SEP", 50: "CMD_BAR", 51: "CMD_CHORDS", 52: "CMD_MARKUP", 53: "^", 54: "_", 60: "<", 62: ">", 63: "PITCH", 65: "!", 66: "OCT_UP", 67: "OCT_DOWN", 68: "NUMBER", 70: ".", 71: "REST_CHAR", 72: "SPACE_CHAR", 84: "CMD_OMIT_TIME_SIG", 85: "CMD_UNDO_OMIT_TIME_SIG", 86: "CMD_OMIT_BAR_LINE", 87: "CMD_UNDO_OMIT_BAR_LINE", 88: "CMD_CLEF", 89: "CMD_KEY", 92: "MODE_MAJOR", 93: "MODE_MINOR", 94: "CMD_TIME", 95: "/", 96: "CMD_NUMERIC_TIME_SIG", 97: "CMD_DEFAULT_TIME_SIG", 98: "CMD_PARTIAL", 99: "CMD_TEMPO", 100: "=", 101: "CMD_STAFF", 102: "CMD_OTTAVA", 103: "#", 104: "-", 105: "CMD_STEMUP", 106: "CMD_STEMDOWN", 107: "CMD_STEMNEUTRAL", 108: "CMD_GRACE", 109: "{", 110: "}", 111: "CMD_TIMES", 112: "CMD_TUPLET", 114: "CMD_REPEAT", 115: "TREMOLO", 132: "CMD_REST", 133: "ART_STACCATO", 134: "ART_STACCATISSIMO", 135: "ART_TENUTO", 136: "ART_MARCATO", 137: "ART_ACCENT", 138: "ART_PORTATO", 139: "ORN_TRILL", 140: "ORN_TURN", 141: "ORN_MORDENT", 142: "ORN_PRALL", 143: "ORN_FERMATA", 144: "ORN_SHORTFERMATA", 145: "ORN_ARPEGGIO", 146: "ORN_BREATHE", 147: "DYN_PPP", 148: "DYN_PP", 149: "DYN_P", 150: "DYN_MP", 151: "DYN_MF", 152: "DYN_F", 153: "DYN_FF", 154: "DYN_FFF", 155: "DYN_SFZ", 156: "DYN_RFZ", 157: "DYN_SF", 158: "DYN_OTHER", 159: "DYN_FP", 160: "CMD_CRESC_BEGIN", 161: "CMD_DIM_BEGIN", 162: "CMD_DYNAMICS_END", 163: "CMD_SUSTAINON", 164: "CMD_SUSTAINOFF", 165: "~", 166: "(", 167: ")", 168: "[", 169: ":", 170: "CMD_CODA", 171: "CMD_SEGNO", 172: "CMD_GLISSANDO", 173: "CMD_ADDLYRICS", 175: "CMD_FIGURES", 177: "CMD_FIGURES_BELOW", 178: "CMD_FIGURES_ABOVE", 180: "FIG_OPEN", 182: "FIG_CLOSE", 184: "FIG_SKIP", 185: "FIG_NUMBER", 187: "FIG_DOT", 190: "FIG_BLANK", 192: "FIG_SHARP", 193: "FIG_FLAT", 194: "FIG_NATURAL", 196: "LYRIC_WORD", 197: "LYRIC_HYPHEN", 198: "LYRIC_SKIP", 199: "LYRIC_EXTENDER" },
21
- productions_: [0, [3, 2], [4, 2], [4, 3], [4, 3], [4, 4], [4, 2], [4, 1], [8, 1], [8, 2], [6, 1], [6, 2], [6, 2], [6, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 4], [10, 3], [10, 3], [10, 3], [10, 3], [7, 1], [7, 3], [7, 2], [25, 1], [28, 0], [28, 1], [29, 1], [29, 1], [29, 2], [29, 2], [29, 2], [27, 1], [27, 4], [34, 0], [32, 1], [32, 3], [35, 2], [37, 0], [37, 2], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [46, 2], [47, 2], [48, 2], [48, 3], [48, 3], [49, 1], [45, 1], [39, 3], [39, 3], [39, 2], [39, 2], [56, 3], [61, 1], [61, 2], [59, 3], [59, 2], [59, 2], [59, 1], [64, 1], [64, 1], [64, 2], [64, 2], [57, 2], [69, 0], [69, 2], [40, 3], [40, 3], [40, 2], [40, 2], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [83, 1], [83, 1], [83, 1], [83, 1], [73, 2], [74, 3], [90, 1], [91, 1], [91, 1], [75, 4], [81, 1], [82, 1], [76, 2], [77, 5], [77, 2], [77, 4], [78, 2], [79, 3], [79, 4], [79, 1], [80, 1], [80, 1], [80, 1], [42, 4], [42, 2], [42, 2], [43, 7], [43, 7], [113, 1], [113, 1], [44, 9], [44, 8], [44, 7], [58, 0], [58, 2], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [126, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 2], [117, 2], [117, 2], [117, 2], [117, 2], [117, 2], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [119, 1], [119, 1], [119, 1], [120, 1], [120, 1], [121, 1], [122, 1], [122, 1], [123, 1], [123, 1], [124, 2], [125, 2], [125, 2], [127, 2], [128, 1], [129, 1], [129, 1], [130, 2], [131, 1], [30, 4], [31, 4], [31, 4], [31, 4], [176, 0], [176, 2], [179, 4], [179, 2], [183, 0], [183, 2], [186, 0], [186, 2], [181, 1], [181, 2], [188, 2], [188, 2], [188, 1], [189, 0], [189, 1], [191, 1], [191, 1], [191, 1], [174, 0], [174, 2], [195, 1], [195, 1], [195, 1], [195, 1]],
19
+ symbols_: { "error": 2, "document": 3, "content": 4, "EOF": 5, "headers": 6, "measures": 7, "newlines": 8, "NEWLINE": 9, "header": 10, "HEADER_TITLE": 11, "STRING": 12, "]": 13, "HEADER_SUBTITLE": 14, "HEADER_COMPOSER": 15, "HEADER_ARRANGER": 16, "HEADER_LYRICIST": 17, "HEADER_OPUS": 18, "HEADER_INSTRUMENT": 19, "HEADER_INSTRUMENT_STAFF": 20, "HEADER_GENRE": 21, "HEADER_STAVES": 22, "HEADER_MEASURES": 23, "HEADER_AUTOBEAM": 24, "measure_content": 25, "|": 26, "parts": 27, "annotations_opt": 28, "annotations": 29, "addlyrics_block": 30, "figures_block": 31, "part_voices": 32, "PART_SEP": 33, "part_start": 34, "voice_block": 35, "VOICE_SEP": 36, "voice_events": 37, "event": 38, "note_event": 39, "head_shape_cmd": 40, "rest_event": 41, "context_event": 42, "grace_event": 43, "tuplet_event": 44, "tremolo_event": 45, "pitch_reset_event": 46, "barline_event": 47, "harmony_event": 48, "markup_event": 49, "dynamic_event": 50, "CMD_BAR": 51, "CMD_CHORDS": 52, "CMD_MARKUP": 53, "^": 54, "_": 55, "dynamic_mark": 56, "chord": 57, "duration": 58, "post_events": 59, "pitch": 60, "<": 61, "pitches": 62, ">": 63, "PITCH": 64, "octave": 65, "!": 66, "OCT_UP": 67, "OCT_DOWN": 68, "NUMBER": 69, "dots": 70, "CMD_BREVE": 71, ".": 72, "CMD_XNOTE": 73, "CMD_IMPROV_ON": 74, "CMD_IMPROV_OFF": 75, "REST_CHAR": 76, "*": 77, "SPACE_CHAR": 78, "clef_cmd": 79, "key_cmd": 80, "time_cmd": 81, "partial_cmd": 82, "tempo_cmd": 83, "staff_cmd": 84, "ottava_cmd": 85, "stem_cmd": 86, "numeric_time_sig_cmd": 87, "default_time_sig_cmd": 88, "omit_cmd": 89, "CMD_OMIT_TIME_SIG": 90, "CMD_UNDO_OMIT_TIME_SIG": 91, "CMD_OMIT_BAR_LINE": 92, "CMD_UNDO_OMIT_BAR_LINE": 93, "CMD_CLEF": 94, "CMD_KEY": 95, "pitch_name": 96, "mode": 97, "MODE_MAJOR": 98, "MODE_MINOR": 99, "CMD_TIME": 100, "/": 101, "CMD_NUMERIC_TIME_SIG": 102, "CMD_DEFAULT_TIME_SIG": 103, "CMD_PARTIAL": 104, "CMD_TEMPO": 105, "=": 106, "CMD_STAFF": 107, "CMD_OTTAVA": 108, "#": 109, "-": 110, "CMD_STEMUP": 111, "CMD_STEMDOWN": 112, "CMD_STEMNEUTRAL": 113, "CMD_GRACE": 114, "{": 115, "}": 116, "CMD_TIMES": 117, "CMD_TUPLET": 118, "tremolo_pitches": 119, "CMD_REPEAT": 120, "TREMOLO": 121, "post_event": 122, "articulation_mark": 123, "ornament_mark": 124, "hairpin_mark": 125, "pedal_mark": 126, "tie_mark": 127, "slur_mark": 128, "beam_mark": 129, "tremolo_mark": 130, "direction_mark": 131, "rest_mark": 132, "fingering_mark": 133, "fingering_number": 134, "navigation_mark": 135, "markup_mark": 136, "glissando_mark": 137, "CMD_REST": 138, "ART_STACCATO": 139, "ART_STACCATISSIMO": 140, "ART_TENUTO": 141, "ART_MARCATO": 142, "ART_ACCENT": 143, "ART_PORTATO": 144, "ORN_TRILL": 145, "ORN_TURN": 146, "ORN_MORDENT": 147, "ORN_PRALL": 148, "ORN_FERMATA": 149, "ORN_SHORTFERMATA": 150, "ORN_ARPEGGIO": 151, "ORN_BREATHE": 152, "ORN_CAESURA": 153, "DYN_PPP": 154, "DYN_PP": 155, "DYN_P": 156, "DYN_MP": 157, "DYN_MF": 158, "DYN_F": 159, "DYN_FF": 160, "DYN_FFF": 161, "DYN_SFZ": 162, "DYN_RFZ": 163, "DYN_SF": 164, "DYN_OTHER": 165, "DYN_FP": 166, "CMD_CRESC_BEGIN": 167, "CMD_DIM_BEGIN": 168, "CMD_DYNAMICS_END": 169, "CMD_SUSTAINON": 170, "CMD_SUSTAINOFF": 171, "~": 172, "(": 173, ")": 174, "[": 175, ":": 176, "CMD_CODA": 177, "CMD_SEGNO": 178, "CMD_GLISSANDO": 179, "CMD_ADDLYRICS": 180, "lyric_sequence": 181, "CMD_FIGURES": 182, "figure_sequence": 183, "CMD_FIGURES_BELOW": 184, "CMD_FIGURES_ABOVE": 185, "figure_item": 186, "FIG_OPEN": 187, "figure_lines": 188, "FIG_CLOSE": 189, "figure_duration_opt": 190, "FIG_SKIP": 191, "FIG_NUMBER": 192, "figure_dots": 193, "FIG_DOT": 194, "figure_line": 195, "figure_accidental_opt": 196, "FIG_BLANK": 197, "figure_accidental": 198, "FIG_SHARP": 199, "FIG_FLAT": 200, "FIG_NATURAL": 201, "lyric_item": 202, "LYRIC_WORD": 203, "LYRIC_HYPHEN": 204, "LYRIC_SKIP": 205, "LYRIC_EXTENDER": 206, "$accept": 0, "$end": 1 },
20
+ terminals_: { 2: "error", 5: "EOF", 9: "NEWLINE", 11: "HEADER_TITLE", 12: "STRING", 13: "]", 14: "HEADER_SUBTITLE", 15: "HEADER_COMPOSER", 16: "HEADER_ARRANGER", 17: "HEADER_LYRICIST", 18: "HEADER_OPUS", 19: "HEADER_INSTRUMENT", 20: "HEADER_INSTRUMENT_STAFF", 21: "HEADER_GENRE", 22: "HEADER_STAVES", 23: "HEADER_MEASURES", 24: "HEADER_AUTOBEAM", 26: "|", 33: "PART_SEP", 36: "VOICE_SEP", 51: "CMD_BAR", 52: "CMD_CHORDS", 53: "CMD_MARKUP", 54: "^", 55: "_", 61: "<", 63: ">", 64: "PITCH", 66: "!", 67: "OCT_UP", 68: "OCT_DOWN", 69: "NUMBER", 71: "CMD_BREVE", 72: ".", 73: "CMD_XNOTE", 74: "CMD_IMPROV_ON", 75: "CMD_IMPROV_OFF", 76: "REST_CHAR", 77: "*", 78: "SPACE_CHAR", 90: "CMD_OMIT_TIME_SIG", 91: "CMD_UNDO_OMIT_TIME_SIG", 92: "CMD_OMIT_BAR_LINE", 93: "CMD_UNDO_OMIT_BAR_LINE", 94: "CMD_CLEF", 95: "CMD_KEY", 98: "MODE_MAJOR", 99: "MODE_MINOR", 100: "CMD_TIME", 101: "/", 102: "CMD_NUMERIC_TIME_SIG", 103: "CMD_DEFAULT_TIME_SIG", 104: "CMD_PARTIAL", 105: "CMD_TEMPO", 106: "=", 107: "CMD_STAFF", 108: "CMD_OTTAVA", 109: "#", 110: "-", 111: "CMD_STEMUP", 112: "CMD_STEMDOWN", 113: "CMD_STEMNEUTRAL", 114: "CMD_GRACE", 115: "{", 116: "}", 117: "CMD_TIMES", 118: "CMD_TUPLET", 120: "CMD_REPEAT", 121: "TREMOLO", 138: "CMD_REST", 139: "ART_STACCATO", 140: "ART_STACCATISSIMO", 141: "ART_TENUTO", 142: "ART_MARCATO", 143: "ART_ACCENT", 144: "ART_PORTATO", 145: "ORN_TRILL", 146: "ORN_TURN", 147: "ORN_MORDENT", 148: "ORN_PRALL", 149: "ORN_FERMATA", 150: "ORN_SHORTFERMATA", 151: "ORN_ARPEGGIO", 152: "ORN_BREATHE", 153: "ORN_CAESURA", 154: "DYN_PPP", 155: "DYN_PP", 156: "DYN_P", 157: "DYN_MP", 158: "DYN_MF", 159: "DYN_F", 160: "DYN_FF", 161: "DYN_FFF", 162: "DYN_SFZ", 163: "DYN_RFZ", 164: "DYN_SF", 165: "DYN_OTHER", 166: "DYN_FP", 167: "CMD_CRESC_BEGIN", 168: "CMD_DIM_BEGIN", 169: "CMD_DYNAMICS_END", 170: "CMD_SUSTAINON", 171: "CMD_SUSTAINOFF", 172: "~", 173: "(", 174: ")", 175: "[", 176: ":", 177: "CMD_CODA", 178: "CMD_SEGNO", 179: "CMD_GLISSANDO", 180: "CMD_ADDLYRICS", 182: "CMD_FIGURES", 184: "CMD_FIGURES_BELOW", 185: "CMD_FIGURES_ABOVE", 187: "FIG_OPEN", 189: "FIG_CLOSE", 191: "FIG_SKIP", 192: "FIG_NUMBER", 194: "FIG_DOT", 197: "FIG_BLANK", 199: "FIG_SHARP", 200: "FIG_FLAT", 201: "FIG_NATURAL", 203: "LYRIC_WORD", 204: "LYRIC_HYPHEN", 205: "LYRIC_SKIP", 206: "LYRIC_EXTENDER" },
21
+ productions_: [0, [3, 2], [4, 2], [4, 3], [4, 3], [4, 4], [4, 2], [4, 1], [8, 1], [8, 2], [6, 1], [6, 2], [6, 2], [6, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 4], [10, 3], [10, 3], [10, 3], [10, 3], [7, 1], [7, 3], [7, 2], [25, 1], [28, 0], [28, 1], [29, 1], [29, 1], [29, 2], [29, 2], [29, 2], [27, 1], [27, 4], [34, 0], [32, 1], [32, 3], [35, 2], [37, 0], [37, 2], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [47, 2], [48, 2], [49, 2], [49, 3], [49, 3], [50, 1], [46, 1], [39, 3], [39, 3], [39, 2], [39, 2], [57, 3], [62, 1], [62, 2], [60, 3], [60, 2], [60, 2], [60, 1], [65, 1], [65, 1], [65, 2], [65, 2], [58, 2], [58, 2], [70, 0], [70, 2], [40, 1], [40, 1], [40, 1], [41, 3], [41, 5], [41, 3], [41, 2], [41, 2], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [89, 1], [89, 1], [89, 1], [89, 1], [79, 2], [80, 3], [96, 1], [97, 1], [97, 1], [81, 4], [87, 1], [88, 1], [82, 2], [83, 5], [83, 2], [83, 4], [84, 2], [85, 3], [85, 4], [85, 1], [86, 1], [86, 1], [86, 1], [43, 4], [43, 2], [43, 2], [44, 7], [44, 7], [119, 1], [119, 1], [45, 11], [45, 9], [45, 7], [59, 0], [59, 2], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [132, 1], [123, 1], [123, 1], [123, 1], [123, 1], [123, 1], [123, 1], [123, 2], [123, 2], [123, 2], [123, 2], [123, 2], [123, 2], [123, 1], [123, 1], [123, 1], [123, 1], [123, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [125, 1], [125, 1], [125, 1], [126, 1], [126, 1], [127, 1], [128, 1], [128, 1], [129, 1], [129, 1], [130, 2], [131, 2], [131, 2], [133, 2], [134, 1], [135, 1], [135, 1], [136, 2], [137, 1], [30, 4], [31, 4], [31, 4], [31, 4], [183, 0], [183, 2], [186, 4], [186, 2], [190, 0], [190, 2], [193, 0], [193, 2], [188, 1], [188, 2], [195, 2], [195, 2], [195, 1], [196, 0], [196, 1], [198, 1], [198, 1], [198, 1], [181, 0], [181, 2], [202, 1], [202, 1], [202, 1], [202, 1]],
22
22
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
23
23
  var $0 = $$.length - 1;
24
24
  switch (yystate) {
@@ -38,15 +38,15 @@ var localGrammar = function() {
38
38
  this.$ = { metadata: void 0, measures: $$[$0] };
39
39
  break;
40
40
  case 10:
41
- case 109:
42
- case 126:
41
+ case 115:
42
+ case 132:
43
43
  this.$ = $$[$0];
44
44
  break;
45
45
  case 11:
46
46
  this.$ = mergeHeaders($$[$0 - 1], $$[$0]);
47
47
  break;
48
48
  case 12:
49
- case 68:
49
+ case 69:
50
50
  this.$ = $$[$0 - 1];
51
51
  break;
52
52
  case 13:
@@ -133,7 +133,7 @@ var localGrammar = function() {
133
133
  this.$ = { lyrics: [], figures: [] };
134
134
  break;
135
135
  case 32:
136
- case 224:
136
+ case 231:
137
137
  this.$ = $$[$0];
138
138
  break;
139
139
  case 33:
@@ -168,165 +168,184 @@ var localGrammar = function() {
168
168
  this.$ = { events: $$[$0 - 1], lyrics: $$[$0].lyrics, figures: $$[$0].figures };
169
169
  break;
170
170
  case 44:
171
- case 130:
172
- case 210:
173
- case 228:
171
+ case 136:
172
+ case 217:
173
+ case 235:
174
174
  this.$ = [];
175
175
  break;
176
176
  case 45:
177
177
  this.$ = $$[$0] === null ? $$[$0 - 1] : $$[$0 - 1].concat(Array.isArray($$[$0]) ? $$[$0] : [$$[$0]]);
178
178
  break;
179
- case 57:
179
+ case 58:
180
180
  this.$ = barlineEvent($$[$0].slice(1, -1));
181
181
  break;
182
- case 58:
182
+ case 59:
183
183
  this.$ = harmonyEvent($$[$0].slice(1, -1));
184
184
  break;
185
- case 59:
185
+ case 60:
186
186
  this.$ = markupEvent(unq($$[$0]));
187
187
  break;
188
- case 60:
188
+ case 61:
189
189
  this.$ = markupEvent(unq($$[$0]), "above");
190
190
  break;
191
- case 61:
191
+ case 62:
192
192
  this.$ = markupEvent(unq($$[$0]), "below");
193
193
  break;
194
- case 62:
194
+ case 63:
195
195
  this.$ = dynamicEvent($$[$0].type);
196
196
  break;
197
- case 63:
197
+ case 64:
198
198
  this.$ = { type: "pitchReset" };
199
199
  break;
200
- case 64:
201
200
  case 65:
201
+ case 66:
202
202
  currentDuration = $$[$0 - 1];
203
203
  this.$ = noteEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);
204
204
  break;
205
- case 66:
206
205
  case 67:
206
+ case 68:
207
207
  this.$ = noteEvent($$[$0 - 1], currentDuration, $$[$0]);
208
208
  break;
209
- case 69:
210
- case 125:
211
- case 218:
212
- this.$ = [$$[$0]];
213
- break;
214
209
  case 70:
215
210
  case 131:
216
- case 211:
217
- case 219:
218
- case 229:
219
- this.$ = $$[$0 - 1].concat([$$[$0]]);
211
+ case 225:
212
+ this.$ = [$$[$0]];
220
213
  break;
221
214
  case 71:
222
- this.$ = { ...parsePitch($$[$0 - 2], $$[$0 - 1]), courtesy: true };
215
+ case 218:
216
+ case 226:
217
+ case 236:
218
+ this.$ = $$[$0 - 1].concat([$$[$0]]);
223
219
  break;
224
220
  case 72:
225
- this.$ = { ...parsePitch($$[$0 - 1], 0), courtesy: true };
221
+ this.$ = { ...parsePitch($$[$0 - 2], $$[$0 - 1]), courtesy: true };
226
222
  break;
227
223
  case 73:
228
- this.$ = parsePitch($$[$0 - 1], $$[$0]);
224
+ this.$ = { ...parsePitch($$[$0 - 1], 0), courtesy: true };
229
225
  break;
230
226
  case 74:
231
- this.$ = parsePitch($$[$0], 0);
227
+ this.$ = parsePitch($$[$0 - 1], $$[$0]);
232
228
  break;
233
229
  case 75:
234
- this.$ = 1;
230
+ this.$ = parsePitch($$[$0], 0);
235
231
  break;
236
232
  case 76:
237
- this.$ = -1;
233
+ this.$ = 1;
238
234
  break;
239
235
  case 77:
240
- this.$ = $$[$0 - 1] + 1;
236
+ this.$ = -1;
241
237
  break;
242
238
  case 78:
243
- this.$ = $$[$0 - 1] - 1;
239
+ this.$ = $$[$0 - 1] + 1;
244
240
  break;
245
241
  case 79:
246
- this.$ = duration(Number($$[$0 - 1]), $$[$0]);
242
+ this.$ = $$[$0 - 1] - 1;
247
243
  break;
248
244
  case 80:
249
- case 216:
250
- this.$ = 0;
245
+ this.$ = duration(Number($$[$0 - 1]), $$[$0]);
251
246
  break;
252
247
  case 81:
253
- case 217:
254
- this.$ = $$[$0 - 1] + 1;
248
+ this.$ = duration(0.5, $$[$0]);
255
249
  break;
256
250
  case 82:
257
- currentDuration = $$[$0 - 1];
258
- this.$ = restEvent($$[$0 - 1], { fullMeasure: $$[$0 - 2] === "R" });
251
+ case 223:
252
+ this.$ = 0;
259
253
  break;
260
254
  case 83:
261
- currentDuration = $$[$0 - 1];
262
- this.$ = restEvent($$[$0 - 1], { invisible: true });
255
+ case 224:
256
+ this.$ = $$[$0 - 1] + 1;
263
257
  break;
264
258
  case 84:
265
- this.$ = restEvent(currentDuration, { fullMeasure: $$[$0 - 1] === "R" });
259
+ currentHeadShape = "x";
260
+ xNotePending = true;
261
+ this.$ = null;
266
262
  break;
267
263
  case 85:
268
- this.$ = restEvent(currentDuration, { invisible: true });
264
+ currentHeadShape = "slash";
265
+ this.$ = null;
269
266
  break;
270
267
  case 86:
271
- this.$ = contextChange({ clef: $$[$0] });
268
+ currentHeadShape = void 0;
269
+ this.$ = null;
272
270
  break;
273
271
  case 87:
274
- this.$ = contextChange({ key: $$[$0] });
272
+ currentDuration = $$[$0 - 1];
273
+ this.$ = restEvent($$[$0 - 1], { fullMeasure: $$[$0 - 2] === "R", marks: $$[$0].length ? $$[$0] : void 0 });
275
274
  break;
276
275
  case 88:
277
- this.$ = contextChange({ time: $$[$0] });
276
+ currentDuration = $$[$0 - 3];
277
+ this.$ = restEvent($$[$0 - 3], { fullMeasure: $$[$0 - 4] === "R", multiMeasure: Number($$[$0 - 1]), marks: $$[$0].length ? $$[$0] : void 0 });
278
278
  break;
279
279
  case 89:
280
- this.$ = contextChange({ partial: $$[$0] });
280
+ currentDuration = $$[$0 - 1];
281
+ this.$ = restEvent($$[$0 - 1], { invisible: true, marks: $$[$0].length ? $$[$0] : void 0 });
281
282
  break;
282
283
  case 90:
283
- this.$ = contextChange({ tempo: $$[$0] });
284
+ this.$ = restEvent(currentDuration, { fullMeasure: true, marks: $$[$0].length ? $$[$0] : void 0 });
284
285
  break;
285
286
  case 91:
286
- this.$ = contextChange({ staff: $$[$0] });
287
+ this.$ = restEvent(currentDuration, { invisible: true, marks: $$[$0].length ? $$[$0] : void 0 });
287
288
  break;
288
289
  case 92:
289
- this.$ = contextChange({ ottava: $$[$0] });
290
+ this.$ = contextChange({ clef: $$[$0] });
290
291
  break;
291
292
  case 93:
292
- this.$ = contextChange({ stemDirection: $$[$0] });
293
+ this.$ = contextChange({ key: $$[$0] });
293
294
  break;
294
295
  case 94:
296
+ this.$ = contextChange({ time: $$[$0] });
297
+ break;
295
298
  case 95:
296
- this.$ = null;
299
+ this.$ = contextChange({ partial: $$[$0] });
297
300
  break;
298
301
  case 96:
299
- this.$ = contextChange({ omit: $$[$0] });
302
+ this.$ = contextChange({ tempo: $$[$0] });
300
303
  break;
301
304
  case 97:
302
- this.$ = { timeSignature: true };
305
+ this.$ = contextChange({ staff: $$[$0] });
303
306
  break;
304
307
  case 98:
305
- this.$ = { timeSignature: false };
308
+ this.$ = contextChange({ ottava: $$[$0] });
306
309
  break;
307
310
  case 99:
308
- this.$ = { barLine: true };
311
+ this.$ = contextChange({ stemDirection: $$[$0] });
309
312
  break;
310
313
  case 100:
314
+ case 101:
315
+ this.$ = null;
316
+ break;
317
+ case 102:
318
+ this.$ = contextChange({ omit: $$[$0] });
319
+ break;
320
+ case 103:
321
+ this.$ = { timeSignature: true };
322
+ break;
323
+ case 104:
324
+ this.$ = { timeSignature: false };
325
+ break;
326
+ case 105:
327
+ this.$ = { barLine: true };
328
+ break;
329
+ case 106:
311
330
  this.$ = { barLine: false };
312
331
  break;
313
- case 101:
332
+ case 107:
314
333
  this.$ = $$[$0].slice(1, -1);
315
334
  break;
316
- case 102:
335
+ case 108:
317
336
  currentKey = keySignature($$[$0 - 1].phonet, $$[$0 - 1].accidental, $$[$0]);
318
337
  this.$ = currentKey;
319
338
  break;
320
- case 103:
339
+ case 109:
321
340
  this.$ = parsePitchName($$[$0]);
322
341
  break;
323
- case 104:
342
+ case 110:
324
343
  this.$ = "major";
325
344
  break;
326
- case 105:
345
+ case 111:
327
346
  this.$ = "minor";
328
347
  break;
329
- case 106:
348
+ case 112:
330
349
  const num = Number($$[$0 - 2]);
331
350
  const den = Number($$[$0]);
332
351
  const timeSig = fraction(num, den);
@@ -340,280 +359,289 @@ var localGrammar = function() {
340
359
  currentTimeSig = timeSig;
341
360
  this.$ = currentTimeSig;
342
361
  break;
343
- case 107:
362
+ case 113:
344
363
  numericTimeSignature = true;
345
364
  this.$ = null;
346
365
  break;
347
- case 108:
366
+ case 114:
348
367
  numericTimeSignature = false;
349
368
  this.$ = null;
350
369
  break;
351
- case 110:
370
+ case 116:
352
371
  this.$ = { text: unq($$[$0 - 3]), beat: $$[$0 - 2], bpm: Number($$[$0]) };
353
372
  break;
354
- case 111:
373
+ case 117:
355
374
  this.$ = { text: unq($$[$0]) };
356
375
  break;
357
- case 112:
376
+ case 118:
358
377
  this.$ = { beat: $$[$0 - 2], bpm: Number($$[$0]) };
359
378
  break;
360
- case 113:
379
+ case 119:
361
380
  currentStaff = Number($$[$0].slice(1, -1));
362
381
  this.$ = currentStaff;
363
382
  break;
364
- case 114:
383
+ case 120:
365
384
  currentOttava = Number($$[$0]);
366
385
  this.$ = currentOttava;
367
386
  break;
368
- case 115:
387
+ case 121:
369
388
  currentOttava = -Number($$[$0]);
370
389
  this.$ = currentOttava;
371
390
  break;
372
- case 116:
391
+ case 122:
373
392
  currentOttava = 0;
374
393
  this.$ = 0;
375
394
  break;
376
- case 117:
395
+ case 123:
377
396
  this.$ = "up";
378
397
  break;
379
- case 118:
398
+ case 124:
380
399
  this.$ = "down";
381
400
  break;
382
- case 119:
401
+ case 125:
383
402
  this.$ = "auto";
384
403
  break;
385
- case 120:
404
+ case 126:
386
405
  this.$ = $$[$0 - 1].map((e) => e.type === "note" || e.type === "rest" ? { ...e, grace: true } : e);
387
406
  break;
388
- case 121:
389
- case 122:
407
+ case 127:
408
+ case 128:
390
409
  this.$ = { ...$$[$0], grace: true };
391
410
  break;
392
- case 123:
411
+ case 129:
393
412
  this.$ = timesEvent(fraction(Number($$[$0 - 5]), Number($$[$0 - 3])), $$[$0 - 1].filter((e) => e.type === "note" || e.type === "rest" || e.type === "context"));
394
413
  break;
395
- case 124:
396
- this.$ = tupletEvent(fraction(Number($$[$0 - 3]), Number($$[$0 - 5])), $$[$0 - 1].filter((e) => e.type === "note" || e.type === "rest" || e.type === "context"));
414
+ case 130:
415
+ this.$ = tupletEvent(fraction(Number($$[$0 - 3]), Number($$[$0 - 5])), $$[$0 - 1].filter((e) => e.type === "note" || e.type === "rest" || e.type === "context" || e.type === "tuplet"));
397
416
  break;
398
- case 127:
399
- currentDuration = $$[$0 - 3];
400
- this.$ = tremoloEvent($$[$0 - 4], $$[$0 - 2], Number($$[$0 - 6]), $$[$0 - 3].division);
417
+ case 133:
418
+ currentDuration = $$[$0 - 5];
419
+ this.$ = tremoloEvent($$[$0 - 6], $$[$0 - 3], Number($$[$0 - 8]), $$[$0 - 5].division, $$[$0 - 4], $$[$0 - 1]);
401
420
  break;
402
- case 128:
403
- currentDuration = $$[$0 - 2];
404
- this.$ = tremoloEvent($$[$0 - 3], $$[$0 - 1], Number($$[$0 - 5]), $$[$0 - 2].division);
421
+ case 134:
422
+ currentDuration = $$[$0 - 3];
423
+ this.$ = tremoloEvent($$[$0 - 4], $$[$0 - 1], Number($$[$0 - 6]), $$[$0 - 3].division, $$[$0 - 2], []);
405
424
  break;
406
- case 129:
425
+ case 135:
407
426
  this.$ = tremoloEvent($$[$0 - 2], $$[$0 - 1], Number($$[$0 - 4]), currentDuration.division);
408
427
  break;
409
- case 148:
428
+ case 137:
429
+ this.$ = $$[$0] === null ? $$[$0 - 1] : $$[$0 - 1].concat([$$[$0]]);
430
+ break;
431
+ case 154:
410
432
  this.$ = { pitchedRest: true };
411
433
  break;
412
- case 149:
413
434
  case 155:
414
- case 162:
435
+ case 161:
436
+ case 168:
415
437
  this.$ = articulation("staccato");
416
438
  break;
417
- case 150:
418
- case 159:
439
+ case 156:
440
+ case 165:
419
441
  this.$ = articulation("staccatissimo");
420
442
  break;
421
- case 151:
422
- case 160:
423
- case 163:
443
+ case 157:
444
+ case 166:
445
+ case 169:
424
446
  this.$ = articulation("tenuto");
425
447
  break;
426
- case 152:
427
- case 157:
428
- case 164:
448
+ case 158:
449
+ case 163:
450
+ case 170:
429
451
  this.$ = articulation("marcato");
430
452
  break;
431
- case 153:
432
- case 158:
433
- case 161:
453
+ case 159:
454
+ case 164:
455
+ case 167:
434
456
  this.$ = articulation("accent");
435
457
  break;
436
- case 154:
437
- case 156:
438
- case 165:
458
+ case 160:
459
+ case 162:
460
+ case 171:
439
461
  this.$ = articulation("portato");
440
462
  break;
441
- case 166:
463
+ case 172:
442
464
  this.$ = ornament("trill");
443
465
  break;
444
- case 167:
466
+ case 173:
445
467
  this.$ = ornament("turn");
446
468
  break;
447
- case 168:
469
+ case 174:
448
470
  this.$ = ornament("mordent");
449
471
  break;
450
- case 169:
472
+ case 175:
451
473
  this.$ = ornament("prall");
452
474
  break;
453
- case 170:
475
+ case 176:
454
476
  this.$ = ornament("fermata");
455
477
  break;
456
- case 171:
478
+ case 177:
457
479
  this.$ = ornament("shortFermata");
458
480
  break;
459
- case 172:
481
+ case 178:
460
482
  this.$ = ornament("arpeggio");
461
483
  break;
462
- case 173:
484
+ case 179:
463
485
  this.$ = ornament("breath");
464
486
  break;
465
- case 174:
487
+ case 180:
488
+ this.$ = ornament("caesura");
489
+ break;
490
+ case 181:
466
491
  this.$ = dynamic("ppp");
467
492
  break;
468
- case 175:
493
+ case 182:
469
494
  this.$ = dynamic("pp");
470
495
  break;
471
- case 176:
496
+ case 183:
472
497
  this.$ = dynamic("p");
473
498
  break;
474
- case 177:
499
+ case 184:
475
500
  this.$ = dynamic("mp");
476
501
  break;
477
- case 178:
502
+ case 185:
478
503
  this.$ = dynamic("mf");
479
504
  break;
480
- case 179:
505
+ case 186:
481
506
  this.$ = dynamic("f");
482
507
  break;
483
- case 180:
508
+ case 187:
484
509
  this.$ = dynamic("ff");
485
510
  break;
486
- case 181:
511
+ case 188:
487
512
  this.$ = dynamic("fff");
488
513
  break;
489
- case 182:
514
+ case 189:
490
515
  this.$ = dynamic("sfz");
491
516
  break;
492
- case 183:
517
+ case 190:
493
518
  this.$ = dynamic("rfz");
494
519
  break;
495
- case 184:
520
+ case 191:
496
521
  this.$ = dynamic("sf");
497
522
  break;
498
- case 185:
523
+ case 192:
499
524
  this.$ = dynamic($$[$0].slice(1).toLowerCase());
500
525
  break;
501
- case 186:
526
+ case 193:
502
527
  this.$ = dynamic("fp");
503
528
  break;
504
- case 187:
529
+ case 194:
530
+ lastHairpin = "crescendo";
505
531
  this.$ = hairpin("crescendoStart");
506
532
  break;
507
- case 188:
533
+ case 195:
534
+ lastHairpin = "diminuendo";
508
535
  this.$ = hairpin("diminuendoStart");
509
536
  break;
510
- case 189:
511
- this.$ = hairpin("crescendoEnd");
537
+ case 196:
538
+ this.$ = hairpin(lastHairpin === "diminuendo" ? "diminuendoEnd" : "crescendoEnd");
539
+ lastHairpin = void 0;
512
540
  break;
513
- case 190:
541
+ case 197:
514
542
  this.$ = pedal("sustainOn");
515
543
  break;
516
- case 191:
544
+ case 198:
517
545
  this.$ = pedal("sustainOff");
518
546
  break;
519
- case 192:
547
+ case 199:
520
548
  this.$ = tie(true);
521
549
  break;
522
- case 193:
550
+ case 200:
523
551
  this.$ = slur(true);
524
552
  break;
525
- case 194:
553
+ case 201:
526
554
  this.$ = slur(false);
527
555
  break;
528
- case 195:
556
+ case 202:
529
557
  this.$ = beam(true);
530
558
  break;
531
- case 196:
559
+ case 203:
532
560
  this.$ = beam(false);
533
561
  break;
534
- case 197:
562
+ case 204:
535
563
  this.$ = { tremolo: Number($$[$0]) };
536
564
  break;
537
- case 198:
565
+ case 205:
538
566
  this.$ = { ...$$[$0], placement: "above" };
539
567
  break;
540
- case 199:
568
+ case 206:
541
569
  this.$ = { ...$$[$0], placement: "below" };
542
570
  break;
543
- case 200:
544
- case 201:
571
+ case 207:
572
+ case 208:
545
573
  const n = Number($$[$0]);
546
- if (n >= 1 && n <= 5) this.$ = fingering(n);
574
+ if (n >= 0 && n <= 9) this.$ = fingering(n);
547
575
  else this.$ = null;
548
576
  break;
549
- case 202:
577
+ case 209:
550
578
  this.$ = navigation("coda");
551
579
  break;
552
- case 203:
580
+ case 210:
553
581
  this.$ = navigation("segno");
554
582
  break;
555
- case 204:
583
+ case 211:
556
584
  this.$ = markupMark(unq($$[$0]));
557
585
  break;
558
- case 205:
586
+ case 212:
559
587
  this.$ = glissando();
560
588
  break;
561
- case 206:
589
+ case 213:
562
590
  this.$ = addlyricsLane($$[$0 - 1]);
563
591
  break;
564
- case 207:
565
- case 208:
592
+ case 214:
593
+ case 215:
566
594
  this.$ = figuresLane("below", $$[$0 - 1]);
567
595
  break;
568
- case 209:
596
+ case 216:
569
597
  this.$ = figuresLane("above", $$[$0 - 1]);
570
598
  break;
571
- case 212:
599
+ case 219:
572
600
  this.$ = { lines: $$[$0 - 2], duration: $$[$0] };
573
601
  break;
574
- case 213:
602
+ case 220:
575
603
  this.$ = { duration: $$[$0] };
576
604
  break;
577
- case 214:
578
- case 223:
605
+ case 221:
606
+ case 230:
579
607
  this.$ = void 0;
580
608
  break;
581
- case 215:
609
+ case 222:
582
610
  this.$ = { division: Number($$[$0 - 1]), dots: $$[$0] };
583
611
  break;
584
- case 220:
612
+ case 227:
585
613
  this.$ = $$[$0] ? { number: Number($$[$0 - 1]), accidental: $$[$0] } : { number: Number($$[$0 - 1]) };
586
614
  break;
587
- case 221:
615
+ case 228:
588
616
  this.$ = $$[$0] ? { accidental: $$[$0] } : {};
589
617
  break;
590
- case 222:
618
+ case 229:
591
619
  this.$ = { accidental: $$[$0] };
592
620
  break;
593
- case 225:
621
+ case 232:
594
622
  this.$ = "sharp";
595
623
  break;
596
- case 226:
624
+ case 233:
597
625
  this.$ = "flat";
598
626
  break;
599
- case 227:
627
+ case 234:
600
628
  this.$ = "natural";
601
629
  break;
602
- case 230:
630
+ case 237:
603
631
  this.$ = { text: $$[$0].charAt(0) === '"' ? unq($$[$0]) : $$[$0] };
604
632
  break;
605
- case 231:
633
+ case 238:
606
634
  this.$ = { hyphen: true };
607
635
  break;
608
- case 232:
636
+ case 239:
609
637
  this.$ = { skip: true };
610
638
  break;
611
- case 233:
639
+ case 240:
612
640
  this.$ = { extend: true };
613
641
  break;
614
642
  }
615
643
  },
616
- table: [o($V0, $V1, { 3: 1, 4: 2, 6: 3, 8: 4, 7: 5, 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 9: [1, 7], 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 1: [3] }, { 5: [1, 25] }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 26, 8: 27, 10: 28, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 6: 30, 7: 31, 9: $Vf, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 7], 26: $Vg }, o($Vh, [2, 10]), o($Vh, [2, 8]), o($Vi, [2, 27]), { 12: [1, 34] }, { 12: [1, 35] }, { 12: [1, 36] }, { 12: [1, 37] }, { 12: [1, 38] }, { 12: [1, 39] }, { 12: [1, 40] }, { 12: [1, 41] }, { 12: [1, 42] }, { 12: [1, 43] }, { 12: [1, 44] }, { 12: [1, 45] }, o($Vi, [2, 30], { 33: [1, 46] }), o($Vj, [2, 38], { 36: $Vk }), o($Vl, [2, 41]), o($Vl, [2, 31], { 28: 48, 38: 49, 29: 50, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 30: 62, 31: 63, 56: 64, 59: 65, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 55: 89, 9: $Vm, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 173: $V11, 175: $V21, 177: $V31, 178: $V41 }), { 1: [2, 1] }, { 5: [2, 2], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 125, 9: $Vf }), o($Vh, [2, 11]), o($V51, [2, 12], { 10: 126, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 10: 28, 7: 127, 8: 128, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 6], 26: $Vg }, o($Vh, [2, 9]), o([9, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V1, { 27: 21, 32: 22, 35: 23, 37: 24, 25: 129, 5: $V61, 26: $V61 }), { 13: [1, 130] }, { 13: [1, 131] }, { 13: [1, 132] }, { 13: [1, 133] }, { 13: [1, 134] }, { 13: [1, 135] }, { 13: [1, 136] }, { 12: [1, 138], 13: [1, 137] }, { 13: [1, 139] }, { 13: [1, 140] }, { 13: [1, 141] }, { 13: [1, 142] }, o($V51, [2, 40], { 34: 143 }), o($V51, $V1, { 37: 24, 35: 144 }), o($Vl, [2, 43]), o($V71, [2, 45]), o($Vl, [2, 32], { 30: 145, 31: 146, 9: [1, 147], 173: $V11, 175: $V21, 177: $V31, 178: $V41 }), o($V71, [2, 46]), o($V71, [2, 47]), o($V71, [2, 48]), o($V71, [2, 49]), o($V71, [2, 50]), o($V71, [2, 51]), o($V71, [2, 52]), o($V71, [2, 53]), o($V71, [2, 54]), o($V71, [2, 55]), o($V71, [2, 56]), o($V81, [2, 33]), o($V81, [2, 34]), o($V91, $Va1, { 57: 148, 58: 149, 68: $Vb1 }), o($V91, $Va1, { 57: 151, 58: 152, 68: $Vb1 }), o($V91, $Va1, { 57: 153, 58: 154, 68: $Vb1 }), o($V91, $Va1, { 57: 155, 58: 156, 68: $Vb1 }), o($V71, [2, 86]), o($V71, [2, 87]), o($V71, [2, 88]), o($V71, [2, 89]), o($V71, [2, 90]), o($V71, [2, 91]), o($V71, [2, 92]), o($V71, [2, 93]), o($V71, [2, 94]), o($V71, [2, 95]), o($V71, [2, 96]), { 39: 158, 40: 159, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 109: [1, 157] }, { 68: [1, 160] }, { 68: [1, 161] }, { 115: [1, 162] }, o($V71, [2, 63]), { 12: [1, 163] }, { 12: [1, 164] }, { 12: [1, 165] }, { 52: [1, 166] }, { 52: [1, 167] }, o($V71, [2, 62]), { 109: [1, 168] }, { 109: [1, 169] }, { 109: [1, 170] }, { 109: [1, 171] }, { 59: 173, 61: 172, 63: $Vt }, o($Vc1, [2, 74], { 64: 174, 65: [1, 175], 66: [1, 176], 67: [1, 177] }), { 12: [1, 178] }, { 63: [1, 180], 90: 179 }, { 68: [1, 181] }, { 57: 182, 68: $Vb1 }, { 12: [1, 183], 57: 184, 68: $Vb1 }, { 12: [1, 185] }, o($V71, [2, 116], { 103: [1, 186] }), o($V71, [2, 117]), o($V71, [2, 118]), o($V71, [2, 119]), o($V71, [2, 107]), o($V71, [2, 108]), o($V71, [2, 97]), o($V71, [2, 98]), o($V71, [2, 99]), o($V71, [2, 100]), o($Vc1, [2, 174]), o($Vc1, [2, 175]), o($Vc1, [2, 176]), o($Vc1, [2, 177]), o($Vc1, [2, 178]), o($Vc1, [2, 179]), o($Vc1, [2, 180]), o($Vc1, [2, 181]), o($Vc1, [2, 182]), o($Vc1, [2, 183]), o($Vc1, [2, 184]), o($Vc1, [2, 185]), o($Vc1, [2, 186]), { 5: [2, 3], 26: $Vg }, o($Vh, [2, 13]), { 5: [2, 4], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 187, 9: $Vf }), o($Vi, [2, 28]), o($Vh, [2, 14]), o($Vh, [2, 15]), o($Vh, [2, 16]), o($Vh, [2, 17]), o($Vh, [2, 18]), o($Vh, [2, 19]), o($Vh, [2, 20]), o($Vh, [2, 21]), { 13: [1, 188] }, o($Vh, [2, 23]), o($Vh, [2, 24]), o($Vh, [2, 25]), o($Vh, [2, 26]), o($V51, $V1, { 35: 23, 37: 24, 32: 189 }), o($Vl, [2, 42]), o($V81, [2, 35]), o($V81, [2, 36]), o($V81, [2, 37]), o($Vc1, $Va1, { 58: 190 }), o($Vd1, [2, 66], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($VO1, [2, 80], { 69: 244 }), o($Vc1, $Va1, { 58: 245 }), o($Vd1, [2, 67], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, $Va1, { 58: 246 }), o($Vd1, [2, 84], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, $Va1, { 58: 247 }), o($Vd1, [2, 85], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($VP1, $V1, { 37: 248 }), o($V71, [2, 121]), o($V71, [2, 122]), { 95: [1, 249] }, { 95: [1, 250] }, { 68: [1, 251] }, o($V71, [2, 57]), o($V71, [2, 58]), o($V71, [2, 59]), { 12: [1, 252] }, { 12: [1, 253] }, o($VQ1, [2, 228], { 174: 254 }), o($VR1, $VS1, { 176: 255 }), o($VR1, $VS1, { 176: 256 }), o($VR1, $VS1, { 176: 257 }), { 59: 259, 62: [1, 258], 63: $Vt }, o($VT1, [2, 69]), o($Vc1, [2, 73], { 65: [1, 260], 66: [1, 261], 67: [1, 262] }), o($Vc1, [2, 72]), o($VU1, [2, 75]), o($VU1, [2, 76]), o($V71, [2, 101]), { 91: 263, 92: [1, 264], 93: [1, 265] }, o([92, 93], [2, 103]), { 95: [1, 266] }, o($V71, [2, 109]), o($V71, [2, 111], { 57: 267, 68: $Vb1 }), { 100: [1, 268] }, o($V71, [2, 113]), { 68: [1, 269], 104: [1, 270] }, { 5: [2, 5], 26: $Vg }, o($Vh, [2, 22]), o($Vj, [2, 39], { 36: $Vk }), o($Vd1, [2, 64], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, [2, 131]), o($Vc1, [2, 132]), o($Vc1, [2, 133]), o($Vc1, [2, 134]), o($Vc1, [2, 135]), o($Vc1, [2, 136]), o($Vc1, [2, 137]), o($Vc1, [2, 138]), o($Vc1, [2, 139]), o($Vc1, [2, 140]), o($Vc1, [2, 141]), o($Vc1, [2, 142]), o($Vc1, [2, 143]), o($Vc1, [2, 144]), o($Vc1, [2, 145]), o($Vc1, [2, 146]), o($Vc1, [2, 147]), o($Vc1, [2, 149]), o($Vc1, [2, 150]), o($Vc1, [2, 151]), o($Vc1, [2, 152]), o($Vc1, [2, 153]), o($Vc1, [2, 154]), o([5, 9, 13, 26, 33, 36, 50, 51, 52, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], [2, 163], { 53: [1, 273], 54: [1, 272], 62: [1, 274], 65: [1, 275], 68: [1, 277], 70: [1, 271], 104: [1, 276] }), o($Vc1, [2, 161]), o($Vc1, [2, 162]), o($Vd1, [2, 164], { 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 116: 278, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vd1, [2, 165], { 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 116: 279, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, [2, 166]), o($Vc1, [2, 167]), o($Vc1, [2, 168]), o($Vc1, [2, 169]), o($Vc1, [2, 170]), o($Vc1, [2, 171]), o($Vc1, [2, 172]), o($Vc1, [2, 173]), o($Vc1, [2, 187]), o($Vc1, [2, 188]), o($Vc1, [2, 189]), o($Vc1, [2, 190]), o($Vc1, [2, 191]), o($Vc1, [2, 192]), o($Vc1, [2, 193]), o($Vc1, [2, 194]), o($Vc1, [2, 195]), o($Vc1, [2, 196]), { 68: [1, 280] }, o($Vc1, [2, 148]), o($Vc1, [2, 201]), o($Vc1, [2, 202]), o($Vc1, [2, 203]), { 12: [1, 281] }, o($Vc1, [2, 205]), o([5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 68, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 100, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], [2, 79], { 70: [1, 282] }), o($Vd1, [2, 65], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vd1, [2, 82], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vd1, [2, 83], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 55: 89, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 110: [1, 283], 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01 }, { 68: [1, 284] }, { 68: [1, 285] }, { 109: [1, 286] }, o($V71, [2, 60]), o($V71, [2, 61]), { 110: [1, 287], 195: 288, 196: [1, 289], 197: [1, 290], 198: [1, 291], 199: [1, 292] }, { 110: [1, 293], 179: 294, 180: $VV1, 184: $VW1 }, { 110: [1, 297], 179: 294, 180: $VV1, 184: $VW1 }, { 110: [1, 298], 179: 294, 180: $VV1, 184: $VW1 }, o($Vc1, [2, 68]), o($VT1, [2, 70]), o($Vc1, [2, 71]), o($VU1, [2, 77]), o($VU1, [2, 78]), o($V71, [2, 102]), o($V71, [2, 104]), o($V71, [2, 105]), { 68: [1, 299] }, { 100: [1, 300] }, { 68: [1, 301] }, o($V71, [2, 114]), { 68: [1, 302] }, o($Vc1, [2, 155]), o($Vc1, [2, 156]), o($Vc1, [2, 157]), o($Vc1, [2, 158]), o($Vc1, [2, 159]), o($Vc1, [2, 160]), o($Vc1, [2, 200]), o($Vc1, [2, 198]), o($Vc1, [2, 199]), o($Vc1, [2, 197]), o($Vc1, [2, 204]), o($VO1, [2, 81]), o($V71, [2, 120]), { 109: [1, 303] }, { 109: [1, 304] }, { 56: 307, 59: 306, 60: $Vs, 63: $Vt, 113: 305 }, o($V81, [2, 206]), o($VQ1, [2, 229]), o($VQ1, [2, 230]), o($VQ1, [2, 231]), o($VQ1, [2, 232]), o($VQ1, [2, 233]), o($V81, [2, 207]), o($VR1, [2, 211]), { 181: 308, 185: $VX1, 188: 309, 190: $VY1, 191: 312, 192: $VZ1, 193: $V_1, 194: $V$1 }, o($VR1, $V02, { 183: 316, 185: $V12 }), o($V81, [2, 208]), o($V81, [2, 209]), o($V71, [2, 106]), { 68: [1, 318] }, o($V71, [2, 112]), o($V71, [2, 115]), o($VP1, $V1, { 37: 319 }), o($VP1, $V1, { 37: 320 }), { 56: 307, 57: 321, 59: 306, 60: $Vs, 63: $Vt, 68: $Vb1, 113: 322 }, o($V22, [2, 125]), o($V22, [2, 126]), { 182: [1, 323], 185: $VX1, 188: 324, 190: $VY1, 191: 312, 192: $VZ1, 193: $V_1, 194: $V$1 }, o($V32, [2, 218]), o($V42, $V52, { 189: 325, 191: 326, 192: $VZ1, 193: $V_1, 194: $V$1 }), o($V42, $V52, { 191: 326, 189: 327, 192: $VZ1, 193: $V_1, 194: $V$1 }), o($V32, [2, 222]), o($V32, [2, 225]), o($V32, [2, 226]), o($V32, [2, 227]), o($VR1, [2, 213]), o($V62, [2, 216], { 186: 328 }), o($V71, [2, 110]), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 55: 89, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 110: [1, 329], 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01 }, { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 55: 89, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 110: [1, 330], 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01 }, { 56: 307, 59: 306, 60: $Vs, 63: $Vt, 113: 331 }, { 110: [1, 332] }, o($VR1, $V02, { 183: 333, 185: $V12 }), o($V32, [2, 219]), o($V32, [2, 220]), o($V32, [2, 224]), o($V32, [2, 221]), o($VR1, [2, 215], { 187: [1, 334] }), o($V71, [2, 123]), o($V71, [2, 124]), { 57: 335, 68: $Vb1, 110: [1, 336] }, o($V71, [2, 129]), o($VR1, [2, 212]), o($V62, [2, 217]), { 110: [1, 337] }, o($V71, [2, 128]), o($V71, [2, 127])],
644
+ table: [o($V0, $V1, { 3: 1, 4: 2, 6: 3, 8: 4, 7: 5, 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 9: [1, 7], 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 1: [3] }, { 5: [1, 25] }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 26, 8: 27, 10: 28, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 6: 30, 7: 31, 9: $Vf, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 7], 26: $Vg }, o($Vh, [2, 10]), o($Vh, [2, 8]), o($Vi, [2, 27]), { 12: [1, 34] }, { 12: [1, 35] }, { 12: [1, 36] }, { 12: [1, 37] }, { 12: [1, 38] }, { 12: [1, 39] }, { 12: [1, 40] }, { 12: [1, 41] }, { 12: [1, 42] }, { 12: [1, 43] }, { 12: [1, 44] }, { 12: [1, 45] }, o($Vi, [2, 30], { 33: [1, 46] }), o($Vj, [2, 38], { 36: $Vk }), o($Vl, [2, 41]), o($Vl, [2, 31], { 28: 48, 38: 49, 29: 50, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 30: 63, 31: 64, 57: 65, 60: 66, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 56: 93, 9: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 180: $V41, 182: $V51, 184: $V61, 185: $V71 }), { 1: [2, 1] }, { 5: [2, 2], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 129, 9: $Vf }), o($Vh, [2, 11]), o($V81, [2, 12], { 10: 130, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 10: 28, 7: 131, 8: 132, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 6], 26: $Vg }, o($Vh, [2, 9]), o([9, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $V1, { 27: 21, 32: 22, 35: 23, 37: 24, 25: 133, 5: $V91, 26: $V91 }), { 13: [1, 134] }, { 13: [1, 135] }, { 13: [1, 136] }, { 13: [1, 137] }, { 13: [1, 138] }, { 13: [1, 139] }, { 13: [1, 140] }, { 12: [1, 142], 13: [1, 141] }, { 13: [1, 143] }, { 13: [1, 144] }, { 13: [1, 145] }, { 13: [1, 146] }, o($V81, [2, 40], { 34: 147 }), o($V81, $V1, { 37: 24, 35: 148 }), o($Vl, [2, 43]), o($Va1, [2, 45]), o($Vl, [2, 32], { 30: 149, 31: 150, 9: [1, 151], 180: $V41, 182: $V51, 184: $V61, 185: $V71 }), o($Va1, [2, 46]), o($Va1, [2, 47]), o($Va1, [2, 48]), o($Va1, [2, 49]), o($Va1, [2, 50]), o($Va1, [2, 51]), o($Va1, [2, 52]), o($Va1, [2, 53]), o($Va1, [2, 54]), o($Va1, [2, 55]), o($Va1, [2, 56]), o($Va1, [2, 57]), o($Vb1, [2, 33]), o($Vb1, [2, 34]), o($Vc1, $Vd1, { 58: 152, 59: 153, 69: $Ve1, 71: $Vf1 }), o($Vc1, $Vd1, { 58: 156, 59: 157, 69: $Ve1, 71: $Vf1 }), o($Va1, [2, 84]), o($Va1, [2, 85]), o($Va1, [2, 86]), o($Vc1, $Vd1, { 58: 158, 59: 159, 69: $Ve1, 71: $Vf1 }), o($Vc1, $Vd1, { 58: 160, 59: 161, 69: $Ve1, 71: $Vf1 }), o($Va1, [2, 92]), o($Va1, [2, 93]), o($Va1, [2, 94]), o($Va1, [2, 95]), o($Va1, [2, 96]), o($Va1, [2, 97]), o($Va1, [2, 98]), o($Va1, [2, 99]), o($Va1, [2, 100]), o($Va1, [2, 101]), o($Va1, [2, 102]), { 39: 163, 41: 164, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 76: $Vx, 78: $Vy, 115: [1, 162] }, { 69: [1, 165] }, { 69: [1, 166] }, { 121: [1, 167] }, o($Va1, [2, 64]), { 12: [1, 168] }, { 12: [1, 169] }, { 12: [1, 170] }, { 53: [1, 171] }, { 53: [1, 172] }, o($Va1, [2, 63]), { 115: [1, 173] }, { 115: [1, 174] }, { 115: [1, 175] }, { 115: [1, 176] }, { 60: 178, 62: 177, 64: $Vt }, o($Vg1, [2, 75], { 65: 179, 66: [1, 180], 67: [1, 181], 68: [1, 182] }), { 12: [1, 183] }, { 64: [1, 185], 96: 184 }, { 69: [1, 186] }, { 58: 187, 69: $Ve1, 71: $Vf1 }, { 12: [1, 188], 58: 189, 69: $Ve1, 71: $Vf1 }, { 12: [1, 190] }, o($Va1, [2, 122], { 109: [1, 191] }), o($Va1, [2, 123]), o($Va1, [2, 124]), o($Va1, [2, 125]), o($Va1, [2, 113]), o($Va1, [2, 114]), o($Va1, [2, 103]), o($Va1, [2, 104]), o($Va1, [2, 105]), o($Va1, [2, 106]), o($Vh1, [2, 181]), o($Vh1, [2, 182]), o($Vh1, [2, 183]), o($Vh1, [2, 184]), o($Vh1, [2, 185]), o($Vh1, [2, 186]), o($Vh1, [2, 187]), o($Vh1, [2, 188]), o($Vh1, [2, 189]), o($Vh1, [2, 190]), o($Vh1, [2, 191]), o($Vh1, [2, 192]), o($Vh1, [2, 193]), { 5: [2, 3], 26: $Vg }, o($Vh, [2, 13]), { 5: [2, 4], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 192, 9: $Vf }), o($Vi, [2, 28]), o($Vh, [2, 14]), o($Vh, [2, 15]), o($Vh, [2, 16]), o($Vh, [2, 17]), o($Vh, [2, 18]), o($Vh, [2, 19]), o($Vh, [2, 20]), o($Vh, [2, 21]), { 13: [1, 193] }, o($Vh, [2, 23]), o($Vh, [2, 24]), o($Vh, [2, 25]), o($Vh, [2, 26]), o($V81, $V1, { 35: 23, 37: 24, 32: 194 }), o($Vl, [2, 42]), o($Vb1, [2, 35]), o($Vb1, [2, 36]), o($Vb1, [2, 37]), o($Vh1, $Vd1, { 59: 195 }), o($Vi1, [2, 67], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($VU1, $VV1, { 70: 250 }), o($VU1, $VV1, { 70: 251 }), o($Vh1, $Vd1, { 59: 252 }), o($Vi1, [2, 68], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, $Vd1, { 59: 253, 77: [1, 254] }), o($Vi1, [2, 90], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, $Vd1, { 59: 255 }), o($Vi1, [2, 91], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($VW1, $V1, { 37: 256 }), o($Va1, [2, 127]), o($Va1, [2, 128]), { 101: [1, 257] }, { 101: [1, 258] }, { 69: [1, 259] }, o($Va1, [2, 58]), o($Va1, [2, 59]), o($Va1, [2, 60]), { 12: [1, 260] }, { 12: [1, 261] }, o($VX1, [2, 235], { 181: 262 }), o($VY1, $VZ1, { 183: 263 }), o($VY1, $VZ1, { 183: 264 }), o($VY1, $VZ1, { 183: 265 }), { 60: 267, 63: [1, 266], 64: $Vt }, o($V_1, [2, 70]), o($Vg1, [2, 74], { 66: [1, 268], 67: [1, 269], 68: [1, 270] }), o($Vg1, [2, 73]), o($V$1, [2, 76]), o($V$1, [2, 77]), o($Va1, [2, 107]), { 97: 271, 98: [1, 272], 99: [1, 273] }, o([98, 99], [2, 109]), { 101: [1, 274] }, o($Va1, [2, 115]), o($Va1, [2, 117], { 58: 275, 69: $Ve1, 71: $Vf1 }), { 106: [1, 276] }, o($Va1, [2, 119]), { 69: [1, 277], 110: [1, 278] }, { 5: [2, 5], 26: $Vg }, o($Vh, [2, 22]), o($Vj, [2, 39], { 36: $Vk }), o($Vi1, [2, 65], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, [2, 137]), o($Vh1, [2, 138]), o($Vh1, [2, 139]), o($Vh1, [2, 140]), o($Vh1, [2, 141]), o($Vh1, [2, 142]), o($Vh1, [2, 143]), o($Vh1, [2, 144]), o($Vh1, [2, 145]), o($Vh1, [2, 146]), o($Vh1, [2, 147]), o($Vh1, [2, 148]), o($Vh1, [2, 149]), o($Vh1, [2, 150]), o($Vh1, [2, 151]), o($Vh1, [2, 152]), o($Vh1, [2, 153]), o($Vh1, [2, 155]), o($Vh1, [2, 156]), o($Vh1, [2, 157]), o($Vh1, [2, 158]), o($Vh1, [2, 159]), o($Vh1, [2, 160]), o([5, 9, 13, 26, 33, 36, 51, 52, 53, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], [2, 169], { 54: [1, 281], 55: [1, 280], 63: [1, 282], 66: [1, 283], 69: [1, 285], 72: [1, 279], 110: [1, 284] }), o($Vh1, [2, 167]), o($Vh1, [2, 168]), o($Vi1, [2, 170], { 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 122: 286, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vi1, [2, 171], { 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 122: 287, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, [2, 172]), o($Vh1, [2, 173]), o($Vh1, [2, 174]), o($Vh1, [2, 175]), o($Vh1, [2, 176]), o($Vh1, [2, 177]), o($Vh1, [2, 178]), o($Vh1, [2, 179]), o($Vh1, [2, 180]), o($Vh1, [2, 194]), o($Vh1, [2, 195]), o($Vh1, [2, 196]), o($Vh1, [2, 197]), o($Vh1, [2, 198]), o($Vh1, [2, 199]), o($Vh1, [2, 200]), o($Vh1, [2, 201]), o($Vh1, [2, 202]), o($Vh1, [2, 203]), { 69: [1, 288] }, o($Vh1, [2, 154]), o($Vh1, [2, 208]), o($Vh1, [2, 209]), o($Vh1, [2, 210]), { 12: [1, 289] }, o($Vh1, [2, 212]), o($V02, [2, 80], { 72: $V12 }), o($V02, [2, 81], { 72: $V12 }), o($Vi1, [2, 66], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vi1, [2, 87], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), { 69: [1, 291] }, o($Vi1, [2, 89], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 56: 93, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 116: [1, 292], 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31 }, { 69: [1, 293] }, { 69: [1, 294] }, { 115: [1, 295] }, o($Va1, [2, 61]), o($Va1, [2, 62]), { 116: [1, 296], 202: 297, 203: [1, 298], 204: [1, 299], 205: [1, 300], 206: [1, 301] }, { 116: [1, 302], 186: 303, 187: $V22, 191: $V32 }, { 116: [1, 306], 186: 303, 187: $V22, 191: $V32 }, { 116: [1, 307], 186: 303, 187: $V22, 191: $V32 }, o($Vg1, [2, 69]), o($V_1, [2, 71]), o($Vg1, [2, 72]), o($V$1, [2, 78]), o($V$1, [2, 79]), o($Va1, [2, 108]), o($Va1, [2, 110]), o($Va1, [2, 111]), { 69: [1, 308] }, { 106: [1, 309] }, { 69: [1, 310] }, o($Va1, [2, 120]), { 69: [1, 311] }, o($Vh1, [2, 161]), o($Vh1, [2, 162]), o($Vh1, [2, 163]), o($Vh1, [2, 164]), o($Vh1, [2, 165]), o($Vh1, [2, 166]), o($Vh1, [2, 207]), o($Vh1, [2, 205]), o($Vh1, [2, 206]), o($Vh1, [2, 204]), o($Vh1, [2, 211]), o($VU1, [2, 83]), o($Vh1, $Vd1, { 59: 312 }), o($Va1, [2, 126]), { 115: [1, 313] }, { 115: [1, 314] }, { 57: 317, 60: 316, 61: $Vs, 64: $Vt, 119: 315 }, o($Vb1, [2, 213]), o($VX1, [2, 236]), o($VX1, [2, 237]), o($VX1, [2, 238]), o($VX1, [2, 239]), o($VX1, [2, 240]), o($Vb1, [2, 214]), o($VY1, [2, 218]), { 188: 318, 192: $V42, 195: 319, 197: $V52, 198: 322, 199: $V62, 200: $V72, 201: $V82 }, o($VY1, $V92, { 190: 326, 192: $Va2 }), o($Vb1, [2, 215]), o($Vb1, [2, 216]), o($Va1, [2, 112]), { 69: [1, 328] }, o($Va1, [2, 118]), o($Va1, [2, 121]), o($Vi1, [2, 88], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($VW1, $V1, { 37: 329 }), o($VW1, $V1, { 37: 330 }), { 57: 317, 58: 331, 60: 316, 61: $Vs, 64: $Vt, 69: $Ve1, 71: $Vf1, 119: 332 }, o($Vb2, [2, 131]), o($Vb2, [2, 132]), { 189: [1, 333], 192: $V42, 195: 334, 197: $V52, 198: 322, 199: $V62, 200: $V72, 201: $V82 }, o($Vc2, [2, 225]), o($Vd2, $Ve2, { 196: 335, 198: 336, 199: $V62, 200: $V72, 201: $V82 }), o($Vd2, $Ve2, { 198: 336, 196: 337, 199: $V62, 200: $V72, 201: $V82 }), o($Vc2, [2, 229]), o($Vc2, [2, 232]), o($Vc2, [2, 233]), o($Vc2, [2, 234]), o($VY1, [2, 220]), o($Vf2, [2, 223], { 193: 338 }), o($Va1, [2, 116]), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 56: 93, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 116: [1, 339], 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31 }, { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 56: 93, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 116: [1, 340], 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31 }, o([13, 53, 54, 55, 61, 63, 64, 69, 72, 110, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179], $Vd1, { 59: 341 }), { 116: [1, 342] }, o($VY1, $V92, { 190: 343, 192: $Va2 }), o($Vc2, [2, 226]), o($Vc2, [2, 227]), o($Vc2, [2, 231]), o($Vc2, [2, 228]), o($VY1, [2, 222], { 194: [1, 344] }), o($Va1, [2, 129]), o($Va1, [2, 130]), { 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 56: 199, 57: 317, 60: 316, 61: $Vs, 63: $Vn1, 64: $Vt, 69: $Vo1, 72: $Vp1, 110: $Vq1, 119: 345, 122: 196, 123: 197, 124: 198, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }, o($Va1, [2, 135]), o($VY1, [2, 219]), o($Vf2, [2, 224]), { 58: 346, 69: $Ve1, 71: $Vf1, 116: [1, 347] }, o([13, 53, 54, 55, 63, 69, 72, 110, 116, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179], $Vd1, { 59: 348 }), o($Va1, [2, 134]), { 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 56: 199, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 116: [1, 349], 122: 196, 123: 197, 124: 198, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }, o($Va1, [2, 133])],
617
645
  defaultActions: { 25: [2, 1] },
618
646
  parseError: function parseError(str, hash) {
619
647
  if (hash.recoverable) {
@@ -773,6 +801,13 @@ var localGrammar = function() {
773
801
  dots: dots || 0
774
802
  });
775
803
  const noteEvent = (pitches, dur, marks, options = {}) => {
804
+ if (currentHeadShape !== void 0 && options.headShape === void 0) {
805
+ options = { ...options, headShape: currentHeadShape };
806
+ if (xNotePending) {
807
+ currentHeadShape = void 0;
808
+ xNotePending = false;
809
+ }
810
+ }
776
811
  const pitchedRestMark = marks && marks.find((m) => m && m.pitchedRest);
777
812
  if (pitchedRestMark) {
778
813
  const pitch2 = Array.isArray(pitches) ? pitches[0] : pitches;
@@ -890,12 +925,14 @@ var localGrammar = function() {
890
925
  ratio,
891
926
  events
892
927
  });
893
- const tremoloEvent = (pitchA, pitchB, count, division) => ({
928
+ const tremoloEvent = (pitchA, pitchB, count, division, marksA, marksB) => ({
894
929
  type: "tremolo",
895
930
  pitchA,
896
931
  pitchB,
897
932
  count,
898
- division
933
+ division,
934
+ ...marksA && marksA.length ? { marksA } : {},
935
+ ...marksB && marksB.length ? { marksB } : {}
899
936
  });
900
937
  const articulation = (type, placement) => ({ markType: "articulation", type, placement });
901
938
  const ornament = (type) => ({ markType: "ornament", type });
@@ -952,6 +989,9 @@ var localGrammar = function() {
952
989
  let currentDuration = { division: 4, dots: 0 };
953
990
  let numericTimeSignature = false;
954
991
  let currentOttava = 0;
992
+ let currentHeadShape = void 0;
993
+ let xNotePending = false;
994
+ let lastHairpin = void 0;
955
995
  let parseWarnings = [];
956
996
  const resetParserState = () => {
957
997
  currentStaff = 1;
@@ -1324,363 +1364,381 @@ var localGrammar = function() {
1324
1364
  return 12;
1325
1365
  break;
1326
1366
  case 17:
1327
- return 88;
1367
+ return 94;
1328
1368
  break;
1329
1369
  case 18:
1330
- return 89;
1370
+ return 95;
1331
1371
  break;
1332
1372
  case 19:
1333
- return 94;
1373
+ return 100;
1334
1374
  break;
1335
1375
  case 20:
1336
- return 98;
1376
+ return 104;
1337
1377
  break;
1338
1378
  case 21:
1339
- return 96;
1379
+ return 102;
1340
1380
  break;
1341
1381
  case 22:
1342
- return 85;
1382
+ return 91;
1343
1383
  break;
1344
1384
  case 23:
1345
- return 87;
1385
+ return 93;
1346
1386
  break;
1347
1387
  case 24:
1348
- return 84;
1388
+ return 90;
1349
1389
  break;
1350
1390
  case 25:
1351
- return 86;
1391
+ return 92;
1352
1392
  break;
1353
1393
  case 26:
1354
- return 97;
1394
+ return 103;
1355
1395
  break;
1356
1396
  case 27:
1357
- return 99;
1397
+ return 105;
1358
1398
  break;
1359
1399
  case 28:
1360
- return 101;
1400
+ return 107;
1361
1401
  break;
1362
1402
  case 29:
1363
- return 108;
1403
+ return 114;
1364
1404
  break;
1365
1405
  case 30:
1366
- return 111;
1406
+ return 117;
1367
1407
  break;
1368
1408
  case 31:
1369
- return 112;
1409
+ return 118;
1370
1410
  break;
1371
1411
  case 32:
1372
- return 114;
1412
+ return 120;
1373
1413
  break;
1374
1414
  case 33:
1375
- return 102;
1415
+ return 108;
1376
1416
  break;
1377
1417
  case 34:
1378
- return 105;
1418
+ return 111;
1379
1419
  break;
1380
1420
  case 35:
1381
- return 106;
1421
+ return 112;
1382
1422
  break;
1383
1423
  case 36:
1384
- return 107;
1424
+ return 113;
1385
1425
  break;
1386
1426
  case 37:
1387
- return 92;
1427
+ return 98;
1388
1428
  break;
1389
1429
  case 38:
1390
- return 93;
1430
+ return 99;
1391
1431
  break;
1392
1432
  case 39:
1393
- return 163;
1433
+ return 170;
1394
1434
  break;
1395
1435
  case 40:
1396
- return 164;
1436
+ return 171;
1397
1437
  break;
1398
1438
  case 41:
1399
- return 50;
1439
+ return 51;
1400
1440
  break;
1401
1441
  case 42:
1402
- return 170;
1442
+ return 177;
1403
1443
  break;
1404
1444
  case 43:
1405
- return 171;
1445
+ return 178;
1406
1446
  break;
1407
1447
  case 44:
1408
- return 51;
1448
+ return 52;
1409
1449
  break;
1410
1450
  case 45:
1411
- return 52;
1451
+ return 53;
1412
1452
  break;
1413
1453
  case 46:
1414
1454
  this.pushState("lyric");
1415
- return 173;
1455
+ return 180;
1416
1456
  break;
1417
1457
  case 47:
1418
1458
  this.pushState("figures");
1419
- return 178;
1459
+ return 185;
1420
1460
  break;
1421
1461
  case 48:
1422
1462
  this.pushState("figures");
1423
- return 177;
1463
+ return 184;
1424
1464
  break;
1425
1465
  case 49:
1426
1466
  this.pushState("figures");
1427
- return 175;
1467
+ return 182;
1428
1468
  break;
1429
1469
  case 50:
1430
- return 160;
1470
+ return 167;
1431
1471
  break;
1432
1472
  case 51:
1433
- return 161;
1473
+ return 168;
1434
1474
  break;
1435
1475
  case 52:
1436
- return 162;
1476
+ return 169;
1437
1477
  break;
1438
1478
  case 53:
1439
- return 133;
1479
+ return 139;
1440
1480
  break;
1441
1481
  case 54:
1442
- return 134;
1482
+ return 140;
1443
1483
  break;
1444
1484
  case 55:
1445
- return 135;
1485
+ return 141;
1446
1486
  break;
1447
1487
  case 56:
1448
- return 136;
1488
+ return 142;
1449
1489
  break;
1450
1490
  case 57:
1451
- return 137;
1491
+ return 143;
1452
1492
  break;
1453
1493
  case 58:
1454
- return 138;
1494
+ return 144;
1455
1495
  break;
1456
1496
  case 59:
1457
- return 139;
1497
+ return 145;
1458
1498
  break;
1459
1499
  case 60:
1460
- return 140;
1500
+ return 146;
1461
1501
  break;
1462
1502
  case 61:
1463
- return 141;
1503
+ return 147;
1464
1504
  break;
1465
1505
  case 62:
1466
- return 142;
1506
+ return 148;
1467
1507
  break;
1468
1508
  case 63:
1469
- return 143;
1509
+ return 149;
1470
1510
  break;
1471
1511
  case 64:
1472
- return 144;
1512
+ return 150;
1473
1513
  break;
1474
1514
  case 65:
1475
- return 145;
1515
+ return 151;
1476
1516
  break;
1477
1517
  case 66:
1478
- return 146;
1518
+ return 152;
1479
1519
  break;
1480
1520
  case 67:
1481
- return 172;
1521
+ return 153;
1482
1522
  break;
1483
1523
  case 68:
1484
- return 158;
1524
+ return 73;
1485
1525
  break;
1486
1526
  case 69:
1487
- return 147;
1527
+ return 74;
1488
1528
  break;
1489
1529
  case 70:
1490
- return 148;
1530
+ return 75;
1491
1531
  break;
1492
1532
  case 71:
1493
- return 150;
1533
+ return 179;
1494
1534
  break;
1495
1535
  case 72:
1496
- return 151;
1536
+ return 71;
1497
1537
  break;
1498
1538
  case 73:
1499
- return 154;
1539
+ return 165;
1500
1540
  break;
1501
1541
  case 74:
1502
- return 153;
1542
+ return 154;
1503
1543
  break;
1504
1544
  case 75:
1505
1545
  return 155;
1506
1546
  break;
1507
1547
  case 76:
1508
- return 156;
1548
+ return 157;
1509
1549
  break;
1510
1550
  case 77:
1511
- return 157;
1551
+ return 158;
1512
1552
  break;
1513
1553
  case 78:
1514
- return 159;
1554
+ return 161;
1515
1555
  break;
1516
1556
  case 79:
1517
- return 149;
1557
+ return 160;
1518
1558
  break;
1519
1559
  case 80:
1520
- return 152;
1560
+ return 162;
1521
1561
  break;
1522
1562
  case 81:
1523
- return 132;
1563
+ return 163;
1524
1564
  break;
1525
1565
  case 82:
1526
- return 33;
1566
+ return 164;
1527
1567
  break;
1528
1568
  case 83:
1529
- return 36;
1569
+ return 166;
1530
1570
  break;
1531
1571
  case 84:
1532
- return 115;
1572
+ return 156;
1533
1573
  break;
1534
1574
  case 85:
1535
- return 63;
1575
+ return 159;
1536
1576
  break;
1537
1577
  case 86:
1538
- return 66;
1578
+ return 138;
1539
1579
  break;
1540
1580
  case 87:
1541
- return 67;
1581
+ return 77;
1542
1582
  break;
1543
1583
  case 88:
1544
- return 68;
1584
+ return 33;
1545
1585
  break;
1546
1586
  case 89:
1547
- return 95;
1587
+ return 36;
1548
1588
  break;
1549
1589
  case 90:
1550
- return 103;
1590
+ return 121;
1551
1591
  break;
1552
1592
  case 91:
1553
- return 109;
1593
+ return 64;
1554
1594
  break;
1555
1595
  case 92:
1556
- return 110;
1596
+ return 67;
1557
1597
  break;
1558
1598
  case 93:
1559
- return 60;
1599
+ return 68;
1560
1600
  break;
1561
1601
  case 94:
1562
- return 62;
1602
+ return 69;
1563
1603
  break;
1564
1604
  case 95:
1565
- return 26;
1605
+ return 101;
1566
1606
  break;
1567
1607
  case 96:
1568
- return 168;
1608
+ return 109;
1569
1609
  break;
1570
1610
  case 97:
1571
- return 13;
1611
+ return 115;
1572
1612
  break;
1573
1613
  case 98:
1574
- return 166;
1614
+ return 116;
1575
1615
  break;
1576
1616
  case 99:
1577
- return 167;
1617
+ return 61;
1578
1618
  break;
1579
1619
  case 100:
1580
- return 165;
1620
+ return 63;
1581
1621
  break;
1582
1622
  case 101:
1583
- return 70;
1623
+ return 26;
1584
1624
  break;
1585
1625
  case 102:
1586
- return 104;
1626
+ return 175;
1587
1627
  break;
1588
1628
  case 103:
1589
- return 54;
1629
+ return 13;
1590
1630
  break;
1591
1631
  case 104:
1592
- return 53;
1632
+ return 173;
1593
1633
  break;
1594
1634
  case 105:
1595
- return 65;
1635
+ return 174;
1596
1636
  break;
1597
1637
  case 106:
1598
- return 169;
1638
+ return 172;
1599
1639
  break;
1600
1640
  case 107:
1601
- return 100;
1641
+ return 72;
1602
1642
  break;
1603
1643
  case 108:
1604
- return 71;
1644
+ return 110;
1605
1645
  break;
1606
1646
  case 109:
1607
- return 72;
1647
+ return 55;
1608
1648
  break;
1609
1649
  case 110:
1610
- return 5;
1650
+ return 54;
1611
1651
  break;
1612
1652
  case 111:
1653
+ return 66;
1613
1654
  break;
1614
1655
  case 112:
1615
- return 109;
1656
+ return 176;
1616
1657
  break;
1617
1658
  case 113:
1618
- this.popState();
1619
- return 110;
1659
+ return 106;
1620
1660
  break;
1621
1661
  case 114:
1662
+ return 76;
1622
1663
  break;
1623
1664
  case 115:
1665
+ return 78;
1624
1666
  break;
1625
1667
  case 116:
1626
- return 197;
1668
+ return 5;
1627
1669
  break;
1628
1670
  case 117:
1629
- return 199;
1630
1671
  break;
1631
1672
  case 118:
1632
- return 198;
1673
+ return 115;
1633
1674
  break;
1634
1675
  case 119:
1635
- return 196;
1676
+ this.popState();
1677
+ return 116;
1636
1678
  break;
1637
1679
  case 120:
1638
- return 196;
1639
1680
  break;
1640
1681
  case 121:
1641
- return 109;
1642
1682
  break;
1643
1683
  case 122:
1644
- this.popState();
1645
- return 110;
1684
+ return 204;
1646
1685
  break;
1647
1686
  case 123:
1687
+ return 206;
1648
1688
  break;
1649
1689
  case 124:
1690
+ return 205;
1650
1691
  break;
1651
1692
  case 125:
1693
+ return 203;
1652
1694
  break;
1653
1695
  case 126:
1654
- return 180;
1696
+ return 203;
1655
1697
  break;
1656
1698
  case 127:
1657
- return 182;
1699
+ return 115;
1658
1700
  break;
1659
1701
  case 128:
1660
- return 185;
1702
+ this.popState();
1703
+ return 116;
1661
1704
  break;
1662
1705
  case 129:
1663
- return 190;
1664
1706
  break;
1665
1707
  case 130:
1666
- return 192;
1667
1708
  break;
1668
1709
  case 131:
1669
- return 193;
1670
1710
  break;
1671
1711
  case 132:
1672
- return 194;
1712
+ return 187;
1673
1713
  break;
1674
1714
  case 133:
1675
- return 187;
1715
+ return 189;
1676
1716
  break;
1677
1717
  case 134:
1678
- return 184;
1718
+ return 192;
1719
+ break;
1720
+ case 135:
1721
+ return 197;
1722
+ break;
1723
+ case 136:
1724
+ return 199;
1725
+ break;
1726
+ case 137:
1727
+ return 200;
1728
+ break;
1729
+ case 138:
1730
+ return 201;
1731
+ break;
1732
+ case 139:
1733
+ return 194;
1734
+ break;
1735
+ case 140:
1736
+ return 191;
1679
1737
  break;
1680
1738
  }
1681
1739
  },
1682
- rules: [/^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:\[title\b)/, /^(?:\[subtitle\b)/, /^(?:\[composer\b)/, /^(?:\[arranger\b)/, /^(?:\[lyricist\b)/, /^(?:\[opus\b)/, /^(?:\[instrument-[A-Za-z0-9_]+(?:-[A-Za-z0-9_]+)*)/, /^(?:\[instrument\b)/, /^(?:\[genre\b)/, /^(?:\[staves\b)/, /^(?:\[measures\b)/, /^(?:\[auto-beam\b)/, /^(?:\])/, /^(?:"([^\"\\]|\\.)*")/, /^(?:\\clef\b)/, /^(?:\\key\b)/, /^(?:\\time\b)/, /^(?:\\partial\b)/, /^(?:\\numericTimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\defaultTimeSignature\b)/, /^(?:\\tempo\b)/, /^(?:\\staff\b)/, /^(?:\\grace\b)/, /^(?:\\times\b)/, /^(?:\\tuplet\b)/, /^(?:\\repeat\b)/, /^(?:\\ottava\b)/, /^(?:\\stemUp\b)/, /^(?:\\stemDown\b)/, /^(?:\\stemNeutral\b)/, /^(?:\\major\b)/, /^(?:\\minor\b)/, /^(?:\\sustainOn\b)/, /^(?:\\sustainOff\b)/, /^(?:\\bar\b)/, /^(?:\\coda\b)/, /^(?:\\segno\b)/, /^(?:\\chords\b)/, /^(?:\\markup\b)/, /^(?:\\addlyrics\b)/, /^(?:\^\\figures\b)/, /^(?:_\\figures\b)/, /^(?:\\figures\b)/, /^(?:\\<)/, /^(?:\\>)/, /^(?:\\!)/, /^(?:\\staccato\b)/, /^(?:\\staccatissimo\b)/, /^(?:\\tenuto\b)/, /^(?:\\marcato\b)/, /^(?:\\accent\b)/, /^(?:\\portato\b)/, /^(?:\\trill\b)/, /^(?:\\turn\b)/, /^(?:\\mordent\b)/, /^(?:\\prall\b)/, /^(?:\\fermata\b)/, /^(?:\\shortfermata\b)/, /^(?:\\arpeggio\b)/, /^(?:\\breathe\b)/, /^(?:\\glissando\b)/, /^(?:\\(?:fffff|ppppp|ffff|pppp|sffz|sfpp|sfzp|mfp|sff|sfp|spp|fz|pf|rf|sf|sp|n)(?![a-zA-Z]))/, /^(?:\\ppp\b)/, /^(?:\\pp\b)/, /^(?:\\mp\b)/, /^(?:\\mf\b)/, /^(?:\\fff\b)/, /^(?:\\ff\b)/, /^(?:\\sfz\b)/, /^(?:\\rfz\b)/, /^(?:\\sf\b)/, /^(?:\\fp\b)/, /^(?:\\p\b)/, /^(?:\\f)/, /^(?:\\rest\b)/, /^(?:\\\\\\)/, /^(?:\\\\)/, /^(?:tremolo\b)/, /^(?:[a-g](ss|ff|s|f)?)/, /^(?:')/, /^(?:,)/, /^(?:[0-9]+)/, /^(?:\/)/, /^(?:#)/, /^(?:\{)/, /^(?:\})/, /^(?:<)/, /^(?:>)/, /^(?:\|)/, /^(?:\[)/, /^(?:\])/, /^(?:\()/, /^(?:\))/, /^(?:~)/, /^(?:\.)/, /^(?:-)/, /^(?:[_])/, /^(?:\^)/, /^(?:!)/, /^(?::)/, /^(?:=)/, /^(?:[rR])/, /^(?:[sS])/, /^(?:$)/, /^(?:.)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:--)/, /^(?:__\b)/, /^(?:_\b)/, /^(?:"([^\"\\]|\\.)*")/, /^(?:[^ \t\r\n{}\"\\]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:<)/, /^(?:>)/, /^(?:[0-9]+)/, /^(?:_\b)/, /^(?:\+)/, /^(?:-)/, /^(?:!)/, /^(?:\.)/, /^(?:[sS])/],
1683
- conditions: { "figures": { "rules": [121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134], "inclusive": false }, "lyric": { "rules": [112, 113, 114, 115, 116, 117, 118, 119, 120], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 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, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "inclusive": true } }
1740
+ rules: [/^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:\[title\b)/, /^(?:\[subtitle\b)/, /^(?:\[composer\b)/, /^(?:\[arranger\b)/, /^(?:\[lyricist\b)/, /^(?:\[opus\b)/, /^(?:\[instrument-[A-Za-z0-9_]+(?:-[A-Za-z0-9_]+)*)/, /^(?:\[instrument\b)/, /^(?:\[genre\b)/, /^(?:\[staves\b)/, /^(?:\[measures\b)/, /^(?:\[auto-beam\b)/, /^(?:\])/, /^(?:"([^\"\\]|\\.)*")/, /^(?:\\clef\b)/, /^(?:\\key\b)/, /^(?:\\time\b)/, /^(?:\\partial\b)/, /^(?:\\numericTimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\defaultTimeSignature\b)/, /^(?:\\tempo\b)/, /^(?:\\staff\b)/, /^(?:\\grace\b)/, /^(?:\\times\b)/, /^(?:\\tuplet\b)/, /^(?:\\repeat\b)/, /^(?:\\ottava\b)/, /^(?:\\stemUp\b)/, /^(?:\\stemDown\b)/, /^(?:\\stemNeutral\b)/, /^(?:\\major\b)/, /^(?:\\minor\b)/, /^(?:\\sustainOn(?![a-zA-Z]))/, /^(?:\\sustainOff(?![a-zA-Z]))/, /^(?:\\bar(?![a-zA-Z]))/, /^(?:\\coda(?![a-zA-Z]))/, /^(?:\\segno(?![a-zA-Z]))/, /^(?:\\chords(?![a-zA-Z]))/, /^(?:\\markup(?![a-zA-Z]))/, /^(?:\\addlyrics\b)/, /^(?:\^\\figures\b)/, /^(?:_\\figures\b)/, /^(?:\\figures\b)/, /^(?:\\<)/, /^(?:\\>)/, /^(?:\\!)/, /^(?:\\staccato(?![a-zA-Z]))/, /^(?:\\staccatissimo(?![a-zA-Z]))/, /^(?:\\tenuto(?![a-zA-Z]))/, /^(?:\\marcato(?![a-zA-Z]))/, /^(?:\\accent(?![a-zA-Z]))/, /^(?:\\portato(?![a-zA-Z]))/, /^(?:\\trill(?![a-zA-Z]))/, /^(?:\\turn(?![a-zA-Z]))/, /^(?:\\mordent(?![a-zA-Z]))/, /^(?:\\prall(?![a-zA-Z]))/, /^(?:\\fermata(?![a-zA-Z]))/, /^(?:\\shortfermata(?![a-zA-Z]))/, /^(?:\\arpeggio(?![a-zA-Z]))/, /^(?:\\breathe(?![a-zA-Z]))/, /^(?:\\caesura(?![a-zA-Z]))/, /^(?:\\xNote\b)/, /^(?:\\improvisationOn\b)/, /^(?:\\improvisationOff\b)/, /^(?:\\glissando(?![a-zA-Z]))/, /^(?:\\breve(?![a-zA-Z]))/, /^(?:\\(?:fffff|ppppp|fpp|ffff|pppp|sffz|sfpp|sfzp|mfp|sff|sfp|spp|fz|pf|rf|sf|sp|n)(?![a-zA-Z]))/, /^(?:\\ppp(?![a-zA-Z]))/, /^(?:\\pp(?![a-zA-Z]))/, /^(?:\\mp(?![a-zA-Z]))/, /^(?:\\mf(?![a-zA-Z]))/, /^(?:\\fff(?![a-zA-Z]))/, /^(?:\\ff(?![a-zA-Z]))/, /^(?:\\sfz(?![a-zA-Z]))/, /^(?:\\rfz(?![a-zA-Z]))/, /^(?:\\sf(?![a-zA-Z]))/, /^(?:\\fp(?![a-zA-Z]))/, /^(?:\\p(?![a-zA-Z]))/, /^(?:\\f(?![a-zA-Z]))/, /^(?:\\rest\b)/, /^(?:\*)/, /^(?:\\\\\\)/, /^(?:\\\\)/, /^(?:tremolo\b)/, /^(?:[a-g](ss|ff|s|f)?)/, /^(?:')/, /^(?:,)/, /^(?:[0-9]+)/, /^(?:\/)/, /^(?:#)/, /^(?:\{)/, /^(?:\})/, /^(?:<)/, /^(?:>)/, /^(?:\|)/, /^(?:\[)/, /^(?:\])/, /^(?:\()/, /^(?:\))/, /^(?:~)/, /^(?:\.)/, /^(?:-)/, /^(?:[_])/, /^(?:\^)/, /^(?:!)/, /^(?::)/, /^(?:=)/, /^(?:[rR])/, /^(?:[sS])/, /^(?:$)/, /^(?:.)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:--)/, /^(?:__\b)/, /^(?:_\b)/, /^(?:"([^\"\\]|\\.)*")/, /^(?:[^ \t\r\n{}\"\\]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:<)/, /^(?:>)/, /^(?:[0-9]+)/, /^(?:_\b)/, /^(?:\+)/, /^(?:-)/, /^(?:!)/, /^(?:\.)/, /^(?:[sS])/],
1741
+ conditions: { "figures": { "rules": [127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "inclusive": false }, "lyric": { "rules": [118, 119, 120, 121, 122, 123, 124, 125, 126], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 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, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117], "inclusive": true } }
1684
1742
  };
1685
1743
  return lexer2;
1686
1744
  }();
@@ -1832,6 +1890,11 @@ var Clef;
1832
1890
  Clef2["bass"] = "bass";
1833
1891
  Clef2["alto"] = "alto";
1834
1892
  Clef2["tenor"] = "tenor";
1893
+ Clef2["soprano"] = "soprano";
1894
+ Clef2["mezzosoprano"] = "mezzosoprano";
1895
+ Clef2["baritone"] = "baritone";
1896
+ Clef2["varbaritone"] = "varbaritone";
1897
+ Clef2["percussion"] = "percussion";
1835
1898
  })(Clef || (Clef = {}));
1836
1899
  var StemDirection;
1837
1900
  (function(StemDirection2) {
@@ -1858,6 +1921,7 @@ var OrnamentType;
1858
1921
  OrnamentType2["shortFermata"] = "shortFermata";
1859
1922
  OrnamentType2["arpeggio"] = "arpeggio";
1860
1923
  OrnamentType2["breath"] = "breath";
1924
+ OrnamentType2["caesura"] = "caesura";
1861
1925
  })(OrnamentType || (OrnamentType = {}));
1862
1926
  var DynamicType;
1863
1927
  (function(DynamicType2) {
@@ -1874,6 +1938,7 @@ var DynamicType;
1874
1938
  DynamicType2["fp"] = "fp";
1875
1939
  DynamicType2["pppp"] = "pppp";
1876
1940
  DynamicType2["ppppp"] = "ppppp";
1941
+ DynamicType2["fpp"] = "fpp";
1877
1942
  DynamicType2["ffff"] = "ffff";
1878
1943
  DynamicType2["fffff"] = "fffff";
1879
1944
  DynamicType2["sf"] = "sf";
@@ -2874,6 +2939,13 @@ var CLEF_SHAPES = {
2874
2939
  bass: { shape: "F", line: 4 },
2875
2940
  alto: { shape: "C", line: 3 },
2876
2941
  tenor: { shape: "C", line: 4 },
2942
+ // The rest of LilyPond's clef table (scm/parser-clef.scm).
2943
+ soprano: { shape: "C", line: 1 },
2944
+ mezzosoprano: { shape: "C", line: 2 },
2945
+ baritone: { shape: "C", line: 5 },
2946
+ varbaritone: { shape: "F", line: 3 },
2947
+ // A percussion clef has no line: MEI writes clef.shape="perc" alone.
2948
+ percussion: { shape: "perc" },
2877
2949
  // Also support uppercase letter clef names
2878
2950
  G: { shape: "G", line: 2 },
2879
2951
  F: { shape: "F", line: 4 },
@@ -2904,7 +2976,7 @@ var resolveClef = (clefStr) => {
2904
2976
  var clefOctaveShift = (clefStr) => clefStr ? resolveClef(clefStr).dis?.octaves ?? 0 : 0;
2905
2977
  var clefElementAttrs = (clefStr) => {
2906
2978
  const c = resolveClef(clefStr);
2907
- let attrs = `shape="${c.shape}" line="${c.line}"`;
2979
+ let attrs = c.line === void 0 ? `shape="${c.shape}"` : `shape="${c.shape}" line="${c.line}"`;
2908
2980
  if (c.dis)
2909
2981
  attrs += ` dis="${c.dis.dis}" dis.place="${c.dis.place}"`;
2910
2982
  return attrs;
@@ -2915,7 +2987,7 @@ var clefTransOf = (clefStr) => {
2915
2987
  };
2916
2988
  var staffDefClefAttrs = (clefStr) => {
2917
2989
  const c = resolveClef(clefStr);
2918
- let attrs = `clef.shape="${c.shape}" clef.line="${c.line}"`;
2990
+ let attrs = c.line === void 0 ? `clef.shape="${c.shape}"` : `clef.shape="${c.shape}" clef.line="${c.line}"`;
2919
2991
  if (c.dis)
2920
2992
  attrs += ` clef.dis="${c.dis.dis}" clef.dis.place="${c.dis.place}"`;
2921
2993
  if (c.trans)
@@ -2923,6 +2995,8 @@ var staffDefClefAttrs = (clefStr) => {
2923
2995
  return attrs;
2924
2996
  };
2925
2997
  var DURATIONS = {
2998
+ 0.5: "breve",
2999
+ // breve (double whole note), LilyPond \breve
2926
3000
  1: "1",
2927
3001
  // whole
2928
3002
  2: "2",
@@ -3005,12 +3079,13 @@ var encodePitch = (pitch, keyFifths = 0, ottavaShift = 0, measureAccidentals, cl
3005
3079
  const noteAccid = ACCIDENTALS[pitch.accidental];
3006
3080
  if (pitch.courtesy) {
3007
3081
  accid = noteAccid;
3082
+ } else if (prevMeasureAccid === noteAccid) {
3008
3083
  } else if (prevMeasureAccid !== void 0 && noteAccid !== prevMeasureAccid) {
3009
3084
  accid = noteAccid;
3010
3085
  } else if (noteAccid !== keyAccid) {
3011
3086
  accid = noteAccid;
3012
3087
  }
3013
- accidGes = noteAccid;
3088
+ accidGes = noteAccid === "x" ? "ss" : noteAccid;
3014
3089
  if (measureAccidentals)
3015
3090
  measureAccidentals.set(pitchKey, noteAccid);
3016
3091
  } else if (keyAccid) {
@@ -3023,6 +3098,11 @@ var encodePitch = (pitch, keyFifths = 0, ottavaShift = 0, measureAccidentals, cl
3023
3098
  accidGes = "n";
3024
3099
  if (measureAccidentals)
3025
3100
  measureAccidentals.set(pitchKey, "n");
3101
+ } else if (pitch.courtesy) {
3102
+ accid = "n";
3103
+ accidGes = "n";
3104
+ if (measureAccidentals)
3105
+ measureAccidentals.set(pitchKey, "n");
3026
3106
  } else if (pitch.courtesy && prevMeasureAccid && prevMeasureAccid !== "n") {
3027
3107
  accid = "n";
3028
3108
  accidGes = "n";
@@ -3103,13 +3183,15 @@ var buildNoteElement = (pitch, dur, dots, indent, inChord, options = {}, noteId)
3103
3183
  if (!inChord && options.stemDir)
3104
3184
  attrs += ` stem.dir="${options.stemDir}"`;
3105
3185
  if (!inChord && options.layerStaff && options.staff && options.staff !== options.layerStaff) {
3106
- attrs += ` staff="${options.staff}"`;
3186
+ attrs += ` staff="${options.staff + (options.staffOffset || 0)}"`;
3107
3187
  }
3108
3188
  if (!inChord && options.tremolo) {
3109
3189
  const stemMod = tremoloToStemMod(options.tremolo);
3110
3190
  if (stemMod)
3111
3191
  attrs += ` stem.mod="${stemMod}"`;
3112
3192
  }
3193
+ if (options.headShape)
3194
+ attrs += ` head.shape="${options.headShape}"`;
3113
3195
  const hasChildren = !inChord && (options.artics && options.artics.length > 0 || !!options.lyricXml);
3114
3196
  if (!hasChildren) {
3115
3197
  return `${indent}<note ${attrs} />
@@ -3156,14 +3238,17 @@ var extractMarkOptions = (marks) => {
3156
3238
  beamEnd: false,
3157
3239
  dynamic: void 0,
3158
3240
  dynamics: [],
3241
+ dynamicPlacement: void 0,
3159
3242
  hairpin: void 0,
3160
3243
  pedal: void 0,
3161
3244
  pedals: [],
3162
3245
  tremolo: void 0,
3163
3246
  fingerings: [],
3164
3247
  navigation: void 0,
3248
+ navigationPlacement: void 0,
3165
3249
  markups: [],
3166
3250
  breath: false,
3251
+ caesura: false,
3167
3252
  glissando: false
3168
3253
  };
3169
3254
  if (!marks)
@@ -3197,6 +3282,8 @@ var extractMarkOptions = (marks) => {
3197
3282
  result.mordent = "upper";
3198
3283
  } else if (mark.type === OrnamentType.breath) {
3199
3284
  result.breath = true;
3285
+ } else if (mark.type === OrnamentType.caesura) {
3286
+ result.caesura = true;
3200
3287
  }
3201
3288
  break;
3202
3289
  case "dynamic": {
@@ -3204,6 +3291,9 @@ var extractMarkOptions = (marks) => {
3204
3291
  if (dynStr) {
3205
3292
  result.dynamic = dynStr;
3206
3293
  result.dynamics.push(dynStr);
3294
+ const p = mark.placement;
3295
+ if (p)
3296
+ result.dynamicPlacement = p;
3207
3297
  }
3208
3298
  break;
3209
3299
  }
@@ -3252,6 +3342,7 @@ var extractMarkOptions = (marks) => {
3252
3342
  break;
3253
3343
  case "navigation":
3254
3344
  result.navigation = mark.type;
3345
+ result.navigationPlacement = mark.placement ?? "above";
3255
3346
  break;
3256
3347
  case "markup":
3257
3348
  result.markups.push({
@@ -3269,7 +3360,7 @@ var extractMarkOptions = (marks) => {
3269
3360
  }
3270
3361
  return result;
3271
3362
  };
3272
- var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFifths = 0, ottavaShift = 0, measureAccidentals, lyricXml = "", clefOctave = 0) => {
3363
+ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFifths = 0, ottavaShift = 0, measureAccidentals, lyricXml = "", clefOctave = 0, tieStartPitches, staffOffset = 0) => {
3273
3364
  const dur = DURATIONS[event.duration.division] || "4";
3274
3365
  const dots = event.duration.dots || 0;
3275
3366
  const markOptions = extractMarkOptions(event.marks);
@@ -3294,10 +3385,27 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3294
3385
  staff: event.staff,
3295
3386
  layerStaff,
3296
3387
  artics: markOptions.artics,
3297
- tremolo: markOptions.tremolo
3388
+ tremolo: markOptions.tremolo,
3389
+ headShape: event.headShape,
3390
+ staffOffset
3391
+ };
3392
+ const suppressTieAccid = (p, index) => {
3393
+ if (!tieEnd || !p.accid)
3394
+ return p;
3395
+ const start = tieStartPitches?.[index];
3396
+ const startAccid = start?.accidental ? ACCIDENTALS[start.accidental] : void 0;
3397
+ if (startAccid === void 0)
3398
+ return p;
3399
+ const ges = p.accid === "x" ? "ss" : p.accid;
3400
+ const startGes = startAccid === "x" ? "ss" : startAccid;
3401
+ if (startGes !== ges)
3402
+ return p;
3403
+ const copy = { ...p };
3404
+ delete copy.accid;
3405
+ return copy;
3298
3406
  };
3299
3407
  if (event.pitches.length === 1) {
3300
- const pitch = encodePitch(event.pitches[0], keyFifths, ottavaShift, measureAccidentals, clefOctave);
3408
+ const pitch = suppressTieAccid(encodePitch(event.pitches[0], keyFifths, ottavaShift, measureAccidentals, clefOctave), 0);
3301
3409
  const noteId = generateId("note");
3302
3410
  return {
3303
3411
  xml: buildNoteElement(pitch, dur, dots, indent, false, { ...noteOptions, lyricXml }, noteId),
@@ -3318,8 +3426,11 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3318
3426
  slurEnd: markOptions.slurEnd,
3319
3427
  fingerings: markOptions.fingerings,
3320
3428
  navigation: markOptions.navigation,
3429
+ navigationPlacement: markOptions.navigationPlacement,
3430
+ dynamicPlacement: markOptions.dynamicPlacement,
3321
3431
  markups: markOptions.markups,
3322
3432
  breath: markOptions.breath,
3433
+ caesura: markOptions.caesura,
3323
3434
  glissando: markOptions.glissando
3324
3435
  };
3325
3436
  }
@@ -3334,7 +3445,7 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3334
3445
  if (noteOptions.stemDir)
3335
3446
  chordAttrs += ` stem.dir="${noteOptions.stemDir}"`;
3336
3447
  if (layerStaff && noteOptions.staff && noteOptions.staff !== layerStaff) {
3337
- chordAttrs += ` staff="${noteOptions.staff}"`;
3448
+ chordAttrs += ` staff="${noteOptions.staff + (noteOptions.staffOffset || 0)}"`;
3338
3449
  }
3339
3450
  if (noteOptions.tremolo) {
3340
3451
  const stemMod = tremoloToStemMod(noteOptions.tremolo);
@@ -3343,9 +3454,9 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3343
3454
  }
3344
3455
  let result = `${indent}<chord ${chordAttrs}>
3345
3456
  `;
3346
- for (const p of event.pitches) {
3347
- const pitch = encodePitch(p, keyFifths, ottavaShift, measureAccidentals, clefOctave);
3348
- result += buildNoteElement(pitch, dur, dots, indent + " ", true);
3457
+ for (let pi = 0; pi < event.pitches.length; pi++) {
3458
+ const pitch = suppressTieAccid(encodePitch(event.pitches[pi], keyFifths, ottavaShift, measureAccidentals, clefOctave), pi);
3459
+ result += buildNoteElement(pitch, dur, dots, indent + " ", true, { headShape: noteOptions.headShape });
3349
3460
  }
3350
3461
  if (noteOptions.artics.length > 0) {
3351
3462
  const aboveArtics = noteOptions.artics.filter((a) => a.placement === "above").map((a) => a.type);
@@ -3387,8 +3498,11 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3387
3498
  slurEnd: markOptions.slurEnd,
3388
3499
  fingerings: markOptions.fingerings,
3389
3500
  navigation: markOptions.navigation,
3501
+ navigationPlacement: markOptions.navigationPlacement,
3502
+ dynamicPlacement: markOptions.dynamicPlacement,
3390
3503
  markups: markOptions.markups,
3391
3504
  breath: markOptions.breath,
3505
+ caesura: markOptions.caesura,
3392
3506
  glissando: markOptions.glissando
3393
3507
  };
3394
3508
  };
@@ -3401,10 +3515,22 @@ var restEventToMEI = (event, indent, keyFifths = 0, ottavaShift = 0, measureAcci
3401
3515
  if (crossStaff)
3402
3516
  attrs += ` staff="${crossStaff}"`;
3403
3517
  let fermata;
3518
+ const restMarkups = [];
3519
+ const restDynamics = [];
3404
3520
  if (event.marks) {
3405
3521
  for (const mk of event.marks) {
3406
3522
  if (mk.markType === "ornament" && mk.type === "fermata")
3407
3523
  fermata = "normal";
3524
+ else if (mk.markType === "markup") {
3525
+ restMarkups.push({
3526
+ content: mk.content,
3527
+ placement: mk.placement
3528
+ });
3529
+ } else if (mk.markType === "dynamic") {
3530
+ const label = DYNAMIC_MAP[mk.type];
3531
+ if (label)
3532
+ restDynamics.push({ startid: restId, label, placement: mk.placement });
3533
+ }
3408
3534
  }
3409
3535
  }
3410
3536
  if (event.pitch) {
@@ -3413,15 +3539,18 @@ var restEventToMEI = (event, indent, keyFifths = 0, ottavaShift = 0, measureAcci
3413
3539
  }
3414
3540
  if (event.invisible) {
3415
3541
  return { xml: `${indent}<space ${attrs} />
3416
- `, elementId: restId, fermata };
3542
+ `, elementId: restId, fermata, markups: restMarkups, dynamics: restDynamics };
3417
3543
  }
3418
3544
  if (event.fullMeasure) {
3419
3545
  const mRestId = generateId("mrest");
3546
+ if (event.multiMeasure && event.multiMeasure > 1)
3547
+ return { xml: `${indent}<multiRest xml:id="${mRestId}" num="${event.multiMeasure}" />
3548
+ `, elementId: mRestId, fermata, markups: restMarkups, dynamics: restDynamics };
3420
3549
  return { xml: `${indent}<mRest xml:id="${mRestId}" />
3421
- `, elementId: mRestId, fermata };
3550
+ `, elementId: mRestId, fermata, markups: restMarkups, dynamics: restDynamics };
3422
3551
  }
3423
3552
  return { xml: `${indent}<rest ${attrs} />
3424
- `, elementId: restId, fermata };
3553
+ `, elementId: restId, fermata, markups: restMarkups, dynamics: restDynamics };
3425
3554
  };
3426
3555
  var tupletHasInternalBeams = (event) => {
3427
3556
  let starts = 0;
@@ -3437,17 +3566,27 @@ var tupletHasInternalBeams = (event) => {
3437
3566
  }
3438
3567
  return starts > 0 && starts === ends;
3439
3568
  };
3440
- var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff, ottavaShift = 0, inParentBeam = false, measureAccidentals, currentClef, lyricCursors = []) => {
3569
+ var tupletPitchesMatch = (p1, p2) => {
3570
+ if (p1.length !== p2.length)
3571
+ return false;
3572
+ for (let i = 0; i < p1.length; i++) {
3573
+ if (p1[i].phonet !== p2[i].phonet || p1[i].octave !== p2[i].octave)
3574
+ return false;
3575
+ }
3576
+ return true;
3577
+ };
3578
+ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff, ottavaShift = 0, inParentBeam = false, measureAccidentals, currentClef, lyricCursors = [], contextStemDir, initialTiePitches = []) => {
3441
3579
  const num = event.ratio.denominator;
3442
3580
  const numbase = event.ratio.numerator;
3443
3581
  let xml = `${indent}<tuplet xml:id="${generateId("tuplet")}" num="${num}" numbase="${numbase}">
3444
3582
  `;
3445
3583
  const baseIndent = indent + " ";
3446
- const effectiveStaff = currentStaff ?? layerStaff;
3584
+ let effectiveStaff = currentStaff ?? layerStaff;
3447
3585
  let firstNoteId = null;
3448
3586
  let lastNoteId = null;
3449
3587
  const slurStarts = [];
3450
3588
  const slurEnds = [];
3589
+ const slurActions = [];
3451
3590
  const dynamics = [];
3452
3591
  const fermatas = [];
3453
3592
  const trills = [];
@@ -3457,10 +3596,14 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3457
3596
  const pedals = [];
3458
3597
  const fingerings = [];
3459
3598
  const markups = [];
3599
+ const hairpinStarts = [];
3600
+ const hairpinEnds = [];
3460
3601
  const hasInternalBeams = !inParentBeam && tupletHasInternalBeams(event);
3461
3602
  let beamOpen = false;
3462
3603
  let activeClef = currentClef;
3463
3604
  let endingClef;
3605
+ let pendingTieIn = [...initialTiePitches];
3606
+ let pendingTieOut = [];
3464
3607
  for (const e of event.events) {
3465
3608
  if (e.type === "note") {
3466
3609
  const noteEvent = e;
@@ -3473,18 +3616,29 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3473
3616
  const noteIndent = beamOpen ? baseIndent + " " : baseIndent;
3474
3617
  const effectiveNoteEvent = effectiveStaff && layerStaff && effectiveStaff !== layerStaff ? { ...noteEvent, staff: effectiveStaff } : noteEvent;
3475
3618
  const lyricXml = lyricCursors.length ? lyricXmlForEvent(lyricCursors, noteIndent + " ") : "";
3476
- const result = noteEventToMEI(effectiveNoteEvent, noteIndent, layerStaff, false, void 0, keyFifths, ottavaShift, measureAccidentals, lyricXml, clefOctaveShift(activeClef));
3619
+ const carryTieEnd = pendingTieIn.length > 0 && tupletPitchesMatch(pendingTieIn, noteEvent.pitches);
3620
+ const result = noteEventToMEI(effectiveNoteEvent, noteIndent, layerStaff, carryTieEnd, contextStemDir, keyFifths, ottavaShift, measureAccidentals, lyricXml, clefOctaveShift(activeClef), carryTieEnd ? pendingTieIn : void 0);
3621
+ if (carryTieEnd)
3622
+ pendingTieIn = [];
3477
3623
  xml += result.xml;
3478
3624
  if (!firstNoteId)
3479
3625
  firstNoteId = result.elementId;
3480
3626
  lastNoteId = result.elementId;
3627
+ if (result.hasTieStart)
3628
+ pendingTieOut = result.pitches;
3629
+ else if (carryTieEnd)
3630
+ pendingTieOut = [];
3481
3631
  if (result.slurStart)
3482
3632
  slurStarts.push(result.elementId);
3483
3633
  if (result.slurEnd)
3484
3634
  slurEnds.push(result.elementId);
3635
+ if (result.slurEnd)
3636
+ slurActions.push({ id: result.elementId, start: false });
3637
+ if (result.slurStart)
3638
+ slurActions.push({ id: result.elementId, start: true });
3485
3639
  if (result.dynamics)
3486
3640
  for (const label of result.dynamics)
3487
- dynamics.push({ startid: result.elementId, label });
3641
+ dynamics.push({ startid: result.elementId, label, placement: result.dynamicPlacement });
3488
3642
  if (result.fermata)
3489
3643
  fermatas.push({ startid: result.elementId, shape: result.fermata === "short" ? "angular" : void 0 });
3490
3644
  if (result.trill)
@@ -3502,6 +3656,12 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3502
3656
  fingerings.push({ startid: result.elementId, finger: fing.finger, placement: fing.placement });
3503
3657
  for (const mkup of result.markups)
3504
3658
  markups.push({ startid: result.elementId, content: mkup.content, placement: mkup.placement });
3659
+ if (markOptions.hairpin === "crescStart")
3660
+ hairpinStarts.push({ id: result.elementId, form: "cres" });
3661
+ else if (markOptions.hairpin === "dimStart")
3662
+ hairpinStarts.push({ id: result.elementId, form: "dim" });
3663
+ else if (markOptions.hairpin === "crescEnd" || markOptions.hairpin === "dimEnd")
3664
+ hairpinEnds.push(result.elementId);
3505
3665
  if (hasInternalBeams && markOptions.beamEnd && beamOpen) {
3506
3666
  xml += `${baseIndent}</beam>
3507
3667
  `;
@@ -3514,8 +3674,41 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3514
3674
  lastNoteId = restResult.elementId;
3515
3675
  if (restResult.fermata)
3516
3676
  fermatas.push({ startid: restResult.elementId, shape: restResult.fermata === "short" ? "angular" : void 0 });
3677
+ for (const mkup of restResult.markups)
3678
+ markups.push({ startid: restResult.elementId, content: mkup.content, placement: mkup.placement });
3679
+ dynamics.push(...restResult.dynamics);
3680
+ } else if (e.type === "tuplet") {
3681
+ const nestedIndent = beamOpen ? baseIndent + " " : baseIndent;
3682
+ const nested = tupletEventToMEI(e, nestedIndent, layerStaff, keyFifths, effectiveStaff, ottavaShift, inParentBeam, measureAccidentals, activeClef, [], contextStemDir, pendingTieIn);
3683
+ xml += nested.xml;
3684
+ if (!firstNoteId)
3685
+ firstNoteId = nested.firstNoteId;
3686
+ lastNoteId = nested.lastNoteId ?? lastNoteId;
3687
+ pendingTieIn = [];
3688
+ if (nested.pendingTieOut.length)
3689
+ pendingTieOut = nested.pendingTieOut;
3690
+ slurStarts.push(...nested.slurStarts);
3691
+ slurEnds.push(...nested.slurEnds);
3692
+ slurActions.push(...nested.slurActions);
3693
+ dynamics.push(...nested.dynamics);
3694
+ fermatas.push(...nested.fermatas);
3695
+ trills.push(...nested.trills);
3696
+ mordents.push(...nested.mordents);
3697
+ turns.push(...nested.turns);
3698
+ arpeggios.push(...nested.arpeggios);
3699
+ pedals.push(...nested.pedals);
3700
+ fingerings.push(...nested.fingerings);
3701
+ markups.push(...nested.markups);
3702
+ hairpinStarts.push(...nested.hairpinStarts);
3703
+ hairpinEnds.push(...nested.hairpinEnds);
3704
+ if (nested.endingClef) {
3705
+ activeClef = nested.endingClef;
3706
+ endingClef = nested.endingClef;
3707
+ }
3517
3708
  } else if (e.type === "context") {
3518
3709
  const ctx = e;
3710
+ if (ctx.staff !== void 0 && ctx.staff !== effectiveStaff)
3711
+ effectiveStaff = ctx.staff;
3519
3712
  if (ctx.clef && ctx.clef !== activeClef) {
3520
3713
  const layerStaffNum = layerStaff || 1;
3521
3714
  const effectiveStaffNum = effectiveStaff ?? layerStaffNum;
@@ -3535,7 +3728,7 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3535
3728
  }
3536
3729
  xml += `${indent}</tuplet>
3537
3730
  `;
3538
- return { xml, firstNoteId, lastNoteId, slurStarts, slurEnds, dynamics, fermatas, trills, mordents, turns, arpeggios, pedals, fingerings, markups, endingClef };
3731
+ return { xml, firstNoteId, lastNoteId, pendingTieOut, slurStarts, slurEnds, slurActions, dynamics, fermatas, trills, mordents, turns, arpeggios, pedals, fingerings, markups, hairpinStarts, hairpinEnds, endingClef };
3539
3732
  };
3540
3733
  var tremoloEventToMEI = (event, indent, keyFifths = 0, ottavaShift = 0, measureAccidentals, clefOctave = 0) => {
3541
3734
  const ftremId = generateId("fTrem");
@@ -3630,7 +3823,7 @@ var getEventBeamMarks = (event) => {
3630
3823
  }
3631
3824
  return { beamStart: false, beamEnd: false };
3632
3825
  };
3633
- var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0, initialClef, initialSlurs = [], initialHairpin = null, initialOctave = null, initialGliss = null) => {
3826
+ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0, initialClef, initialSlurs = [], initialHairpin = null, initialOctave = null, initialGliss = null, staffOffset = 0) => {
3634
3827
  const layerId = generateId("layer");
3635
3828
  let xml = `${indent}<layer xml:id="${layerId}" n="${layerN}">
3636
3829
  `;
@@ -3674,12 +3867,14 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3674
3867
  }
3675
3868
  };
3676
3869
  const slurs = [];
3677
- const openSlurs = initialSlurs.map((startId) => ({ startId }));
3870
+ const slurEndReplacements = {};
3871
+ const openSlurs = initialSlurs.map((s) => ({ ...s }));
3678
3872
  let currentSlur = openSlurs.length ? openSlurs[openSlurs.length - 1] : null;
3679
3873
  const arpeggios = [];
3680
3874
  const fermatas = [];
3681
3875
  const trills = [];
3682
3876
  const breaths = [];
3877
+ const caesuras = [];
3683
3878
  const glissandos = [];
3684
3879
  let pendingGlissStart = initialGliss;
3685
3880
  const mordents = [];
@@ -3750,7 +3945,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3750
3945
  applyPendingOttavaShift();
3751
3946
  const effectiveNoteEvent = currentStaff !== voice.staff ? { ...noteEvent, staff: currentStaff } : noteEvent;
3752
3947
  const eventLyricXml = isGraceNote ? "" : lyricXmlForEvent(lyricCursors, currentIndent + " ");
3753
- const result = noteEventToMEI(effectiveNoteEvent, currentIndent, voice.staff, tieEnd, currentStemDirection, keyFifths, currentOttavaShift, measureAccidentals, eventLyricXml, clefOctaveShift(currentClef));
3948
+ const result = noteEventToMEI(effectiveNoteEvent, currentIndent, voice.staff, tieEnd, currentStemDirection, keyFifths, currentOttavaShift, measureAccidentals, eventLyricXml, clefOctaveShift(currentClef), tieEnd ? pendingTiePitches : void 0, staffOffset);
3754
3949
  xml += result.xml;
3755
3950
  lastNoteId = result.elementId;
3756
3951
  extendOttavaEnd(result.elementId);
@@ -3791,13 +3986,16 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3791
3986
  }
3792
3987
  if (result.slurEnd && openSlurs.length > 0) {
3793
3988
  const open = openSlurs.pop();
3794
- slurs.push({
3795
- startId: open.startId,
3796
- endId: result.elementId
3797
- });
3989
+ if (open.token) {
3990
+ slurEndReplacements[open.token] = result.elementId;
3991
+ } else {
3992
+ slurs.push({ startId: open.startId, endId: result.elementId });
3993
+ }
3798
3994
  }
3799
3995
  if (result.slurStart) {
3800
- openSlurs.push({ startId: result.elementId });
3996
+ const token = `__SLUR_END_${generateId("slurEnd")}__`;
3997
+ openSlurs.push({ startId: result.elementId, token });
3998
+ slurs.push({ startId: result.elementId, endId: token });
3801
3999
  }
3802
4000
  currentSlur = openSlurs.length ? openSlurs[openSlurs.length - 1] : null;
3803
4001
  if (result.arpeggio) {
@@ -3815,6 +4013,9 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3815
4013
  if (result.breath) {
3816
4014
  breaths.push({ startid: result.elementId });
3817
4015
  }
4016
+ if (result.caesura) {
4017
+ caesuras.push({ startid: result.elementId });
4018
+ }
3818
4019
  if (pendingGlissStart) {
3819
4020
  glissandos.push({ startid: pendingGlissStart, endid: result.elementId });
3820
4021
  pendingGlissStart = null;
@@ -3833,7 +4034,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3833
4034
  }
3834
4035
  if (result.dynamics) {
3835
4036
  for (const label of result.dynamics)
3836
- dynamics.push({ startid: result.elementId, label });
4037
+ dynamics.push({ startid: result.elementId, label, placement: result.dynamicPlacement });
3837
4038
  }
3838
4039
  for (const fing of result.fingerings) {
3839
4040
  fingerings.push({ startid: result.elementId, finger: fing.finger, placement: fing.placement });
@@ -3842,7 +4043,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3842
4043
  markups.push({ startid: result.elementId, content: mkup.content, placement: mkup.placement });
3843
4044
  }
3844
4045
  if (result.navigation) {
3845
- navigations.push({ type: result.navigation });
4046
+ navigations.push({ type: result.navigation, placement: result.navigationPlacement, staff: voice.staff || 1 });
3846
4047
  }
3847
4048
  break;
3848
4049
  }
@@ -3856,6 +4057,9 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3856
4057
  applyOttavaAnchor(restResult.elementId);
3857
4058
  if (restResult.fermata)
3858
4059
  fermatas.push({ startid: restResult.elementId, shape: restResult.fermata === "short" ? "angular" : void 0 });
4060
+ for (const mkup of restResult.markups)
4061
+ markups.push({ startid: restResult.elementId, content: mkup.content, placement: mkup.placement });
4062
+ dynamics.push(...restResult.dynamics);
3859
4063
  flushPendingMarkups(restResult.elementId);
3860
4064
  flushPendingDynamics(restResult.elementId);
3861
4065
  break;
@@ -3863,7 +4067,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3863
4067
  case "tuplet":
3864
4068
  case "times": {
3865
4069
  applyPendingOttavaShift();
3866
- const tupletResult = tupletEventToMEI(event, currentIndent, voice.staff, keyFifths, currentStaff, currentOttavaShift, beamElementOpen, measureAccidentals, currentClef, lyricCursors);
4070
+ const tupletResult = tupletEventToMEI(event, currentIndent, voice.staff, keyFifths, currentStaff, currentOttavaShift, beamElementOpen, measureAccidentals, currentClef, lyricCursors, currentStemDirection, pendingTiePitches);
3867
4071
  xml += tupletResult.xml;
3868
4072
  if (tupletResult.firstNoteId)
3869
4073
  applyOttavaAnchor(tupletResult.firstNoteId);
@@ -3877,19 +4081,25 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3877
4081
  flushPendingDynamics(tupletResult.firstNoteId);
3878
4082
  lastNoteId = tupletResult.lastNoteId ?? tupletResult.firstNoteId;
3879
4083
  }
3880
- for (const endId of tupletResult.slurEnds) {
3881
- if (openSlurs.length > 0) {
4084
+ for (const act of tupletResult.slurActions) {
4085
+ if (act.start) {
4086
+ openSlurs.push({ startId: act.id });
4087
+ } else if (openSlurs.length > 0) {
3882
4088
  const open = openSlurs.pop();
3883
- slurs.push({
3884
- startId: open.startId,
3885
- endId
3886
- });
4089
+ slurs.push({ startId: open.startId, endId: act.id });
3887
4090
  }
3888
4091
  }
3889
- for (const startId of tupletResult.slurStarts) {
3890
- openSlurs.push({ startId });
3891
- }
3892
4092
  currentSlur = openSlurs.length ? openSlurs[openSlurs.length - 1] : null;
4093
+ for (const endId of tupletResult.hairpinEnds) {
4094
+ const pick = openHairpins.length - 1;
4095
+ if (pick >= 0) {
4096
+ const open = openHairpins.splice(pick, 1)[0];
4097
+ hairpins.push({ form: open.form, startId: open.startId, endId });
4098
+ }
4099
+ }
4100
+ for (const hs of tupletResult.hairpinStarts)
4101
+ openHairpins.push({ form: hs.form, startId: hs.id });
4102
+ pendingTiePitches = tupletResult.pendingTieOut;
3893
4103
  dynamics.push(...tupletResult.dynamics);
3894
4104
  fermatas.push(...tupletResult.fermatas);
3895
4105
  trills.push(...tupletResult.trills);
@@ -4027,9 +4237,9 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
4027
4237
  }
4028
4238
  xml += `${indent}</layer>
4029
4239
  `;
4030
- return { xml, hairpins, pedals, octaves, slurs, arpeggios, fermatas, trills, breaths, glissandos, mordents, turns, dynamics, fingerings, navigations, harmonies, barlines, markups, pendingTiePitches, pendingSlur: openSlurs.map((s) => s.startId), pendingGliss: pendingGlissStart, pendingHairpin, pendingOctave, ottavaExplicitlyClosed, endingClef: currentClef, lastNoteId, currentOttavaShift, octaveEndReplacements };
4240
+ return { xml, hairpins, pedals, octaves, slurs, arpeggios, fermatas, trills, breaths, caesuras, glissandos, mordents, turns, dynamics, fingerings, navigations, harmonies, barlines, markups, pendingTiePitches, pendingSlur: openSlurs.map((s) => ({ startId: s.startId, token: s.token })), slurEndReplacements, pendingGliss: pendingGlissStart, pendingHairpin, pendingOctave, ottavaExplicitlyClosed, endingClef: currentClef, lastNoteId, currentOttavaShift, octaveEndReplacements };
4031
4241
  };
4032
- var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpinState = {}, ottavaState = {}, keyFifths = 0, initialClef, glissState = {}) => {
4242
+ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpinState = {}, ottavaState = {}, keyFifths = 0, initialClef, glissState = {}, staffOffset = 0) => {
4033
4243
  const staffId = generateId("staff");
4034
4244
  let xml = `${indent}<staff xml:id="${staffId}" n="${staffN}">
4035
4245
  `;
@@ -4041,6 +4251,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4041
4251
  const allFermatas = [];
4042
4252
  const allTrills = [];
4043
4253
  const allBreaths = [];
4254
+ const allCaesuras = [];
4044
4255
  const allGlissandos = [];
4045
4256
  const allMordents = [];
4046
4257
  const allTurns = [];
@@ -4058,6 +4269,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4058
4269
  const ottavaExplicitlyClosed = {};
4059
4270
  const lastNoteIds = {};
4060
4271
  const octaveEndReplacements = {};
4272
+ const slurEndReplacements = {};
4061
4273
  let endingClef = initialClef;
4062
4274
  if (voices.length === 0) {
4063
4275
  xml += `${indent} <layer xml:id="${generateId("layer")}" n="1" />
@@ -4071,7 +4283,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4071
4283
  const initialHairpin = hairpinState[tieKey] || null;
4072
4284
  const initialOctave = ottavaState[tieKey] || null;
4073
4285
  const initialGliss = glissState[tieKey] || null;
4074
- const result = encodeLayer(voice, layerN, indent + " ", initialTies, keyFifths, endingClef, initialSlur, initialHairpin, initialOctave, initialGliss);
4286
+ const result = encodeLayer(voice, layerN, indent + " ", initialTies, keyFifths, endingClef, initialSlur, initialHairpin, initialOctave, initialGliss, staffOffset);
4075
4287
  xml += result.xml;
4076
4288
  allHairpins.push(...result.hairpins);
4077
4289
  allPedals.push(...result.pedals);
@@ -4081,6 +4293,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4081
4293
  allFermatas.push(...result.fermatas);
4082
4294
  allTrills.push(...result.trills);
4083
4295
  allBreaths.push(...result.breaths);
4296
+ allCaesuras.push(...result.caesuras);
4084
4297
  allGlissandos.push(...result.glissandos);
4085
4298
  allMordents.push(...result.mordents);
4086
4299
  allTurns.push(...result.turns);
@@ -4091,14 +4304,13 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4091
4304
  allBarlines.push(...result.barlines);
4092
4305
  allMarkups.push(...result.markups);
4093
4306
  Object.assign(octaveEndReplacements, result.octaveEndReplacements);
4307
+ Object.assign(slurEndReplacements, result.slurEndReplacements);
4094
4308
  if (result.pendingTiePitches.length > 0) {
4095
4309
  pendingTies[tieKey] = result.pendingTiePitches;
4096
4310
  }
4097
4311
  pendingSlurs[tieKey] = result.pendingSlur;
4098
4312
  pendingGlisses[tieKey] = result.pendingGliss;
4099
- if (result.pendingHairpin) {
4100
- pendingHairpins[tieKey] = result.pendingHairpin;
4101
- }
4313
+ pendingHairpins[tieKey] = result.pendingHairpin;
4102
4314
  if (result.pendingOctave) {
4103
4315
  pendingOctaves[tieKey] = result.pendingOctave;
4104
4316
  }
@@ -4115,6 +4327,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4115
4327
  `;
4116
4328
  return {
4117
4329
  xml,
4330
+ slurEndReplacements,
4118
4331
  hairpins: allHairpins,
4119
4332
  pedals: allPedals,
4120
4333
  octaves: allOctaves,
@@ -4123,6 +4336,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4123
4336
  fermatas: allFermatas,
4124
4337
  trills: allTrills,
4125
4338
  breaths: allBreaths,
4339
+ caesuras: allCaesuras,
4126
4340
  glissandos: allGlissandos,
4127
4341
  mordents: allMordents,
4128
4342
  turns: allTurns,
@@ -4230,7 +4444,7 @@ var BARLINE_TO_MEI = {
4230
4444
  ":..:|": "rptboth",
4231
4445
  ":..:": "rptboth"
4232
4446
  };
4233
- var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState, hairpinState, ottavaState, keyFifths = 0, partInfos = [], clefState = {}, octaveEndReplacements = {}, measureIds, glissState = {}, barHidden = false, meterUnit = 4) => {
4447
+ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState, hairpinState, ottavaState, keyFifths = 0, partInfos = [], clefState = {}, octaveEndReplacements = {}, measureIds, glissState = {}, barHidden = false, meterUnit = 4, slurEndReplacements = {}) => {
4234
4448
  const measureId = generateId("measure");
4235
4449
  if (measureIds)
4236
4450
  measureIds.push(measureId);
@@ -4243,6 +4457,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4243
4457
  const allFermatas = [];
4244
4458
  const allTrills = [];
4245
4459
  const allBreaths = [];
4460
+ const allCaesuras = [];
4246
4461
  const allGlissandos = [];
4247
4462
  const allMordents = [];
4248
4463
  const allTurns = [];
@@ -4272,12 +4487,14 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4272
4487
  }
4273
4488
  }
4274
4489
  const voicesByStaff = {};
4490
+ const staffOffsets = {};
4275
4491
  for (let pi = 0; pi < measure.parts.length; pi++) {
4276
4492
  const part = measure.parts[pi];
4277
4493
  const partOffset = partInfos[pi]?.staffOffset || 0;
4278
4494
  for (const voice of part.voices) {
4279
4495
  const localStaff = voice.staff || 1;
4280
4496
  const globalStaff = partOffset + localStaff;
4497
+ staffOffsets[globalStaff] = partOffset;
4281
4498
  if (!voicesByStaff[globalStaff]) {
4282
4499
  voicesByStaff[globalStaff] = [];
4283
4500
  }
@@ -4287,7 +4504,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4287
4504
  for (let si = 1; si <= totalStaves; si++) {
4288
4505
  const voices = voicesByStaff[si] || [];
4289
4506
  const initialClef = clefState[si];
4290
- const result = encodeStaff(voices, si, indent + " ", tieState, slurState, hairpinState, ottavaState, keyFifths, initialClef, glissState);
4507
+ const result = encodeStaff(voices, si, indent + " ", tieState, slurState, hairpinState, ottavaState, keyFifths, initialClef, glissState, staffOffsets[si] || 0);
4291
4508
  staffContent += result.xml;
4292
4509
  allHairpins.push(...result.hairpins);
4293
4510
  allPedals.push(...result.pedals);
@@ -4297,6 +4514,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4297
4514
  allFermatas.push(...result.fermatas);
4298
4515
  allTrills.push(...result.trills);
4299
4516
  allBreaths.push(...result.breaths);
4517
+ allCaesuras.push(...result.caesuras);
4300
4518
  allGlissandos.push(...result.glissandos);
4301
4519
  allMordents.push(...result.mordents);
4302
4520
  allTurns.push(...result.turns);
@@ -4307,6 +4525,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4307
4525
  allBarlines.push(...result.barlines);
4308
4526
  allMarkups.push(...result.markups);
4309
4527
  Object.assign(octaveEndReplacements, result.octaveEndReplacements);
4528
+ Object.assign(slurEndReplacements, result.slurEndReplacements);
4310
4529
  Object.assign(tieState, result.pendingTies);
4311
4530
  Object.assign(slurState, result.pendingSlurs);
4312
4531
  Object.assign(glissState, result.pendingGlisses);
@@ -4374,6 +4593,10 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4374
4593
  }
4375
4594
  for (const br of allBreaths) {
4376
4595
  staffContent += `${indent} <breath xml:id="${generateId("breath")}" startid="#${br.startid}" />
4596
+ `;
4597
+ }
4598
+ for (const ca of allCaesuras) {
4599
+ staffContent += `${indent} <caesura xml:id="${generateId("caesura")}" startid="#${ca.startid}" />
4377
4600
  `;
4378
4601
  }
4379
4602
  for (const gl of allGlissandos) {
@@ -4390,7 +4613,8 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4390
4613
  `;
4391
4614
  }
4392
4615
  for (const dyn of allDynamics) {
4393
- staffContent += `${indent} <dynam xml:id="${generateId("dynam")}" startid="#${dyn.startid}">${dyn.label}</dynam>
4616
+ const placeAttr = dyn.placement ? ` place="${dyn.placement}"` : "";
4617
+ staffContent += `${indent} <dynam xml:id="${generateId("dynam")}" startid="#${dyn.startid}"${placeAttr}>${dyn.label}</dynam>
4394
4618
  `;
4395
4619
  }
4396
4620
  for (const fing of allFingerings) {
@@ -4400,7 +4624,9 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4400
4624
  }
4401
4625
  for (const nav of allNavigations) {
4402
4626
  const glyph = nav.type === "coda" ? "\u{1D10C}" : "\u{1D10B}";
4403
- staffContent += `${indent} <dir xml:id="${generateId("dir")}" tstamp="1">${glyph}</dir>
4627
+ const placeAttr = nav.placement ? ` place="${nav.placement}"` : "";
4628
+ const staffAttr = nav.staff ? ` staff="${nav.staff}"` : "";
4629
+ staffContent += `${indent} <dir xml:id="${generateId("dir")}" tstamp="1"${placeAttr}${staffAttr}>${glyph}</dir>
4404
4630
  `;
4405
4631
  }
4406
4632
  for (const harm of allHarmonies) {
@@ -4560,7 +4786,7 @@ var staffDefWithLabel = (attrs, instr, indent, channels) => {
4560
4786
  `;
4561
4787
  return xml;
4562
4788
  };
4563
- var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol, stavesCode, instruments = {}, meterHidden = false) => {
4789
+ var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol, stavesCode, instruments = {}, meterHidden = false, staffKeys = {}) => {
4564
4790
  const scoreDefId = generateId("scoredef");
4565
4791
  const channels = newChannelAllocator();
4566
4792
  const meterSymAttr = meterSymbol ? ` meter.sym="${meterSymbol}"` : "";
@@ -4577,7 +4803,7 @@ var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol,
4577
4803
  if (stavesCode) {
4578
4804
  const layout = parseStaffLayout(stavesCode);
4579
4805
  if (layout.stavesCount === flatStaves.length) {
4580
- const staffDefAttrs = flatStaves.map((s) => `xml:id="${generateId("staffdef")}" n="${s.n}" lines="5" ${staffDefClefAttrs(s.clef)}`);
4806
+ const staffDefAttrs = flatStaves.map((s) => `xml:id="${generateId("staffdef")}" n="${s.n}" lines="5" ${staffDefClefAttrs(s.clef)}` + (staffKeys[s.n] !== void 0 ? ` key.sig="${KEY_SIGS[staffKeys[s.n]] || "0"}"` : ""));
4581
4807
  xml += layoutGroupToMEI(layout.group, staffDefAttrs, { i: 0 }, `${indent} `, instruments, channels);
4582
4808
  layoutUsed = true;
4583
4809
  }
@@ -4598,7 +4824,7 @@ var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol,
4598
4824
  const globalStaff = info.staffOffset + ls;
4599
4825
  const clef = info.clefs[ls] || Clef.treble;
4600
4826
  const leafInstr = instruments[`${globalStaff}`];
4601
- const attrs = `xml:id="${generateId("staffdef")}" n="${globalStaff}" lines="5" ${staffDefClefAttrs(clef)}`;
4827
+ const attrs = `xml:id="${generateId("staffdef")}" n="${globalStaff}" lines="5" ${staffDefClefAttrs(clef)}` + (staffKeys[globalStaff] !== void 0 ? ` key.sig="${KEY_SIGS[staffKeys[globalStaff]] || "0"}"` : "");
4602
4828
  xml += staffDefWithLabel(attrs, leafInstr, `${indent} `, channels);
4603
4829
  }
4604
4830
  xml += `${indent} </staffGrp>
@@ -4897,6 +5123,33 @@ var encode = (doc, options = {}) => {
4897
5123
  currentTimeDen = firstMeasure.timeSig.denominator;
4898
5124
  currentMeterSymbol = firstMeasure.timeSig.symbol;
4899
5125
  }
5126
+ const voiceKeys = [];
5127
+ {
5128
+ const offsets = [];
5129
+ let running = 0;
5130
+ for (const info of partInfos) {
5131
+ offsets.push(running);
5132
+ running += info.maxStaff;
5133
+ }
5134
+ firstMeasure.parts.forEach((part, pi) => {
5135
+ for (const voice of part.voices) {
5136
+ const keyEv = voice.events.find((e) => e.type === "context" && !!e.key);
5137
+ if (!keyEv)
5138
+ continue;
5139
+ voiceKeys.push({
5140
+ staff: (offsets[pi] ?? 0) + (voice.staff || 1),
5141
+ fifths: keyToFifths(keyEv.key)
5142
+ });
5143
+ }
5144
+ });
5145
+ }
5146
+ if (voiceKeys.length > 0)
5147
+ currentKey = voiceKeys[0].fifths;
5148
+ const staffKeys = {};
5149
+ for (const vk of voiceKeys) {
5150
+ if (vk.fifths !== currentKey)
5151
+ staffKeys[vk.staff] = vk.fifths;
5152
+ }
4900
5153
  const keySig = KEY_SIGS[currentKey] || "0";
4901
5154
  const shouldAutoBeam = resolveAutoBeam(doc);
4902
5155
  if (shouldAutoBeam) {
@@ -4958,7 +5211,7 @@ var encode = (doc, options = {}) => {
4958
5211
  mei += `${indent}${indent}${indent}${indent}<score xml:id="${generateId("score")}">
4959
5212
  `;
4960
5213
  const omitStates = computeOmitStates(doc.measures);
4961
- mei += encodeScoreDef(keySig, currentTimeNum, currentTimeDen, partInfos, `${indent}${indent}${indent}${indent}${indent}`, currentMeterSymbol, doc.metadata?.staves, doc.metadata?.instruments, omitStates.meterHidden[0]);
5214
+ mei += encodeScoreDef(keySig, currentTimeNum, currentTimeDen, partInfos, `${indent}${indent}${indent}${indent}${indent}`, currentMeterSymbol, doc.metadata?.staves, doc.metadata?.instruments, omitStates.meterHidden[0], staffKeys);
4962
5215
  mei += `${indent}${indent}${indent}${indent}${indent}<section xml:id="${generateId("section")}">
4963
5216
  `;
4964
5217
  const expansionInsertPos = mei.length;
@@ -5018,6 +5271,7 @@ var encode = (doc, options = {}) => {
5018
5271
  const hairpinState = {};
5019
5272
  const ottavaState = {};
5020
5273
  const octaveEndReplacements = {};
5274
+ const slurEndReplacements = {};
5021
5275
  const clefState = {};
5022
5276
  const transState = {};
5023
5277
  for (let pi = 0; pi < partInfos.length; pi++) {
@@ -5090,7 +5344,7 @@ var encode = (doc, options = {}) => {
5090
5344
  if (openTag)
5091
5345
  mei += openTag;
5092
5346
  const measureIndent = segDecomp ? `${mIndent}${indent}` : mIndent;
5093
- mei += encodeMeasure(measure, mIndex, measureIndent, totalStaves, tieState, slurState, hairpinState, ottavaState, currentKey, partInfos, clefState, octaveEndReplacements, measureIds, glissState, omitStates.barHidden[mi], currentTimeDen);
5347
+ mei += encodeMeasure(measure, mIndex, measureIndent, totalStaves, tieState, slurState, hairpinState, ottavaState, currentKey, partInfos, clefState, octaveEndReplacements, measureIds, glissState, omitStates.barHidden[mi], currentTimeDen, slurEndReplacements);
5094
5348
  const closeTag = segCloseAt.get(mIndex);
5095
5349
  if (closeTag)
5096
5350
  mei += closeTag;
@@ -5140,6 +5394,9 @@ var encode = (doc, options = {}) => {
5140
5394
  for (const [token, endId] of Object.entries(octaveEndReplacements)) {
5141
5395
  mei = mei.replaceAll(token, endId);
5142
5396
  }
5397
+ for (const [token, endId] of Object.entries(slurEndReplacements)) {
5398
+ mei = mei.replaceAll(token, endId);
5399
+ }
5143
5400
  return mei;
5144
5401
  };
5145
5402
  var escapeXml = (text) => {