chordsheetjs 10.10.0 → 10.11.0

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.
package/lib/bundle.js CHANGED
@@ -5,324 +5,15 @@ var ChordSheetJS = (() => {
5
5
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
6
6
  };
7
7
 
8
- // node_modules/lodash.get/index.js
9
- var require_lodash = __commonJS({
10
- "node_modules/lodash.get/index.js"(exports, module) {
11
- var FUNC_ERROR_TEXT = "Expected a function";
12
- var HASH_UNDEFINED = "__lodash_hash_undefined__";
13
- var INFINITY = 1 / 0;
14
- var funcTag = "[object Function]";
15
- var genTag = "[object GeneratorFunction]";
16
- var symbolTag = "[object Symbol]";
17
- var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/;
18
- var reIsPlainProp = /^\w*$/;
19
- var reLeadingDot = /^\./;
20
- var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
21
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
22
- var reEscapeChar = /\\(\\)?/g;
23
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
24
- var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
25
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
26
- var root = freeGlobal || freeSelf || Function("return this")();
27
- function getValue(object, key) {
28
- return object == null ? void 0 : object[key];
29
- }
30
- function isHostObject(value) {
31
- var result = false;
32
- if (value != null && typeof value.toString != "function") {
33
- try {
34
- result = !!(value + "");
35
- } catch (e) {
36
- }
37
- }
38
- return result;
39
- }
40
- var arrayProto = Array.prototype;
41
- var funcProto = Function.prototype;
42
- var objectProto = Object.prototype;
43
- var coreJsData = root["__core-js_shared__"];
44
- var maskSrcKey = function() {
45
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
46
- return uid ? "Symbol(src)_1." + uid : "";
47
- }();
48
- var funcToString = funcProto.toString;
49
- var hasOwnProperty = objectProto.hasOwnProperty;
50
- var objectToString = objectProto.toString;
51
- var reIsNative = RegExp(
52
- "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
53
- );
54
- var Symbol2 = root.Symbol;
55
- var splice = arrayProto.splice;
56
- var Map = getNative(root, "Map");
57
- var nativeCreate = getNative(Object, "create");
58
- var symbolProto = Symbol2 ? Symbol2.prototype : void 0;
59
- var symbolToString = symbolProto ? symbolProto.toString : void 0;
60
- function Hash(entries) {
61
- var index = -1, length = entries ? entries.length : 0;
62
- this.clear();
63
- while (++index < length) {
64
- var entry = entries[index];
65
- this.set(entry[0], entry[1]);
66
- }
67
- }
68
- function hashClear() {
69
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
70
- }
71
- function hashDelete(key) {
72
- return this.has(key) && delete this.__data__[key];
73
- }
74
- function hashGet(key) {
75
- var data = this.__data__;
76
- if (nativeCreate) {
77
- var result = data[key];
78
- return result === HASH_UNDEFINED ? void 0 : result;
79
- }
80
- return hasOwnProperty.call(data, key) ? data[key] : void 0;
81
- }
82
- function hashHas(key) {
83
- var data = this.__data__;
84
- return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
85
- }
86
- function hashSet(key, value) {
87
- var data = this.__data__;
88
- data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
89
- return this;
90
- }
91
- Hash.prototype.clear = hashClear;
92
- Hash.prototype["delete"] = hashDelete;
93
- Hash.prototype.get = hashGet;
94
- Hash.prototype.has = hashHas;
95
- Hash.prototype.set = hashSet;
96
- function ListCache(entries) {
97
- var index = -1, length = entries ? entries.length : 0;
98
- this.clear();
99
- while (++index < length) {
100
- var entry = entries[index];
101
- this.set(entry[0], entry[1]);
102
- }
103
- }
104
- function listCacheClear() {
105
- this.__data__ = [];
106
- }
107
- function listCacheDelete(key) {
108
- var data = this.__data__, index = assocIndexOf(data, key);
109
- if (index < 0) {
110
- return false;
111
- }
112
- var lastIndex = data.length - 1;
113
- if (index == lastIndex) {
114
- data.pop();
115
- } else {
116
- splice.call(data, index, 1);
117
- }
118
- return true;
119
- }
120
- function listCacheGet(key) {
121
- var data = this.__data__, index = assocIndexOf(data, key);
122
- return index < 0 ? void 0 : data[index][1];
123
- }
124
- function listCacheHas(key) {
125
- return assocIndexOf(this.__data__, key) > -1;
126
- }
127
- function listCacheSet(key, value) {
128
- var data = this.__data__, index = assocIndexOf(data, key);
129
- if (index < 0) {
130
- data.push([key, value]);
131
- } else {
132
- data[index][1] = value;
133
- }
134
- return this;
135
- }
136
- ListCache.prototype.clear = listCacheClear;
137
- ListCache.prototype["delete"] = listCacheDelete;
138
- ListCache.prototype.get = listCacheGet;
139
- ListCache.prototype.has = listCacheHas;
140
- ListCache.prototype.set = listCacheSet;
141
- function MapCache(entries) {
142
- var index = -1, length = entries ? entries.length : 0;
143
- this.clear();
144
- while (++index < length) {
145
- var entry = entries[index];
146
- this.set(entry[0], entry[1]);
147
- }
148
- }
149
- function mapCacheClear() {
150
- this.__data__ = {
151
- "hash": new Hash(),
152
- "map": new (Map || ListCache)(),
153
- "string": new Hash()
154
- };
155
- }
156
- function mapCacheDelete(key) {
157
- return getMapData(this, key)["delete"](key);
158
- }
159
- function mapCacheGet(key) {
160
- return getMapData(this, key).get(key);
161
- }
162
- function mapCacheHas(key) {
163
- return getMapData(this, key).has(key);
164
- }
165
- function mapCacheSet(key, value) {
166
- getMapData(this, key).set(key, value);
167
- return this;
168
- }
169
- MapCache.prototype.clear = mapCacheClear;
170
- MapCache.prototype["delete"] = mapCacheDelete;
171
- MapCache.prototype.get = mapCacheGet;
172
- MapCache.prototype.has = mapCacheHas;
173
- MapCache.prototype.set = mapCacheSet;
174
- function assocIndexOf(array, key) {
175
- var length = array.length;
176
- while (length--) {
177
- if (eq(array[length][0], key)) {
178
- return length;
179
- }
180
- }
181
- return -1;
182
- }
183
- function baseGet(object, path) {
184
- path = isKey(path, object) ? [path] : castPath(path);
185
- var index = 0, length = path.length;
186
- while (object != null && index < length) {
187
- object = object[toKey(path[index++])];
188
- }
189
- return index && index == length ? object : void 0;
190
- }
191
- function baseIsNative(value) {
192
- if (!isObject(value) || isMasked(value)) {
193
- return false;
194
- }
195
- var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
196
- return pattern.test(toSource(value));
197
- }
198
- function baseToString(value) {
199
- if (typeof value == "string") {
200
- return value;
201
- }
202
- if (isSymbol(value)) {
203
- return symbolToString ? symbolToString.call(value) : "";
204
- }
205
- var result = value + "";
206
- return result == "0" && 1 / value == -INFINITY ? "-0" : result;
207
- }
208
- function castPath(value) {
209
- return isArray(value) ? value : stringToPath(value);
210
- }
211
- function getMapData(map, key) {
212
- var data = map.__data__;
213
- return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
214
- }
215
- function getNative(object, key) {
216
- var value = getValue(object, key);
217
- return baseIsNative(value) ? value : void 0;
218
- }
219
- function isKey(value, object) {
220
- if (isArray(value)) {
221
- return false;
222
- }
223
- var type = typeof value;
224
- if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
225
- return true;
226
- }
227
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
228
- }
229
- function isKeyable(value) {
230
- var type = typeof value;
231
- return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
232
- }
233
- function isMasked(func) {
234
- return !!maskSrcKey && maskSrcKey in func;
235
- }
236
- var stringToPath = memoize(function(string) {
237
- string = toString(string);
238
- var result = [];
239
- if (reLeadingDot.test(string)) {
240
- result.push("");
241
- }
242
- string.replace(rePropName, function(match, number, quote, string2) {
243
- result.push(quote ? string2.replace(reEscapeChar, "$1") : number || match);
244
- });
245
- return result;
246
- });
247
- function toKey(value) {
248
- if (typeof value == "string" || isSymbol(value)) {
249
- return value;
250
- }
251
- var result = value + "";
252
- return result == "0" && 1 / value == -INFINITY ? "-0" : result;
253
- }
254
- function toSource(func) {
255
- if (func != null) {
256
- try {
257
- return funcToString.call(func);
258
- } catch (e) {
259
- }
260
- try {
261
- return func + "";
262
- } catch (e) {
263
- }
264
- }
265
- return "";
266
- }
267
- function memoize(func, resolver) {
268
- if (typeof func != "function" || resolver && typeof resolver != "function") {
269
- throw new TypeError(FUNC_ERROR_TEXT);
270
- }
271
- var memoized = function() {
272
- var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
273
- if (cache.has(key)) {
274
- return cache.get(key);
275
- }
276
- var result = func.apply(this, args);
277
- memoized.cache = cache.set(key, result);
278
- return result;
279
- };
280
- memoized.cache = new (memoize.Cache || MapCache)();
281
- return memoized;
282
- }
283
- memoize.Cache = MapCache;
284
- function eq(value, other) {
285
- return value === other || value !== value && other !== other;
286
- }
287
- var isArray = Array.isArray;
288
- function isFunction(value) {
289
- var tag = isObject(value) ? objectToString.call(value) : "";
290
- return tag == funcTag || tag == genTag;
291
- }
292
- function isObject(value) {
293
- var type = typeof value;
294
- return !!value && (type == "object" || type == "function");
295
- }
296
- function isObjectLike(value) {
297
- return !!value && typeof value == "object";
298
- }
299
- function isSymbol(value) {
300
- return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
301
- }
302
- function toString(value) {
303
- return value == null ? "" : baseToString(value);
304
- }
305
- function get(object, path, defaultValue) {
306
- var result = object == null ? void 0 : baseGet(object, path);
307
- return result === void 0 ? defaultValue : result;
308
- }
309
- module.exports = get;
310
- }
311
- });
312
-
313
8
  // lib/index.js
314
9
  var require_lib = __commonJS({
315
10
  "lib/index.js"(exports, module) {
316
- var $6FCft$lodashget = require_lodash();
317
11
  function $parcel$defineInteropFlag(a) {
318
12
  Object.defineProperty(a, "__esModule", { value: true, configurable: true });
319
13
  }
320
14
  function $parcel$export(e, n, v, s) {
321
15
  Object.defineProperty(e, n, { get: v, set: s, enumerable: true, configurable: true });
322
16
  }
323
- function $parcel$interopDefault(a) {
324
- return a && a.__esModule ? a.default : a;
325
- }
326
17
  $parcel$defineInteropFlag(module.exports);
327
18
  $parcel$export(module.exports, "default", () => $892913528e7f60f9$export$2e2bcd8739ae039);
328
19
  $parcel$export(module.exports, "Chord", () => $177a605b8569b31c$export$2e2bcd8739ae039);
@@ -13087,11 +12778,11 @@ ${error.stack}`);
13087
12778
  grade,
13088
12779
  minor
13089
12780
  });
13090
- if (!key) throw new Error(`Could not resolve
13091
- type=${type}
13092
- modifier=${modifier}
13093
- grade=${grade}
13094
- preferredModifier=${preferredModifier}
12781
+ if (!key) throw new Error(`Could not resolve
12782
+ type=${type}
12783
+ modifier=${modifier}
12784
+ grade=${grade}
12785
+ preferredModifier=${preferredModifier}
13095
12786
  minor=${minor}
13096
12787
  to a key`);
13097
12788
  if (minor && type === (0, $dce48cb70c4120bb$export$1321df9b16c30c6a)) key = key.toLowerCase();
@@ -14005,46 +13696,74 @@ to a key`);
14005
13696
  text: text()
14006
13697
  };
14007
13698
  };
14008
- const peg$c3 = /^[A-Za-z0-9\/-\u266D()+]/;
14009
- const peg$c4 = peg$classExpectation([
13699
+ const peg$c3 = "/";
13700
+ const peg$c4 = peg$literalExpectation("/", false);
13701
+ const peg$c5 = /^[A-Ga-g]/;
13702
+ const peg$c6 = peg$classExpectation([
14010
13703
  [
14011
13704
  "A",
14012
- "Z"
13705
+ "G"
14013
13706
  ],
13707
+ [
13708
+ "a",
13709
+ "g"
13710
+ ]
13711
+ ], false, false);
13712
+ const peg$c7 = /^[b#\u266D\u266F]/;
13713
+ const peg$c8 = peg$classExpectation([
13714
+ "b",
13715
+ "#",
13716
+ "\u266D",
13717
+ "\u266F"
13718
+ ], false, false);
13719
+ const peg$c9 = "es";
13720
+ const peg$c10 = peg$literalExpectation("es", false);
13721
+ const peg$c11 = "s";
13722
+ const peg$c12 = peg$literalExpectation("s", false);
13723
+ const peg$c13 = "is";
13724
+ const peg$c14 = peg$literalExpectation("is", false);
13725
+ const peg$c15 = /^[a-zA-Z0-9#\u266Fb\u266D()+\-\/\xF8\u0394\u2212]/;
13726
+ const peg$c16 = peg$classExpectation([
14014
13727
  [
14015
13728
  "a",
14016
13729
  "z"
14017
13730
  ],
14018
13731
  [
14019
- "0",
14020
- "9"
13732
+ "A",
13733
+ "Z"
14021
13734
  ],
14022
13735
  [
14023
- "/",
14024
- "\u266D"
13736
+ "0",
13737
+ "9"
14025
13738
  ],
13739
+ "#",
13740
+ "\u266F",
13741
+ "b",
13742
+ "\u266D",
14026
13743
  "(",
14027
13744
  ")",
14028
- "+"
13745
+ "+",
13746
+ "-",
13747
+ "/",
13748
+ "\xF8",
13749
+ "\u0394",
13750
+ "\u2212"
14029
13751
  ], false, false);
14030
- const peg$c5 = function(name) {
14031
- return name;
14032
- };
14033
- const peg$c6 = "base-fret";
14034
- const peg$c7 = peg$literalExpectation("base-fret", false);
14035
- const peg$c8 = function(baseFret) {
13752
+ const peg$c17 = "base-fret";
13753
+ const peg$c18 = peg$literalExpectation("base-fret", false);
13754
+ const peg$c19 = function(baseFret) {
14036
13755
  return baseFret;
14037
13756
  };
14038
- const peg$c9 = "fingers";
14039
- const peg$c10 = peg$literalExpectation("fingers", false);
14040
- const peg$c11 = function(fingers) {
13757
+ const peg$c20 = "fingers";
13758
+ const peg$c21 = peg$literalExpectation("fingers", false);
13759
+ const peg$c22 = function(fingers) {
14041
13760
  return fingers;
14042
13761
  };
14043
- const peg$c12 = function(finger) {
13762
+ const peg$c23 = function(finger) {
14044
13763
  return finger;
14045
13764
  };
14046
- const peg$c13 = /^[\-A-Za-z]/;
14047
- const peg$c14 = peg$classExpectation([
13765
+ const peg$c24 = /^[\-A-Za-z]/;
13766
+ const peg$c25 = peg$classExpectation([
14048
13767
  "-",
14049
13768
  [
14050
13769
  "A",
@@ -14055,18 +13774,18 @@ to a key`);
14055
13774
  "z"
14056
13775
  ]
14057
13776
  ], false, false);
14058
- const peg$c15 = /^[0-9]/;
14059
- const peg$c16 = peg$classExpectation([
13777
+ const peg$c26 = /^[0-9]/;
13778
+ const peg$c27 = peg$classExpectation([
14060
13779
  [
14061
13780
  "0",
14062
13781
  "9"
14063
13782
  ]
14064
13783
  ], false, false);
14065
- const peg$c17 = function(number) {
13784
+ const peg$c28 = function(number) {
14066
13785
  return parseInt(number, 10);
14067
13786
  };
14068
- const peg$c18 = /^[a-zA-Z]/;
14069
- const peg$c19 = peg$classExpectation([
13787
+ const peg$c29 = /^[a-zA-Z]/;
13788
+ const peg$c30 = peg$classExpectation([
14070
13789
  [
14071
13790
  "a",
14072
13791
  "z"
@@ -14076,64 +13795,64 @@ to a key`);
14076
13795
  "Z"
14077
13796
  ]
14078
13797
  ], false, false);
14079
- const peg$c20 = /^[\-NXnx]/;
14080
- const peg$c21 = peg$classExpectation([
13798
+ const peg$c31 = /^[\-NXnx]/;
13799
+ const peg$c32 = peg$classExpectation([
14081
13800
  "-",
14082
13801
  "N",
14083
13802
  "X",
14084
13803
  "n",
14085
13804
  "x"
14086
13805
  ], false, false);
14087
- const peg$c22 = function(fret) {
13806
+ const peg$c33 = function(fret) {
14088
13807
  return fret;
14089
13808
  };
14090
- const peg$c23 = /^[1-9]/;
14091
- const peg$c24 = peg$classExpectation([
13809
+ const peg$c34 = /^[1-9]/;
13810
+ const peg$c35 = peg$classExpectation([
14092
13811
  [
14093
13812
  "1",
14094
13813
  "9"
14095
13814
  ]
14096
13815
  ], false, false);
14097
- const peg$c25 = "0";
14098
- const peg$c26 = peg$literalExpectation("0", false);
14099
- const peg$c27 = function() {
13816
+ const peg$c36 = "0";
13817
+ const peg$c37 = peg$literalExpectation("0", false);
13818
+ const peg$c38 = function() {
14100
13819
  return 0;
14101
13820
  };
14102
- const peg$c28 = "-1";
14103
- const peg$c29 = peg$literalExpectation("-1", false);
14104
- const peg$c30 = /^[NXnx]/;
14105
- const peg$c31 = peg$classExpectation([
13821
+ const peg$c39 = "-1";
13822
+ const peg$c40 = peg$literalExpectation("-1", false);
13823
+ const peg$c41 = /^[NXnx]/;
13824
+ const peg$c42 = peg$classExpectation([
14106
13825
  "N",
14107
13826
  "X",
14108
13827
  "n",
14109
13828
  "x"
14110
13829
  ], false, false);
14111
- const peg$c32 = peg$otherExpectation("whitespace");
14112
- const peg$c33 = peg$otherExpectation("optional whitespace");
14113
- const peg$c34 = /^[ \t\n\r]/;
14114
- const peg$c35 = peg$classExpectation([
13830
+ const peg$c43 = peg$otherExpectation("whitespace");
13831
+ const peg$c44 = peg$otherExpectation("optional whitespace");
13832
+ const peg$c45 = /^[ \t\n\r]/;
13833
+ const peg$c46 = peg$classExpectation([
14115
13834
  " ",
14116
13835
  " ",
14117
13836
  "\n",
14118
13837
  "\r"
14119
13838
  ], false, false);
14120
- const peg$c36 = peg$otherExpectation("space");
14121
- const peg$c37 = /^[ \t]/;
14122
- const peg$c38 = peg$classExpectation([
13839
+ const peg$c47 = peg$otherExpectation("space");
13840
+ const peg$c48 = /^[ \t]/;
13841
+ const peg$c49 = peg$classExpectation([
14123
13842
  " ",
14124
13843
  " "
14125
13844
  ], false, false);
14126
- const peg$c39 = /^[\n\r]/;
14127
- const peg$c40 = peg$classExpectation([
13845
+ const peg$c50 = /^[\n\r]/;
13846
+ const peg$c51 = peg$classExpectation([
14128
13847
  "\n",
14129
13848
  "\r"
14130
13849
  ], false, false);
14131
- const peg$c41 = "\n";
14132
- const peg$c42 = peg$literalExpectation("\n", false);
14133
- const peg$c43 = "\r";
14134
- const peg$c44 = peg$literalExpectation("\r", false);
14135
- const peg$c45 = "\\";
14136
- const peg$c46 = peg$literalExpectation("\\", false);
13850
+ const peg$c52 = "\n";
13851
+ const peg$c53 = peg$literalExpectation("\n", false);
13852
+ const peg$c54 = "\r";
13853
+ const peg$c55 = peg$literalExpectation("\r", false);
13854
+ const peg$c56 = "\\";
13855
+ const peg$c57 = peg$literalExpectation("\\", false);
14137
13856
  let peg$currPos = 0;
14138
13857
  let peg$savedPos = 0;
14139
13858
  const peg$posDetailsCache = [
@@ -14313,43 +14032,185 @@ to a key`);
14313
14032
  let s0, s1, s2, s3;
14314
14033
  s0 = peg$currPos;
14315
14034
  s1 = peg$currPos;
14316
- s2 = [];
14317
- if (peg$c3.test(input.charAt(peg$currPos))) {
14318
- s3 = input.charAt(peg$currPos);
14035
+ s2 = peg$parseChordDefinitionNameBase();
14036
+ if (s2 !== peg$FAILED) {
14037
+ s3 = peg$parseChordDefinitionNameBass();
14038
+ if (s3 === peg$FAILED) s3 = null;
14039
+ if (s3 !== peg$FAILED) {
14040
+ s2 = [
14041
+ s2,
14042
+ s3
14043
+ ];
14044
+ s1 = s2;
14045
+ } else {
14046
+ peg$currPos = s1;
14047
+ s1 = peg$FAILED;
14048
+ }
14049
+ } else {
14050
+ peg$currPos = s1;
14051
+ s1 = peg$FAILED;
14052
+ }
14053
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
14054
+ else s0 = s1;
14055
+ return s0;
14056
+ }
14057
+ function peg$parseChordDefinitionNameBase() {
14058
+ let s0, s1, s2, s3;
14059
+ s0 = peg$currPos;
14060
+ s1 = peg$currPos;
14061
+ s2 = peg$parseChordDefinitionNote();
14062
+ if (s2 !== peg$FAILED) {
14063
+ s3 = peg$parseChordDefinitionSuffix();
14064
+ if (s3 === peg$FAILED) s3 = null;
14065
+ if (s3 !== peg$FAILED) {
14066
+ s2 = [
14067
+ s2,
14068
+ s3
14069
+ ];
14070
+ s1 = s2;
14071
+ } else {
14072
+ peg$currPos = s1;
14073
+ s1 = peg$FAILED;
14074
+ }
14075
+ } else {
14076
+ peg$currPos = s1;
14077
+ s1 = peg$FAILED;
14078
+ }
14079
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
14080
+ else s0 = s1;
14081
+ return s0;
14082
+ }
14083
+ function peg$parseChordDefinitionNameBass() {
14084
+ let s0, s1, s2, s3;
14085
+ s0 = peg$currPos;
14086
+ s1 = peg$currPos;
14087
+ if (input.charCodeAt(peg$currPos) === 47) {
14088
+ s2 = peg$c3;
14319
14089
  peg$currPos++;
14320
14090
  } else {
14321
- s3 = peg$FAILED;
14091
+ s2 = peg$FAILED;
14322
14092
  if (peg$silentFails === 0) peg$fail(peg$c4);
14323
14093
  }
14324
- if (s3 !== peg$FAILED) while (s3 !== peg$FAILED) {
14325
- s2.push(s3);
14326
- if (peg$c3.test(input.charAt(peg$currPos))) {
14094
+ if (s2 !== peg$FAILED) {
14095
+ s3 = peg$parseChordDefinitionNote();
14096
+ if (s3 !== peg$FAILED) {
14097
+ s2 = [
14098
+ s2,
14099
+ s3
14100
+ ];
14101
+ s1 = s2;
14102
+ } else {
14103
+ peg$currPos = s1;
14104
+ s1 = peg$FAILED;
14105
+ }
14106
+ } else {
14107
+ peg$currPos = s1;
14108
+ s1 = peg$FAILED;
14109
+ }
14110
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
14111
+ else s0 = s1;
14112
+ return s0;
14113
+ }
14114
+ function peg$parseChordDefinitionNote() {
14115
+ let s0, s1, s2, s3;
14116
+ s0 = peg$currPos;
14117
+ s1 = peg$currPos;
14118
+ if (peg$c5.test(input.charAt(peg$currPos))) {
14119
+ s2 = input.charAt(peg$currPos);
14120
+ peg$currPos++;
14121
+ } else {
14122
+ s2 = peg$FAILED;
14123
+ if (peg$silentFails === 0) peg$fail(peg$c6);
14124
+ }
14125
+ if (s2 !== peg$FAILED) {
14126
+ if (peg$c7.test(input.charAt(peg$currPos))) {
14327
14127
  s3 = input.charAt(peg$currPos);
14328
14128
  peg$currPos++;
14329
14129
  } else {
14330
14130
  s3 = peg$FAILED;
14331
- if (peg$silentFails === 0) peg$fail(peg$c4);
14131
+ if (peg$silentFails === 0) peg$fail(peg$c8);
14132
+ }
14133
+ if (s3 === peg$FAILED) {
14134
+ if (input.substr(peg$currPos, 2) === peg$c9) {
14135
+ s3 = peg$c9;
14136
+ peg$currPos += 2;
14137
+ } else {
14138
+ s3 = peg$FAILED;
14139
+ if (peg$silentFails === 0) peg$fail(peg$c10);
14140
+ }
14141
+ if (s3 === peg$FAILED) {
14142
+ if (input.charCodeAt(peg$currPos) === 115) {
14143
+ s3 = peg$c11;
14144
+ peg$currPos++;
14145
+ } else {
14146
+ s3 = peg$FAILED;
14147
+ if (peg$silentFails === 0) peg$fail(peg$c12);
14148
+ }
14149
+ if (s3 === peg$FAILED) {
14150
+ if (input.substr(peg$currPos, 2) === peg$c13) {
14151
+ s3 = peg$c13;
14152
+ peg$currPos += 2;
14153
+ } else {
14154
+ s3 = peg$FAILED;
14155
+ if (peg$silentFails === 0) peg$fail(peg$c14);
14156
+ }
14157
+ }
14158
+ }
14159
+ }
14160
+ if (s3 === peg$FAILED) s3 = null;
14161
+ if (s3 !== peg$FAILED) {
14162
+ s2 = [
14163
+ s2,
14164
+ s3
14165
+ ];
14166
+ s1 = s2;
14167
+ } else {
14168
+ peg$currPos = s1;
14169
+ s1 = peg$FAILED;
14332
14170
  }
14171
+ } else {
14172
+ peg$currPos = s1;
14173
+ s1 = peg$FAILED;
14333
14174
  }
14334
- else s2 = peg$FAILED;
14335
- if (s2 !== peg$FAILED) s1 = input.substring(s1, peg$currPos);
14336
- else s1 = s2;
14337
- if (s1 !== peg$FAILED) {
14338
- peg$savedPos = s0;
14339
- s1 = peg$c5(s1);
14175
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
14176
+ else s0 = s1;
14177
+ return s0;
14178
+ }
14179
+ function peg$parseChordDefinitionSuffix() {
14180
+ let s0, s1, s2;
14181
+ s0 = peg$currPos;
14182
+ s1 = [];
14183
+ if (peg$c15.test(input.charAt(peg$currPos))) {
14184
+ s2 = input.charAt(peg$currPos);
14185
+ peg$currPos++;
14186
+ } else {
14187
+ s2 = peg$FAILED;
14188
+ if (peg$silentFails === 0) peg$fail(peg$c16);
14340
14189
  }
14341
- s0 = s1;
14190
+ if (s2 !== peg$FAILED) while (s2 !== peg$FAILED) {
14191
+ s1.push(s2);
14192
+ if (peg$c15.test(input.charAt(peg$currPos))) {
14193
+ s2 = input.charAt(peg$currPos);
14194
+ peg$currPos++;
14195
+ } else {
14196
+ s2 = peg$FAILED;
14197
+ if (peg$silentFails === 0) peg$fail(peg$c16);
14198
+ }
14199
+ }
14200
+ else s1 = peg$FAILED;
14201
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
14202
+ else s0 = s1;
14342
14203
  return s0;
14343
14204
  }
14344
14205
  function peg$parseBaseFret() {
14345
14206
  let s0, s1, s2, s3, s4;
14346
14207
  s0 = peg$currPos;
14347
- if (input.substr(peg$currPos, 9) === peg$c6) {
14348
- s1 = peg$c6;
14208
+ if (input.substr(peg$currPos, 9) === peg$c17) {
14209
+ s1 = peg$c17;
14349
14210
  peg$currPos += 9;
14350
14211
  } else {
14351
14212
  s1 = peg$FAILED;
14352
- if (peg$silentFails === 0) peg$fail(peg$c7);
14213
+ if (peg$silentFails === 0) peg$fail(peg$c18);
14353
14214
  }
14354
14215
  if (s1 !== peg$FAILED) {
14355
14216
  s2 = peg$parse__();
@@ -14359,7 +14220,7 @@ to a key`);
14359
14220
  s4 = peg$parse__();
14360
14221
  if (s4 !== peg$FAILED) {
14361
14222
  peg$savedPos = s0;
14362
- s1 = peg$c8(s3);
14223
+ s1 = peg$c19(s3);
14363
14224
  s0 = s1;
14364
14225
  } else {
14365
14226
  peg$currPos = s0;
@@ -14384,12 +14245,12 @@ to a key`);
14384
14245
  s0 = peg$currPos;
14385
14246
  s1 = peg$parse__();
14386
14247
  if (s1 !== peg$FAILED) {
14387
- if (input.substr(peg$currPos, 7) === peg$c9) {
14388
- s2 = peg$c9;
14248
+ if (input.substr(peg$currPos, 7) === peg$c20) {
14249
+ s2 = peg$c20;
14389
14250
  peg$currPos += 7;
14390
14251
  } else {
14391
14252
  s2 = peg$FAILED;
14392
- if (peg$silentFails === 0) peg$fail(peg$c10);
14253
+ if (peg$silentFails === 0) peg$fail(peg$c21);
14393
14254
  }
14394
14255
  if (s2 !== peg$FAILED) {
14395
14256
  s3 = [];
@@ -14401,7 +14262,7 @@ to a key`);
14401
14262
  else s3 = peg$FAILED;
14402
14263
  if (s3 !== peg$FAILED) {
14403
14264
  peg$savedPos = s0;
14404
- s1 = peg$c11(s3);
14265
+ s1 = peg$c22(s3);
14405
14266
  s0 = s1;
14406
14267
  } else {
14407
14268
  peg$currPos = s0;
@@ -14425,7 +14286,7 @@ to a key`);
14425
14286
  s2 = peg$parseFinger();
14426
14287
  if (s2 !== peg$FAILED) {
14427
14288
  peg$savedPos = s0;
14428
- s1 = peg$c12(s2);
14289
+ s1 = peg$c23(s2);
14429
14290
  s0 = s1;
14430
14291
  } else {
14431
14292
  peg$currPos = s0;
@@ -14441,12 +14302,12 @@ to a key`);
14441
14302
  let s0;
14442
14303
  s0 = peg$parseFingerNumber();
14443
14304
  if (s0 === peg$FAILED) {
14444
- if (peg$c13.test(input.charAt(peg$currPos))) {
14305
+ if (peg$c24.test(input.charAt(peg$currPos))) {
14445
14306
  s0 = input.charAt(peg$currPos);
14446
14307
  peg$currPos++;
14447
14308
  } else {
14448
14309
  s0 = peg$FAILED;
14449
- if (peg$silentFails === 0) peg$fail(peg$c14);
14310
+ if (peg$silentFails === 0) peg$fail(peg$c25);
14450
14311
  }
14451
14312
  }
14452
14313
  return s0;
@@ -14454,39 +14315,39 @@ to a key`);
14454
14315
  function peg$parseFingerNumber() {
14455
14316
  let s0, s1;
14456
14317
  s0 = peg$currPos;
14457
- if (peg$c15.test(input.charAt(peg$currPos))) {
14318
+ if (peg$c26.test(input.charAt(peg$currPos))) {
14458
14319
  s1 = input.charAt(peg$currPos);
14459
14320
  peg$currPos++;
14460
14321
  } else {
14461
14322
  s1 = peg$FAILED;
14462
- if (peg$silentFails === 0) peg$fail(peg$c16);
14323
+ if (peg$silentFails === 0) peg$fail(peg$c27);
14463
14324
  }
14464
14325
  if (s1 !== peg$FAILED) {
14465
14326
  peg$savedPos = s0;
14466
- s1 = peg$c17(s1);
14327
+ s1 = peg$c28(s1);
14467
14328
  }
14468
14329
  s0 = s1;
14469
14330
  return s0;
14470
14331
  }
14471
14332
  function peg$parseFingerLetter() {
14472
14333
  let s0;
14473
- if (peg$c18.test(input.charAt(peg$currPos))) {
14334
+ if (peg$c29.test(input.charAt(peg$currPos))) {
14474
14335
  s0 = input.charAt(peg$currPos);
14475
14336
  peg$currPos++;
14476
14337
  } else {
14477
14338
  s0 = peg$FAILED;
14478
- if (peg$silentFails === 0) peg$fail(peg$c19);
14339
+ if (peg$silentFails === 0) peg$fail(peg$c30);
14479
14340
  }
14480
14341
  return s0;
14481
14342
  }
14482
14343
  function peg$parseNoFingerSetting() {
14483
14344
  let s0;
14484
- if (peg$c20.test(input.charAt(peg$currPos))) {
14345
+ if (peg$c31.test(input.charAt(peg$currPos))) {
14485
14346
  s0 = input.charAt(peg$currPos);
14486
14347
  peg$currPos++;
14487
14348
  } else {
14488
14349
  s0 = peg$FAILED;
14489
- if (peg$silentFails === 0) peg$fail(peg$c21);
14350
+ if (peg$silentFails === 0) peg$fail(peg$c32);
14490
14351
  }
14491
14352
  return s0;
14492
14353
  }
@@ -14498,7 +14359,7 @@ to a key`);
14498
14359
  s2 = peg$parseFret();
14499
14360
  if (s2 !== peg$FAILED) {
14500
14361
  peg$savedPos = s0;
14501
- s1 = peg$c22(s2);
14362
+ s1 = peg$c33(s2);
14502
14363
  s0 = s1;
14503
14364
  } else {
14504
14365
  peg$currPos = s0;
@@ -14522,7 +14383,7 @@ to a key`);
14522
14383
  }
14523
14384
  if (s2 !== peg$FAILED) {
14524
14385
  peg$savedPos = s0;
14525
- s1 = peg$c22(s2);
14386
+ s1 = peg$c33(s2);
14526
14387
  s0 = s1;
14527
14388
  } else {
14528
14389
  peg$currPos = s0;
@@ -14537,16 +14398,16 @@ to a key`);
14537
14398
  function peg$parseFretNumber() {
14538
14399
  let s0, s1;
14539
14400
  s0 = peg$currPos;
14540
- if (peg$c23.test(input.charAt(peg$currPos))) {
14401
+ if (peg$c34.test(input.charAt(peg$currPos))) {
14541
14402
  s1 = input.charAt(peg$currPos);
14542
14403
  peg$currPos++;
14543
14404
  } else {
14544
14405
  s1 = peg$FAILED;
14545
- if (peg$silentFails === 0) peg$fail(peg$c24);
14406
+ if (peg$silentFails === 0) peg$fail(peg$c35);
14546
14407
  }
14547
14408
  if (s1 !== peg$FAILED) {
14548
14409
  peg$savedPos = s0;
14549
- s1 = peg$c17(s1);
14410
+ s1 = peg$c28(s1);
14550
14411
  }
14551
14412
  s0 = s1;
14552
14413
  return s0;
@@ -14555,35 +14416,35 @@ to a key`);
14555
14416
  let s0, s1;
14556
14417
  s0 = peg$currPos;
14557
14418
  if (input.charCodeAt(peg$currPos) === 48) {
14558
- s1 = peg$c25;
14419
+ s1 = peg$c36;
14559
14420
  peg$currPos++;
14560
14421
  } else {
14561
14422
  s1 = peg$FAILED;
14562
- if (peg$silentFails === 0) peg$fail(peg$c26);
14423
+ if (peg$silentFails === 0) peg$fail(peg$c37);
14563
14424
  }
14564
14425
  if (s1 !== peg$FAILED) {
14565
14426
  peg$savedPos = s0;
14566
- s1 = peg$c27();
14427
+ s1 = peg$c38();
14567
14428
  }
14568
14429
  s0 = s1;
14569
14430
  return s0;
14570
14431
  }
14571
14432
  function peg$parseNonSoundingString() {
14572
14433
  let s0;
14573
- if (input.substr(peg$currPos, 2) === peg$c28) {
14574
- s0 = peg$c28;
14434
+ if (input.substr(peg$currPos, 2) === peg$c39) {
14435
+ s0 = peg$c39;
14575
14436
  peg$currPos += 2;
14576
14437
  } else {
14577
14438
  s0 = peg$FAILED;
14578
- if (peg$silentFails === 0) peg$fail(peg$c29);
14439
+ if (peg$silentFails === 0) peg$fail(peg$c40);
14579
14440
  }
14580
14441
  if (s0 === peg$FAILED) {
14581
- if (peg$c30.test(input.charAt(peg$currPos))) {
14442
+ if (peg$c41.test(input.charAt(peg$currPos))) {
14582
14443
  s0 = input.charAt(peg$currPos);
14583
14444
  peg$currPos++;
14584
14445
  } else {
14585
14446
  s0 = peg$FAILED;
14586
- if (peg$silentFails === 0) peg$fail(peg$c31);
14447
+ if (peg$silentFails === 0) peg$fail(peg$c42);
14587
14448
  }
14588
14449
  }
14589
14450
  return s0;
@@ -14601,7 +14462,7 @@ to a key`);
14601
14462
  peg$silentFails--;
14602
14463
  if (s0 === peg$FAILED) {
14603
14464
  s1 = peg$FAILED;
14604
- if (peg$silentFails === 0) peg$fail(peg$c32);
14465
+ if (peg$silentFails === 0) peg$fail(peg$c43);
14605
14466
  }
14606
14467
  return s0;
14607
14468
  }
@@ -14617,18 +14478,18 @@ to a key`);
14617
14478
  peg$silentFails--;
14618
14479
  if (s0 === peg$FAILED) {
14619
14480
  s1 = peg$FAILED;
14620
- if (peg$silentFails === 0) peg$fail(peg$c33);
14481
+ if (peg$silentFails === 0) peg$fail(peg$c44);
14621
14482
  }
14622
14483
  return s0;
14623
14484
  }
14624
14485
  function peg$parseWhitespaceCharacter() {
14625
14486
  let s0;
14626
- if (peg$c34.test(input.charAt(peg$currPos))) {
14487
+ if (peg$c45.test(input.charAt(peg$currPos))) {
14627
14488
  s0 = input.charAt(peg$currPos);
14628
14489
  peg$currPos++;
14629
14490
  } else {
14630
14491
  s0 = peg$FAILED;
14631
- if (peg$silentFails === 0) peg$fail(peg$c35);
14492
+ if (peg$silentFails === 0) peg$fail(peg$c46);
14632
14493
  }
14633
14494
  return s0;
14634
14495
  }
@@ -14637,21 +14498,21 @@ to a key`);
14637
14498
  peg$silentFails++;
14638
14499
  s0 = peg$currPos;
14639
14500
  s1 = [];
14640
- if (peg$c37.test(input.charAt(peg$currPos))) {
14501
+ if (peg$c48.test(input.charAt(peg$currPos))) {
14641
14502
  s2 = input.charAt(peg$currPos);
14642
14503
  peg$currPos++;
14643
14504
  } else {
14644
14505
  s2 = peg$FAILED;
14645
- if (peg$silentFails === 0) peg$fail(peg$c38);
14506
+ if (peg$silentFails === 0) peg$fail(peg$c49);
14646
14507
  }
14647
14508
  if (s2 !== peg$FAILED) while (s2 !== peg$FAILED) {
14648
14509
  s1.push(s2);
14649
- if (peg$c37.test(input.charAt(peg$currPos))) {
14510
+ if (peg$c48.test(input.charAt(peg$currPos))) {
14650
14511
  s2 = input.charAt(peg$currPos);
14651
14512
  peg$currPos++;
14652
14513
  } else {
14653
14514
  s2 = peg$FAILED;
14654
- if (peg$silentFails === 0) peg$fail(peg$c38);
14515
+ if (peg$silentFails === 0) peg$fail(peg$c49);
14655
14516
  }
14656
14517
  }
14657
14518
  else s1 = peg$FAILED;
@@ -14660,18 +14521,18 @@ to a key`);
14660
14521
  peg$silentFails--;
14661
14522
  if (s0 === peg$FAILED) {
14662
14523
  s1 = peg$FAILED;
14663
- if (peg$silentFails === 0) peg$fail(peg$c36);
14524
+ if (peg$silentFails === 0) peg$fail(peg$c47);
14664
14525
  }
14665
14526
  return s0;
14666
14527
  }
14667
14528
  function peg$parseNewLine() {
14668
14529
  let s0;
14669
- if (peg$c39.test(input.charAt(peg$currPos))) {
14530
+ if (peg$c50.test(input.charAt(peg$currPos))) {
14670
14531
  s0 = input.charAt(peg$currPos);
14671
14532
  peg$currPos++;
14672
14533
  } else {
14673
14534
  s0 = peg$FAILED;
14674
- if (peg$silentFails === 0) peg$fail(peg$c40);
14535
+ if (peg$silentFails === 0) peg$fail(peg$c51);
14675
14536
  }
14676
14537
  if (s0 === peg$FAILED) s0 = peg$parseCarriageReturnLineFeed();
14677
14538
  return s0;
@@ -14701,33 +14562,33 @@ to a key`);
14701
14562
  function peg$parseLineFeed() {
14702
14563
  let s0;
14703
14564
  if (input.charCodeAt(peg$currPos) === 10) {
14704
- s0 = peg$c41;
14565
+ s0 = peg$c52;
14705
14566
  peg$currPos++;
14706
14567
  } else {
14707
14568
  s0 = peg$FAILED;
14708
- if (peg$silentFails === 0) peg$fail(peg$c42);
14569
+ if (peg$silentFails === 0) peg$fail(peg$c53);
14709
14570
  }
14710
14571
  return s0;
14711
14572
  }
14712
14573
  function peg$parseCarriageReturn() {
14713
14574
  let s0;
14714
14575
  if (input.charCodeAt(peg$currPos) === 13) {
14715
- s0 = peg$c43;
14576
+ s0 = peg$c54;
14716
14577
  peg$currPos++;
14717
14578
  } else {
14718
14579
  s0 = peg$FAILED;
14719
- if (peg$silentFails === 0) peg$fail(peg$c44);
14580
+ if (peg$silentFails === 0) peg$fail(peg$c55);
14720
14581
  }
14721
14582
  return s0;
14722
14583
  }
14723
14584
  function peg$parseEscape() {
14724
14585
  let s0;
14725
14586
  if (input.charCodeAt(peg$currPos) === 92) {
14726
- s0 = peg$c45;
14587
+ s0 = peg$c56;
14727
14588
  peg$currPos++;
14728
14589
  } else {
14729
14590
  s0 = peg$FAILED;
14730
- if (peg$silentFails === 0) peg$fail(peg$c46);
14591
+ if (peg$silentFails === 0) peg$fail(peg$c57);
14731
14592
  }
14732
14593
  return s0;
14733
14594
  }
@@ -14771,11 +14632,25 @@ to a key`);
14771
14632
  separator: ","
14772
14633
  };
14773
14634
  var $f1e1976743ced067$var$MetadataConfiguration = class {
14774
- constructor(metadataConfiguration = $f1e1976743ced067$export$a014e67b549cbef4) {
14775
- this.separator = metadataConfiguration.separator;
14635
+ constructor(metadataConfiguration = {}) {
14636
+ this.separator = metadataConfiguration.separator || $f1e1976743ced067$export$a014e67b549cbef4.separator;
14776
14637
  }
14777
14638
  };
14778
14639
  var $f1e1976743ced067$export$2e2bcd8739ae039 = $f1e1976743ced067$var$MetadataConfiguration;
14640
+ var $66494710ef677b2b$var$InstrumentConfiguration = class {
14641
+ constructor(instrumentConfiguration = {}) {
14642
+ this.type = instrumentConfiguration.type;
14643
+ this.description = instrumentConfiguration.description;
14644
+ }
14645
+ };
14646
+ var $66494710ef677b2b$export$2e2bcd8739ae039 = $66494710ef677b2b$var$InstrumentConfiguration;
14647
+ var $a911f47e3c49e507$var$UserConfiguration = class {
14648
+ constructor(userConfiguration = {}) {
14649
+ this.name = userConfiguration.name;
14650
+ this.fullname = userConfiguration.fullname;
14651
+ }
14652
+ };
14653
+ var $a911f47e3c49e507$export$2e2bcd8739ae039 = $a911f47e3c49e507$var$UserConfiguration;
14779
14654
  var $1900e9488433afb1$export$f152539e8297cacc = (string) => string;
14780
14655
  var $1900e9488433afb1$export$78c0028a34264234 = {
14781
14656
  evaluate: false,
@@ -14792,6 +14667,9 @@ to a key`);
14792
14667
  }
14793
14668
  };
14794
14669
  var $1900e9488433afb1$var$Configuration = class {
14670
+ get metadataSeparator() {
14671
+ return this.metadata.separator ?? "";
14672
+ }
14795
14673
  constructor(configuration = $1900e9488433afb1$export$78c0028a34264234) {
14796
14674
  const mergedConfig = {
14797
14675
  ...$1900e9488433afb1$export$78c0028a34264234,
@@ -14807,13 +14685,8 @@ to a key`);
14807
14685
  ...$1900e9488433afb1$export$78c0028a34264234.delegates,
14808
14686
  ...configuration.delegates
14809
14687
  };
14810
- this.configuration = {
14811
- configuration,
14812
- delegates: this.delegates
14813
- };
14814
- }
14815
- get(key) {
14816
- return (0, $parcel$interopDefault($6FCft$lodashget))(this, key);
14688
+ this.instrument = configuration.instrument ? new (0, $66494710ef677b2b$export$2e2bcd8739ae039)(configuration.instrument) : void 0;
14689
+ this.user = configuration.user ? new (0, $a911f47e3c49e507$export$2e2bcd8739ae039)(configuration.user) : void 0;
14817
14690
  }
14818
14691
  };
14819
14692
  var $1900e9488433afb1$export$2e2bcd8739ae039 = $1900e9488433afb1$var$Configuration;
@@ -15002,7 +14875,7 @@ to a key`);
15002
14875
  };
15003
14876
  var $7251dad5f4a4c35f$var$Tag = class _$7251dad5f4a4c35f$var$Tag extends (0, $c5ce4fc4f57fe810$export$2e2bcd8739ae039) {
15004
14877
  constructor(name, value = null, traceInfo = null, attributes = {}) {
15005
- super(traceInfo), this._isMetaTag = false, this._originalName = "", this._name = "", this._value = "", /**
14878
+ super(traceInfo), this._isMetaTag = false, this._originalName = "", this._name = "", this._value = "", this.selector = null, this.isNegated = false, /**
15006
14879
  * The tag attributes. For example, section related tags can have a label:
15007
14880
  * `{start_of_verse: label="Verse 1"}`
15008
14881
  * @type {Record<string, string>}
@@ -15321,7 +15194,7 @@ to a key`);
15321
15194
  throw new Error(`Don't know how to format a ${item}`);
15322
15195
  }
15323
15196
  formatOrEvaluateItem(item, metadata) {
15324
- if (this.configuration.evaluate) return item.evaluate(metadata, this.configuration.get("metadata.separator"));
15197
+ if (this.configuration.evaluate) return item.evaluate(metadata, this.configuration.metadataSeparator);
15325
15198
  if (item instanceof (0, $15f1d40e3d1ed3a0$export$2e2bcd8739ae039)) return this.formatTernary(item);
15326
15199
  if (item instanceof (0, $11953cb6035032a3$export$2e2bcd8739ae039)) return item.evaluate();
15327
15200
  throw new Error(`Don't know how to format a ${item.constructor.name}`);
@@ -15406,13 +15279,15 @@ to a key`);
15406
15279
  ])
15407
15280
  ];
15408
15281
  }
15409
- function $51ced2cf8b50f946$export$4478cda40be33ba2(name, value, location) {
15282
+ function $51ced2cf8b50f946$export$4478cda40be33ba2(name, value, selector, location) {
15410
15283
  return {
15411
15284
  type: "tag",
15412
15285
  name,
15413
15286
  location: location.start,
15414
15287
  value: value?.value || "",
15415
- attributes: value?.attributes || {}
15288
+ attributes: value?.attributes || {},
15289
+ selector: selector?.value,
15290
+ isNegated: selector?.isNegated
15416
15291
  };
15417
15292
  }
15418
15293
  function $51ced2cf8b50f946$export$4bae24da7c5e47c7(string, search, replaceMatch, replaceRest = (subString) => subString) {
@@ -15788,50 +15663,65 @@ to a key`);
15788
15663
  const peg$c62 = peg$literalExpectation("define", false);
15789
15664
  const peg$c63 = ":";
15790
15665
  const peg$c64 = peg$literalExpectation(":", false);
15791
- const peg$c65 = function(name, value) {
15666
+ const peg$c65 = function(name, selector, value) {
15792
15667
  const { text: text2, ...chordDefinition } = value;
15793
15668
  return {
15794
15669
  type: "tag",
15795
15670
  name,
15796
15671
  value: text2,
15797
15672
  chordDefinition,
15798
- location: location().start
15673
+ location: location().start,
15674
+ selector: selector?.value,
15675
+ isNegated: selector?.isNegated
15799
15676
  };
15800
15677
  };
15801
- const peg$c66 = function(tagName, tagColonWithValue) {
15802
- return $51ced2cf8b50f946$export$4478cda40be33ba2(tagName, tagColonWithValue, location());
15678
+ const peg$c66 = function(tagName, selector, tagColonWithValue) {
15679
+ return $51ced2cf8b50f946$export$4478cda40be33ba2(tagName, tagColonWithValue, selector, location());
15803
15680
  };
15804
- const peg$c67 = function(tagValue) {
15681
+ const peg$c67 = "-";
15682
+ const peg$c68 = peg$literalExpectation("-", false);
15683
+ const peg$c69 = function(value, negator) {
15684
+ return {
15685
+ value,
15686
+ isNegated: !!negator
15687
+ };
15688
+ };
15689
+ const peg$c70 = "!";
15690
+ const peg$c71 = peg$literalExpectation("!", false);
15691
+ const peg$c72 = function() {
15692
+ return true;
15693
+ };
15694
+ const peg$c73 = function(tagValue) {
15805
15695
  return tagValue;
15806
15696
  };
15807
- const peg$c68 = function(attributes) {
15697
+ const peg$c74 = function(attributes) {
15808
15698
  return {
15809
15699
  attributes
15810
15700
  };
15811
15701
  };
15812
- const peg$c69 = function(value) {
15702
+ const peg$c75 = function(value) {
15813
15703
  return {
15814
15704
  value
15815
15705
  };
15816
15706
  };
15817
- const peg$c70 = function(attributes) {
15707
+ const peg$c76 = function(attributes) {
15818
15708
  const obj = {};
15819
15709
  attributes.forEach((pair) => {
15820
15710
  obj[pair[0]] = pair[1];
15821
15711
  });
15822
15712
  return obj;
15823
15713
  };
15824
- const peg$c71 = function(attribute) {
15714
+ const peg$c77 = function(attribute) {
15825
15715
  return attribute;
15826
15716
  };
15827
- const peg$c72 = function(name, value) {
15717
+ const peg$c78 = function(name, value) {
15828
15718
  return [
15829
15719
  name,
15830
15720
  value
15831
15721
  ];
15832
15722
  };
15833
- const peg$c73 = /^[a-zA-Z\-_]/;
15834
- const peg$c74 = peg$classExpectation([
15723
+ const peg$c79 = /^[a-zA-Z_]/;
15724
+ const peg$c80 = peg$classExpectation([
15835
15725
  [
15836
15726
  "a",
15837
15727
  "z"
@@ -15840,38 +15730,50 @@ to a key`);
15840
15730
  "A",
15841
15731
  "Z"
15842
15732
  ],
15843
- "-",
15844
15733
  "_"
15845
15734
  ], false, false);
15846
- const peg$c75 = function(chars) {
15735
+ const peg$c81 = function(chars) {
15847
15736
  return chars.map((c) => c.char || c).join("");
15848
15737
  };
15849
- const peg$c76 = /^[^}\\\r\n]/;
15850
- const peg$c77 = peg$classExpectation([
15738
+ const peg$c82 = /^[^}\\\r\n]/;
15739
+ const peg$c83 = peg$classExpectation([
15851
15740
  "}",
15852
15741
  "\\",
15853
15742
  "\r",
15854
15743
  "\n"
15855
15744
  ], true, false);
15856
- const peg$c78 = '"';
15857
- const peg$c79 = peg$literalExpectation('"', false);
15858
- const peg$c80 = function(value) {
15745
+ const peg$c84 = /^[a-zA-Z\-_]/;
15746
+ const peg$c85 = peg$classExpectation([
15747
+ [
15748
+ "a",
15749
+ "z"
15750
+ ],
15751
+ [
15752
+ "A",
15753
+ "Z"
15754
+ ],
15755
+ "-",
15756
+ "_"
15757
+ ], false, false);
15758
+ const peg$c86 = '"';
15759
+ const peg$c87 = peg$literalExpectation('"', false);
15760
+ const peg$c88 = function(value) {
15859
15761
  return value;
15860
15762
  };
15861
- const peg$c81 = /^[^"}]/;
15862
- const peg$c82 = peg$classExpectation([
15763
+ const peg$c89 = /^[^"}]/;
15764
+ const peg$c90 = peg$classExpectation([
15863
15765
  '"',
15864
15766
  "}"
15865
15767
  ], true, false);
15866
- const peg$c83 = function() {
15768
+ const peg$c91 = function() {
15867
15769
  return {
15868
15770
  type: "char",
15869
15771
  char: '"'
15870
15772
  };
15871
15773
  };
15872
- const peg$c84 = "frets";
15873
- const peg$c85 = peg$literalExpectation("frets", false);
15874
- const peg$c86 = function(name, baseFret, frets, fingers) {
15774
+ const peg$c92 = "frets";
15775
+ const peg$c93 = peg$literalExpectation("frets", false);
15776
+ const peg$c94 = function(name, baseFret, frets, fingers) {
15875
15777
  return {
15876
15778
  name,
15877
15779
  baseFret: baseFret || 1,
@@ -15880,46 +15782,74 @@ to a key`);
15880
15782
  text: text()
15881
15783
  };
15882
15784
  };
15883
- const peg$c87 = /^[A-Za-z0-9\/-\u266D()+]/;
15884
- const peg$c88 = peg$classExpectation([
15785
+ const peg$c95 = "/";
15786
+ const peg$c96 = peg$literalExpectation("/", false);
15787
+ const peg$c97 = /^[A-Ga-g]/;
15788
+ const peg$c98 = peg$classExpectation([
15885
15789
  [
15886
15790
  "A",
15887
- "Z"
15791
+ "G"
15888
15792
  ],
15793
+ [
15794
+ "a",
15795
+ "g"
15796
+ ]
15797
+ ], false, false);
15798
+ const peg$c99 = /^[b#\u266D\u266F]/;
15799
+ const peg$c100 = peg$classExpectation([
15800
+ "b",
15801
+ "#",
15802
+ "\u266D",
15803
+ "\u266F"
15804
+ ], false, false);
15805
+ const peg$c101 = "es";
15806
+ const peg$c102 = peg$literalExpectation("es", false);
15807
+ const peg$c103 = "s";
15808
+ const peg$c104 = peg$literalExpectation("s", false);
15809
+ const peg$c105 = "is";
15810
+ const peg$c106 = peg$literalExpectation("is", false);
15811
+ const peg$c107 = /^[a-zA-Z0-9#\u266Fb\u266D()+\-\/\xF8\u0394\u2212]/;
15812
+ const peg$c108 = peg$classExpectation([
15889
15813
  [
15890
15814
  "a",
15891
15815
  "z"
15892
15816
  ],
15893
15817
  [
15894
- "0",
15895
- "9"
15818
+ "A",
15819
+ "Z"
15896
15820
  ],
15897
15821
  [
15898
- "/",
15899
- "\u266D"
15822
+ "0",
15823
+ "9"
15900
15824
  ],
15825
+ "#",
15826
+ "\u266F",
15827
+ "b",
15828
+ "\u266D",
15901
15829
  "(",
15902
15830
  ")",
15903
- "+"
15831
+ "+",
15832
+ "-",
15833
+ "/",
15834
+ "\xF8",
15835
+ "\u0394",
15836
+ "\u2212"
15904
15837
  ], false, false);
15905
- const peg$c89 = function(name) {
15906
- return name;
15907
- };
15908
- const peg$c90 = "base-fret";
15909
- const peg$c91 = peg$literalExpectation("base-fret", false);
15910
- const peg$c92 = function(baseFret) {
15838
+ const peg$c109 = "base-fret";
15839
+ const peg$c110 = peg$literalExpectation("base-fret", false);
15840
+ const peg$c111 = function(baseFret) {
15911
15841
  return baseFret;
15912
15842
  };
15913
- const peg$c93 = "fingers";
15914
- const peg$c94 = peg$literalExpectation("fingers", false);
15915
- const peg$c95 = function(fingers) {
15843
+ const peg$c112 = "fingers";
15844
+ const peg$c113 = peg$literalExpectation("fingers", false);
15845
+ const peg$c114 = function(fingers) {
15916
15846
  return fingers;
15917
15847
  };
15918
- const peg$c96 = function(finger) {
15848
+ const peg$c115 = function(finger) {
15919
15849
  return finger;
15920
15850
  };
15921
- const peg$c97 = /^[\-A-Za-z]/;
15922
- const peg$c98 = peg$classExpectation([
15851
+ const peg$c116 = /^[\-A-Za-z]/;
15852
+ const peg$c117 = peg$classExpectation([
15923
15853
  "-",
15924
15854
  [
15925
15855
  "A",
@@ -15930,18 +15860,18 @@ to a key`);
15930
15860
  "z"
15931
15861
  ]
15932
15862
  ], false, false);
15933
- const peg$c99 = /^[0-9]/;
15934
- const peg$c100 = peg$classExpectation([
15863
+ const peg$c118 = /^[0-9]/;
15864
+ const peg$c119 = peg$classExpectation([
15935
15865
  [
15936
15866
  "0",
15937
15867
  "9"
15938
15868
  ]
15939
15869
  ], false, false);
15940
- const peg$c101 = function(number) {
15870
+ const peg$c120 = function(number) {
15941
15871
  return parseInt(number, 10);
15942
15872
  };
15943
- const peg$c102 = /^[a-zA-Z]/;
15944
- const peg$c103 = peg$classExpectation([
15873
+ const peg$c121 = /^[a-zA-Z]/;
15874
+ const peg$c122 = peg$classExpectation([
15945
15875
  [
15946
15876
  "a",
15947
15877
  "z"
@@ -15951,93 +15881,93 @@ to a key`);
15951
15881
  "Z"
15952
15882
  ]
15953
15883
  ], false, false);
15954
- const peg$c104 = /^[\-NXnx]/;
15955
- const peg$c105 = peg$classExpectation([
15884
+ const peg$c123 = /^[\-NXnx]/;
15885
+ const peg$c124 = peg$classExpectation([
15956
15886
  "-",
15957
15887
  "N",
15958
15888
  "X",
15959
15889
  "n",
15960
15890
  "x"
15961
15891
  ], false, false);
15962
- const peg$c106 = function(fret) {
15892
+ const peg$c125 = function(fret) {
15963
15893
  return fret;
15964
15894
  };
15965
- const peg$c107 = /^[1-9]/;
15966
- const peg$c108 = peg$classExpectation([
15895
+ const peg$c126 = /^[1-9]/;
15896
+ const peg$c127 = peg$classExpectation([
15967
15897
  [
15968
15898
  "1",
15969
15899
  "9"
15970
15900
  ]
15971
15901
  ], false, false);
15972
- const peg$c109 = "0";
15973
- const peg$c110 = peg$literalExpectation("0", false);
15974
- const peg$c111 = function() {
15902
+ const peg$c128 = "0";
15903
+ const peg$c129 = peg$literalExpectation("0", false);
15904
+ const peg$c130 = function() {
15975
15905
  return 0;
15976
15906
  };
15977
- const peg$c112 = "-1";
15978
- const peg$c113 = peg$literalExpectation("-1", false);
15979
- const peg$c114 = /^[NXnx]/;
15980
- const peg$c115 = peg$classExpectation([
15907
+ const peg$c131 = "-1";
15908
+ const peg$c132 = peg$literalExpectation("-1", false);
15909
+ const peg$c133 = /^[NXnx]/;
15910
+ const peg$c134 = peg$classExpectation([
15981
15911
  "N",
15982
15912
  "X",
15983
15913
  "n",
15984
15914
  "x"
15985
15915
  ], false, false);
15986
- const peg$c116 = function(startTag, content, endTag) {
15916
+ const peg$c135 = function(startTag, content, endTag) {
15987
15917
  return $51ced2cf8b50f946$export$665e0f4515a68234(startTag, endTag, content);
15988
15918
  };
15989
- const peg$c117 = "start_of_abc";
15990
- const peg$c118 = peg$literalExpectation("start_of_abc", false);
15991
- const peg$c119 = "end_of_abc";
15992
- const peg$c120 = peg$literalExpectation("end_of_abc", false);
15993
- const peg$c121 = function(tagName) {
15994
- return $51ced2cf8b50f946$export$4478cda40be33ba2(tagName, null, location());
15919
+ const peg$c136 = "start_of_abc";
15920
+ const peg$c137 = peg$literalExpectation("start_of_abc", false);
15921
+ const peg$c138 = "end_of_abc";
15922
+ const peg$c139 = peg$literalExpectation("end_of_abc", false);
15923
+ const peg$c140 = function(tagName) {
15924
+ return $51ced2cf8b50f946$export$4478cda40be33ba2(tagName, null, null, location());
15995
15925
  };
15996
- const peg$c122 = "start_of_grid";
15997
- const peg$c123 = peg$literalExpectation("start_of_grid", false);
15998
- const peg$c124 = "sog";
15999
- const peg$c125 = peg$literalExpectation("sog", false);
16000
- const peg$c126 = "end_of_grid";
16001
- const peg$c127 = peg$literalExpectation("end_of_grid", false);
16002
- const peg$c128 = "eog";
16003
- const peg$c129 = peg$literalExpectation("eog", false);
16004
- const peg$c130 = "start_of_ly";
16005
- const peg$c131 = peg$literalExpectation("start_of_ly", false);
16006
- const peg$c132 = "end_of_ly";
16007
- const peg$c133 = peg$literalExpectation("end_of_ly", false);
16008
- const peg$c134 = "start_of_tab";
16009
- const peg$c135 = peg$literalExpectation("start_of_tab", false);
16010
- const peg$c136 = "sot";
16011
- const peg$c137 = peg$literalExpectation("sot", false);
16012
- const peg$c138 = "end_of_tab";
16013
- const peg$c139 = peg$literalExpectation("end_of_tab", false);
16014
- const peg$c140 = "eot";
16015
- const peg$c141 = peg$literalExpectation("eot", false);
16016
- const peg$c142 = peg$anyExpectation();
16017
- const peg$c143 = peg$otherExpectation("whitespace");
16018
- const peg$c144 = peg$otherExpectation("optional whitespace");
16019
- const peg$c145 = /^[ \t\n\r]/;
16020
- const peg$c146 = peg$classExpectation([
15926
+ const peg$c141 = "start_of_grid";
15927
+ const peg$c142 = peg$literalExpectation("start_of_grid", false);
15928
+ const peg$c143 = "sog";
15929
+ const peg$c144 = peg$literalExpectation("sog", false);
15930
+ const peg$c145 = "end_of_grid";
15931
+ const peg$c146 = peg$literalExpectation("end_of_grid", false);
15932
+ const peg$c147 = "eog";
15933
+ const peg$c148 = peg$literalExpectation("eog", false);
15934
+ const peg$c149 = "start_of_ly";
15935
+ const peg$c150 = peg$literalExpectation("start_of_ly", false);
15936
+ const peg$c151 = "end_of_ly";
15937
+ const peg$c152 = peg$literalExpectation("end_of_ly", false);
15938
+ const peg$c153 = "start_of_tab";
15939
+ const peg$c154 = peg$literalExpectation("start_of_tab", false);
15940
+ const peg$c155 = "sot";
15941
+ const peg$c156 = peg$literalExpectation("sot", false);
15942
+ const peg$c157 = "end_of_tab";
15943
+ const peg$c158 = peg$literalExpectation("end_of_tab", false);
15944
+ const peg$c159 = "eot";
15945
+ const peg$c160 = peg$literalExpectation("eot", false);
15946
+ const peg$c161 = peg$anyExpectation();
15947
+ const peg$c162 = peg$otherExpectation("whitespace");
15948
+ const peg$c163 = peg$otherExpectation("optional whitespace");
15949
+ const peg$c164 = /^[ \t\n\r]/;
15950
+ const peg$c165 = peg$classExpectation([
16021
15951
  " ",
16022
15952
  " ",
16023
15953
  "\n",
16024
15954
  "\r"
16025
15955
  ], false, false);
16026
- const peg$c147 = peg$otherExpectation("space");
16027
- const peg$c148 = /^[ \t]/;
16028
- const peg$c149 = peg$classExpectation([
15956
+ const peg$c166 = peg$otherExpectation("space");
15957
+ const peg$c167 = /^[ \t]/;
15958
+ const peg$c168 = peg$classExpectation([
16029
15959
  " ",
16030
15960
  " "
16031
15961
  ], false, false);
16032
- const peg$c150 = /^[\n\r]/;
16033
- const peg$c151 = peg$classExpectation([
15962
+ const peg$c169 = /^[\n\r]/;
15963
+ const peg$c170 = peg$classExpectation([
16034
15964
  "\n",
16035
15965
  "\r"
16036
15966
  ], false, false);
16037
- const peg$c152 = "\n";
16038
- const peg$c153 = peg$literalExpectation("\n", false);
16039
- const peg$c154 = "\r";
16040
- const peg$c155 = peg$literalExpectation("\r", false);
15967
+ const peg$c171 = "\n";
15968
+ const peg$c172 = peg$literalExpectation("\n", false);
15969
+ const peg$c173 = "\r";
15970
+ const peg$c174 = peg$literalExpectation("\r", false);
16041
15971
  let peg$currPos = 0;
16042
15972
  let peg$savedPos = 0;
16043
15973
  const peg$posDetailsCache = [
@@ -17148,7 +17078,7 @@ to a key`);
17148
17078
  return s0;
17149
17079
  }
17150
17080
  function peg$parseChordDefinition() {
17151
- let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
17081
+ let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
17152
17082
  s0 = peg$currPos;
17153
17083
  if (input.charCodeAt(peg$currPos) === 123) {
17154
17084
  s1 = peg$c44;
@@ -17177,33 +17107,40 @@ to a key`);
17177
17107
  }
17178
17108
  }
17179
17109
  if (s3 !== peg$FAILED) {
17180
- s4 = peg$parse_();
17110
+ s4 = peg$parseTagSelector();
17111
+ if (s4 === peg$FAILED) s4 = null;
17181
17112
  if (s4 !== peg$FAILED) {
17182
- if (input.charCodeAt(peg$currPos) === 58) {
17183
- s5 = peg$c63;
17184
- peg$currPos++;
17185
- } else {
17186
- s5 = peg$FAILED;
17187
- if (peg$silentFails === 0) peg$fail(peg$c64);
17188
- }
17113
+ s5 = peg$parse_();
17189
17114
  if (s5 !== peg$FAILED) {
17190
- s6 = peg$parse_();
17115
+ if (input.charCodeAt(peg$currPos) === 58) {
17116
+ s6 = peg$c63;
17117
+ peg$currPos++;
17118
+ } else {
17119
+ s6 = peg$FAILED;
17120
+ if (peg$silentFails === 0) peg$fail(peg$c64);
17121
+ }
17191
17122
  if (s6 !== peg$FAILED) {
17192
- s7 = peg$parseChordDefinitionValue();
17123
+ s7 = peg$parse_();
17193
17124
  if (s7 !== peg$FAILED) {
17194
- s8 = peg$parse_();
17125
+ s8 = peg$parseChordDefinitionValue();
17195
17126
  if (s8 !== peg$FAILED) {
17196
- if (input.charCodeAt(peg$currPos) === 125) {
17197
- s9 = peg$c30;
17198
- peg$currPos++;
17199
- } else {
17200
- s9 = peg$FAILED;
17201
- if (peg$silentFails === 0) peg$fail(peg$c31);
17202
- }
17127
+ s9 = peg$parse_();
17203
17128
  if (s9 !== peg$FAILED) {
17204
- peg$savedPos = s0;
17205
- s1 = peg$c65(s3, s7);
17206
- s0 = s1;
17129
+ if (input.charCodeAt(peg$currPos) === 125) {
17130
+ s10 = peg$c30;
17131
+ peg$currPos++;
17132
+ } else {
17133
+ s10 = peg$FAILED;
17134
+ if (peg$silentFails === 0) peg$fail(peg$c31);
17135
+ }
17136
+ if (s10 !== peg$FAILED) {
17137
+ peg$savedPos = s0;
17138
+ s1 = peg$c65(s3, s4, s8);
17139
+ s0 = s1;
17140
+ } else {
17141
+ peg$currPos = s0;
17142
+ s0 = peg$FAILED;
17143
+ }
17207
17144
  } else {
17208
17145
  peg$currPos = s0;
17209
17146
  s0 = peg$FAILED;
@@ -17243,7 +17180,7 @@ to a key`);
17243
17180
  return s0;
17244
17181
  }
17245
17182
  function peg$parseTag() {
17246
- let s0, s1, s2, s3, s4, s5, s6;
17183
+ let s0, s1, s2, s3, s4, s5, s6, s7;
17247
17184
  s0 = peg$currPos;
17248
17185
  if (input.charCodeAt(peg$currPos) === 123) {
17249
17186
  s1 = peg$c44;
@@ -17260,22 +17197,29 @@ to a key`);
17260
17197
  if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
17261
17198
  else s3 = s4;
17262
17199
  if (s3 !== peg$FAILED) {
17263
- s4 = peg$parse_();
17200
+ s4 = peg$parseTagSelector();
17201
+ if (s4 === peg$FAILED) s4 = null;
17264
17202
  if (s4 !== peg$FAILED) {
17265
- s5 = peg$parseTagColonWithValue();
17266
- if (s5 === peg$FAILED) s5 = null;
17203
+ s5 = peg$parse_();
17267
17204
  if (s5 !== peg$FAILED) {
17268
- if (input.charCodeAt(peg$currPos) === 125) {
17269
- s6 = peg$c30;
17270
- peg$currPos++;
17271
- } else {
17272
- s6 = peg$FAILED;
17273
- if (peg$silentFails === 0) peg$fail(peg$c31);
17274
- }
17205
+ s6 = peg$parseTagColonWithValue();
17206
+ if (s6 === peg$FAILED) s6 = null;
17275
17207
  if (s6 !== peg$FAILED) {
17276
- peg$savedPos = s0;
17277
- s1 = peg$c66(s3, s5);
17278
- s0 = s1;
17208
+ if (input.charCodeAt(peg$currPos) === 125) {
17209
+ s7 = peg$c30;
17210
+ peg$currPos++;
17211
+ } else {
17212
+ s7 = peg$FAILED;
17213
+ if (peg$silentFails === 0) peg$fail(peg$c31);
17214
+ }
17215
+ if (s7 !== peg$FAILED) {
17216
+ peg$savedPos = s0;
17217
+ s1 = peg$c66(s3, s4, s6);
17218
+ s0 = s1;
17219
+ } else {
17220
+ peg$currPos = s0;
17221
+ s0 = peg$FAILED;
17222
+ }
17279
17223
  } else {
17280
17224
  peg$currPos = s0;
17281
17225
  s0 = peg$FAILED;
@@ -17302,6 +17246,82 @@ to a key`);
17302
17246
  }
17303
17247
  return s0;
17304
17248
  }
17249
+ function peg$parseTagSelector() {
17250
+ let s0, s1, s2, s3;
17251
+ s0 = peg$currPos;
17252
+ if (input.charCodeAt(peg$currPos) === 45) {
17253
+ s1 = peg$c67;
17254
+ peg$currPos++;
17255
+ } else {
17256
+ s1 = peg$FAILED;
17257
+ if (peg$silentFails === 0) peg$fail(peg$c68);
17258
+ }
17259
+ if (s1 !== peg$FAILED) {
17260
+ s2 = peg$parseTagSelectorValue();
17261
+ if (s2 !== peg$FAILED) {
17262
+ s3 = peg$parseTagSelectorNegator();
17263
+ if (s3 === peg$FAILED) s3 = null;
17264
+ if (s3 !== peg$FAILED) {
17265
+ peg$savedPos = s0;
17266
+ s1 = peg$c69(s2, s3);
17267
+ s0 = s1;
17268
+ } else {
17269
+ peg$currPos = s0;
17270
+ s0 = peg$FAILED;
17271
+ }
17272
+ } else {
17273
+ peg$currPos = s0;
17274
+ s0 = peg$FAILED;
17275
+ }
17276
+ } else {
17277
+ peg$currPos = s0;
17278
+ s0 = peg$FAILED;
17279
+ }
17280
+ return s0;
17281
+ }
17282
+ function peg$parseTagSelectorNegator() {
17283
+ let s0, s1;
17284
+ s0 = peg$currPos;
17285
+ if (input.charCodeAt(peg$currPos) === 33) {
17286
+ s1 = peg$c70;
17287
+ peg$currPos++;
17288
+ } else {
17289
+ s1 = peg$FAILED;
17290
+ if (peg$silentFails === 0) peg$fail(peg$c71);
17291
+ }
17292
+ if (s1 !== peg$FAILED) {
17293
+ peg$savedPos = s0;
17294
+ s1 = peg$c72();
17295
+ }
17296
+ s0 = s1;
17297
+ return s0;
17298
+ }
17299
+ function peg$parseTagSelectorValue() {
17300
+ let s0, s1, s2;
17301
+ s0 = peg$currPos;
17302
+ s1 = [];
17303
+ if (peg$c40.test(input.charAt(peg$currPos))) {
17304
+ s2 = input.charAt(peg$currPos);
17305
+ peg$currPos++;
17306
+ } else {
17307
+ s2 = peg$FAILED;
17308
+ if (peg$silentFails === 0) peg$fail(peg$c41);
17309
+ }
17310
+ if (s2 !== peg$FAILED) while (s2 !== peg$FAILED) {
17311
+ s1.push(s2);
17312
+ if (peg$c40.test(input.charAt(peg$currPos))) {
17313
+ s2 = input.charAt(peg$currPos);
17314
+ peg$currPos++;
17315
+ } else {
17316
+ s2 = peg$FAILED;
17317
+ if (peg$silentFails === 0) peg$fail(peg$c41);
17318
+ }
17319
+ }
17320
+ else s1 = peg$FAILED;
17321
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
17322
+ else s0 = s1;
17323
+ return s0;
17324
+ }
17305
17325
  function peg$parseTagColonWithValue() {
17306
17326
  let s0, s1, s2;
17307
17327
  s0 = peg$currPos;
@@ -17316,7 +17336,7 @@ to a key`);
17316
17336
  s2 = peg$parseTagValue();
17317
17337
  if (s2 !== peg$FAILED) {
17318
17338
  peg$savedPos = s0;
17319
- s1 = peg$c67(s2);
17339
+ s1 = peg$c73(s2);
17320
17340
  s0 = s1;
17321
17341
  } else {
17322
17342
  peg$currPos = s0;
@@ -17334,7 +17354,7 @@ to a key`);
17334
17354
  s1 = peg$parseTagAttributes();
17335
17355
  if (s1 !== peg$FAILED) {
17336
17356
  peg$savedPos = s0;
17337
- s1 = peg$c68(s1);
17357
+ s1 = peg$c74(s1);
17338
17358
  }
17339
17359
  s0 = s1;
17340
17360
  if (s0 === peg$FAILED) {
@@ -17342,7 +17362,7 @@ to a key`);
17342
17362
  s1 = peg$parseTagSimpleValue();
17343
17363
  if (s1 !== peg$FAILED) {
17344
17364
  peg$savedPos = s0;
17345
- s1 = peg$c69(s1);
17365
+ s1 = peg$c75(s1);
17346
17366
  }
17347
17367
  s0 = s1;
17348
17368
  }
@@ -17360,7 +17380,7 @@ to a key`);
17360
17380
  else s1 = peg$FAILED;
17361
17381
  if (s1 !== peg$FAILED) {
17362
17382
  peg$savedPos = s0;
17363
- s1 = peg$c70(s1);
17383
+ s1 = peg$c76(s1);
17364
17384
  }
17365
17385
  s0 = s1;
17366
17386
  return s0;
@@ -17373,7 +17393,7 @@ to a key`);
17373
17393
  s2 = peg$parseTagAttribute();
17374
17394
  if (s2 !== peg$FAILED) {
17375
17395
  peg$savedPos = s0;
17376
- s1 = peg$c71(s2);
17396
+ s1 = peg$c77(s2);
17377
17397
  s0 = s1;
17378
17398
  } else {
17379
17399
  peg$currPos = s0;
@@ -17405,7 +17425,7 @@ to a key`);
17405
17425
  s5 = peg$parseTagAttributeValue();
17406
17426
  if (s5 !== peg$FAILED) {
17407
17427
  peg$savedPos = s0;
17408
- s1 = peg$c72(s1, s5);
17428
+ s1 = peg$c78(s1, s5);
17409
17429
  s0 = s1;
17410
17430
  } else {
17411
17431
  peg$currPos = s0;
@@ -17432,21 +17452,21 @@ to a key`);
17432
17452
  function peg$parseTagName() {
17433
17453
  let s0, s1;
17434
17454
  s0 = [];
17435
- if (peg$c73.test(input.charAt(peg$currPos))) {
17455
+ if (peg$c79.test(input.charAt(peg$currPos))) {
17436
17456
  s1 = input.charAt(peg$currPos);
17437
17457
  peg$currPos++;
17438
17458
  } else {
17439
17459
  s1 = peg$FAILED;
17440
- if (peg$silentFails === 0) peg$fail(peg$c74);
17460
+ if (peg$silentFails === 0) peg$fail(peg$c80);
17441
17461
  }
17442
17462
  if (s1 !== peg$FAILED) while (s1 !== peg$FAILED) {
17443
17463
  s0.push(s1);
17444
- if (peg$c73.test(input.charAt(peg$currPos))) {
17464
+ if (peg$c79.test(input.charAt(peg$currPos))) {
17445
17465
  s1 = input.charAt(peg$currPos);
17446
17466
  peg$currPos++;
17447
17467
  } else {
17448
17468
  s1 = peg$FAILED;
17449
- if (peg$silentFails === 0) peg$fail(peg$c74);
17469
+ if (peg$silentFails === 0) peg$fail(peg$c80);
17450
17470
  }
17451
17471
  }
17452
17472
  else s0 = peg$FAILED;
@@ -17465,7 +17485,7 @@ to a key`);
17465
17485
  }
17466
17486
  if (s2 !== peg$FAILED) {
17467
17487
  peg$savedPos = s0;
17468
- s1 = peg$c75(s2);
17488
+ s1 = peg$c81(s2);
17469
17489
  s0 = s1;
17470
17490
  } else {
17471
17491
  peg$currPos = s0;
@@ -17479,12 +17499,12 @@ to a key`);
17479
17499
  }
17480
17500
  function peg$parseTagValueChar() {
17481
17501
  let s0, s1, s2, s3;
17482
- if (peg$c76.test(input.charAt(peg$currPos))) {
17502
+ if (peg$c82.test(input.charAt(peg$currPos))) {
17483
17503
  s0 = input.charAt(peg$currPos);
17484
17504
  peg$currPos++;
17485
17505
  } else {
17486
17506
  s0 = peg$FAILED;
17487
- if (peg$silentFails === 0) peg$fail(peg$c77);
17507
+ if (peg$silentFails === 0) peg$fail(peg$c83);
17488
17508
  }
17489
17509
  if (s0 === peg$FAILED) {
17490
17510
  s0 = peg$currPos;
@@ -17552,21 +17572,21 @@ to a key`);
17552
17572
  let s0, s1, s2;
17553
17573
  s0 = peg$currPos;
17554
17574
  s1 = [];
17555
- if (peg$c73.test(input.charAt(peg$currPos))) {
17575
+ if (peg$c84.test(input.charAt(peg$currPos))) {
17556
17576
  s2 = input.charAt(peg$currPos);
17557
17577
  peg$currPos++;
17558
17578
  } else {
17559
17579
  s2 = peg$FAILED;
17560
- if (peg$silentFails === 0) peg$fail(peg$c74);
17580
+ if (peg$silentFails === 0) peg$fail(peg$c85);
17561
17581
  }
17562
17582
  if (s2 !== peg$FAILED) while (s2 !== peg$FAILED) {
17563
17583
  s1.push(s2);
17564
- if (peg$c73.test(input.charAt(peg$currPos))) {
17584
+ if (peg$c84.test(input.charAt(peg$currPos))) {
17565
17585
  s2 = input.charAt(peg$currPos);
17566
17586
  peg$currPos++;
17567
17587
  } else {
17568
17588
  s2 = peg$FAILED;
17569
- if (peg$silentFails === 0) peg$fail(peg$c74);
17589
+ if (peg$silentFails === 0) peg$fail(peg$c85);
17570
17590
  }
17571
17591
  }
17572
17592
  else s1 = peg$FAILED;
@@ -17578,11 +17598,11 @@ to a key`);
17578
17598
  let s0, s1, s2, s3, s4;
17579
17599
  s0 = peg$currPos;
17580
17600
  if (input.charCodeAt(peg$currPos) === 34) {
17581
- s1 = peg$c78;
17601
+ s1 = peg$c86;
17582
17602
  peg$currPos++;
17583
17603
  } else {
17584
17604
  s1 = peg$FAILED;
17585
- if (peg$silentFails === 0) peg$fail(peg$c79);
17605
+ if (peg$silentFails === 0) peg$fail(peg$c87);
17586
17606
  }
17587
17607
  if (s1 !== peg$FAILED) {
17588
17608
  s2 = peg$currPos;
@@ -17596,15 +17616,15 @@ to a key`);
17596
17616
  else s2 = s3;
17597
17617
  if (s2 !== peg$FAILED) {
17598
17618
  if (input.charCodeAt(peg$currPos) === 34) {
17599
- s3 = peg$c78;
17619
+ s3 = peg$c86;
17600
17620
  peg$currPos++;
17601
17621
  } else {
17602
17622
  s3 = peg$FAILED;
17603
- if (peg$silentFails === 0) peg$fail(peg$c79);
17623
+ if (peg$silentFails === 0) peg$fail(peg$c87);
17604
17624
  }
17605
17625
  if (s3 !== peg$FAILED) {
17606
17626
  peg$savedPos = s0;
17607
- s1 = peg$c80(s2);
17627
+ s1 = peg$c88(s2);
17608
17628
  s0 = s1;
17609
17629
  } else {
17610
17630
  peg$currPos = s0;
@@ -17622,12 +17642,12 @@ to a key`);
17622
17642
  }
17623
17643
  function peg$parseTagAttributeValueChar() {
17624
17644
  let s0, s1, s2, s3;
17625
- if (peg$c81.test(input.charAt(peg$currPos))) {
17645
+ if (peg$c89.test(input.charAt(peg$currPos))) {
17626
17646
  s0 = input.charAt(peg$currPos);
17627
17647
  peg$currPos++;
17628
17648
  } else {
17629
17649
  s0 = peg$FAILED;
17630
- if (peg$silentFails === 0) peg$fail(peg$c82);
17650
+ if (peg$silentFails === 0) peg$fail(peg$c90);
17631
17651
  }
17632
17652
  if (s0 === peg$FAILED) {
17633
17653
  s0 = peg$currPos;
@@ -17663,15 +17683,15 @@ to a key`);
17663
17683
  if (s2 === peg$FAILED) {
17664
17684
  s2 = peg$currPos;
17665
17685
  if (input.charCodeAt(peg$currPos) === 34) {
17666
- s3 = peg$c78;
17686
+ s3 = peg$c86;
17667
17687
  peg$currPos++;
17668
17688
  } else {
17669
17689
  s3 = peg$FAILED;
17670
- if (peg$silentFails === 0) peg$fail(peg$c79);
17690
+ if (peg$silentFails === 0) peg$fail(peg$c87);
17671
17691
  }
17672
17692
  if (s3 !== peg$FAILED) {
17673
17693
  peg$savedPos = s2;
17674
- s3 = peg$c83();
17694
+ s3 = peg$c91();
17675
17695
  }
17676
17696
  s2 = s3;
17677
17697
  }
@@ -17701,12 +17721,12 @@ to a key`);
17701
17721
  s3 = peg$parseBaseFret();
17702
17722
  if (s3 === peg$FAILED) s3 = null;
17703
17723
  if (s3 !== peg$FAILED) {
17704
- if (input.substr(peg$currPos, 5) === peg$c84) {
17705
- s4 = peg$c84;
17724
+ if (input.substr(peg$currPos, 5) === peg$c92) {
17725
+ s4 = peg$c92;
17706
17726
  peg$currPos += 5;
17707
17727
  } else {
17708
17728
  s4 = peg$FAILED;
17709
- if (peg$silentFails === 0) peg$fail(peg$c85);
17729
+ if (peg$silentFails === 0) peg$fail(peg$c93);
17710
17730
  }
17711
17731
  if (s4 !== peg$FAILED) {
17712
17732
  s5 = [];
@@ -17721,7 +17741,7 @@ to a key`);
17721
17741
  if (s6 === peg$FAILED) s6 = null;
17722
17742
  if (s6 !== peg$FAILED) {
17723
17743
  peg$savedPos = s0;
17724
- s1 = peg$c86(s1, s3, s5, s6);
17744
+ s1 = peg$c94(s1, s3, s5, s6);
17725
17745
  s0 = s1;
17726
17746
  } else {
17727
17747
  peg$currPos = s0;
@@ -17753,43 +17773,185 @@ to a key`);
17753
17773
  let s0, s1, s2, s3;
17754
17774
  s0 = peg$currPos;
17755
17775
  s1 = peg$currPos;
17756
- s2 = [];
17757
- if (peg$c87.test(input.charAt(peg$currPos))) {
17758
- s3 = input.charAt(peg$currPos);
17776
+ s2 = peg$parseChordDefinitionNameBase();
17777
+ if (s2 !== peg$FAILED) {
17778
+ s3 = peg$parseChordDefinitionNameBass();
17779
+ if (s3 === peg$FAILED) s3 = null;
17780
+ if (s3 !== peg$FAILED) {
17781
+ s2 = [
17782
+ s2,
17783
+ s3
17784
+ ];
17785
+ s1 = s2;
17786
+ } else {
17787
+ peg$currPos = s1;
17788
+ s1 = peg$FAILED;
17789
+ }
17790
+ } else {
17791
+ peg$currPos = s1;
17792
+ s1 = peg$FAILED;
17793
+ }
17794
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
17795
+ else s0 = s1;
17796
+ return s0;
17797
+ }
17798
+ function peg$parseChordDefinitionNameBase() {
17799
+ let s0, s1, s2, s3;
17800
+ s0 = peg$currPos;
17801
+ s1 = peg$currPos;
17802
+ s2 = peg$parseChordDefinitionNote();
17803
+ if (s2 !== peg$FAILED) {
17804
+ s3 = peg$parseChordDefinitionSuffix();
17805
+ if (s3 === peg$FAILED) s3 = null;
17806
+ if (s3 !== peg$FAILED) {
17807
+ s2 = [
17808
+ s2,
17809
+ s3
17810
+ ];
17811
+ s1 = s2;
17812
+ } else {
17813
+ peg$currPos = s1;
17814
+ s1 = peg$FAILED;
17815
+ }
17816
+ } else {
17817
+ peg$currPos = s1;
17818
+ s1 = peg$FAILED;
17819
+ }
17820
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
17821
+ else s0 = s1;
17822
+ return s0;
17823
+ }
17824
+ function peg$parseChordDefinitionNameBass() {
17825
+ let s0, s1, s2, s3;
17826
+ s0 = peg$currPos;
17827
+ s1 = peg$currPos;
17828
+ if (input.charCodeAt(peg$currPos) === 47) {
17829
+ s2 = peg$c95;
17759
17830
  peg$currPos++;
17760
17831
  } else {
17761
- s3 = peg$FAILED;
17762
- if (peg$silentFails === 0) peg$fail(peg$c88);
17832
+ s2 = peg$FAILED;
17833
+ if (peg$silentFails === 0) peg$fail(peg$c96);
17763
17834
  }
17764
- if (s3 !== peg$FAILED) while (s3 !== peg$FAILED) {
17765
- s2.push(s3);
17766
- if (peg$c87.test(input.charAt(peg$currPos))) {
17835
+ if (s2 !== peg$FAILED) {
17836
+ s3 = peg$parseChordDefinitionNote();
17837
+ if (s3 !== peg$FAILED) {
17838
+ s2 = [
17839
+ s2,
17840
+ s3
17841
+ ];
17842
+ s1 = s2;
17843
+ } else {
17844
+ peg$currPos = s1;
17845
+ s1 = peg$FAILED;
17846
+ }
17847
+ } else {
17848
+ peg$currPos = s1;
17849
+ s1 = peg$FAILED;
17850
+ }
17851
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
17852
+ else s0 = s1;
17853
+ return s0;
17854
+ }
17855
+ function peg$parseChordDefinitionNote() {
17856
+ let s0, s1, s2, s3;
17857
+ s0 = peg$currPos;
17858
+ s1 = peg$currPos;
17859
+ if (peg$c97.test(input.charAt(peg$currPos))) {
17860
+ s2 = input.charAt(peg$currPos);
17861
+ peg$currPos++;
17862
+ } else {
17863
+ s2 = peg$FAILED;
17864
+ if (peg$silentFails === 0) peg$fail(peg$c98);
17865
+ }
17866
+ if (s2 !== peg$FAILED) {
17867
+ if (peg$c99.test(input.charAt(peg$currPos))) {
17767
17868
  s3 = input.charAt(peg$currPos);
17768
17869
  peg$currPos++;
17769
17870
  } else {
17770
17871
  s3 = peg$FAILED;
17771
- if (peg$silentFails === 0) peg$fail(peg$c88);
17872
+ if (peg$silentFails === 0) peg$fail(peg$c100);
17873
+ }
17874
+ if (s3 === peg$FAILED) {
17875
+ if (input.substr(peg$currPos, 2) === peg$c101) {
17876
+ s3 = peg$c101;
17877
+ peg$currPos += 2;
17878
+ } else {
17879
+ s3 = peg$FAILED;
17880
+ if (peg$silentFails === 0) peg$fail(peg$c102);
17881
+ }
17882
+ if (s3 === peg$FAILED) {
17883
+ if (input.charCodeAt(peg$currPos) === 115) {
17884
+ s3 = peg$c103;
17885
+ peg$currPos++;
17886
+ } else {
17887
+ s3 = peg$FAILED;
17888
+ if (peg$silentFails === 0) peg$fail(peg$c104);
17889
+ }
17890
+ if (s3 === peg$FAILED) {
17891
+ if (input.substr(peg$currPos, 2) === peg$c105) {
17892
+ s3 = peg$c105;
17893
+ peg$currPos += 2;
17894
+ } else {
17895
+ s3 = peg$FAILED;
17896
+ if (peg$silentFails === 0) peg$fail(peg$c106);
17897
+ }
17898
+ }
17899
+ }
17900
+ }
17901
+ if (s3 === peg$FAILED) s3 = null;
17902
+ if (s3 !== peg$FAILED) {
17903
+ s2 = [
17904
+ s2,
17905
+ s3
17906
+ ];
17907
+ s1 = s2;
17908
+ } else {
17909
+ peg$currPos = s1;
17910
+ s1 = peg$FAILED;
17772
17911
  }
17912
+ } else {
17913
+ peg$currPos = s1;
17914
+ s1 = peg$FAILED;
17773
17915
  }
17774
- else s2 = peg$FAILED;
17775
- if (s2 !== peg$FAILED) s1 = input.substring(s1, peg$currPos);
17776
- else s1 = s2;
17777
- if (s1 !== peg$FAILED) {
17778
- peg$savedPos = s0;
17779
- s1 = peg$c89(s1);
17916
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
17917
+ else s0 = s1;
17918
+ return s0;
17919
+ }
17920
+ function peg$parseChordDefinitionSuffix() {
17921
+ let s0, s1, s2;
17922
+ s0 = peg$currPos;
17923
+ s1 = [];
17924
+ if (peg$c107.test(input.charAt(peg$currPos))) {
17925
+ s2 = input.charAt(peg$currPos);
17926
+ peg$currPos++;
17927
+ } else {
17928
+ s2 = peg$FAILED;
17929
+ if (peg$silentFails === 0) peg$fail(peg$c108);
17780
17930
  }
17781
- s0 = s1;
17931
+ if (s2 !== peg$FAILED) while (s2 !== peg$FAILED) {
17932
+ s1.push(s2);
17933
+ if (peg$c107.test(input.charAt(peg$currPos))) {
17934
+ s2 = input.charAt(peg$currPos);
17935
+ peg$currPos++;
17936
+ } else {
17937
+ s2 = peg$FAILED;
17938
+ if (peg$silentFails === 0) peg$fail(peg$c108);
17939
+ }
17940
+ }
17941
+ else s1 = peg$FAILED;
17942
+ if (s1 !== peg$FAILED) s0 = input.substring(s0, peg$currPos);
17943
+ else s0 = s1;
17782
17944
  return s0;
17783
17945
  }
17784
17946
  function peg$parseBaseFret() {
17785
17947
  let s0, s1, s2, s3, s4;
17786
17948
  s0 = peg$currPos;
17787
- if (input.substr(peg$currPos, 9) === peg$c90) {
17788
- s1 = peg$c90;
17949
+ if (input.substr(peg$currPos, 9) === peg$c109) {
17950
+ s1 = peg$c109;
17789
17951
  peg$currPos += 9;
17790
17952
  } else {
17791
17953
  s1 = peg$FAILED;
17792
- if (peg$silentFails === 0) peg$fail(peg$c91);
17954
+ if (peg$silentFails === 0) peg$fail(peg$c110);
17793
17955
  }
17794
17956
  if (s1 !== peg$FAILED) {
17795
17957
  s2 = peg$parse__();
@@ -17799,7 +17961,7 @@ to a key`);
17799
17961
  s4 = peg$parse__();
17800
17962
  if (s4 !== peg$FAILED) {
17801
17963
  peg$savedPos = s0;
17802
- s1 = peg$c92(s3);
17964
+ s1 = peg$c111(s3);
17803
17965
  s0 = s1;
17804
17966
  } else {
17805
17967
  peg$currPos = s0;
@@ -17824,12 +17986,12 @@ to a key`);
17824
17986
  s0 = peg$currPos;
17825
17987
  s1 = peg$parse__();
17826
17988
  if (s1 !== peg$FAILED) {
17827
- if (input.substr(peg$currPos, 7) === peg$c93) {
17828
- s2 = peg$c93;
17989
+ if (input.substr(peg$currPos, 7) === peg$c112) {
17990
+ s2 = peg$c112;
17829
17991
  peg$currPos += 7;
17830
17992
  } else {
17831
17993
  s2 = peg$FAILED;
17832
- if (peg$silentFails === 0) peg$fail(peg$c94);
17994
+ if (peg$silentFails === 0) peg$fail(peg$c113);
17833
17995
  }
17834
17996
  if (s2 !== peg$FAILED) {
17835
17997
  s3 = [];
@@ -17841,7 +18003,7 @@ to a key`);
17841
18003
  else s3 = peg$FAILED;
17842
18004
  if (s3 !== peg$FAILED) {
17843
18005
  peg$savedPos = s0;
17844
- s1 = peg$c95(s3);
18006
+ s1 = peg$c114(s3);
17845
18007
  s0 = s1;
17846
18008
  } else {
17847
18009
  peg$currPos = s0;
@@ -17865,7 +18027,7 @@ to a key`);
17865
18027
  s2 = peg$parseFinger();
17866
18028
  if (s2 !== peg$FAILED) {
17867
18029
  peg$savedPos = s0;
17868
- s1 = peg$c96(s2);
18030
+ s1 = peg$c115(s2);
17869
18031
  s0 = s1;
17870
18032
  } else {
17871
18033
  peg$currPos = s0;
@@ -17881,12 +18043,12 @@ to a key`);
17881
18043
  let s0;
17882
18044
  s0 = peg$parseFingerNumber();
17883
18045
  if (s0 === peg$FAILED) {
17884
- if (peg$c97.test(input.charAt(peg$currPos))) {
18046
+ if (peg$c116.test(input.charAt(peg$currPos))) {
17885
18047
  s0 = input.charAt(peg$currPos);
17886
18048
  peg$currPos++;
17887
18049
  } else {
17888
18050
  s0 = peg$FAILED;
17889
- if (peg$silentFails === 0) peg$fail(peg$c98);
18051
+ if (peg$silentFails === 0) peg$fail(peg$c117);
17890
18052
  }
17891
18053
  }
17892
18054
  return s0;
@@ -17894,39 +18056,39 @@ to a key`);
17894
18056
  function peg$parseFingerNumber() {
17895
18057
  let s0, s1;
17896
18058
  s0 = peg$currPos;
17897
- if (peg$c99.test(input.charAt(peg$currPos))) {
18059
+ if (peg$c118.test(input.charAt(peg$currPos))) {
17898
18060
  s1 = input.charAt(peg$currPos);
17899
18061
  peg$currPos++;
17900
18062
  } else {
17901
18063
  s1 = peg$FAILED;
17902
- if (peg$silentFails === 0) peg$fail(peg$c100);
18064
+ if (peg$silentFails === 0) peg$fail(peg$c119);
17903
18065
  }
17904
18066
  if (s1 !== peg$FAILED) {
17905
18067
  peg$savedPos = s0;
17906
- s1 = peg$c101(s1);
18068
+ s1 = peg$c120(s1);
17907
18069
  }
17908
18070
  s0 = s1;
17909
18071
  return s0;
17910
18072
  }
17911
18073
  function peg$parseFingerLetter() {
17912
18074
  let s0;
17913
- if (peg$c102.test(input.charAt(peg$currPos))) {
18075
+ if (peg$c121.test(input.charAt(peg$currPos))) {
17914
18076
  s0 = input.charAt(peg$currPos);
17915
18077
  peg$currPos++;
17916
18078
  } else {
17917
18079
  s0 = peg$FAILED;
17918
- if (peg$silentFails === 0) peg$fail(peg$c103);
18080
+ if (peg$silentFails === 0) peg$fail(peg$c122);
17919
18081
  }
17920
18082
  return s0;
17921
18083
  }
17922
18084
  function peg$parseNoFingerSetting() {
17923
18085
  let s0;
17924
- if (peg$c104.test(input.charAt(peg$currPos))) {
18086
+ if (peg$c123.test(input.charAt(peg$currPos))) {
17925
18087
  s0 = input.charAt(peg$currPos);
17926
18088
  peg$currPos++;
17927
18089
  } else {
17928
18090
  s0 = peg$FAILED;
17929
- if (peg$silentFails === 0) peg$fail(peg$c105);
18091
+ if (peg$silentFails === 0) peg$fail(peg$c124);
17930
18092
  }
17931
18093
  return s0;
17932
18094
  }
@@ -17938,7 +18100,7 @@ to a key`);
17938
18100
  s2 = peg$parseFret();
17939
18101
  if (s2 !== peg$FAILED) {
17940
18102
  peg$savedPos = s0;
17941
- s1 = peg$c106(s2);
18103
+ s1 = peg$c125(s2);
17942
18104
  s0 = s1;
17943
18105
  } else {
17944
18106
  peg$currPos = s0;
@@ -17962,7 +18124,7 @@ to a key`);
17962
18124
  }
17963
18125
  if (s2 !== peg$FAILED) {
17964
18126
  peg$savedPos = s0;
17965
- s1 = peg$c106(s2);
18127
+ s1 = peg$c125(s2);
17966
18128
  s0 = s1;
17967
18129
  } else {
17968
18130
  peg$currPos = s0;
@@ -17977,16 +18139,16 @@ to a key`);
17977
18139
  function peg$parseFretNumber() {
17978
18140
  let s0, s1;
17979
18141
  s0 = peg$currPos;
17980
- if (peg$c107.test(input.charAt(peg$currPos))) {
18142
+ if (peg$c126.test(input.charAt(peg$currPos))) {
17981
18143
  s1 = input.charAt(peg$currPos);
17982
18144
  peg$currPos++;
17983
18145
  } else {
17984
18146
  s1 = peg$FAILED;
17985
- if (peg$silentFails === 0) peg$fail(peg$c108);
18147
+ if (peg$silentFails === 0) peg$fail(peg$c127);
17986
18148
  }
17987
18149
  if (s1 !== peg$FAILED) {
17988
18150
  peg$savedPos = s0;
17989
- s1 = peg$c101(s1);
18151
+ s1 = peg$c120(s1);
17990
18152
  }
17991
18153
  s0 = s1;
17992
18154
  return s0;
@@ -17995,35 +18157,35 @@ to a key`);
17995
18157
  let s0, s1;
17996
18158
  s0 = peg$currPos;
17997
18159
  if (input.charCodeAt(peg$currPos) === 48) {
17998
- s1 = peg$c109;
18160
+ s1 = peg$c128;
17999
18161
  peg$currPos++;
18000
18162
  } else {
18001
18163
  s1 = peg$FAILED;
18002
- if (peg$silentFails === 0) peg$fail(peg$c110);
18164
+ if (peg$silentFails === 0) peg$fail(peg$c129);
18003
18165
  }
18004
18166
  if (s1 !== peg$FAILED) {
18005
18167
  peg$savedPos = s0;
18006
- s1 = peg$c111();
18168
+ s1 = peg$c130();
18007
18169
  }
18008
18170
  s0 = s1;
18009
18171
  return s0;
18010
18172
  }
18011
18173
  function peg$parseNonSoundingString() {
18012
18174
  let s0;
18013
- if (input.substr(peg$currPos, 2) === peg$c112) {
18014
- s0 = peg$c112;
18175
+ if (input.substr(peg$currPos, 2) === peg$c131) {
18176
+ s0 = peg$c131;
18015
18177
  peg$currPos += 2;
18016
18178
  } else {
18017
18179
  s0 = peg$FAILED;
18018
- if (peg$silentFails === 0) peg$fail(peg$c113);
18180
+ if (peg$silentFails === 0) peg$fail(peg$c132);
18019
18181
  }
18020
18182
  if (s0 === peg$FAILED) {
18021
- if (peg$c114.test(input.charAt(peg$currPos))) {
18183
+ if (peg$c133.test(input.charAt(peg$currPos))) {
18022
18184
  s0 = input.charAt(peg$currPos);
18023
18185
  peg$currPos++;
18024
18186
  } else {
18025
18187
  s0 = peg$FAILED;
18026
- if (peg$silentFails === 0) peg$fail(peg$c115);
18188
+ if (peg$silentFails === 0) peg$fail(peg$c134);
18027
18189
  }
18028
18190
  }
18029
18191
  return s0;
@@ -18110,7 +18272,7 @@ to a key`);
18110
18272
  s4 = peg$parseAbcEndTag();
18111
18273
  if (s4 !== peg$FAILED) {
18112
18274
  peg$savedPos = s0;
18113
- s1 = peg$c116(s1, s3, s4);
18275
+ s1 = peg$c135(s1, s3, s4);
18114
18276
  s0 = s1;
18115
18277
  } else {
18116
18278
  peg$currPos = s0;
@@ -18131,7 +18293,7 @@ to a key`);
18131
18293
  return s0;
18132
18294
  }
18133
18295
  function peg$parseAbcStartTag() {
18134
- let s0, s1, s2, s3, s4, s5, s6, s7;
18296
+ let s0, s1, s2, s3, s4, s5, s6, s7, s8;
18135
18297
  s0 = peg$currPos;
18136
18298
  if (input.charCodeAt(peg$currPos) === 123) {
18137
18299
  s1 = peg$c44;
@@ -18143,32 +18305,39 @@ to a key`);
18143
18305
  if (s1 !== peg$FAILED) {
18144
18306
  s2 = peg$parse_();
18145
18307
  if (s2 !== peg$FAILED) {
18146
- if (input.substr(peg$currPos, 12) === peg$c117) {
18147
- s3 = peg$c117;
18308
+ if (input.substr(peg$currPos, 12) === peg$c136) {
18309
+ s3 = peg$c136;
18148
18310
  peg$currPos += 12;
18149
18311
  } else {
18150
18312
  s3 = peg$FAILED;
18151
- if (peg$silentFails === 0) peg$fail(peg$c118);
18313
+ if (peg$silentFails === 0) peg$fail(peg$c137);
18152
18314
  }
18153
18315
  if (s3 !== peg$FAILED) {
18154
- s4 = peg$parse_();
18316
+ s4 = peg$parseTagSelector();
18317
+ if (s4 === peg$FAILED) s4 = null;
18155
18318
  if (s4 !== peg$FAILED) {
18156
- s5 = peg$parseTagColonWithValue();
18157
- if (s5 === peg$FAILED) s5 = null;
18319
+ s5 = peg$parse_();
18158
18320
  if (s5 !== peg$FAILED) {
18159
- s6 = peg$parse_();
18321
+ s6 = peg$parseTagColonWithValue();
18322
+ if (s6 === peg$FAILED) s6 = null;
18160
18323
  if (s6 !== peg$FAILED) {
18161
- if (input.charCodeAt(peg$currPos) === 125) {
18162
- s7 = peg$c30;
18163
- peg$currPos++;
18164
- } else {
18165
- s7 = peg$FAILED;
18166
- if (peg$silentFails === 0) peg$fail(peg$c31);
18167
- }
18324
+ s7 = peg$parse_();
18168
18325
  if (s7 !== peg$FAILED) {
18169
- peg$savedPos = s0;
18170
- s1 = peg$c66(s3, s5);
18171
- s0 = s1;
18326
+ if (input.charCodeAt(peg$currPos) === 125) {
18327
+ s8 = peg$c30;
18328
+ peg$currPos++;
18329
+ } else {
18330
+ s8 = peg$FAILED;
18331
+ if (peg$silentFails === 0) peg$fail(peg$c31);
18332
+ }
18333
+ if (s8 !== peg$FAILED) {
18334
+ peg$savedPos = s0;
18335
+ s1 = peg$c66(s3, s4, s6);
18336
+ s0 = s1;
18337
+ } else {
18338
+ peg$currPos = s0;
18339
+ s0 = peg$FAILED;
18340
+ }
18172
18341
  } else {
18173
18342
  peg$currPos = s0;
18174
18343
  s0 = peg$FAILED;
@@ -18212,12 +18381,12 @@ to a key`);
18212
18381
  if (s1 !== peg$FAILED) {
18213
18382
  s2 = peg$parse_();
18214
18383
  if (s2 !== peg$FAILED) {
18215
- if (input.substr(peg$currPos, 10) === peg$c119) {
18216
- s3 = peg$c119;
18384
+ if (input.substr(peg$currPos, 10) === peg$c138) {
18385
+ s3 = peg$c138;
18217
18386
  peg$currPos += 10;
18218
18387
  } else {
18219
18388
  s3 = peg$FAILED;
18220
- if (peg$silentFails === 0) peg$fail(peg$c120);
18389
+ if (peg$silentFails === 0) peg$fail(peg$c139);
18221
18390
  }
18222
18391
  if (s3 !== peg$FAILED) {
18223
18392
  s4 = peg$parse_();
@@ -18231,7 +18400,7 @@ to a key`);
18231
18400
  }
18232
18401
  if (s5 !== peg$FAILED) {
18233
18402
  peg$savedPos = s0;
18234
- s1 = peg$c121(s3);
18403
+ s1 = peg$c140(s3);
18235
18404
  s0 = s1;
18236
18405
  } else {
18237
18406
  peg$currPos = s0;
@@ -18325,7 +18494,7 @@ to a key`);
18325
18494
  s4 = peg$parseGridEndTag();
18326
18495
  if (s4 !== peg$FAILED) {
18327
18496
  peg$savedPos = s0;
18328
- s1 = peg$c116(s1, s3, s4);
18497
+ s1 = peg$c135(s1, s3, s4);
18329
18498
  s0 = s1;
18330
18499
  } else {
18331
18500
  peg$currPos = s0;
@@ -18346,7 +18515,7 @@ to a key`);
18346
18515
  return s0;
18347
18516
  }
18348
18517
  function peg$parseGridStartTag() {
18349
- let s0, s1, s2, s3, s4, s5, s6, s7;
18518
+ let s0, s1, s2, s3, s4, s5, s6, s7, s8;
18350
18519
  s0 = peg$currPos;
18351
18520
  if (input.charCodeAt(peg$currPos) === 123) {
18352
18521
  s1 = peg$c44;
@@ -18358,41 +18527,48 @@ to a key`);
18358
18527
  if (s1 !== peg$FAILED) {
18359
18528
  s2 = peg$parse_();
18360
18529
  if (s2 !== peg$FAILED) {
18361
- if (input.substr(peg$currPos, 13) === peg$c122) {
18362
- s3 = peg$c122;
18530
+ if (input.substr(peg$currPos, 13) === peg$c141) {
18531
+ s3 = peg$c141;
18363
18532
  peg$currPos += 13;
18364
18533
  } else {
18365
18534
  s3 = peg$FAILED;
18366
- if (peg$silentFails === 0) peg$fail(peg$c123);
18535
+ if (peg$silentFails === 0) peg$fail(peg$c142);
18367
18536
  }
18368
18537
  if (s3 === peg$FAILED) {
18369
- if (input.substr(peg$currPos, 3) === peg$c124) {
18370
- s3 = peg$c124;
18538
+ if (input.substr(peg$currPos, 3) === peg$c143) {
18539
+ s3 = peg$c143;
18371
18540
  peg$currPos += 3;
18372
18541
  } else {
18373
18542
  s3 = peg$FAILED;
18374
- if (peg$silentFails === 0) peg$fail(peg$c125);
18543
+ if (peg$silentFails === 0) peg$fail(peg$c144);
18375
18544
  }
18376
18545
  }
18377
18546
  if (s3 !== peg$FAILED) {
18378
- s4 = peg$parse_();
18547
+ s4 = peg$parseTagSelector();
18548
+ if (s4 === peg$FAILED) s4 = null;
18379
18549
  if (s4 !== peg$FAILED) {
18380
- s5 = peg$parseTagColonWithValue();
18381
- if (s5 === peg$FAILED) s5 = null;
18550
+ s5 = peg$parse_();
18382
18551
  if (s5 !== peg$FAILED) {
18383
- s6 = peg$parse_();
18552
+ s6 = peg$parseTagColonWithValue();
18553
+ if (s6 === peg$FAILED) s6 = null;
18384
18554
  if (s6 !== peg$FAILED) {
18385
- if (input.charCodeAt(peg$currPos) === 125) {
18386
- s7 = peg$c30;
18387
- peg$currPos++;
18388
- } else {
18389
- s7 = peg$FAILED;
18390
- if (peg$silentFails === 0) peg$fail(peg$c31);
18391
- }
18555
+ s7 = peg$parse_();
18392
18556
  if (s7 !== peg$FAILED) {
18393
- peg$savedPos = s0;
18394
- s1 = peg$c66(s3, s5);
18395
- s0 = s1;
18557
+ if (input.charCodeAt(peg$currPos) === 125) {
18558
+ s8 = peg$c30;
18559
+ peg$currPos++;
18560
+ } else {
18561
+ s8 = peg$FAILED;
18562
+ if (peg$silentFails === 0) peg$fail(peg$c31);
18563
+ }
18564
+ if (s8 !== peg$FAILED) {
18565
+ peg$savedPos = s0;
18566
+ s1 = peg$c66(s3, s4, s6);
18567
+ s0 = s1;
18568
+ } else {
18569
+ peg$currPos = s0;
18570
+ s0 = peg$FAILED;
18571
+ }
18396
18572
  } else {
18397
18573
  peg$currPos = s0;
18398
18574
  s0 = peg$FAILED;
@@ -18436,20 +18612,20 @@ to a key`);
18436
18612
  if (s1 !== peg$FAILED) {
18437
18613
  s2 = peg$parse_();
18438
18614
  if (s2 !== peg$FAILED) {
18439
- if (input.substr(peg$currPos, 11) === peg$c126) {
18440
- s3 = peg$c126;
18615
+ if (input.substr(peg$currPos, 11) === peg$c145) {
18616
+ s3 = peg$c145;
18441
18617
  peg$currPos += 11;
18442
18618
  } else {
18443
18619
  s3 = peg$FAILED;
18444
- if (peg$silentFails === 0) peg$fail(peg$c127);
18620
+ if (peg$silentFails === 0) peg$fail(peg$c146);
18445
18621
  }
18446
18622
  if (s3 === peg$FAILED) {
18447
- if (input.substr(peg$currPos, 3) === peg$c128) {
18448
- s3 = peg$c128;
18623
+ if (input.substr(peg$currPos, 3) === peg$c147) {
18624
+ s3 = peg$c147;
18449
18625
  peg$currPos += 3;
18450
18626
  } else {
18451
18627
  s3 = peg$FAILED;
18452
- if (peg$silentFails === 0) peg$fail(peg$c129);
18628
+ if (peg$silentFails === 0) peg$fail(peg$c148);
18453
18629
  }
18454
18630
  }
18455
18631
  if (s3 !== peg$FAILED) {
@@ -18464,7 +18640,7 @@ to a key`);
18464
18640
  }
18465
18641
  if (s5 !== peg$FAILED) {
18466
18642
  peg$savedPos = s0;
18467
- s1 = peg$c121(s3);
18643
+ s1 = peg$c140(s3);
18468
18644
  s0 = s1;
18469
18645
  } else {
18470
18646
  peg$currPos = s0;
@@ -18558,7 +18734,7 @@ to a key`);
18558
18734
  s4 = peg$parseLyEndTag();
18559
18735
  if (s4 !== peg$FAILED) {
18560
18736
  peg$savedPos = s0;
18561
- s1 = peg$c116(s1, s3, s4);
18737
+ s1 = peg$c135(s1, s3, s4);
18562
18738
  s0 = s1;
18563
18739
  } else {
18564
18740
  peg$currPos = s0;
@@ -18579,7 +18755,7 @@ to a key`);
18579
18755
  return s0;
18580
18756
  }
18581
18757
  function peg$parseLyStartTag() {
18582
- let s0, s1, s2, s3, s4, s5, s6, s7;
18758
+ let s0, s1, s2, s3, s4, s5, s6, s7, s8;
18583
18759
  s0 = peg$currPos;
18584
18760
  if (input.charCodeAt(peg$currPos) === 123) {
18585
18761
  s1 = peg$c44;
@@ -18591,32 +18767,39 @@ to a key`);
18591
18767
  if (s1 !== peg$FAILED) {
18592
18768
  s2 = peg$parse_();
18593
18769
  if (s2 !== peg$FAILED) {
18594
- if (input.substr(peg$currPos, 11) === peg$c130) {
18595
- s3 = peg$c130;
18770
+ if (input.substr(peg$currPos, 11) === peg$c149) {
18771
+ s3 = peg$c149;
18596
18772
  peg$currPos += 11;
18597
18773
  } else {
18598
18774
  s3 = peg$FAILED;
18599
- if (peg$silentFails === 0) peg$fail(peg$c131);
18775
+ if (peg$silentFails === 0) peg$fail(peg$c150);
18600
18776
  }
18601
18777
  if (s3 !== peg$FAILED) {
18602
- s4 = peg$parse_();
18778
+ s4 = peg$parseTagSelector();
18779
+ if (s4 === peg$FAILED) s4 = null;
18603
18780
  if (s4 !== peg$FAILED) {
18604
- s5 = peg$parseTagColonWithValue();
18605
- if (s5 === peg$FAILED) s5 = null;
18781
+ s5 = peg$parse_();
18606
18782
  if (s5 !== peg$FAILED) {
18607
- s6 = peg$parse_();
18783
+ s6 = peg$parseTagColonWithValue();
18784
+ if (s6 === peg$FAILED) s6 = null;
18608
18785
  if (s6 !== peg$FAILED) {
18609
- if (input.charCodeAt(peg$currPos) === 125) {
18610
- s7 = peg$c30;
18611
- peg$currPos++;
18612
- } else {
18613
- s7 = peg$FAILED;
18614
- if (peg$silentFails === 0) peg$fail(peg$c31);
18615
- }
18786
+ s7 = peg$parse_();
18616
18787
  if (s7 !== peg$FAILED) {
18617
- peg$savedPos = s0;
18618
- s1 = peg$c66(s3, s5);
18619
- s0 = s1;
18788
+ if (input.charCodeAt(peg$currPos) === 125) {
18789
+ s8 = peg$c30;
18790
+ peg$currPos++;
18791
+ } else {
18792
+ s8 = peg$FAILED;
18793
+ if (peg$silentFails === 0) peg$fail(peg$c31);
18794
+ }
18795
+ if (s8 !== peg$FAILED) {
18796
+ peg$savedPos = s0;
18797
+ s1 = peg$c66(s3, s4, s6);
18798
+ s0 = s1;
18799
+ } else {
18800
+ peg$currPos = s0;
18801
+ s0 = peg$FAILED;
18802
+ }
18620
18803
  } else {
18621
18804
  peg$currPos = s0;
18622
18805
  s0 = peg$FAILED;
@@ -18660,12 +18843,12 @@ to a key`);
18660
18843
  if (s1 !== peg$FAILED) {
18661
18844
  s2 = peg$parse_();
18662
18845
  if (s2 !== peg$FAILED) {
18663
- if (input.substr(peg$currPos, 9) === peg$c132) {
18664
- s3 = peg$c132;
18846
+ if (input.substr(peg$currPos, 9) === peg$c151) {
18847
+ s3 = peg$c151;
18665
18848
  peg$currPos += 9;
18666
18849
  } else {
18667
18850
  s3 = peg$FAILED;
18668
- if (peg$silentFails === 0) peg$fail(peg$c133);
18851
+ if (peg$silentFails === 0) peg$fail(peg$c152);
18669
18852
  }
18670
18853
  if (s3 !== peg$FAILED) {
18671
18854
  s4 = peg$parse_();
@@ -18679,7 +18862,7 @@ to a key`);
18679
18862
  }
18680
18863
  if (s5 !== peg$FAILED) {
18681
18864
  peg$savedPos = s0;
18682
- s1 = peg$c121(s3);
18865
+ s1 = peg$c140(s3);
18683
18866
  s0 = s1;
18684
18867
  } else {
18685
18868
  peg$currPos = s0;
@@ -18773,7 +18956,7 @@ to a key`);
18773
18956
  s4 = peg$parseTabEndTag();
18774
18957
  if (s4 !== peg$FAILED) {
18775
18958
  peg$savedPos = s0;
18776
- s1 = peg$c116(s1, s3, s4);
18959
+ s1 = peg$c135(s1, s3, s4);
18777
18960
  s0 = s1;
18778
18961
  } else {
18779
18962
  peg$currPos = s0;
@@ -18794,7 +18977,7 @@ to a key`);
18794
18977
  return s0;
18795
18978
  }
18796
18979
  function peg$parseTabStartTag() {
18797
- let s0, s1, s2, s3, s4, s5, s6, s7;
18980
+ let s0, s1, s2, s3, s4, s5, s6, s7, s8;
18798
18981
  s0 = peg$currPos;
18799
18982
  if (input.charCodeAt(peg$currPos) === 123) {
18800
18983
  s1 = peg$c44;
@@ -18806,41 +18989,48 @@ to a key`);
18806
18989
  if (s1 !== peg$FAILED) {
18807
18990
  s2 = peg$parse_();
18808
18991
  if (s2 !== peg$FAILED) {
18809
- if (input.substr(peg$currPos, 12) === peg$c134) {
18810
- s3 = peg$c134;
18992
+ if (input.substr(peg$currPos, 12) === peg$c153) {
18993
+ s3 = peg$c153;
18811
18994
  peg$currPos += 12;
18812
18995
  } else {
18813
18996
  s3 = peg$FAILED;
18814
- if (peg$silentFails === 0) peg$fail(peg$c135);
18997
+ if (peg$silentFails === 0) peg$fail(peg$c154);
18815
18998
  }
18816
18999
  if (s3 === peg$FAILED) {
18817
- if (input.substr(peg$currPos, 3) === peg$c136) {
18818
- s3 = peg$c136;
19000
+ if (input.substr(peg$currPos, 3) === peg$c155) {
19001
+ s3 = peg$c155;
18819
19002
  peg$currPos += 3;
18820
19003
  } else {
18821
19004
  s3 = peg$FAILED;
18822
- if (peg$silentFails === 0) peg$fail(peg$c137);
19005
+ if (peg$silentFails === 0) peg$fail(peg$c156);
18823
19006
  }
18824
19007
  }
18825
19008
  if (s3 !== peg$FAILED) {
18826
- s4 = peg$parse_();
19009
+ s4 = peg$parseTagSelector();
19010
+ if (s4 === peg$FAILED) s4 = null;
18827
19011
  if (s4 !== peg$FAILED) {
18828
- s5 = peg$parseTagColonWithValue();
18829
- if (s5 === peg$FAILED) s5 = null;
19012
+ s5 = peg$parse_();
18830
19013
  if (s5 !== peg$FAILED) {
18831
- s6 = peg$parse_();
19014
+ s6 = peg$parseTagColonWithValue();
19015
+ if (s6 === peg$FAILED) s6 = null;
18832
19016
  if (s6 !== peg$FAILED) {
18833
- if (input.charCodeAt(peg$currPos) === 125) {
18834
- s7 = peg$c30;
18835
- peg$currPos++;
18836
- } else {
18837
- s7 = peg$FAILED;
18838
- if (peg$silentFails === 0) peg$fail(peg$c31);
18839
- }
19017
+ s7 = peg$parse_();
18840
19018
  if (s7 !== peg$FAILED) {
18841
- peg$savedPos = s0;
18842
- s1 = peg$c66(s3, s5);
18843
- s0 = s1;
19019
+ if (input.charCodeAt(peg$currPos) === 125) {
19020
+ s8 = peg$c30;
19021
+ peg$currPos++;
19022
+ } else {
19023
+ s8 = peg$FAILED;
19024
+ if (peg$silentFails === 0) peg$fail(peg$c31);
19025
+ }
19026
+ if (s8 !== peg$FAILED) {
19027
+ peg$savedPos = s0;
19028
+ s1 = peg$c66(s3, s4, s6);
19029
+ s0 = s1;
19030
+ } else {
19031
+ peg$currPos = s0;
19032
+ s0 = peg$FAILED;
19033
+ }
18844
19034
  } else {
18845
19035
  peg$currPos = s0;
18846
19036
  s0 = peg$FAILED;
@@ -18884,20 +19074,20 @@ to a key`);
18884
19074
  if (s1 !== peg$FAILED) {
18885
19075
  s2 = peg$parse_();
18886
19076
  if (s2 !== peg$FAILED) {
18887
- if (input.substr(peg$currPos, 10) === peg$c138) {
18888
- s3 = peg$c138;
19077
+ if (input.substr(peg$currPos, 10) === peg$c157) {
19078
+ s3 = peg$c157;
18889
19079
  peg$currPos += 10;
18890
19080
  } else {
18891
19081
  s3 = peg$FAILED;
18892
- if (peg$silentFails === 0) peg$fail(peg$c139);
19082
+ if (peg$silentFails === 0) peg$fail(peg$c158);
18893
19083
  }
18894
19084
  if (s3 === peg$FAILED) {
18895
- if (input.substr(peg$currPos, 3) === peg$c140) {
18896
- s3 = peg$c140;
19085
+ if (input.substr(peg$currPos, 3) === peg$c159) {
19086
+ s3 = peg$c159;
18897
19087
  peg$currPos += 3;
18898
19088
  } else {
18899
19089
  s3 = peg$FAILED;
18900
- if (peg$silentFails === 0) peg$fail(peg$c141);
19090
+ if (peg$silentFails === 0) peg$fail(peg$c160);
18901
19091
  }
18902
19092
  }
18903
19093
  if (s3 !== peg$FAILED) {
@@ -18912,7 +19102,7 @@ to a key`);
18912
19102
  }
18913
19103
  if (s5 !== peg$FAILED) {
18914
19104
  peg$savedPos = s0;
18915
- s1 = peg$c121(s3);
19105
+ s1 = peg$c140(s3);
18916
19106
  s0 = s1;
18917
19107
  } else {
18918
19108
  peg$currPos = s0;
@@ -18943,7 +19133,7 @@ to a key`);
18943
19133
  peg$currPos++;
18944
19134
  } else {
18945
19135
  s0 = peg$FAILED;
18946
- if (peg$silentFails === 0) peg$fail(peg$c142);
19136
+ if (peg$silentFails === 0) peg$fail(peg$c161);
18947
19137
  }
18948
19138
  return s0;
18949
19139
  }
@@ -18960,7 +19150,7 @@ to a key`);
18960
19150
  peg$silentFails--;
18961
19151
  if (s0 === peg$FAILED) {
18962
19152
  s1 = peg$FAILED;
18963
- if (peg$silentFails === 0) peg$fail(peg$c143);
19153
+ if (peg$silentFails === 0) peg$fail(peg$c162);
18964
19154
  }
18965
19155
  return s0;
18966
19156
  }
@@ -18976,18 +19166,18 @@ to a key`);
18976
19166
  peg$silentFails--;
18977
19167
  if (s0 === peg$FAILED) {
18978
19168
  s1 = peg$FAILED;
18979
- if (peg$silentFails === 0) peg$fail(peg$c144);
19169
+ if (peg$silentFails === 0) peg$fail(peg$c163);
18980
19170
  }
18981
19171
  return s0;
18982
19172
  }
18983
19173
  function peg$parseWhitespaceCharacter() {
18984
19174
  let s0;
18985
- if (peg$c145.test(input.charAt(peg$currPos))) {
19175
+ if (peg$c164.test(input.charAt(peg$currPos))) {
18986
19176
  s0 = input.charAt(peg$currPos);
18987
19177
  peg$currPos++;
18988
19178
  } else {
18989
19179
  s0 = peg$FAILED;
18990
- if (peg$silentFails === 0) peg$fail(peg$c146);
19180
+ if (peg$silentFails === 0) peg$fail(peg$c165);
18991
19181
  }
18992
19182
  return s0;
18993
19183
  }
@@ -18996,21 +19186,21 @@ to a key`);
18996
19186
  peg$silentFails++;
18997
19187
  s0 = peg$currPos;
18998
19188
  s1 = [];
18999
- if (peg$c148.test(input.charAt(peg$currPos))) {
19189
+ if (peg$c167.test(input.charAt(peg$currPos))) {
19000
19190
  s2 = input.charAt(peg$currPos);
19001
19191
  peg$currPos++;
19002
19192
  } else {
19003
19193
  s2 = peg$FAILED;
19004
- if (peg$silentFails === 0) peg$fail(peg$c149);
19194
+ if (peg$silentFails === 0) peg$fail(peg$c168);
19005
19195
  }
19006
19196
  if (s2 !== peg$FAILED) while (s2 !== peg$FAILED) {
19007
19197
  s1.push(s2);
19008
- if (peg$c148.test(input.charAt(peg$currPos))) {
19198
+ if (peg$c167.test(input.charAt(peg$currPos))) {
19009
19199
  s2 = input.charAt(peg$currPos);
19010
19200
  peg$currPos++;
19011
19201
  } else {
19012
19202
  s2 = peg$FAILED;
19013
- if (peg$silentFails === 0) peg$fail(peg$c149);
19203
+ if (peg$silentFails === 0) peg$fail(peg$c168);
19014
19204
  }
19015
19205
  }
19016
19206
  else s1 = peg$FAILED;
@@ -19019,18 +19209,18 @@ to a key`);
19019
19209
  peg$silentFails--;
19020
19210
  if (s0 === peg$FAILED) {
19021
19211
  s1 = peg$FAILED;
19022
- if (peg$silentFails === 0) peg$fail(peg$c147);
19212
+ if (peg$silentFails === 0) peg$fail(peg$c166);
19023
19213
  }
19024
19214
  return s0;
19025
19215
  }
19026
19216
  function peg$parseNewLine() {
19027
19217
  let s0;
19028
- if (peg$c150.test(input.charAt(peg$currPos))) {
19218
+ if (peg$c169.test(input.charAt(peg$currPos))) {
19029
19219
  s0 = input.charAt(peg$currPos);
19030
19220
  peg$currPos++;
19031
19221
  } else {
19032
19222
  s0 = peg$FAILED;
19033
- if (peg$silentFails === 0) peg$fail(peg$c151);
19223
+ if (peg$silentFails === 0) peg$fail(peg$c170);
19034
19224
  }
19035
19225
  if (s0 === peg$FAILED) s0 = peg$parseCarriageReturnLineFeed();
19036
19226
  return s0;
@@ -19060,22 +19250,22 @@ to a key`);
19060
19250
  function peg$parseLineFeed() {
19061
19251
  let s0;
19062
19252
  if (input.charCodeAt(peg$currPos) === 10) {
19063
- s0 = peg$c152;
19253
+ s0 = peg$c171;
19064
19254
  peg$currPos++;
19065
19255
  } else {
19066
19256
  s0 = peg$FAILED;
19067
- if (peg$silentFails === 0) peg$fail(peg$c153);
19257
+ if (peg$silentFails === 0) peg$fail(peg$c172);
19068
19258
  }
19069
19259
  return s0;
19070
19260
  }
19071
19261
  function peg$parseCarriageReturn() {
19072
19262
  let s0;
19073
19263
  if (input.charCodeAt(peg$currPos) === 13) {
19074
- s0 = peg$c154;
19264
+ s0 = peg$c173;
19075
19265
  peg$currPos++;
19076
19266
  } else {
19077
19267
  s0 = peg$FAILED;
19078
- if (peg$silentFails === 0) peg$fail(peg$c155);
19268
+ if (peg$silentFails === 0) peg$fail(peg$c174);
19079
19269
  }
19080
19270
  return s0;
19081
19271
  }
@@ -19159,6 +19349,7 @@ to a key`);
19159
19349
  this.key = null;
19160
19350
  this.transposeKey = null;
19161
19351
  this.lineNumber = null;
19352
+ this.selector = null;
19162
19353
  this.textFont = new (0, $3b7d86e1e1307736$export$2e2bcd8739ae039)();
19163
19354
  this.chordFont = new (0, $3b7d86e1e1307736$export$2e2bcd8739ae039)();
19164
19355
  this.type = type;
@@ -19298,6 +19489,13 @@ to a key`);
19298
19489
  }
19299
19490
  };
19300
19491
  var $76b2b227aa06e8bf$export$2e2bcd8739ae039 = $76b2b227aa06e8bf$var$Line;
19492
+ function $8906e348466806fd$var$getCommonValue(values, fallback) {
19493
+ const uniqueValues = [
19494
+ ...new Set(values)
19495
+ ];
19496
+ if (uniqueValues.length === 1) return uniqueValues[0];
19497
+ return fallback;
19498
+ }
19301
19499
  var $8906e348466806fd$var$Paragraph = class {
19302
19500
  addLine(line) {
19303
19501
  this.lines.push(line);
@@ -19343,11 +19541,11 @@ to a key`);
19343
19541
  */
19344
19542
  get type() {
19345
19543
  const types = this.lines.map((line) => line.type);
19346
- const uniqueTypes = [
19347
- ...new Set(types)
19348
- ];
19349
- if (uniqueTypes.length === 1) return uniqueTypes[0];
19350
- return 0, $dce48cb70c4120bb$export$c5a6fe907430212e;
19544
+ return $8906e348466806fd$var$getCommonValue(types, (0, $dce48cb70c4120bb$export$c5a6fe907430212e));
19545
+ }
19546
+ get selector() {
19547
+ const selectors = this.lines.map((line) => line.selector).filter((selector) => selector !== null);
19548
+ return $8906e348466806fd$var$getCommonValue(selectors, null);
19351
19549
  }
19352
19550
  /**
19353
19551
  * Indicates whether the paragraph contains lines with renderable items.
@@ -19670,6 +19868,7 @@ to a key`);
19670
19868
  this.lines = [];
19671
19869
  this.metadata = new (0, $5c7afec93ec943b9$export$2e2bcd8739ae039)();
19672
19870
  this.sectionType = (0, $dce48cb70c4120bb$export$c53d0f541b41b88e);
19871
+ this.selector = null;
19673
19872
  this.transposeKey = null;
19674
19873
  this.warnings = [];
19675
19874
  this.song = song;
@@ -19688,15 +19887,16 @@ to a key`);
19688
19887
  this.currentLine = new (0, $76b2b227aa06e8bf$export$2e2bcd8739ae039)();
19689
19888
  this.lines.push(this.currentLine);
19690
19889
  }
19691
- this.setCurrentProperties(this.sectionType);
19890
+ this.setCurrentProperties(this.sectionType, this.selector);
19692
19891
  this.currentLine.transposeKey = this.transposeKey ?? this.currentKey;
19693
19892
  this.currentLine.key = this.currentKey || this.metadata.getSingle((0, $7251dad5f4a4c35f$export$7167c830cefcb6b5));
19694
19893
  this.currentLine.lineNumber = this.lines.length - 1;
19695
19894
  return this.currentLine;
19696
19895
  }
19697
- setCurrentProperties(sectionType) {
19896
+ setCurrentProperties(sectionType, selector = null) {
19698
19897
  if (!this.currentLine) throw new Error("Expected this.currentLine to be present");
19699
19898
  this.currentLine.type = sectionType;
19899
+ this.currentLine.selector = selector;
19700
19900
  this.currentLine.textFont = this.fontStack.textFont.clone();
19701
19901
  this.currentLine.chordFont = this.fontStack.chordFont.clone();
19702
19902
  }
@@ -19750,11 +19950,13 @@ to a key`);
19750
19950
  startSection(sectionType, tag) {
19751
19951
  this.checkCurrentSectionType((0, $dce48cb70c4120bb$export$c53d0f541b41b88e), tag);
19752
19952
  this.sectionType = sectionType;
19753
- this.setCurrentProperties(sectionType);
19953
+ this.selector = tag.selector;
19954
+ this.setCurrentProperties(sectionType, tag.selector);
19754
19955
  }
19755
19956
  endSection(sectionType, tag) {
19756
19957
  this.checkCurrentSectionType(sectionType, tag);
19757
19958
  this.sectionType = (0, $dce48cb70c4120bb$export$c53d0f541b41b88e);
19959
+ this.selector = null;
19758
19960
  }
19759
19961
  checkCurrentSectionType(sectionType, tag) {
19760
19962
  if (this.sectionType !== sectionType) this.addWarning(`Unexpected tag {${tag.originalName}}, current section is: ${this.sectionType}`, tag);
@@ -20286,12 +20488,14 @@ Or set the song key before changing key:
20286
20488
  return new (0, $551a223fc13b5c10$export$2e2bcd8739ae039)(chord ? new (0, $177a605b8569b31c$export$2e2bcd8739ae039)(chord).toString() : chords, lyrics, annotation);
20287
20489
  }
20288
20490
  parseTag(astComponent) {
20289
- const { name, value, location: { offset = null, line = null, column = null } = {}, chordDefinition, attributes } = astComponent;
20491
+ const { name, value, location: { offset = null, line = null, column = null } = {}, chordDefinition, attributes, selector, isNegated } = astComponent;
20290
20492
  const tag = new (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039)(name, value, {
20291
20493
  line,
20292
20494
  column,
20293
20495
  offset
20294
20496
  }, attributes);
20497
+ tag.selector = selector || null;
20498
+ tag.isNegated = isNegated || false;
20295
20499
  if (chordDefinition) tag.chordDefinition = new (0, $36ec5eba476f1300$export$2e2bcd8739ae039)(chordDefinition.name, chordDefinition.baseFret, chordDefinition.frets, chordDefinition.fingers);
20296
20500
  return tag;
20297
20501
  }
@@ -20600,7 +20804,7 @@ Or set the song key before changing key:
20600
20804
  return classes.join(" ");
20601
20805
  }
20602
20806
  function $f9c5006b26957916$export$fef61f332f2c0afc(item, metadata, configuration) {
20603
- return item.evaluate(metadata, configuration.get("metadata.separator"));
20807
+ return item.evaluate(metadata, configuration.metadataSeparator);
20604
20808
  }
20605
20809
  function $f9c5006b26957916$export$ca030c9435779e4b(font) {
20606
20810
  const cssString = font.toCssString();
@@ -20705,7 +20909,7 @@ Or set the song key before changing key:
20705
20909
  return "";
20706
20910
  }
20707
20911
  formatEvaluatable(item, metadata) {
20708
- return item.evaluate(metadata, this.configuration.get("metadata.separator"));
20912
+ return item.evaluate(metadata, this.configuration.metadataSeparator);
20709
20913
  }
20710
20914
  formatChordLyricsPair(item, line) {
20711
20915
  return (0, $28a2fcb6fb95a147$export$bc3bea8325045070)(item.lyrics || "", this.chordLyricsPairLength(item, line));
@@ -32838,7 +33042,7 @@ Or set the song key before changing key:
32838
33042
  var $1408adfd7317f0b6$export$2e2bcd8739ae039 = ({ configuration, configuration: { key }, song, renderBlankLines = false, song: { title, subtitle, metadata }, bodyParagraphs }) => (0, $f9c5006b26957916$export$6ea1b0eb82ead3f)(`
32839
33043
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(title, () => `<h1>${title}</h1>`)}
32840
33044
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(subtitle, () => `<h2>${subtitle}</h2>`)}
32841
-
33045
+
32842
33046
  <div class="chord-sheet">
32843
33047
  ${(0, $f9c5006b26957916$export$79b2f7037acddd43)(bodyParagraphs, (paragraph) => `
32844
33048
  <div class="${(0, $f9c5006b26957916$export$dcd1550c9709312c)(paragraph)}">
@@ -32873,7 +33077,7 @@ Or set the song key before changing key:
32873
33077
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)((0, $f9c5006b26957916$export$3ab01370f5e64ac8)(item), () => `
32874
33078
  <div class="comment">${item.value}</div>
32875
33079
  `)}
32876
-
33080
+
32877
33081
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(item.hasRenderableLabel(), () => `
32878
33082
  <h3 class="label">${item.label}</h3>
32879
33083
  `)}
@@ -32958,7 +33162,7 @@ Or set the song key before changing key:
32958
33162
  `)}
32959
33163
  </tr>
32960
33164
  `)}
32961
-
33165
+
32962
33166
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)((0, $f9c5006b26957916$export$b8d631d9200974fa)(line), () => `
32963
33167
  <tr>
32964
33168
  ${(0, $f9c5006b26957916$export$79b2f7037acddd43)(line.items, (item) => `
@@ -32968,7 +33172,7 @@ Or set the song key before changing key:
32968
33172
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)((0, $f9c5006b26957916$export$3ab01370f5e64ac8)(item), () => `
32969
33173
  <td class="comment"${(0, $f9c5006b26957916$export$ca030c9435779e4b)(line.textFont)}>${item.value}</td>
32970
33174
  `)}
32971
-
33175
+
32972
33176
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(item.hasRenderableLabel(), () => `
32973
33177
  <td><h3 class="label"${(0, $f9c5006b26957916$export$ca030c9435779e4b)(line.textFont)}>${item.label}</h3></td>
32974
33178
  `)}
@@ -33110,7 +33314,7 @@ Or set the song key before changing key:
33110
33314
  formatItemBottom(item, metadata, line) {
33111
33315
  if (item instanceof (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039) && item.isRenderable()) return item.label;
33112
33316
  if (item instanceof (0, $551a223fc13b5c10$export$2e2bcd8739ae039)) return (0, $28a2fcb6fb95a147$export$bc3bea8325045070)(item.lyrics || "", this.chordLyricsPairLength(item, line));
33113
- if ("evaluate" in item) return item.evaluate(metadata, this.configuration.get("metadata.separator"));
33317
+ if ("evaluate" in item) return item.evaluate(metadata, this.configuration.metadataSeparator);
33114
33318
  return "";
33115
33319
  }
33116
33320
  constructor(...args) {